zhangherong
2025-07-05 aeb4d26b6c546f4abfcf31c636b70f40f2e49788
src/views/eam/base/modules/EamMaintenanceStandardModal.vue
@@ -85,16 +85,16 @@
            :columns="detail.columns"
            style="margin-top: 8px;">
            <template v-slot:itemPart="props">
              <a-textarea v-model="props.row.itemPart" allowClear @change="$refs.editableDetailTable.validateTable()"
                          :placeholder="model.maintenanceCategory!='THIRD_MAINTENANCE'?'仅三保需要维护':'请输入部位'" :rows="1"
                          autoSize :disabled="model.maintenanceCategory!='THIRD_MAINTENANCE'"/>
              <a-textarea v-model="props.row.itemPart" allowClear @blur="$refs.editableDetailTable.validateTable()"
                          :placeholder="!Boolean(model.maintenanceCategory)?'请选择保养分类':'请输入部位'" :rows="1"
                          autoSize :disabled="!Boolean(model.maintenanceCategory)"/>
            </template>
            <template v-slot:itemCategory="props">
              <j-dict-select-tag v-model="props.row.itemCategory" :dict-code="encodedDictCode"
                                 @change="$refs.editableDetailTable.validateTable()"
                                 :placeholder="getItemCategoryPlaceholder"
                                 :disabled="!Boolean(model.maintenanceCategory)||model.maintenanceCategory=='THIRD_MAINTENANCE'"/>
                                 :placeholder="!Boolean(model.maintenanceCategory)?'请选择保养分类':'请选择项保养分类'"
                                 :disabled="!Boolean(model.maintenanceCategory)"/>
            </template>
          </j-vxe-table>
        </a-row>
@@ -219,6 +219,67 @@
              ]
            }
          ],
          defaultColumns: [
            {
              title: 'ID',
              key: 'id',
              type: JVXETypes.hidden
            },
            {
              title: 'standardId',
              key: 'standardId',
              type: JVXETypes.hidden
            },
            {
              title: '项目序号',
              key: 'itemCode',
              type: JVXETypes.inputNumber,
              align: 'center',
              placeholder: '请输入项目序号',
              width: 150,
              validateRules: [
                { required: true, message: '请输入项目序号' },
                { unique: true, message: '项目序号不能重复' }
              ]
            },
            {
              title: '部位',
              key: 'itemPart',
              type: JVXETypes.slot,
              slotName: 'itemPart',
              placeholder: '请输入部位',
              align: 'center',
              validateRules: [{ handler: this.itemPartValidate }]
            },
            {
              title: '保养项分类',
              key: 'itemCategory',
              type: JVXETypes.slot,
              slotName: 'itemCategory',
              align: 'center',
              validateRules: [{ handler: this.itemCategoryValidate }]
            },
            {
              title: '保养项目',
              key: 'itemName',
              placeholder: '请输入保养项目',
              type: JVXETypes.textarea,
              align: 'center',
              validateRules: [
                { required: true, message: '请输入保养项目' }
              ]
            },
            {
              title: '保养规范或要求',
              key: 'itemDemand',
              placeholder: '请输入保养规范或要求',
              type: JVXETypes.textarea,
              align: 'center',
              validateRules: [
                { required: true, message: '请输入保养规范或要求' }
              ]
            }
          ],
          toolbarConfig: {
            // prefix 前缀;suffix 后缀
            slot: ['prefix', 'suffix'],
@@ -228,15 +289,19 @@
        }
      }
    },
    computed: {
      getItemCategoryPlaceholder() {
        if (!Boolean(this.model.maintenanceCategory)) return '请选择保养分类'
        else {
          if (this.model.maintenanceCategory != 'THIRD_MAINTENANCE') return '请选择保养项分类'
          else return '三保无需维护'
    watch: {
      'model.maintenanceCategory': {
        handler(val) {
          if (val) {
            if (val != 'THIRD_MAINTENANCE') this.detail.columns = [...this.detail.defaultColumns.filter(item => item.key != 'itemPart')]
            else this.detail.columns = [...this.detail.defaultColumns.filter(item => item.key != 'itemCategory')]
          }
          else this.detail.columns = [...this.detail.defaultColumns]
        }
        }
      },
    computed: {
      encodedDictCode() {
        let suffix
        if (!Boolean(this.model.maintenanceCategory) || this.model.maintenanceCategory === 'THIRD_MAINTENANCE') return
@@ -247,6 +312,7 @@
      }
    },
    methods: {
      // 主页面点击新增后触发
      add() {
        this.model = {}
        this.visible = true
@@ -255,6 +321,10 @@
        this.detail.dataSource = []
      },
      /**
       * 主页面点击编辑后触发
       * @param record 主页面列表行记录
       */
      edit(record) {
        this.model = Object.assign({}, record)
        this.visible = true
@@ -264,6 +334,10 @@
        this.loadDetail(record.id)
      },
      /**
       * 点击升版后触发
       * @param record 主页面列表行记录
       */
      upgrade(record) {
        this.model = Object.assign({}, record)
        this.visible = true
@@ -297,8 +371,9 @@
          if (value !== 'THIRD_MAINTENANCE') delete item.itemPart
          delete item.itemCategory
        })
        this.detail.dataSource = [...tableData]
        console.log('tableData', tableData)
        this.$refs.editableDetailTable.validateTable()
      },
      /**
@@ -419,5 +494,6 @@
  /deep/ textarea.ant-input {
    resize: none;
    margin-bottom: 0;
  }
</style>