feat(device): 设备模块统一“设备名称/设备EN名称”命名;核查计划新增设备型号列;核查计划弹窗取消确认与废草稿清理
已修改11个文件
76 ■■■■■ 文件已修改
src/mixins/draftSave.js 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/device/component/applicationForm.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/device/component/checkRecord.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/device/component/equipmentAccident.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/device/component/equipmentCheck.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/device/component/equipmentFailure.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/device/component/equipmentScrap.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/device/component/equipmentVerificationPlan.vue 31 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/device/component/files.vue 6 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/device/component/management.vue 14 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/CNAS/resourceDemand/device/component/usingExternalInstruments.vue 2 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/mixins/draftSave.js
@@ -23,7 +23,8 @@
  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)
@@ -56,6 +57,10 @@
      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)
src/views/CNAS/resourceDemand/device/component/applicationForm.vue
@@ -20,7 +20,7 @@
          </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>
src/views/CNAS/resourceDemand/device/component/checkRecord.vue
@@ -11,7 +11,7 @@
          <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"
src/views/CNAS/resourceDemand/device/component/equipmentAccident.vue
@@ -12,7 +12,7 @@
          <!-- 表格列 -->
          <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"
src/views/CNAS/resourceDemand/device/component/equipmentCheck.vue
@@ -14,7 +14,7 @@
      </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">
@@ -33,7 +33,7 @@
      </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">
@@ -52,7 +52,7 @@
      </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">
src/views/CNAS/resourceDemand/device/component/equipmentFailure.vue
@@ -12,7 +12,7 @@
          <!-- 表格列 -->
          <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>
src/views/CNAS/resourceDemand/device/component/equipmentScrap.vue
@@ -12,7 +12,7 @@
          <!-- 表格列 -->
          <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">
src/views/CNAS/resourceDemand/device/component/equipmentVerificationPlan.vue
@@ -51,6 +51,7 @@
          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>
@@ -107,7 +108,7 @@
          <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>
@@ -212,7 +213,7 @@
        </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>
@@ -471,7 +472,10 @@
      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)
        }
      })
    },
@@ -518,7 +522,28 @@
        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
src/views/CNAS/resourceDemand/device/component/files.vue
@@ -200,10 +200,10 @@
          <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>
@@ -510,7 +510,7 @@
      deviceDialog: false,//查看设备二维码弹框
      rules1: {
        deviceName: [
          { required: true, message: '请输入仪器名称', trigger: 'blur' },
          { required: true, message: '请输入设备名称', trigger: 'blur' },
        ],
        specificationModel: [
          { required: true, message: '请输入规格型号', trigger: 'blur' },
src/views/CNAS/resourceDemand/device/component/management.vue
@@ -69,10 +69,10 @@
                    <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>
@@ -273,10 +273,10 @@
                    <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>
@@ -494,7 +494,7 @@
            tableData: [],
            column: [
                { label: "设备名称", prop: "deviceName", dataType: 'link', linkMethod: 'selectAllByOne' },
                { label: "设备名称EN", prop: "enDeviceName" },
                { label: "设备EN名称", prop: "enDeviceName" },
                {
                    label: "规格型号",
                    prop: "specificationModel",
@@ -892,7 +892,7 @@
        },
        submitForm() {
            if (!this.formData.deviceName) {
                this.$message.error('未输入仪器名称')
                this.$message.error('未输入设备名称')
                return
            }
            if (!this.formData.specificationModel) {
@@ -941,7 +941,7 @@
        // 提交档案修订--新增
        submitForm2() {
            if (!this.formData2.deviceName) {
                this.$message.error('未输入仪器名称')
                this.$message.error('未输入设备名称')
                return
            }
            if (!this.formData2.specificationModel) {
src/views/CNAS/resourceDemand/device/component/usingExternalInstruments.vue
@@ -26,7 +26,7 @@
            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>