From c85d2427b749c5e7236f0474f9215e5936cdfa7c Mon Sep 17 00:00:00 2001 From: 董国庆 <364620639@qq.com> Date: 星期三, 21 五月 2025 17:08:21 +0800 Subject: [PATCH] 原始检验记录 --- laboratory/src/views/dataManagement/originalRecordTest/components/addDialog.vue | 154 ++++++++++++++++++++++++++++++++++---------------- 1 files changed, 104 insertions(+), 50 deletions(-) diff --git a/laboratory/src/views/dataManagement/originalRecordTest/components/addDialog.vue b/laboratory/src/views/dataManagement/originalRecordTest/components/addDialog.vue index 886e35a..deb06d6 100644 --- a/laboratory/src/views/dataManagement/originalRecordTest/components/addDialog.vue +++ b/laboratory/src/views/dataManagement/originalRecordTest/components/addDialog.vue @@ -1,6 +1,6 @@ <template> <el-dialog - title="新增检测数据" + :title="isEdit ? '编辑检测数据' : '新增检测数据'" :visible.sync="dialogVisible" width="60%" :close-on-click-modal="false" @@ -17,17 +17,17 @@ > <el-row :gutter="20"> <el-col :span="12"> - <el-form-item label="检测样编号" prop="sampleCode"> + <el-form-item label="数据编号" prop="dataCode"> <el-input - v-model="form.sampleCode" - placeholder="请输入检测样编号" + v-model="form.dataCode" + placeholder="请输入数据编号" /> </el-form-item> </el-col> <el-col :span="12"> - <el-form-item label="检测数据" prop="testData"> + <el-form-item label="检测数据" prop="dataTitle"> <el-input - v-model="form.testData" + v-model="form.dataTitle" placeholder="请输入检测数据" /> </el-form-item> @@ -36,10 +36,10 @@ <el-row :gutter="20"> <el-col :span="24"> - <el-form-item label="检测类型" prop="testTypes"> - <el-checkbox-group v-model="form.testTypes"> - <el-checkbox label="photo">拍照</el-checkbox> - <el-checkbox label="spectrum">图谱</el-checkbox> + <el-form-item label="检测类型" prop="dataType"> + <el-checkbox-group v-model="form.dataType"> + <el-checkbox label="1">拍照</el-checkbox> + <el-checkbox label="2">图谱</el-checkbox> </el-checkbox-group> </el-form-item> </el-col> @@ -62,7 +62,6 @@ :on-change="handlePhotoChange" > <i class="el-icon-plus"></i> - <!-- <div class="el-upload__tip" slot="tip">支持 jpg、png 格式文件</div> --> </el-upload> </el-form-item> </el-col> @@ -109,26 +108,32 @@ visible: { type: Boolean, default: false + }, + isEdit: { + type: Boolean, + default: false } }, data() { return { isIPad: /iPad/i.test(navigator.userAgent), form: { - sampleCode: "", - testData: "", - testTypes: ["photo"], // 默认选中拍照 + dataCode: "", + dataTitle: "", + dataType: ["1"], + dataFiles: "", + dataPictures: "", photos: [], spectrums: [] }, rules: { - sampleCode: [ - { required: true, message: "请输入检测样编号", trigger: "blur" } + dataCode: [ + { required: true, message: "请输入数据编号", trigger: "blur" } ], - testData: [ + dataTitle: [ { required: true, message: "请输入检测数据", trigger: "blur" } ], - testTypes: [ + dataType: [ { type: 'array', required: true, @@ -142,7 +147,7 @@ message: "请上传检测照片", trigger: "change", validator: (rule, value, callback) => { - if (this.form.testTypes.includes('photo') && (!this.photoList || !this.photoList.length)) { + if (this.form.dataType.includes('1') && (!this.photoList || !this.photoList.length)) { callback(new Error('请上传检测照片')); } else { callback(); @@ -156,7 +161,7 @@ message: "请上传检测图谱", trigger: "change", validator: (rule, value, callback) => { - if (this.form.testTypes.includes('spectrum') && (!this.spectrumList || !this.spectrumList.length)) { + if (this.form.dataType.includes('2') && (!this.spectrumList || !this.spectrumList.length)) { callback(new Error('请上传检测图谱')); } else { callback(); @@ -179,37 +184,52 @@ } }, showPhotoUpload() { - return this.form.testTypes.includes('photo'); + return this.form.dataType.includes('1'); }, showSpectrumUpload() { - return this.form.testTypes.includes('spectrum'); + return this.form.dataType.includes('2'); } }, methods: { setFormData(data) { + console.log('data',data) + // 设置基础表单数据 - this.form.sampleCode = data.sampleCode; - this.form.testData = data.testData; - this.form.testTypes = data.testTypes; + this.form.dataCode = data.dataCode; + this.form.dataTitle = data.dataTitle; + // 处理 dataType,确保它是数组格式 + this.form.dataType = Array.isArray(data.dataType) ? data.dataType : (data.dataType ? data.dataType.split(',') : []); // 设置照片列表 - if (data.photos && data.photos.length) { - this.photoList = data.photos.map(photo => ({ - name: photo.name, - url: photo.url, - status: 'success' - })); + if (data.dataPictures) { + try { + const pictures = typeof data.dataPictures === 'string' ? JSON.parse(data.dataPictures) : data.dataPictures; + this.photoList = pictures.map(photo => ({ + name: photo.name, + url: photo.url, + status: 'success' + })); + } catch (e) { + console.error('解析照片数据失败:', e); + this.photoList = []; + } } else { this.photoList = []; } // 设置图谱列表 - if (data.spectrums && data.spectrums.length) { - this.spectrumList = data.spectrums.map(spectrum => ({ - name: spectrum.name, - url: spectrum.url, - status: 'success' - })); + if (data.dataFiles) { + try { + const files = typeof data.dataFiles === 'string' ? JSON.parse(data.dataFiles) : data.dataFiles; + this.spectrumList = files.map(file => ({ + name: file.name, + url: file.url, + status: 'success' + })); + } catch (e) { + console.error('解析图谱数据失败:', e); + this.spectrumList = []; + } } else { this.spectrumList = []; } @@ -225,9 +245,11 @@ this.photoList = []; this.spectrumList = []; this.form = { - sampleCode: "", - testData: "", - testTypes: ["photo"], + dataCode: "", + dataTitle: "", + dataType: ["1"], + dataFiles: "", + dataPictures: "", photos: [], spectrums: [] }; @@ -237,19 +259,33 @@ if (valid) { const submitData = { ...this.form, - photos: this.photoList, - spectrums: this.spectrumList + // 确保 dataType 在提交时转换为字符串 + dataType: Array.isArray(this.form.dataType) ? this.form.dataType.join(',') : this.form.dataType, + dataFiles: JSON.stringify(this.spectrumList), + dataPictures: JSON.stringify(this.photoList) }; this.$emit("success", submitData); } }); }, handlePhotoChange(file, fileList) { - this.photoList = fileList; + // 模拟上传成功 + const mockFile = { + name: file.name || '测试图片.jpg', + url: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg', + status: 'success' + }; + this.photoList = [...this.photoList, mockFile]; this.$refs.form.validateField('photos'); }, handleSpectrumChange(file, fileList) { - this.spectrumList = fileList; + // 模拟上传成功 + const mockFile = { + name: file.name || '测试图谱.pdf', + url: 'https://example.com/test.pdf', + status: 'success' + }; + this.spectrumList = [...this.spectrumList, mockFile]; this.$refs.form.validateField('spectrums'); }, handleSpectrumRemove(file) { @@ -257,16 +293,34 @@ }, // iPad 相关方法 handleIPadPhoto() { - // TODO: 调用 iPad 拍照功能 - console.log('调用 iPad 拍照功能'); + // 模拟 iPad 拍照功能 + const mockFile = { + name: 'iPad拍照.jpg', + url: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg', + status: 'success' + }; + this.photoList = [...this.photoList, mockFile]; + this.$refs.form.validateField('photos'); }, handleIPadUpload() { - // TODO: 调用 iPad 上传功能 - console.log('调用 iPad 上传功能'); + // 模拟 iPad 上传功能 + const mockFile = { + name: 'iPad上传图片.jpg', + url: 'https://fuss10.elemecdn.com/e/5d/4a731a90594a4af544c0c25941171jpeg.jpeg', + status: 'success' + }; + this.photoList = [...this.photoList, mockFile]; + this.$refs.form.validateField('photos'); }, handleIPadSpectrum() { - // TODO: 调用 iPad 选择图谱功能 - console.log('调用 iPad 选择图谱功能'); + // 模拟 iPad 选择图谱功能 + const mockFile = { + name: 'iPad图谱.pdf', + url: 'https://example.com/test.pdf', + status: 'success' + }; + this.spectrumList = [...this.spectrumList, mockFile]; + this.$refs.form.validateField('spectrums'); } } }; -- Gitblit v1.7.1