feat(device): 设备模块统一“设备名称/设备EN名称”命名;核查计划新增设备型号列;核查计划弹窗取消确认与废草稿清理
| | |
| | | methods: { |
| | | // 打开弹窗、表单填好后调用;有未保存草稿则自动恢复 |
| | | // bizKey:全局唯一业务名;formField:表单字段名(如 'form');recordId:编辑传记录id、新增传上下文;visibleField:弹窗显隐字段(如 'dialogVisible') |
| | | draftRestore(bizKey, formField, recordId, visibleField) { |
| | | // isDraftUsable:可选,草稿校验函数,返回 false 时丢弃该草稿 |
| | | draftRestore(bizKey, formField, recordId, visibleField, isDraftUsable) { |
| | | const old = this.draftStates[bizKey] |
| | | if (old) { |
| | | this.draftTeardown(old) |
| | |
| | | if (raw) { |
| | | try { |
| | | const draft = JSON.parse(raw) |
| | | if (typeof isDraftUsable === 'function' && !isDraftUsable(draft)) { |
| | | cache.local.remove(state.key) |
| | | return |
| | | } |
| | | const target = this[formField] |
| | | if (Array.isArray(target) && Array.isArray(draft)) { |
| | | target.splice(0, target.length, ...draft) |
| | |
| | | </el-form-item> |
| | | </el-col> |
| | | <el-col v-if="showStep === 0" :span="12"> |
| | | <el-form-item label="仪器名称:" prop="deviceName"> |
| | | <el-form-item label="设备名称:" prop="deviceName"> |
| | | <el-input v-model="form.deviceName" :disabled="currentStep !== 0" clearable size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | <div class="form-section-title">基本信息</div> |
| | | <el-row :gutter="12"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="仪器名称:" prop="deviceName"> |
| | | <el-form-item label="设备名称:" prop="deviceName"> |
| | | <el-select v-if="currentStep === 0" v-model="selectedDeviceId" clearable filterable |
| | | placeholder="请选择设备" size="small" style="width: 100%" @change="changeMachineName"> |
| | | <el-option v-for="item in equipOptions" :key="item.id" :label="item.label + '-' + item.value" |
| | |
| | | <!-- 表格列 --> |
| | | <el-table-column align="center" header-align="center" label="序号" prop="prop" type="index" |
| | | width="70"></el-table-column> |
| | | <!-- <el-table-column label="仪器名称" min-width="150" prop="unitName"></el-table-column>--> |
| | | <!-- <el-table-column label="设备名称" min-width="150" prop="unitName"></el-table-column>--> |
| | | <!-- <el-table-column label="型号" min-width="100" prop="model"></el-table-column>--> |
| | | <el-table-column label="地点" min-width="150" prop="address"></el-table-column> |
| | | <el-table-column label="日期" min-width="180" prop="accidentDate" |
| | |
| | | </div> |
| | | <div class="form"> |
| | | <div class="form-item"> |
| | | <span style="width: 80px">A仪器名称:</span> |
| | | <span style="width: 80px">A设备名称:</span> |
| | | <el-select v-model="form.adeviceId" :disabled="currentStep !== 0" class="table_input" clearable filterable |
| | | placeholder="设备名称" size="small" style="width:200px" @change="(val) => changeMachineName(val, 'A')"> |
| | | <el-option v-for="item in equipOptions" :key="item.id" :label="item.label" :value="item.id"> |
| | |
| | | </div> |
| | | <div class="form"> |
| | | <div class="form-item"> |
| | | <span style="width: 80px">B仪器名称:</span> |
| | | <span style="width: 80px">B设备名称:</span> |
| | | <el-select v-model="form.bdeviceId" :disabled="currentStep !== 0" class="table_input" clearable filterable |
| | | placeholder="设备名称" size="small" style="width:200px" @change="(val) => changeMachineName(val, 'B')"> |
| | | <el-option v-for="item in equipOptions" :key="item.id" :label="item.label" :value="item.id"> |
| | |
| | | </div> |
| | | <div class="form"> |
| | | <div class="form-item"> |
| | | <span style="width: 80px">C仪器名称:</span> |
| | | <span style="width: 80px">C设备名称:</span> |
| | | <el-select v-model="form.cdeviceId" :disabled="currentStep !== 0" class="table_input" clearable filterable |
| | | placeholder="设备名称" size="small" style="width:200px" @change="(val) => changeMachineName(val, 'C')"> |
| | | <el-option v-for="item in equipOptions" :key="item.id" :label="item.label" :value="item.id"> |
| | |
| | | <!-- 表格列 --> |
| | | <el-table-column align="center" header-align="center" label="序号" prop="prop" type="index" |
| | | width="70"></el-table-column> |
| | | <!-- <el-table-column label="仪器名称" min-width="150" prop="unitName"></el-table-column>--> |
| | | <!-- <el-table-column label="设备名称" min-width="150" prop="unitName"></el-table-column>--> |
| | | <!-- <el-table-column label="型号" min-width="100" prop="address"></el-table-column>--> |
| | | <el-table-column label="安装地点" min-width="150" prop="location"></el-table-column> |
| | | <el-table-column label="损坏或故障情况" min-width="180" prop="damageOrMalfunction"></el-table-column> |
| | |
| | | <!-- 表格列 --> |
| | | <el-table-column align="center" header-align="center" label="序号" prop="prop" type="index" |
| | | width="70"></el-table-column> |
| | | <!-- <el-table-column label="仪器名称" min-width="150" prop="unitName"></el-table-column>--> |
| | | <!-- <el-table-column label="设备名称" min-width="150" prop="unitName"></el-table-column>--> |
| | | <!-- <el-table-column label="型号" min-width="100" prop="address"></el-table-column>--> |
| | | <el-table-column label="配件" min-width="150" prop="parts"></el-table-column> |
| | | <el-table-column label="编号" min-width="100"> |
| | |
| | | width="70"></el-table-column> |
| | | <el-table-column label="设备编号" min-width="170" prop="deviceNumber"></el-table-column> |
| | | <el-table-column label="设备名称" min-width="180" prop="deviceName" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="设备型号" min-width="120" prop="deviceModel" show-overflow-tooltip></el-table-column> |
| | | <el-table-column label="核查时间" min-width="120" prop="checkTime" |
| | | :formatter="formatCheckMonth"></el-table-column> |
| | | <el-table-column label="核查指标" min-width="140" prop="checkIndex"> </el-table-column> |
| | |
| | | <div class="form-section-title">基本信息</div> |
| | | <el-row :gutter="12"> |
| | | <el-col :span="12"> |
| | | <el-form-item label="仪器名称:" prop="deviceName"> |
| | | <el-form-item label="设备名称:" prop="deviceName"> |
| | | <el-input v-model="form.deviceName" disabled size="small"></el-input> |
| | | </el-form-item> |
| | | </el-col> |
| | |
| | | </div> |
| | | </el-form> |
| | | <template #footer><span class="dialog-footer"> |
| | | <el-button @click="resetForm">取 消</el-button> |
| | | <el-button @click="handleCancel">取 消</el-button> |
| | | <el-button :loading="submitFormLoading" type="primary" @click="submitForm" |
| | | v-if="operationType !== 'view'">确 认</el-button> |
| | | </span></template> |
| | |
| | | this.$nextTick(() => { |
| | | this.form = this.HaveJson(row) |
| | | if (this.operationType !== 'view') { |
| | | this.draftRestore('equipmentVerificationPlan', 'form', this.form.planDetailsId, 'dialogVisible') |
| | | const rowDeviceName = this.form.deviceName |
| | | this.draftRestore('equipmentVerificationPlan', 'form', this.form.planDetailsId, 'dialogVisible', |
| | | // 设备名称是禁用字段,草稿里为空说明是被表单重置清空的废草稿,直接丢弃 |
| | | draft => !!draft.deviceName || !rowDeviceName) |
| | | } |
| | | }) |
| | | }, |
| | |
| | | this.saveDocx(res, '仪器设备期间核查计划表.docx') |
| | | }).catch(() => { }) |
| | | }, |
| | | // 本次是否有改动(含打开时恢复的草稿) |
| | | hasUnsavedEdit() { |
| | | const state = this.draftStates && this.draftStates['equipmentVerificationPlan'] |
| | | return !!state && this.draftSnapshot(state) !== state.baseline |
| | | }, |
| | | // 取消:无编辑直接退出;有编辑先确认,确认后丢弃草稿退出 |
| | | handleCancel() { |
| | | if (this.operationType === 'view' || !this.hasUnsavedEdit()) { |
| | | this.dialogVisible = false |
| | | return |
| | | } |
| | | this.$confirm('是否确认取消编辑?本次编辑记录不保存!', '提示', { |
| | | confirmButtonText: '确定', |
| | | cancelButtonText: '继续编辑', |
| | | type: 'warning' |
| | | }).then(() => { |
| | | this.draftClear('equipmentVerificationPlan') |
| | | this.dialogVisible = false |
| | | }).catch(() => { }) |
| | | }, |
| | | resetForm() { |
| | | // 右上角关闭时 close 事件先于显隐监听触发,先把草稿存下再重置表单,避免重置后的空内容被存成草稿 |
| | | this.draftStop('equipmentVerificationPlan') |
| | | this.$refs.modelForm.resetFields(); |
| | | this.dialogVisible = false |
| | |
| | | <div class="section-title" style="margin-top: 0;">基本信息</div> |
| | | <el-form :model="editData" label-width="120px" ref="rules1" :rules="rules1"> |
| | | <div class="form-row"> |
| | | <el-form-item label="仪器名称:" prop="deviceName"> |
| | | <el-form-item label="设备名称:" prop="deviceName"> |
| | | <el-input v-model="editData.deviceName" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="仪器名称:" prop="enDeviceName"> |
| | | <el-form-item label="设备EN名称:" prop="enDeviceName"> |
| | | <el-input v-model="editData.enDeviceName" size="small"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | |
| | | deviceDialog: false,//查看设备二维码弹框 |
| | | rules1: { |
| | | deviceName: [ |
| | | { required: true, message: '请输入仪器名称', trigger: 'blur' }, |
| | | { required: true, message: '请输入设备名称', trigger: 'blur' }, |
| | | ], |
| | | specificationModel: [ |
| | | { required: true, message: '请输入规格型号', trigger: 'blur' }, |
| | |
| | | <div class="section-title" style="margin-top: 0;">基本信息</div> |
| | | <el-form :label-position="labelPosition" :model="formData" label-width="120px"> |
| | | <div class="form-row"> |
| | | <el-form-item label="仪器名称:" required prop="deviceName"> |
| | | <el-form-item label="设备名称:" required prop="deviceName"> |
| | | <el-input :disabled="isUp" v-model="formData.deviceName" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="仪器名称:"> |
| | | <el-form-item label="设备EN名称:"> |
| | | <el-input :disabled="isUp" v-model="formData.enDeviceName" size="small"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | |
| | | <div class="section-title" style="margin-top: 0;">基本信息</div> |
| | | <el-form :label-position="labelPosition" :model="formData2" label-width="120px"> |
| | | <div class="form-row"> |
| | | <el-form-item label="仪器名称:" required> |
| | | <el-form-item label="设备名称:" required> |
| | | <el-input v-model="formData2.deviceName" size="small"></el-input> |
| | | </el-form-item> |
| | | <el-form-item label="仪器名称:"> |
| | | <el-form-item label="设备EN名称:"> |
| | | <el-input v-model="formData2.enDeviceName" size="small"></el-input> |
| | | </el-form-item> |
| | | </div> |
| | |
| | | tableData: [], |
| | | column: [ |
| | | { label: "设备名称", prop: "deviceName", dataType: 'link', linkMethod: 'selectAllByOne' }, |
| | | { label: "设备名称EN", prop: "enDeviceName" }, |
| | | { label: "设备EN名称", prop: "enDeviceName" }, |
| | | { |
| | | label: "规格型号", |
| | | prop: "specificationModel", |
| | |
| | | }, |
| | | submitForm() { |
| | | if (!this.formData.deviceName) { |
| | | this.$message.error('未输入仪器名称') |
| | | this.$message.error('未输入设备名称') |
| | | return |
| | | } |
| | | if (!this.formData.specificationModel) { |
| | |
| | | // 提交档案修订--新增 |
| | | submitForm2() { |
| | | if (!this.formData2.deviceName) { |
| | | this.$message.error('未输入仪器名称') |
| | | this.$message.error('未输入设备名称') |
| | | return |
| | | } |
| | | if (!this.formData2.specificationModel) { |
| | |
| | | width="70"></el-table-column> |
| | | <el-table-column label="单位名称" min-width="150" prop="unitName"></el-table-column> |
| | | <el-table-column label="地址" min-width="100" prop="address"></el-table-column> |
| | | <el-table-column label="仪器名称" min-width="150" prop="deviceName"></el-table-column> |
| | | <el-table-column label="设备名称" min-width="150" prop="deviceName"></el-table-column> |
| | | <el-table-column label="型号" min-width="100" prop="deviceModel"></el-table-column> |
| | | <el-table-column label="配件" min-width="150" prop="parts"></el-table-column> |
| | | <el-table-column label="对方仪器编号" min-width="150" prop="instrumentNumber"></el-table-column> |