| src/api/business/insReport.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/CNAS/process/method/standardMethod/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/business/inspectionReview/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/business/productOrder/components/addOrder.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/business/productOrder/components/addView.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/business/reportPreparation/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
| src/views/system/customer/index.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
src/api/business/insReport.js
@@ -27,14 +27,23 @@ } // 单份报告下载 export function downloadReport(id) { export function downloadReport(id, reportType) { return request({ url: '/insReport/download', method: 'get', params: { id }, params: { id, reportType }, responseType: 'blob' }) } // 重新生成报告 export function regenerateReport(id) { return request({ url: '/insReport/regenerate', method: 'post', data: { id } }) } // 报告退回到检验任务 export function sendBackTask(query) { return request({ src/views/CNAS/process/method/standardMethod/index.vue
@@ -35,7 +35,8 @@ <el-dialog :title="title" :visible.sync="addDlog" width="500px"> <el-form :model="addForm" ref="addForm" :rules="addRules" label-position="right" label-width="120px"> <el-form-item label="行业" prop="industryIds"> <el-select v-model="addForm.industryIds" multiple filterable clearable collapse-tags placeholder="请选择行业" style="width: 100%"> <el-select v-model="addForm.industryIds" multiple filterable clearable collapse-tags placeholder="请选择行业" style="width: 100%"> <el-option v-for="item in industryOptions" :key="item.id" :label="item.laboratoryName" :value="item.id" /> </el-select> </el-form-item> @@ -73,7 +74,8 @@ <el-upload ref="addUpload" action="#" :auto-upload="false" multiple :file-list="pendingFiles" :on-change="pendingFileChange" :on-remove="pendingFileRemove" :before-upload="beforeFileUpload" accept=".jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar"> <el-button size="small" type="primary">选择附件</el-button><div slot="tip" class="el-upload__tip">支持多个附件,单个不超过10MB</div> <el-button size="small" type="primary">选择附件</el-button> <div slot="tip" class="el-upload__tip">支持多个附件,单个不超过200MB</div> </el-upload> </el-form-item> </el-form> @@ -83,7 +85,8 @@ </span> </el-dialog> <el-dialog title="标准附件" :visible.sync="attachmentDialog" width="760px"> <el-upload v-if="currentMethod.id" :action="attachmentAction" :headers="uploadHeader" multiple :show-file-list="false" <el-upload v-if="currentMethod.id" :action="attachmentAction" :headers="uploadHeader" multiple :show-file-list="false" :before-upload="beforeFileUpload" :on-success="attachmentUploadSuccess" accept=".jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar"> <el-button size="small" type="primary">上传附件</el-button> @@ -91,10 +94,18 @@ <el-table :data="attachmentList" border size="small" style="margin-top:12px"> <el-table-column label="文件名称" prop="fileName" min-width="280" /> <el-table-column label="上传时间" prop="createTime" width="170" /> <el-table-column label="操作" width="180"><template slot-scope="scope"><el-button type="text" @click="previewAttachment(scope.row)">预览</el-button><el-button type="text" @click="downloadAttachment(scope.row)">下载</el-button><el-button type="text" style="color:#f56c6c" @click="removeAttachment(scope.row)">删除</el-button></template></el-table-column> <el-table-column label="操作" width="180"> <template slot-scope="scope"> <el-button type="text" @click="previewAttachment(scope.row)">预览</el-button> <el-button type="text" @click="downloadAttachment(scope.row)">下载</el-button> <el-button type="text" style="color:#f56c6c" @click="removeAttachment(scope.row)">删除</el-button> </template> </el-table-column> </el-table> </el-dialog> <el-dialog title="预览附件" :visible.sync="previewDialog" fullscreen><file-preview v-if="previewDialog" :current-file="currentAttachment" :file-url="previewUrl" /></el-dialog> <el-dialog title="预览附件" :visible.sync="previewDialog" fullscreen> <file-preview v-if="previewDialog" :current-file="currentAttachment" :file-url="previewUrl"/> </el-dialog> </div> </template> @@ -107,6 +118,7 @@ addStandardMethod, upStandardMethod, selectIndustryOptions, selectAttachments, uploadAttachment, deleteAttachment, } from "@/api/cnas/process/method/standardMethod"; export default { name: 'StandardMethod', components: { @@ -284,7 +296,11 @@ this.qualificationList = arr; }); }, loadIndustryOptions() { selectIndustryOptions().then(res => { this.industryOptions = res.data || []; }); }, loadIndustryOptions() { selectIndustryOptions().then(res => { this.industryOptions = res.data || []; }); }, submitProduct(formName) { this.$refs[formName].validate((valid) => { if (valid) { @@ -329,10 +345,24 @@ } }); }, beforeFileUpload(file) { if (file.size > 10 * 1024 * 1024) { this.$message.error('上传文件不超过10MB'); return false; } return true; }, pendingFileChange(file, files) { this.pendingFiles = files; }, pendingFileRemove(file, files) { this.pendingFiles = files; }, openAttachments(row) { this.currentMethod = row; this.attachmentDialog = true; this.loadAttachments(); }, beforeFileUpload(file) { if (file.size > 200 * 1024 * 1024) { this.$message.error('上传文件不超过200MB'); return false; } return true; }, pendingFileChange(file, files) { this.pendingFiles = files; }, pendingFileRemove(file, files) { this.pendingFiles = files; }, openAttachments(row) { this.currentMethod = row; this.attachmentDialog = true; this.loadAttachments(); }, downloadAttachments(row) { selectAttachments({ standardMethodId: row.id }).then(res => { const attachments = res.data || []; @@ -349,11 +379,28 @@ else this.openAttachments(row); }); }, loadAttachments() { selectAttachments({ standardMethodId: this.currentMethod.id }).then(res => { this.attachmentList = res.data || []; }); }, attachmentUploadSuccess(res) { if (res.code === 200) { this.$message.success('上传成功'); this.loadAttachments(); } }, downloadAttachment(row) { this.$download.saveAs(row.fileUrl, row.fileName); }, previewAttachment(row) { this.currentAttachment = row; this.previewUrl = /\.(jpg|jpeg|png|gif)$/i.test(row.fileUrl) ? this.javaApi + '/img/' + row.fileUrl : this.javaApi + '/word/' + row.fileUrl; this.previewDialog = true; }, removeAttachment(row) { this.$confirm('是否删除该附件?', '提示', { type: 'warning' }).then(() => deleteAttachment({ id: row.id })).then(() => this.loadAttachments()); }, loadAttachments() { selectAttachments({standardMethodId: this.currentMethod.id}).then(res => { this.attachmentList = res.data || []; }); }, attachmentUploadSuccess(res) { if (res.code === 200) { this.$message.success('上传成功'); this.loadAttachments(); } }, downloadAttachment(row) { this.$download.saveAs(row.fileUrl, row.fileName); }, previewAttachment(row) { this.currentAttachment = row; this.previewUrl = /\.(jpg|jpeg|png|gif)$/i.test(row.fileUrl) ? this.javaApi + '/img/' + row.fileUrl : this.javaApi + '/word/' + row.fileUrl; this.previewDialog = true; }, removeAttachment(row) { this.$confirm('是否删除该附件?', '提示', {type: 'warning'}).then(() => deleteAttachment({id: row.id})).then(() => this.loadAttachments()); }, // 删除 handleDelete(row) { this.$confirm("是否删除该条数据?", "提示", { @@ -367,9 +414,14 @@ this.getList(); }); }) .catch(() => { }); .catch(() => { }); }, }, computed: { attachmentAction() { return this.javaApi + '/standardMethod/uploadAttachment?standardMethodId=' + this.currentMethod.id; } }, computed: { attachmentAction() { return this.javaApi + '/standardMethod/uploadAttachment?standardMethodId=' + this.currentMethod.id; } }, }; </script> src/views/business/inspectionReview/index.vue
@@ -70,7 +70,7 @@ }, dicts: ["urgency_level", "inspection_task_state","material_prop_type"], computed: { ...mapGetters(["nickName", "userId"]), ...mapGetters(["nickName", "userId", "roles"]), }, data() { return { @@ -195,6 +195,7 @@ this.handleReview(row); }, disabled: (row) => { if (this.roles.includes("admin")) return false return row.checkName == null || (row.checkName && !row.checkName.includes(this.nickName)) } }, @@ -403,7 +404,8 @@ this.refreshTable() } }) }).catch(() => { }) }).catch(() => { }) }, // 查看报告 @@ -451,6 +453,7 @@ margin-bottom: 10px; display: flex; } .page_total span:last-child { color: #3a7bfa; font-size: 23px; src/views/business/productOrder/components/addOrder.vue
@@ -25,62 +25,150 @@ </el-option> </el-select> <el-button v-show="active==1" size="small" @click="templateDia=true">保存模板</el-button> <el-button v-if="active==1&&addObj.sampleType!=undefined&&(addObj.sampleType.indexOf('电缆')>-1 ||addObj.sampleType.indexOf('综合')>-1)" size="small" type="primary" plain @click="openCableConfig">电缆配置</el-button> <el-button v-if="active==1&&addObj.sampleType!=undefined&&addObj.sampleType.indexOf('电缆')>-1" size="small" type="primary" plain @click="openAuxiliaryCore">辅助线芯配置</el-button> <el-button v-show="active==1||(tabIndex==4&&active==2)" :loading="saveLoad" size="small" type="primary" @click="save">提交</el-button> <el-button v-if="active==1&&addObj.sampleType!=undefined&&(addObj.sampleType.indexOf('电缆')>-1 ||addObj.sampleType.indexOf('综合')>-1)" size="small" type="primary" plain @click="openCableConfig">电缆配置 </el-button> <el-button v-if="active==1&&addObj.sampleType!=undefined&&addObj.sampleType.indexOf('电缆')>-1" size="small" type="primary" plain @click="openAuxiliaryCore">辅助线芯配置 </el-button> <el-button v-show="active==1||(tabIndex==4&&active==2)" :loading="saveLoad" size="small" type="primary" @click="save">提交 </el-button> <!-- 审核 --> <el-button v-show="active==3" :disabled="saveLoad" :loading="saveLoad" size="small" @click="upInsOrderOfState(2)">不通过</el-button> @click="upInsOrderOfState(2)">不通过 </el-button> <el-button v-show="active==3" :loading="saveLoad" size="small" type="primary" @click="upInsOrderOfState(1)">通过</el-button> @click="upInsOrderOfState(1)">通过 </el-button> <el-button size="small" @click="goBack">返回</el-button> </div> </div> <div v-show="!cableConfigShow&&!auxiliaryShow" class="order-body"> <el-card shadow="never" class="order-card"> <el-form ref="newJuOrder" class="newju-order-form" :model="addObj" size="small" label-width="108px" label-position="right"> <el-form ref="newJuOrder" class="newju-order-form" :model="addObj" size="small" label-width="108px" label-position="right"> <el-row :gutter="16"> <el-col :span="6"><el-form-item label="检测依据"><el-input v-model="addObj.sample" disabled size="small"><template slot="append"><el-button :disabled="active>1" icon="el-icon-search" size="small" @click="selectStandardTree = true" /></template></el-input></el-form-item></el-col> <el-col :span="6"> <el-form-item label="检测依据"> <el-input v-model="addObj.sample" disabled size="small"> <template slot="append"> <el-button :disabled="active>1" icon="el-icon-search" size="small" @click="selectStandardTree = true"/> </template> </el-input> </el-form-item> </el-col> <el-col :span="18"> <el-form-item label="原始记录模板"> <div v-loading="templateBindingLoading" class="template-tag-list"> <el-tag v-for="(item, index) in boundTemplateList" :key="item.templateId" :closable="active==1" size="small" effect="plain" @close="removeBoundTemplate(index)">{{ item.name }}</el-tag> <el-tag v-for="(item, index) in boundTemplateList" :key="item.templateId" :closable="active==1" size="small" effect="plain" @close="removeBoundTemplate(index)">{{ item.name }} </el-tag> <span v-if="!templateBindingLoading && boundTemplateList.length === 0" class="empty-template-text">暂未绑定原始记录模板</span> </div> </el-form-item> </el-col> </el-row> <el-row :gutter="16"> <el-col :span="6"><el-form-item label="样品名称"><el-input v-model="addObj.sampleView" :disabled="active>1" size="small" /></el-form-item></el-col> <el-col :span="6"><el-form-item label="生产单位"><el-input v-model="addObj.production" :disabled="active>1" size="small" /></el-form-item></el-col> <el-col :span="6"><el-form-item label="委托单位"><el-input v-model="addObj.company" disabled size="small"><template slot="append"><el-button :disabled="active>1" icon="el-icon-search" size="small" @click="openCompanyList" /></template></el-input></el-form-item></el-col> <el-col :span="6"><el-form-item label="检验类别"><el-select v-model="addObj.orderType" :disabled="active>1" size="small"><el-option v-for="item in dict.type.check_type1" :key="item.value" :label="item.label" :value="item.value" /></el-select></el-form-item></el-col> <el-col :span="6"> <el-form-item label="样品名称"> <el-input v-model="addObj.sampleView" :disabled="active>1" size="small"/> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="生产单位"> <el-input v-model="addObj.production" :disabled="active>1" size="small"/> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="委托单位"> <el-input v-model="addObj.company" disabled size="small"> <template slot="append"> <el-button :disabled="active>1" icon="el-icon-search" size="small" @click="openCompanyList"/> </template> </el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="检验类别"> <el-select v-model="addObj.orderType" :disabled="active>1" size="small"> <el-option v-for="item in dict.type.check_type1" :key="item.value" :label="item.label" :value="item.value"/> </el-select> </el-form-item> </el-col> </el-row> <el-row :gutter="16"> <el-col :span="6"><el-form-item label="样品数量"><el-input v-model="addObj.testQuantity" :disabled="active>1" placeholder="如:2桶、500mL" size="small" /></el-form-item></el-col> <el-col :span="6"><el-form-item label="样品编号"><el-input v-model="sampleCode" :disabled="active>1" size="small" /></el-form-item></el-col> <el-col :span="6"><el-form-item label="样品外观"><el-input v-model="addObj.sampleStatus" :disabled="active>1" size="small" /></el-form-item></el-col> <el-col :span="6"><el-form-item label="送样人"><el-input v-model="addObj.prepareUser" :disabled="active>1" size="small" /></el-form-item></el-col> <el-col :span="6"> <el-form-item label="样品数量"> <el-input v-model="addObj.testQuantity" :disabled="active>1" placeholder="如:2桶、500mL" size="small"/> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="样品编号"> <el-input v-model="sampleCode" :disabled="active>1" size="small"/> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="样品外观"> <el-input v-model="addObj.sampleStatus" :disabled="active>1" size="small"/> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="送样人"> <el-input v-model="addObj.prepareUser" :disabled="active>1" size="small"/> </el-form-item> </el-col> </el-row> <el-row :gutter="16"> <el-col :span="6"><el-form-item label="生产日期"><el-date-picker v-model="addObj.productionDate" type="date" value-format="yyyy-MM-dd" :disabled="active>1" size="small" /></el-form-item></el-col> <el-col :span="6"><el-form-item label="生产批号"><el-input v-model="addObj.productionBatch" :disabled="active>1" size="small" /></el-form-item></el-col> <el-col :span="6"><el-form-item label="送样日期"><el-date-picker v-model="addObj.sampleDate" type="date" value-format="yyyy-MM-dd" :disabled="active>1" size="small" /></el-form-item></el-col> <el-col :span="6"><el-form-item label="联系方式"><el-input v-model="addObj.phone" :disabled="active>1" size="small" /></el-form-item></el-col> <el-col :span="6"> <el-form-item label="生产日期"> <el-date-picker v-model="addObj.productionDate" type="date" value-format="yyyy-MM-dd" :disabled="active>1" size="small"/> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="生产批号"> <el-input v-model="addObj.productionBatch" :disabled="active>1" size="small"/> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="送样日期"> <el-date-picker v-model="addObj.sampleDate" type="date" value-format="yyyy-MM-dd" :disabled="active>1" size="small"/> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="联系方式"> <el-input v-model="addObj.phone" :disabled="active>1" size="small"/> </el-form-item> </el-col> </el-row> <el-row :gutter="16"><el-col :span="12"><el-form-item label="备注"><el-input v-model="addObj.remark" :disabled="active>1" size="small" /></el-form-item></el-col></el-row> <el-row :gutter="16"> <el-col :span="12"> <el-form-item label="备注"> <el-input v-model="addObj.remark" :disabled="active>1" size="small"/> </el-form-item> </el-col> </el-row> </el-form> <el-form v-if="false" ref="addObj" :inline="true" :model="addObj" :rules="addObjRules" label-width="108px" label-position="right"> <el-form v-if="false" ref="addObj" :inline="true" :model="addObj" :rules="addObjRules" label-width="108px" label-position="right"> <el-row> <el-col :span="6"> <el-form-item label="委托编号:" prop="entrustCode"> <el-input v-model="addObj.entrustCode" clearable disabled placeholder="系统生成" size="small"></el-input> <el-input v-model="addObj.entrustCode" clearable disabled placeholder="系统生成" size="small"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="检验类别:" prop="orderType"> <el-select v-model="addObj.orderType" :disabled="active>1&&tabIndex!=4" clearable size="small" style="width: 100%;"> <el-option v-for="(a, ai) in dict.type.check_type1" :key="ai" :label="a.label" :value="a.value"></el-option> <el-select v-model="addObj.orderType" :disabled="active>1&&tabIndex!=4" clearable size="small" style="width: 100%;"> <el-option v-for="(a, ai) in dict.type.check_type1" :key="ai" :label="a.label" :value="a.value"></el-option> </el-select> </el-form-item> </el-col> @@ -91,7 +179,8 @@ </el-col> <el-col :span="6"> <el-form-item label="委托单位:" prop="company"> <el-input v-model="addObj.company" disabled placeholder="选择委托单位" size="small" style="width: 208px"> <el-input v-model="addObj.company" disabled placeholder="选择委托单位" size="small" style="width: 208px"> <template slot="append"> <el-button slot="append" :disabled="active>1&&tabIndex!=4" icon="el-icon-search" @click="openCompanyList"></el-button> @@ -103,21 +192,25 @@ <el-row> <el-col :span="6"> <el-form-item label="联系方式:" prop="phone"> <el-input v-model="addObj.phone" :disabled="active>1&&tabIndex!=4" clearable placeholder="选择委托客户" size="small"></el-input> <el-input v-model="addObj.phone" :disabled="active>1&&tabIndex!=4" clearable placeholder="选择委托客户" size="small"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="紧急程度:" prop="type"> <el-select v-model="addObj.type" :disabled="active>1&&tabIndex!=4" clearable size="small"> <el-option v-for="(a, ai) in dict.type.urgency_level" :key="ai" :label="a.label" :value="a.value"></el-option> <el-option v-for="(a, ai) in dict.type.urgency_level" :key="ai" :label="a.label" :value="a.value"></el-option> </el-select> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="样品名称:" prop="sample"> <el-input v-model="addObj.sample" disabled size="small" style="width: 208px"> <template slot="append"><el-button slot="append" :disabled="active>1&&tabIndex!=4" icon="el-icon-search" @click="selectStandardTree = true"></el-button></template> <template slot="append"> <el-button slot="append" :disabled="active>1&&tabIndex!=4" icon="el-icon-search" @click="selectStandardTree = true"></el-button> </template> </el-input> </el-form-item> </el-col> @@ -132,19 +225,22 @@ <el-col :span="6"> <el-form-item label="样品状态:" prop="sampleStatus"> <el-select v-model="addObj.sampleStatus" :disabled="active>1&&tabIndex!=4" size="small"> <el-option v-for="(a,ai) in dict.type.sample_status_list" :key="ai" :label="a.label" :value="a.value"></el-option> <el-option v-for="(a,ai) in dict.type.sample_status_list" :key="ai" :label="a.label" :value="a.value"></el-option> </el-select> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="抽检数量:" prop="testQuantity"> <el-input v-model="addObj.testQuantity" :disabled="active>1&&tabIndex!=4" clearable size="small"></el-input> <el-input v-model="addObj.testQuantity" :disabled="active>1&&tabIndex!=4" clearable size="small"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="来样方式:" prop="formType"> <el-select v-model="addObj.formType" :disabled="active>1&&tabIndex!=4" size="small" clearable> <el-option v-for="(a,ai) in dict.type.form_type" :key="ai" :label="a.label" :value="a.value"></el-option> <el-option v-for="(a,ai) in dict.type.form_type" :key="ai" :label="a.label" :value="a.value"></el-option> </el-select> </el-form-item> </el-col> @@ -160,7 +256,8 @@ <el-row> <el-col :span="6"> <el-form-item label="样品处理方式:" prop="processing"> <el-radio-group v-model="addObj.processing" :disabled="active>1&&tabIndex!=4" size="mini" style="display: flex; flex-direction: column;"> <el-radio-group v-model="addObj.processing" :disabled="active>1&&tabIndex!=4" size="mini" style="display: flex; flex-direction: column;"> <el-radio :label="0" border style="margin-right: 0">委托单位取回</el-radio> <el-radio :label="1" border>实验室处理</el-radio> </el-radio-group> @@ -190,23 +287,27 @@ <el-row> <el-col :span="6"> <el-form-item label="委托人:" prop="prepareUser"> <el-input v-model="addObj.prepareUser" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable size="small"></el-input> <el-input v-model="addObj.prepareUser" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable size="small"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="委托人英文:" prop="prepareUserEn"> <el-input v-model="addObj.prepareUserEn" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable size="small"></el-input> <el-input v-model="addObj.prepareUserEn" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable size="small"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="备注:" prop="remark"> <el-input v-model="addObj.remark" :autosize="{ minRows: 2, maxRows: 2}" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable <el-input v-model="addObj.remark" :autosize="{ minRows: 2, maxRows: 2}" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable size="small" style="width: 100%" type="textarea"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="备注英文:" prop="remarkEn"> <el-input v-model="addObj.remarkEn" :autosize="{ minRows: 2, maxRows: 2}" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable <el-input v-model="addObj.remarkEn" :autosize="{ minRows: 2, maxRows: 2}" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable size="small" type="textarea"></el-input> </el-form-item> </el-col> @@ -214,19 +315,22 @@ <el-row> <el-col :span="6"> <el-form-item label="样品名称:" prop="sampleView"> <el-input v-model="addObj.sampleView" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable <el-input v-model="addObj.sampleView" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable size="small"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="样品名称英文:" prop="sampleViewEn"> <el-input v-model="addObj.sampleViewEn" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable <el-input v-model="addObj.sampleViewEn" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable size="small"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="委托人工号:" prop="prepareCode"> <el-input v-model="addObj.prepareCode" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable <el-input v-model="addObj.prepareCode" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable size="small"></el-input> </el-form-item> </el-col> @@ -260,7 +364,8 @@ <span style="width: 150px;font-size: 14px;text-align: right;">特殊标准:</span> <el-input v-model="specialStandardMethod" :disabled="!isSpecial" clearable size="small"></el-input> <el-button v-show="active==1" size="small" style="margin-left: 10px" type="primary" @click="editSpecial">编辑</el-button> type="primary" @click="editSpecial">编辑 </el-button> </div> </div> <el-table ref="sampleTable" :data="sampleList" border class="el-table sampleTable" highlight-current-row @@ -309,7 +414,8 @@ <template slot-scope="scope"> <el-select v-model="scope.row.standardMethodListId" :disabled="scope.row.model==null||active>1" :loading="methodLoad" :readonly="active>1" clearable placeholder="检验标准" size="small" style="width: 100%;" @change="(value)=>methodChange(value, scope.row)" @clear="productList = []" @focus="methodFocus"> size="small" style="width: 100%;" @change="(value)=>methodChange(value, scope.row)" @clear="productList = []" @focus="methodFocus"> <el-option v-for="item in methods" :key="item.id" :label="item.code" :value="item.id"> </el-option> </el-select> @@ -341,8 +447,10 @@ :header-cell-style="{ background: '#f8f8f9', color: '#515a6e' }" max-height="400px" style="margin-bottom: 10px;" tooltip-effect="dark" @select="selectOne" @selection-change="selectProduct" @select-all="handleAll"> <el-table-column v-if="canSelectProduct" :selectable="selectable0" type="selection" width="65"></el-table-column> <el-table-column label="检验项分类" min-width="140" prop="inspectionItemClass" show-overflow-tooltip></el-table-column> <el-table-column v-if="canSelectProduct" :selectable="selectable0" type="selection" width="65"></el-table-column> <el-table-column label="检验项分类" min-width="140" prop="inspectionItemClass" show-overflow-tooltip></el-table-column> <el-table-column label="检验项" min-width="140" prop="inspectionItem" show-overflow-tooltip> <template slot="header" slot-scope="scope"> <div style="display: flex;align-items: center;flex-direction: column;font-size: 14px"> @@ -372,7 +480,9 @@ </el-table-column> <el-table-column label="要求值" min-width="220px" prop="ask"> <template slot-scope="scope"> <el-input v-if="(active==1||tabIndex==4)&&(isAskOnlyRead || isSpecial)&&scope.row.inspectionValueType!='5'" v-model="scope.row.ask" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="要求值" <el-input v-if="(active==1||tabIndex==4)&&(isAskOnlyRead || isSpecial)&&scope.row.inspectionValueType!='5'" v-model="scope.row.ask" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="要求值" size="small" type="textarea" @change="e=>requestChange(e,scope.row,'ask')"></el-input> <span v-else> @@ -382,7 +492,8 @@ </el-table-column> <el-table-column label="要求描述" min-width="220px" prop="tell"> <template slot-scope="scope"> <el-input v-if="(active==1||tabIndex==4)&&(isAskOnlyRead || isSpecial)" v-model="scope.row.tell" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="要求描述" <el-input v-if="(active==1||tabIndex==4)&&(isAskOnlyRead || isSpecial)" v-model="scope.row.tell" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="要求描述" size="small" type="textarea" @change="e=>requestChange(e,scope.row,'tell')"></el-input> <span v-else> @@ -392,7 +503,8 @@ </el-table-column> <el-table-column label="条件" min-width="140" prop="radius" show-overflow-tooltip> <template slot-scope="scope"> <el-input v-if="(active==1||tabIndex==4)&&(isAskOnlyRead || isSpecial)" v-model="scope.row.radius" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="条件" <el-input v-if="(active==1||tabIndex==4)&&(isAskOnlyRead || isSpecial)" v-model="scope.row.radius" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="条件" size="small" type="textarea" @change="e=>requestChange(e,scope.row,'radius')"> </el-input> @@ -415,12 +527,17 @@ <el-table-column label="计量单位" prop="unit" show-overflow-tooltip width="100"></el-table-column> <el-table-column label="单价" prop="price" show-overflow-tooltip width="100"></el-table-column> <el-table-column label="区间" min-width="120" prop="section" show-overflow-tooltip></el-table-column> <el-table-column :filter-method="filterHandler" :filters="filters" label="子实验室" min-width="130" prop="sonLaboratory" <el-table-column :filter-method="filterHandler" :filters="filters" label="子实验室" min-width="130" prop="sonLaboratory" show-overflow-tooltip></el-table-column> <el-table-column v-if="isSpecial&&active==1" label="操作" width="100"> <template slot-scope="scope"> <el-button v-if="!scope.row.repetitionTag" size="small" type="text" @click="addProductList(productList,scope.row,scope.$index)">插入行</el-button> <el-button v-if="!!scope.row.repetitionTag&&scope.row.delete" size="small" type="text" @click="deleteProductList(scope.$index,productList)">删除</el-button> <el-button v-if="!scope.row.repetitionTag" size="small" type="text" @click="addProductList(productList,scope.row,scope.$index)">插入行 </el-button> <el-button v-if="!!scope.row.repetitionTag&&scope.row.delete" size="small" type="text" @click="deleteProductList(scope.$index,productList)">删除 </el-button> </template> </el-table-column> </el-table> @@ -428,6 +545,16 @@ </div> <el-dialog :visible.sync="selectUserDia" title="选择单位" width="70%"> <div v-if="selectUserDia" class="body"> <el-form :inline="true" size="small" @submit.native.prevent> <el-form-item label="委托单位"> <el-input v-model="companyQuery" clearable placeholder="请输入委托单位" @keyup.enter.native="searchCompany"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="searchCompany">查询</el-button> <el-button @click="resetCompanySearch">重置</el-button> </el-form-item> </el-form> <lims-table :tableData="tableData1" :column="column1" :isSelection="true" :handleSelectionChange="selectMethod" @pagination="pagination1" height="400px" key="tableData1" @@ -439,16 +566,19 @@ </span> </el-dialog> <el-dialog :visible.sync="selectStandardTree" title="选择样品" width="500px"> <div v-if="selectStandardTree" v-loading="selectStandardTreeLoading" class="body" style="height: 60vh;overflow-y: auto;user-select: none;"> <div v-if="selectStandardTree" v-loading="selectStandardTreeLoading" class="body" style="height: 60vh;overflow-y: auto;user-select: none;"> <el-row> <el-col :span="24"> <el-input v-model="search" clearable placeholder="输入关键字进行搜索" size="small" style="margin-bottom: 5px;" suffix-icon="el-icon-search" @blur="searchFilter" @clear="searchFilter" style="margin-bottom: 5px;" suffix-icon="el-icon-search" @blur="searchFilter" @clear="searchFilter" @keyup.enter.native="searchFilter"></el-input> </el-col> </el-row> <el-tree ref="tree" :data="list" :default-expanded-keys="expandedKeys" :filter-node-method="filterNode" :props="{ children: 'children', label: 'label' }" highlight-current node-key="label" @node-click="handleNodeClick" :props="{ children: 'children', label: 'label' }" highlight-current node-key="label" @node-click="handleNodeClick" @node-expand="nodeOpen" @node-collapse="nodeClose" @dblclick.native="activeStandardTree"> <div slot-scope="{ node, data }" class="custom-tree-node"> <el-row> @@ -478,7 +608,8 @@ <el-button :loading="templateLoading" type="primary" @click="addTemplateDia">确 定</el-button> </span> </el-dialog> <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false" :visible.sync="issuedDialogVisible" title="检验下发" width="400px"> <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false" :visible.sync="issuedDialogVisible" title="检验下发" width="400px"> <div class="body" style="max-height: 60vh;"> <el-row> <el-col :span="22" class="search_thing"> @@ -492,7 +623,8 @@ <el-col :span="22" class="search_thing"> <div class="search_label"><span class="required-span">* </span>指派人员:</div> <div class="search_input"> <el-select v-model="distributeData.userId" filterable placeholder="请选择" size="small" style="width: 100%;" @change="changeUser"> <el-select v-model="distributeData.userId" filterable placeholder="请选择" size="small" style="width: 100%;" @change="changeUser"> <el-option v-for="item in personList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> @@ -501,8 +633,10 @@ <el-col v-if="distributeData.userId" :span="22" class="search_thing"> <div class="search_label">试验室:</div> <div class="search_input"> <el-select v-model="distributeData.sonLaboratory" filterable placeholder="请选择" size="small" style="width: 100%;"> <el-option v-for="item in newJuLaboratoryList" :key="item.value" :label="item.label" :value="item.value"> <el-select v-model="distributeData.sonLaboratory" filterable placeholder="请选择" size="small" style="width: 100%;"> <el-option v-for="item in newJuLaboratoryList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </div> @@ -535,11 +669,14 @@ </span> </el-dialog> <!--电缆配置--> <cableConfig v-if="cableConfigShow" ref="cableConfigShow" :active="active" :isSpecial="isSpecial" :sampleSelectionList="sampleSelectionList" @goBackAdd="goBackAdd"/> <cableConfig v-if="cableConfigShow" ref="cableConfigShow" :active="active" :isSpecial="isSpecial" :sampleSelectionList="sampleSelectionList" @goBackAdd="goBackAdd"/> <!--辅助线芯配置--> <auxiliary-wire-core v-if="auxiliaryShow" :active="active" :isSpecial="isSpecial" :sampleSelectionList="sampleSelectionList" @goBackAdd2="goBackAdd2"></auxiliary-wire-core> <auxiliary-wire-core v-if="auxiliaryShow" :active="active" :isSpecial="isSpecial" :sampleSelectionList="sampleSelectionList" @goBackAdd2="goBackAdd2"></auxiliary-wire-core> <!--特殊值处理框--> <el-dialog :before-close="beforeClose" :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false" <el-dialog :before-close="beforeClose" :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false" :visible.sync="bsm1DiaAll" min-width="400px" title="检测到特殊项,请作出以下选择"> @@ -550,7 +687,8 @@ <div class="search_label" style="width: 80px;"><span class="required-span">* </span>选项:</div> <div class="search_input"> <el-radio-group v-model="item.bsm1Val" v-removeAriaHidden @input="upBsmAll(item)"> <el-radio v-for="(a, ai) in JSON.parse(item.bsmRow.sectionCopy)" :key="ai" :label="a" style="margin-bottom: 2px;margin-top: 2px;"></el-radio> <el-radio v-for="(a, ai) in JSON.parse(item.bsmRow.sectionCopy)" :key="ai" :label="a" style="margin-bottom: 2px;margin-top: 2px;"></el-radio> </el-radio-group> </div> </el-col> @@ -559,7 +697,8 @@ <div class="search_input"> <el-radio-group v-model="item.bsm1Val" v-removeAriaHidden @input="upBsmAll(item)"> <el-radio v-for="(a, ai) in JSON.parse(item.bsmRow.sectionCopy)" :key="ai" :label="a">{{JSON.parse(item.bsmRow.askCopy)[ai]}}</el-radio> :label="a">{{ JSON.parse(item.bsmRow.askCopy)[ai] }} </el-radio> </el-radio-group> </div> </el-col> @@ -602,7 +741,8 @@ label="识别符值" prop="value"> <template slot-scope="scope"> <el-input v-model="scope.row.value" placeholder="请输入" size="small" @input="inputValueHandler(scope.row,scope.$index)"></el-input> <el-input v-model="scope.row.value" placeholder="请输入" size="small" @input="inputValueHandler(scope.row,scope.$index)"></el-input> </template> </el-table-column> </el-table> @@ -760,6 +900,7 @@ tableData1: [], tableLoading1: false, multipleSelection: [], companyQuery: '', column1: [ {label: '客户名称', prop: 'company'}, {label: '客户单位EN', prop: 'companyEn'}, @@ -1077,10 +1218,11 @@ }, openCompanyList () { this.selectUserDia = true this.getCompanyList() this.resetCompanySearch() }, getCompanyList () { selectCustomPageList({...this.page1}).then(res => { this.tableLoading1 = true selectCustomPageList({company: this.companyQuery, ...this.page1}).then(res => { this.tableLoading1 = false if (res.code === 200) { this.tableData1 = res.data.records @@ -1092,6 +1234,15 @@ }, pagination1 (page) { this.page1.size = page.limit this.getCompanyList() }, searchCompany() { this.page1.current = 1 this.getCompanyList() }, resetCompanySearch() { this.companyQuery = '' this.page1.current = 1 this.getCompanyList() }, selectMethod (row) { @@ -1180,7 +1331,8 @@ return code[index] + '' + num } } }catch(e){} } catch (e) { } }, replaceAll(str,find,value) { if (str === undefined) { @@ -1732,7 +1884,8 @@ row.sectionCopy = sectionCopy row.ask = arr1[index] row.tell = arr4[index] } catch(e) {} } catch (e) { } } this.sampleList.forEach(item => { if (this.sampleIds.indexOf(item.id) > -1||this.currentMethod.id==item.id) { @@ -1772,6 +1925,7 @@ temp.pop(); } } backtrack([], nums); return result; }, @@ -1802,7 +1956,8 @@ }).catch(e => { this.$message.error('删除失败') }) }).catch(() => {}) }).catch(() => { }) }, // 保存模板 addTemplateDia() { @@ -2379,10 +2534,12 @@ >>>.warning-row { color: #1890FF; } .node_i { color: orange; font-size: 18px; } .template-tag-list { min-height: 32px; display: flex; @@ -2390,26 +2547,32 @@ flex-wrap: wrap; gap: 8px; } .newju-order-form >>> .el-form-item { display: flex; margin-right: 0; } .newju-order-form >>> .el-form-item__label { flex: 0 0 108px; } .newju-order-form >>> .el-form-item__content { flex: 1; min-width: 0; margin-left: 0 !important; } .newju-order-form >>> .el-input, .newju-order-form >>> .el-select, .newju-order-form >>> .el-date-editor { width: 100%; } .empty-template-text { color: #909399; } /* 委托单信息:顶部操作栏 */ .order-header { display: flex; @@ -2420,48 +2583,59 @@ padding-bottom: 12px; border-bottom: 1px solid #ebeef5; } .order-header__title { font-size: 16px; font-weight: bold; color: #303133; } .order-header__actions { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; } /* 间距统一交给 gap,去掉相邻按钮自带的 margin-left */ .order-header__actions>>>.el-button+.el-button { margin-left: 0; } .order-header__quarter { width: 220px; } .order-header__template { width: 160px; } /* 委托单信息:表单卡片 */ .order-body { margin-top: 12px; } .order-card>>>.el-card__body { padding: 20px 20px 6px; } .order-card>>>.el-form-item { margin-bottom: 16px; } /* 控件统一占满标签之外的整列宽度:el-date-editor 默认写死 220px、 el-select 宽度收缩成固有宽度,不指定就会和其他输入框左右边缘对不齐 */ .order-card>>>.el-input, .order-card>>>.el-select { width: 100%; } /* append 单元格的 20px 内边距 + 按钮 -10px 负边距是按默认 40px 按钮标定的, small 输入下按钮会比输入框高、上下溢出;改成按钮直接撑满单元格 */ .order-card>>>.el-input-group__append { padding: 0; } .order-card>>>.el-input-group__append .el-button { margin: 0; padding: 9px 15px; src/views/business/productOrder/components/addView.vue
@@ -22,14 +22,23 @@ <el-button v-show="active==1" size="small" @click="templateDia=true"> <span style="color: #3A7BFA;">保存模板</span> </el-button> <el-button v-if="active==1&&addObj.sampleType!=undefined&&(addObj.sampleType.indexOf('电缆')>-1 ||addObj.sampleType.indexOf('综合')>-1)" size="small" type="primary" @click="openCableConfig">电缆配置</el-button> <el-button v-if="active==1&&addObj.sampleType!=undefined&&addObj.sampleType.indexOf('电缆')>-1" size="small" type="primary" @click="openAuxiliaryCore">辅助线芯配置</el-button> <el-button v-show="active==1||(tabIndex==4&&active==2)" :loading="saveLoad" size="small" type="primary" @click="save">提交</el-button> <el-button v-if="active==1&&addObj.sampleType!=undefined&&(addObj.sampleType.indexOf('电缆')>-1 ||addObj.sampleType.indexOf('综合')>-1)" size="small" type="primary" @click="openCableConfig">电缆配置 </el-button> <el-button v-if="active==1&&addObj.sampleType!=undefined&&addObj.sampleType.indexOf('电缆')>-1" size="small" type="primary" @click="openAuxiliaryCore">辅助线芯配置 </el-button> <el-button v-show="active==1||(tabIndex==4&&active==2)" :loading="saveLoad" size="small" type="primary" @click="save">提交 </el-button> <!-- 审核 --> <el-button v-show="active==3" :disabled="saveLoad" :loading="saveLoad" size="small" @click="upInsOrderOfState(2)">不通过</el-button> @click="upInsOrderOfState(2)">不通过 </el-button> <el-button v-show="active==3" :loading="saveLoad" size="small" type="primary" @click="upInsOrderOfState(1)">通过</el-button> @click="upInsOrderOfState(1)">通过 </el-button> <el-button size="small" @click="goBack"> <span style="color: #3A7BFA;">返回</span> </el-button> @@ -54,23 +63,30 @@ <el-descriptions-item label="联系方式">{{ addObj.phone || '-' }}</el-descriptions-item> <el-descriptions-item label="原始记录模板" :span="4"> <div v-if="boundTemplateList.length" class="template-tag-list"> <el-tag v-for="item in boundTemplateList" :key="item.templateId" size="small" effect="plain">{{ item.name }}</el-tag> <el-tag v-for="item in boundTemplateList" :key="item.templateId" size="small" effect="plain">{{ item.name }} </el-tag> </div> <span v-else class="order-detail__empty">暂未绑定原始记录模板</span> </el-descriptions-item> <el-descriptions-item label="备注" :span="4">{{ addObj.remark || '-' }}</el-descriptions-item> </el-descriptions> <el-form v-show="false" ref="addObj" :inline="true" :model="addObj" :rules="addObjRules" label-width="108px" label-position="right"> <el-form v-show="false" ref="addObj" :inline="true" :model="addObj" :rules="addObjRules" label-width="108px" label-position="right"> <el-row> <el-col :span="6"> <el-form-item label="委托编号:" prop="entrustCode"> <el-input v-model="addObj.entrustCode" clearable disabled placeholder="系统生成" size="small"></el-input> <el-input v-model="addObj.entrustCode" clearable disabled placeholder="系统生成" size="small"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="检验类别:" prop="orderType"> <el-select v-model="addObj.orderType" :disabled="active>1&&tabIndex!=4" clearable size="small" style="width: 100%;"> <el-option v-for="(a, ai) in dict.type.check_type1" :key="ai" :label="a.label" :value="a.value"></el-option> <el-select v-model="addObj.orderType" :disabled="active>1&&tabIndex!=4" clearable size="small" style="width: 100%;"> <el-option v-for="(a, ai) in dict.type.check_type1" :key="ai" :label="a.label" :value="a.value"></el-option> </el-select> </el-form-item> </el-col> @@ -81,7 +97,8 @@ </el-col> <el-col :span="6"> <el-form-item label="委托单位:" prop="company"> <el-input v-model="addObj.company" disabled placeholder="选择委托单位" size="small" style="width: 208px"> <el-input v-model="addObj.company" disabled placeholder="选择委托单位" size="small" style="width: 208px"> <template slot="append"> <el-button slot="append" :disabled="active>1&&tabIndex!=4" icon="el-icon-search" @click="openCompanyList"></el-button> @@ -93,21 +110,25 @@ <el-row> <el-col :span="6"> <el-form-item label="联系方式:" prop="phone"> <el-input v-model="addObj.phone" :disabled="active>1&&tabIndex!=4" clearable placeholder="选择委托客户" size="small"></el-input> <el-input v-model="addObj.phone" :disabled="active>1&&tabIndex!=4" clearable placeholder="选择委托客户" size="small"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="紧急程度:" prop="type"> <el-select v-model="addObj.type" :disabled="active>1&&tabIndex!=4" clearable size="small"> <el-option v-for="(a, ai) in dict.type.urgency_level" :key="ai" :label="a.label" :value="a.value"></el-option> <el-option v-for="(a, ai) in dict.type.urgency_level" :key="ai" :label="a.label" :value="a.value"></el-option> </el-select> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="样品名称:" prop="sample"> <el-input v-model="addObj.sample" disabled size="small" style="width: 208px"> <template slot="append"><el-button slot="append" :disabled="active>1&&tabIndex!=4" icon="el-icon-search" @click="selectStandardTree = true"></el-button></template> <template slot="append"> <el-button slot="append" :disabled="active>1&&tabIndex!=4" icon="el-icon-search" @click="selectStandardTree = true"></el-button> </template> </el-input> </el-form-item> </el-col> @@ -122,19 +143,22 @@ <el-col :span="6"> <el-form-item label="样品状态:" prop="sampleStatus"> <el-select v-model="addObj.sampleStatus" :disabled="active>1&&tabIndex!=4" size="small"> <el-option v-for="(a,ai) in dict.type.sample_status_list" :key="ai" :label="a.label" :value="a.value"></el-option> <el-option v-for="(a,ai) in dict.type.sample_status_list" :key="ai" :label="a.label" :value="a.value"></el-option> </el-select> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="抽检数量:" prop="testQuantity"> <el-input v-model="addObj.testQuantity" :disabled="active>1&&tabIndex!=4" clearable size="small"></el-input> <el-input v-model="addObj.testQuantity" :disabled="active>1&&tabIndex!=4" clearable size="small"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="来样方式:" prop="formType"> <el-select v-model="addObj.formType" :disabled="active>1&&tabIndex!=4" size="small" clearable> <el-option v-for="(a,ai) in dict.type.form_type" :key="ai" :label="a.label" :value="a.value"></el-option> <el-option v-for="(a,ai) in dict.type.form_type" :key="ai" :label="a.label" :value="a.value"></el-option> </el-select> </el-form-item> </el-col> @@ -150,7 +174,8 @@ <el-row> <el-col :span="6"> <el-form-item label="样品处理方式:" prop="processing"> <el-radio-group v-model="addObj.processing" :disabled="active>1&&tabIndex!=4" size="mini" style="display: flex; flex-direction: column;"> <el-radio-group v-model="addObj.processing" :disabled="active>1&&tabIndex!=4" size="mini" style="display: flex; flex-direction: column;"> <el-radio :label="0" border style="margin-right: 0">委托单位取回</el-radio> <el-radio :label="1" border>实验室处理</el-radio> </el-radio-group> @@ -180,23 +205,27 @@ <el-row> <el-col :span="6"> <el-form-item label="委托人:" prop="prepareUser"> <el-input v-model="addObj.prepareUser" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable size="small"></el-input> <el-input v-model="addObj.prepareUser" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable size="small"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="委托人英文:" prop="prepareUserEn"> <el-input v-model="addObj.prepareUserEn" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable size="small"></el-input> <el-input v-model="addObj.prepareUserEn" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable size="small"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="备注:" prop="remark"> <el-input v-model="addObj.remark" :autosize="{ minRows: 2, maxRows: 2}" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable <el-input v-model="addObj.remark" :autosize="{ minRows: 2, maxRows: 2}" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable size="small" style="width: 100%" type="textarea"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="备注英文:" prop="remarkEn"> <el-input v-model="addObj.remarkEn" :autosize="{ minRows: 2, maxRows: 2}" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable <el-input v-model="addObj.remarkEn" :autosize="{ minRows: 2, maxRows: 2}" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable size="small" type="textarea"></el-input> </el-form-item> </el-col> @@ -204,19 +233,22 @@ <el-row> <el-col :span="6"> <el-form-item label="样品名称:" prop="sampleView"> <el-input v-model="addObj.sampleView" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable <el-input v-model="addObj.sampleView" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable size="small"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="样品名称英文:" prop="sampleViewEn"> <el-input v-model="addObj.sampleViewEn" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable <el-input v-model="addObj.sampleViewEn" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable size="small"></el-input> </el-form-item> </el-col> <el-col :span="6"> <el-form-item label="委托人工号:" prop="prepareCode"> <el-input v-model="addObj.prepareCode" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable <el-input v-model="addObj.prepareCode" :disabled="active>1&&tabIndex!=4" :placeholder="active>1 ? '' : '请输入'" clearable size="small"></el-input> </el-form-item> </el-col> @@ -250,7 +282,8 @@ <span style="width: 150px;font-size: 14px;text-align: right;">特殊标准:</span> <el-input v-model="specialStandardMethod" :disabled="!isSpecial" clearable size="small"></el-input> <el-button v-show="active==1" size="small" style="margin-left: 10px" type="primary" @click="editSpecial">编辑</el-button> type="primary" @click="editSpecial">编辑 </el-button> </div> </div> <el-table ref="sampleTable" :data="sampleList" border class="el-table sampleTable" highlight-current-row @@ -299,7 +332,8 @@ <template slot-scope="scope"> <el-select v-model="scope.row.standardMethodListId" :disabled="scope.row.model==null||active>1" :loading="methodLoad" :readonly="active>1" clearable placeholder="检验标准" size="small" style="width: 100%;" @change="(value)=>methodChange(value, scope.row)" @clear="productList = []" @focus="methodFocus"> size="small" style="width: 100%;" @change="(value)=>methodChange(value, scope.row)" @clear="productList = []" @focus="methodFocus"> <el-option v-for="item in methods" :key="item.id" :label="item.code" :value="item.id"> </el-option> </el-select> @@ -324,7 +358,8 @@ max-height="400px" style="margin-bottom: 10px;" tooltip-effect="dark" @select="selectOne" @selection-change="selectProduct" @select-all="handleAll"> <el-table-column v-if="active==1" :selectable="selectable0" type="selection" width="65"></el-table-column> <el-table-column label="检验项分类" min-width="140" prop="inspectionItemClass" show-overflow-tooltip></el-table-column> <el-table-column label="检验项分类" min-width="140" prop="inspectionItemClass" show-overflow-tooltip></el-table-column> <el-table-column label="检验项" min-width="140" prop="inspectionItem" show-overflow-tooltip> <template slot="header" slot-scope="scope"> <div style="display: flex;align-items: center;flex-direction: column;font-size: 14px"> @@ -354,7 +389,9 @@ </el-table-column> <el-table-column label="要求值" min-width="220px" prop="ask"> <template slot-scope="scope"> <el-input v-if="(active==1||tabIndex==4)&&(isAskOnlyRead || isSpecial)&&scope.row.inspectionValueType!='5'" v-model="scope.row.ask" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="要求值" <el-input v-if="(active==1||tabIndex==4)&&(isAskOnlyRead || isSpecial)&&scope.row.inspectionValueType!='5'" v-model="scope.row.ask" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="要求值" size="small" type="textarea" @change="e=>requestChange(e,scope.row,'ask')"></el-input> <span v-else> @@ -364,7 +401,8 @@ </el-table-column> <el-table-column label="要求描述" min-width="220px" prop="tell"> <template slot-scope="scope"> <el-input v-if="(active==1||tabIndex==4)&&(isAskOnlyRead || isSpecial)" v-model="scope.row.tell" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="要求描述" <el-input v-if="(active==1||tabIndex==4)&&(isAskOnlyRead || isSpecial)" v-model="scope.row.tell" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="要求描述" size="small" type="textarea" @change="e=>requestChange(e,scope.row,'tell')"></el-input> <span v-else> @@ -374,7 +412,8 @@ </el-table-column> <el-table-column label="条件" min-width="140" prop="radius" show-overflow-tooltip> <template slot-scope="scope"> <el-input v-if="(active==1||tabIndex==4)&&(isAskOnlyRead || isSpecial)" v-model="scope.row.radius" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="条件" <el-input v-if="(active==1||tabIndex==4)&&(isAskOnlyRead || isSpecial)" v-model="scope.row.radius" :autosize="{ minRows: 1, maxRows: 3}" clearable placeholder="条件" size="small" type="textarea" @change="e=>requestChange(e,scope.row,'radius')"> </el-input> @@ -397,12 +436,17 @@ <el-table-column label="计量单位" prop="unit" show-overflow-tooltip width="100"></el-table-column> <el-table-column label="单价" prop="price" show-overflow-tooltip width="100"></el-table-column> <el-table-column label="区间" min-width="120" prop="section" show-overflow-tooltip></el-table-column> <el-table-column :filter-method="filterHandler" :filters="filters" label="子实验室" min-width="130" prop="sonLaboratory" <el-table-column :filter-method="filterHandler" :filters="filters" label="子实验室" min-width="130" prop="sonLaboratory" show-overflow-tooltip></el-table-column> <el-table-column v-if="isSpecial&&active==1" label="操作" width="100"> <template slot-scope="scope"> <el-button v-if="!scope.row.repetitionTag" size="small" type="text" @click="addProductList(productList,scope.row,scope.$index)">插入行</el-button> <el-button v-if="!!scope.row.repetitionTag&&scope.row.delete" size="small" type="text" @click="deleteProductList(scope.$index,productList)">删除</el-button> <el-button v-if="!scope.row.repetitionTag" size="small" type="text" @click="addProductList(productList,scope.row,scope.$index)">插入行 </el-button> <el-button v-if="!!scope.row.repetitionTag&&scope.row.delete" size="small" type="text" @click="deleteProductList(scope.$index,productList)">删除 </el-button> </template> </el-table-column> </el-table> @@ -410,6 +454,16 @@ </div> <el-dialog :visible.sync="selectUserDia" title="选择单位" width="70%"> <div v-if="selectUserDia" class="body"> <el-form :inline="true" size="small" @submit.native.prevent> <el-form-item label="委托单位"> <el-input v-model="companyQuery" clearable placeholder="请输入委托单位" @keyup.enter.native="searchCompany"></el-input> </el-form-item> <el-form-item> <el-button type="primary" @click="searchCompany">查询</el-button> <el-button @click="resetCompanySearch">重置</el-button> </el-form-item> </el-form> <lims-table :tableData="tableData1" :column="column1" :isSelection="true" :handleSelectionChange="selectMethod" @pagination="pagination1" height="400px" key="tableData1" @@ -421,16 +475,19 @@ </span> </el-dialog> <el-dialog :visible.sync="selectStandardTree" title="选择样品" width="500px"> <div v-if="selectStandardTree" v-loading="selectStandardTreeLoading" class="body" style="height: 60vh;overflow-y: auto;user-select: none;"> <div v-if="selectStandardTree" v-loading="selectStandardTreeLoading" class="body" style="height: 60vh;overflow-y: auto;user-select: none;"> <el-row> <el-col :span="24"> <el-input v-model="search" clearable placeholder="输入关键字进行搜索" size="small" style="margin-bottom: 5px;" suffix-icon="el-icon-search" @blur="searchFilter" @clear="searchFilter" style="margin-bottom: 5px;" suffix-icon="el-icon-search" @blur="searchFilter" @clear="searchFilter" @keyup.enter.native="searchFilter"></el-input> </el-col> </el-row> <el-tree ref="tree" :data="list" :default-expanded-keys="expandedKeys" :filter-node-method="filterNode" :props="{ children: 'children', label: 'label' }" highlight-current node-key="label" @node-click="handleNodeClick" :props="{ children: 'children', label: 'label' }" highlight-current node-key="label" @node-click="handleNodeClick" @node-expand="nodeOpen" @node-collapse="nodeClose" @dblclick.native="activeStandardTree"> <div slot-scope="{ node, data }" class="custom-tree-node"> <el-row> @@ -460,7 +517,8 @@ <el-button :loading="templateLoading" type="primary" @click="addTemplateDia">确 定</el-button> </span> </el-dialog> <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false" :visible.sync="issuedDialogVisible" title="检验下发" width="400px"> <el-dialog :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false" :visible.sync="issuedDialogVisible" title="检验下发" width="400px"> <div class="body" style="max-height: 60vh;"> <el-row> <el-col :span="22" class="search_thing"> @@ -474,7 +532,8 @@ <el-col :span="22" class="search_thing"> <div class="search_label"><span class="required-span">* </span>指派人员:</div> <div class="search_input"> <el-select v-model="distributeData.userId" filterable placeholder="请选择" size="small" style="width: 100%;" @change="changeUser"> <el-select v-model="distributeData.userId" filterable placeholder="请选择" size="small" style="width: 100%;" @change="changeUser"> <el-option v-for="item in personList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> @@ -483,8 +542,10 @@ <el-col v-if="distributeData.userId" :span="22" class="search_thing"> <div class="search_label">试验室:</div> <div class="search_input"> <el-select v-model="distributeData.sonLaboratory" filterable placeholder="请选择" size="small" style="width: 100%;"> <el-option v-for="item in newJuLaboratoryList" :key="item.value" :label="item.label" :value="item.value"> <el-select v-model="distributeData.sonLaboratory" filterable placeholder="请选择" size="small" style="width: 100%;"> <el-option v-for="item in newJuLaboratoryList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </div> @@ -517,11 +578,14 @@ </span> </el-dialog> <!--电缆配置--> <cableConfig v-if="cableConfigShow" ref="cableConfigShow" :active="active" :isSpecial="isSpecial" :sampleSelectionList="sampleSelectionList" @goBackAdd="goBackAdd"/> <cableConfig v-if="cableConfigShow" ref="cableConfigShow" :active="active" :isSpecial="isSpecial" :sampleSelectionList="sampleSelectionList" @goBackAdd="goBackAdd"/> <!--辅助线芯配置--> <auxiliary-wire-core v-if="auxiliaryShow" :active="active" :isSpecial="isSpecial" :sampleSelectionList="sampleSelectionList" @goBackAdd2="goBackAdd2"></auxiliary-wire-core> <auxiliary-wire-core v-if="auxiliaryShow" :active="active" :isSpecial="isSpecial" :sampleSelectionList="sampleSelectionList" @goBackAdd2="goBackAdd2"></auxiliary-wire-core> <!--特殊值处理框--> <el-dialog :before-close="beforeClose" :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false" <el-dialog :before-close="beforeClose" :close-on-click-modal="false" :close-on-press-escape="false" :show-close="false" :visible.sync="bsm1DiaAll" min-width="400px" title="检测到特殊项,请作出以下选择"> @@ -532,7 +596,8 @@ <div class="search_label" style="width: 80px;"><span class="required-span">* </span>选项:</div> <div class="search_input"> <el-radio-group v-model="item.bsm1Val" v-removeAriaHidden @input="upBsmAll(item)"> <el-radio v-for="(a, ai) in JSON.parse(item.bsmRow.sectionCopy)" :key="ai" :label="a" style="margin-bottom: 2px;margin-top: 2px;"></el-radio> <el-radio v-for="(a, ai) in JSON.parse(item.bsmRow.sectionCopy)" :key="ai" :label="a" style="margin-bottom: 2px;margin-top: 2px;"></el-radio> </el-radio-group> </div> </el-col> @@ -541,7 +606,8 @@ <div class="search_input"> <el-radio-group v-model="item.bsm1Val" v-removeAriaHidden @input="upBsmAll(item)"> <el-radio v-for="(a, ai) in JSON.parse(item.bsmRow.sectionCopy)" :key="ai" :label="a">{{JSON.parse(item.bsmRow.askCopy)[ai]}}</el-radio> :label="a">{{ JSON.parse(item.bsmRow.askCopy)[ai] }} </el-radio> </el-radio-group> </div> </el-col> @@ -584,7 +650,8 @@ label="识别符值" prop="value"> <template slot-scope="scope"> <el-input v-model="scope.row.value" placeholder="请输入" size="small" @input="inputValueHandler(scope.row,scope.$index)"></el-input> <el-input v-model="scope.row.value" placeholder="请输入" size="small" @input="inputValueHandler(scope.row,scope.$index)"></el-input> </template> </el-table-column> </el-table> @@ -735,6 +802,7 @@ tableData1: [], tableLoading1: false, multipleSelection: [], companyQuery: '', column1: [ {label: '客户名称', prop: 'company'}, {label: '客户单位EN', prop: 'companyEn'}, @@ -1021,10 +1089,11 @@ }, openCompanyList () { this.selectUserDia = true this.getCompanyList() this.resetCompanySearch() }, getCompanyList () { selectCustomPageList({...this.page1}).then(res => { this.tableLoading1 = true selectCustomPageList({company: this.companyQuery, ...this.page1}).then(res => { this.tableLoading1 = false if (res.code === 200) { this.tableData1 = res.data.records @@ -1036,6 +1105,15 @@ }, pagination1 (page) { this.page1.size = page.limit this.getCompanyList() }, searchCompany() { this.page1.current = 1 this.getCompanyList() }, resetCompanySearch() { this.companyQuery = '' this.page1.current = 1 this.getCompanyList() }, selectMethod (row) { @@ -1112,7 +1190,8 @@ return code[index] + '' + num } } }catch(e){} } catch (e) { } }, replaceAll(str,find,value) { if (str === undefined) { @@ -1171,7 +1250,8 @@ type: "warning" }).then(() => { this.saveMethod(sampleList) }).catch(() => {}) }).catch(() => { }) }else{ let isRTS = this.totalArr.find(a => a.ask != null && this.symbolList.find(b=>a.ask.includes(b)) && a.state == 1) if (isRTS) { @@ -1529,7 +1609,8 @@ } else { this.methods = res.data.standardMethodList } } catch (e) {} } catch (e) { } }) }, addStandardTree() { @@ -1636,7 +1717,8 @@ row.sectionCopy = sectionCopy row.ask = arr1[index] row.tell = arr4[index] } catch(e) {} } catch (e) { } } this.sampleList.forEach(item => { if (this.sampleIds.indexOf(item.id) > -1||this.currentMethod.id==item.id) { @@ -1673,6 +1755,7 @@ temp.pop(); } } backtrack([], nums); return result; }, @@ -1703,7 +1786,8 @@ }).catch(e => { this.$message.error('删除失败') }) }).catch(() => {}) }).catch(() => { }) }, // 保存模板 addTemplateDia() { @@ -2244,10 +2328,12 @@ >>>.warning-row { color: #1890FF; } .node_i { color: orange; font-size: 18px; } .template-tag-list { min-height: 32px; display: flex; @@ -2255,23 +2341,28 @@ flex-wrap: wrap; gap: 8px; } /* 委托单信息:只读详情 */ .order-detail__title { font-size: 16px; font-weight: bold; color: #303133; } .order-detail>>>.el-descriptions-item__label.is-bordered-label { width: 104px; white-space: nowrap; } .order-detail>>>.el-descriptions-item__content { color: #303133; } /* 描述列表内不需要额外的行高占位,标签行与其它行等高 */ .order-detail .template-tag-list { min-height: 0; } .order-detail__empty { color: #c0c4cc; } src/views/business/reportPreparation/index.vue
@@ -53,22 +53,31 @@ :auto-upload="true" :before-upload="fileBeforeUpload1" :headers="uploadHeader" :on-error="onError1" :on-success="handleSuccessUp1" :show-file-list="false" accept='.doc,.docx'> <el-button size="small" type="text" :disabled="scope.row.state != 0 || nickName !== scope.row.writeUserName">上传</el-button> :disabled="scope.row.state != 0 || nickName !== scope.row.writeUserName">上传 </el-button> </el-upload> <!-- <el-button type="text" size="small" :disabled="scope.row.state != 0 || nickName !== scope.row.writeUserName"--> <!-- @click="handleRestore(scope.row)">还原</el-button>--> <el-button type="text" size="small" @click="sendBackTask(scope.row)">退回任务</el-button> <el-button type="text" size="small" :disabled="scope.row.state != 0 || nickName !== scope.row.writeUserName" @click="sendBackTask(scope.row)">退回任务</el-button> <el-button type="text" size="small" :disabled="scope.row.state != 0 || nickName !== scope.row.writeUserName" @click="handle(scope.row)">提交</el-button> @click="handle(scope.row)">提交 </el-button> <el-button type="text" size="small" :disabled="scope.row.state == null || scope.row.state == 0 || scope.row.isExamine == 1 || nickName !== scope.row.examineUser" @click="handleIssued(scope.row)">审核</el-button> @click="handleIssued(scope.row)">审核 </el-button> <el-button type="text" size="small" :disabled="scope.row.state == null || scope.row.state == 0 || scope.row.isExamine == 0 || scope.row.isExamine == null || scope.row.isRatify == 1 || nickName !== scope.row.ratifyUser" @click="handleApprove(scope.row)">批准</el-button> @click="handleApprove(scope.row)">批准 </el-button> <el-button style="margin-left: 10px" type="text" size="small" :disabled="!scope.row.url && !scope.row.urlS" @click="download(scope.row)">下载</el-button> :disabled="!scope.row.url && !scope.row.urlS" @click="download(scope.row)">下载 </el-button> <el-button type="text" size="small" :loading="regeneratingReportId === scope.row.id" :disabled="regeneratingReportId === scope.row.id" @click="handleRegenerate(scope.row)">重新生成 </el-button> <el-button type="text" size="small" @click="viewInspectInfo(scope.row)">原始记录</el-button> <el-button type="text" size="small" @click="handleFileLook(scope.row)">附件上传</el-button> </div> @@ -105,7 +114,9 @@ <el-dialog :modal-append-to-body="false" :visible.sync="issuedReasonVisible" title="不通过原因" width="400px"> <div class="search_thing"> <div class="search_label">不通过原因:</div> <div class="search_input"><el-input v-model="reason" clearable placeholder="请输入" size="small"></el-input></div> <div class="search_input"> <el-input v-model="reason" clearable placeholder="请输入" size="small"></el-input> </div> </div> <span slot="footer" class="dialog-footer"> <el-button :disabled="loadingIssuedReason" @click="issuedReasonVisible = false">取消</el-button> @@ -130,7 +141,9 @@ <el-dialog :modal-append-to-body="false" :visible.sync="approveReasonVisible" title="不批准原因" width="400px"> <div class="search_thing"> <div class="search_label">不批准原因:</div> <div class="search_input"><el-input v-model="reason" clearable placeholder="请输入" size="small"></el-input></div> <div class="search_input"> <el-input v-model="reason" clearable placeholder="请输入" size="small"></el-input> </div> </div> <span slot="footer" class="dialog-footer"> <el-button :disabled="loadingApproveReason" @click="approveReasonVisible = false">取消</el-button> @@ -189,12 +202,30 @@ <el-upload ref='upload' :action="fileAction" :auto-upload="true" :before-upload="fileBeforeUpload" :data="{ orderId: filesLookInfo.insOrderId }" :headers="uploadHeader" :on-error="onError" :on-success="handleSuccessUp" :show-file-list="false" accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' style="width: 80px !important;"> accept='.jpg,.jpeg,.png,.gif,.doc,.docx,.xls,.xlsx,.ppt,.pptx,.pdf,.zip,.rar' style="width: 80px !important;"> <el-button size="small" style="height: 38px" type="primary">附件上传</el-button> </el-upload> </div> <lims-table :tableData="tableDataFile" :column="columnFile" height="600px" key="tableDataFile" :tableLoading="tableLoadingFile"></lims-table> </el-dialog> <el-dialog title="选择下载报告" :visible.sync="downloadDialogVisible" width="400px" :close-on-click-modal="false" @closed="closeDownloadDialog"> <el-form label-width="90px"> <el-form-item label="报告类型:"> <el-radio-group v-model="selectedReportType"> <el-radio :label="0">检测报告</el-radio> <el-radio :label="1" :disabled="!downloadRow || !downloadRow.inspectionUrl">检验报告</el-radio> </el-radio-group> </el-form-item> </el-form> <span slot="footer" class="dialog-footer"> <el-button @click="downloadDialogVisible = false">取 消</el-button> <el-button type="primary" :loading="downloadingReportType !== null" :disabled="selectedReportType === null || downloadingReportType !== null" @click="downloadSelectedReport(selectedReportType)">下 载</el-button> </span> </el-dialog> </div> </template> @@ -207,6 +238,7 @@ downloadReport, examineReport, pageInsReport, regenerateReport, ratifyReport, sendBackTask, upReportUrl, @@ -217,6 +249,7 @@ import { selectUserCondition } from "@/api/business/inspectionTask"; import limsTable from "@/components/Table/lims-table.vue"; import {delFile, downFile, getFileList} from "@/api/business/rawMaterialOrder"; export default { name: 'ReportPreparation', components: { limsTable, onlyoffice }, @@ -255,6 +288,11 @@ mutiList: [], outLoading: false, outExportLoading: false, regeneratingReportId: null, downloadDialogVisible: false, downloadRow: null, selectedReportType: 0, downloadingReportType: null, inLoading: false, addApproverDia: false, // 指定审批人员弹框 approver: '', // 审批人员 @@ -492,7 +530,7 @@ fixed: "right", dataType: "slot", slot: "action", width: '360px', width: '440px', label: "操作" } ], @@ -749,7 +787,28 @@ } }, download(row) { downloadReport(row.id).then(res => { this.downloadRow = row // 历史数据只有检测报告:直接按检测报告下载,保持原有操作习惯。 if (!row.inspectionUrl) { this.downloadSelectedReport(0) return } this.selectedReportType = 0 this.downloadDialogVisible = true }, closeDownloadDialog() { if (this.downloadingReportType === null) { this.downloadRow = null this.selectedReportType = 0 } }, downloadSelectedReport(reportType) { if (!this.downloadRow) { return } const row = this.downloadRow this.downloadingReportType = reportType downloadReport(row.id, reportType).then(res => { if (res.type && res.type.includes('application/json')) { const reader = new FileReader() reader.onload = () => { @@ -762,11 +821,33 @@ reader.readAsText(res) return } const reportUrl = row.urlS || row.url || '' const reportUrl = reportType === 1 ? row.inspectionUrl : (row.urlS || row.url || '') const filename = decodeURIComponent(reportUrl.substring(reportUrl.lastIndexOf('/') + 1)) || `${row.code}.docx` this.$download.saveAs(res, filename) this.downloadDialogVisible = false }).catch(() => { this.$message.error('报告下载失败') }).finally(() => { this.downloadingReportType = null if (!this.downloadDialogVisible) { this.downloadRow = null } }) }, handleRegenerate(row) { this.$confirm('将根据当前原始记录重新生成并覆盖系统报告,是否继续?', '提示', { confirmButtonText: '确定', cancelButtonText: '取消', type: 'warning' }).then(() => { this.regeneratingReportId = row.id return regenerateReport(row.id).then(() => { this.$message.success('报告重新生成成功') this.refreshTable() }).finally(() => { this.regeneratingReportId = null }) }).catch(() => { }) }, // 还原操作 src/views/system/customer/index.vue
@@ -27,28 +27,15 @@ <el-form-item label="客户名称" prop="company"> <el-input v-model="user.company" size="small" clearable></el-input> </el-form-item> <el-form-item label="客户单位EN" prop="companyEn"> <el-input v-model="user.companyEn" size="small" clearable></el-input> </el-form-item> <el-form-item label="单位地址" prop="address"> <el-input type="textarea" v-model="user.address" size="small" clearable :autosize="{minRows: 2, maxRows: 4}"></el-input> </el-form-item> <el-form-item label="单位地址EN" prop="addressEn"> <el-input type="textarea" v-model="user.addressEn" size="small" clearable :autosize="{minRows: 2, maxRows: 4}"></el-input> <el-form-item label="联系人" prop="contact"> <el-input v-model="user.contact" size="small" clearable></el-input> </el-form-item> <el-form-item label="单位电话" prop="phone"> <el-input v-model="user.phone" size="small" clearable></el-input> </el-form-item> <el-form-item label="加急额度" prop="num"> <el-input v-model="user.num" size="small" clearable></el-input> </el-form-item> <el-form-item label="客户编号" prop="code2"> <el-input v-model="user.code2" size="small" clearable></el-input> </el-form-item> <el-form-item label="工厂域" prop="code"> <el-input v-model="user.code" size="small" clearable></el-input> </el-form-item> </el-form> <span slot="footer" class="dialog-footer"> @@ -75,13 +62,9 @@ tableData: [], column: [ {label: '客户名称', prop: 'company'}, {label: '客户单位EN', prop: 'companyEn'}, {label: '单位地址', prop: 'address'}, {label: '单位地址EN', prop: 'addressEn'}, {label: '联系人', prop: 'contact'}, {label: '单位电话', prop: 'phone'}, {label: '加急额度', prop: 'num'}, {label: '客户编号', prop: 'code2'}, {label: '工厂域', prop: 'code'}, { dataType: 'action', fixed: 'right', @@ -120,8 +103,6 @@ userRules: { company: [{ required: true, message: '请输入客户名称', trigger: 'blur' }], address: [{ required: true, message: '请输入单位地址', trigger: 'blur' }], num: [{ required: true, message: '请输入加急额度', trigger: 'blur' }], code2: [{ required: true, message: '请输入客户编号', trigger: 'blur' }], }, loading: false, //