feat(app): 启用Expo Updates自动更新功能,优化医疗记录上传流程与API集成
This commit is contained in:
@@ -1,6 +1,7 @@
|
||||
import { MedicalRecordCard } from '@/components/health/MedicalRecordCard';
|
||||
import { palette } from '@/constants/Colors';
|
||||
import { useAppDispatch, useAppSelector } from '@/hooks/redux';
|
||||
import { useCosUpload } from '@/hooks/useCosUpload';
|
||||
import { MedicalRecordItem, MedicalRecordType } from '@/services/healthProfile';
|
||||
import {
|
||||
addNewMedicalRecord,
|
||||
@@ -38,6 +39,11 @@ export function MedicalRecordsTab() {
|
||||
const prescriptions = medicalRecords?.prescriptions || [];
|
||||
const isLoading = useAppSelector(selectHealthLoading);
|
||||
|
||||
// COS 上传
|
||||
const { upload: uploadToCos, uploading: isUploading } = useCosUpload({
|
||||
prefix: 'images/health/medical-records'
|
||||
});
|
||||
|
||||
const [activeTab, setActiveTab] = useState<MedicalRecordType>('medical_record');
|
||||
const [isModalVisible, setModalVisible] = useState(false);
|
||||
const [isDatePickerVisible, setDatePickerVisibility] = useState(false);
|
||||
@@ -139,16 +145,29 @@ export function MedicalRecordsTab() {
|
||||
|
||||
setIsSubmitting(true);
|
||||
try {
|
||||
// 1. 上传所有图片到 COS
|
||||
const uploadPromises = images.map(async (uri) => {
|
||||
const result = await uploadToCos({ uri });
|
||||
return result.url;
|
||||
});
|
||||
|
||||
const uploadedUrls = await Promise.all(uploadPromises);
|
||||
|
||||
// 2. 创建就医资料记录
|
||||
await dispatch(addNewMedicalRecord({
|
||||
type: activeTab,
|
||||
title,
|
||||
title: title.trim(),
|
||||
date: dayjs(date).format('YYYY-MM-DD'),
|
||||
images,
|
||||
note,
|
||||
images: uploadedUrls,
|
||||
note: note.trim() || undefined,
|
||||
})).unwrap();
|
||||
|
||||
setModalVisible(false);
|
||||
} catch (error) {
|
||||
Alert.alert('错误', '保存失败,请重试');
|
||||
resetForm();
|
||||
} catch (error: any) {
|
||||
console.error('保存失败:', error);
|
||||
const errorMessage = error?.message || '保存失败,请重试';
|
||||
Alert.alert('错误', errorMessage);
|
||||
} finally {
|
||||
setIsSubmitting(false);
|
||||
}
|
||||
@@ -275,10 +294,10 @@ export function MedicalRecordsTab() {
|
||||
</Text>
|
||||
<TouchableOpacity
|
||||
onPress={handleSubmit}
|
||||
style={[styles.modalSaveButton, isSubmitting && styles.modalSaveButtonDisabled]}
|
||||
disabled={isSubmitting}
|
||||
style={[styles.modalSaveButton, (isSubmitting || isUploading) && styles.modalSaveButtonDisabled]}
|
||||
disabled={isSubmitting || isUploading}
|
||||
>
|
||||
{isSubmitting ? (
|
||||
{(isSubmitting || isUploading) ? (
|
||||
<ActivityIndicator size="small" color="#FFFFFF" />
|
||||
) : (
|
||||
<Text style={styles.modalSaveText}>保存</Text>
|
||||
|
||||
Reference in New Issue
Block a user