src/views/eam/repair/modules/EamReportRepairList/EamReportRepairModal.vue
@@ -1,86 +1,151 @@
<template>
  <j-modal
    :title="title"
    :width="800"
    fullscreen
    :visible="visible"
    centered
    :confirmLoading="confirmLoading"
    switchFullscreen
    :okButtonProps="{ class:{'jee-hidden': disableSubmit} }"
    @ok="handleOk"
    @cancel="close"
    :mask-closable="false"
    @cancel="handleCancel"
    cancelText="关闭">
    <a-spin :spinning="confirmLoading">
      <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol" :wrapperCol="wrapperCol">
        <a-row>
          <a-col :span="12">
            <a-form-model-item prop="equipmentId" label="设备编号">
              <lx-search-equipment-select placeholder="请输入设备编号或名称搜索" v-model="model.equipmentId"/>
            </a-form-model-item>
          </a-col>
      <j-form-container :disabled="disableSubmit">
        <a-form-model ref="form" :model="model" :rules="validatorRules" :labelCol="labelCol"
                      :wrapperCol="wrapperCol" slot="detail">
          <a-row>
            <a-col :span="customSpan">
              <a-form-model-item prop="equipmentId" label="设备编号">
                <lx-search-equipment-select placeholder="请输入设备编号或名称搜索" v-model="model.equipmentId"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="是否加工">
                <j-dict-select-tag dict-code="is_processed" type="radio" v-model="model.isProcessed"
                                   @change="handleRadioChange($event,'faultStartTime,breakdownFlag,' +
                                    'faultDescription,batchNumber,processingPart,quantity')"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="故障开始时间">
                <a-date-picker :disabled="!Boolean(+model.isProcessed)" v-model="model.faultStartTime" value-format="YYYY-MM-DD" style="width:100%"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="是否停机">
                <j-dict-select-tag :disabled="!Boolean(+model.isProcessed)" dict-code="yn" placeholder="请选择是否停机" v-model="model.breakdownFlag"/>
              </a-form-model-item>
            </a-col>
          </a-row>
          <a-col :span="12">
            <a-form-model-item prop="faultName" label="故障简称">
              <a-select placeholder="请选择故障简称" v-model="model.faultName" @change="handleFaultNameChange">
                <a-select-option v-for="item in faultReasonList" :key="item.faultName">
                  {{ item.faultName }}
                </a-select-option>
              </a-select>
            </a-form-model-item>
          </a-col>
        </a-row>
          <a-row>
            <a-col :span="customSpan">
              <a-form-model-item label="故障现象">
                <a-input  :disabled="!Boolean(+model.isProcessed)" placeholder="请输入故障现象" v-model="model.faultDescription"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="批次号">
                <a-input  :disabled="!Boolean(+model.isProcessed)" placeholder="请输入批次号" v-model="model.batchNumber"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="加工零件号">
                <a-input  :disabled="!Boolean(+model.isProcessed)" placeholder="请输入加工零件号" v-model="model.processingPart"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="件数">
                <a-input-number  :disabled="!Boolean(+model.isProcessed)" placeholder="请输入件数" v-model="model.quantity" :min="0" style="width: 100%"/>
              </a-form-model-item>
            </a-col>
          </a-row>
        <a-row>
          <a-col :span="12">
            <a-form-model-item label="故障分类">
              <a-input placeholder="请输入故障分类" v-model="model.faultType_dictText" readOnly/>
            </a-form-model-item>
          </a-col>
        </a-row>
          <a-row>
            <a-col :span="customSpan">
              <a-form-model-item label="设备事故">
                <j-dict-select-tag dict-code="yn" placeholder="请选择设备事故" v-model="model.isAccidentsRegister"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="废品件号">
                <a-input placeholder="请输入废品件号" v-model="model.scrapPartNumber"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="废品件数">
                <a-input-number placeholder="请输入废品件数" v-model="model.scrapPartQuantity" :min="0" style="width: 100%"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="废品价值">
                <a-input placeholder="请输入废品价值" v-model="model.scrapPartValue"/>
              </a-form-model-item>
            </a-col>
          </a-row>
        <a-row>
          <a-col :span="24">
            <a-form-model-item label="故障描述" prop="faultDescription" :labelCol="labelColLong"
                               :wrapperCol="wrapperColLong">
              <a-textarea placeholder="请输入故障描述" v-model="model.faultDescription"/>
            </a-form-model-item>
          </a-col>
        </a-row>
          <a-row>
            <a-col :span="customSpan">
              <a-form-model-item label="是否有设备操作证">
                <j-dict-select-tag dict-code="yn" placeholder="请选择是否有设备操作证" v-model="model.operationCertificate"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="是否断电重启">
                <j-dict-select-tag dict-code="yn" placeholder="请选择是否断电重启" v-model="model.powerOffRestart"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="是否为批次首件">
                <j-dict-select-tag dict-code="yn" placeholder="请选择是否为批次首件" v-model="model.batchFirstPiece"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="变动因素">
                <j-dict-select-tag dict-code="yn" placeholder="请选择变动因素" v-model="model.variableFactors"/>
              </a-form-model-item>
            </a-col>
          </a-row>
        <a-row>
          <a-col :span="12">
            <a-form-model-item prop="faultStartTime" label="故障开始时间">
              <a-date-picker showTime placeholder="请选择故障开始时间" v-model="model.faultStartTime"
                             :allow-clear="false" value-format="YYYY-MM-DD HH:mm:ss" :disabledDate="disabledDate"
                             :disabledTime="disabledTime"/>
            </a-form-model-item>
          </a-col>
          <a-row>
            <a-col :span="customSpan">
              <a-form-model-item label="变动因素内容">
                <j-dict-select-tag dict-code="variable_factors_value" placeholder="请选择变动因素内容" v-model="model.variableFactorsValue"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="执行程序">
                <a-input placeholder="请输入执行程序" v-model="model.executeNc"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="事故现象">
                <a-input placeholder="请输入事故现象" v-model="model.accidentPhenomenon"/>
              </a-form-model-item>
            </a-col>
            <a-col :span="customSpan">
              <a-form-model-item label="采取措施">
                <a-input placeholder="请输入采取措施" v-model="model.measure"/>
              </a-form-model-item>
            </a-col>
          </a-row>
          <a-col :span="12">
            <a-form-model-item prop="breakdownFlag" label="是否停机">
              <a-radio-group v-model="model.breakdownFlag">
                <a-radio v-for="item in breakdownFlagList" :value="item.value">{{ item.label }}</a-radio>
              </a-radio-group>
            </a-form-model-item>
          </a-col>
        </a-row>
          <a-row>
            <a-col :span="customSpan">
              <a-form-model-item label="造成结果">
                <a-input placeholder="请输入造成结果" v-model="model.causingResults"/>
              </a-form-model-item>
            </a-col>
        <a-row>
          <a-col :span="24">
            <a-form-model-item prop="imageFiles" label="报修图片" :labelCol="labelColLong" :wrapperCol="wrapperColLong">
              <lx-upload :returnUrl="false" :isMultiple="true" file-type="image" :number="3"
                         v-model="model.imageFilesResult"/>
            </a-form-model-item>
          </a-col>
        </a-row>
            <a-col :span="customSpan">
              <a-form-model-item label="备注">
                <a-input placeholder="请输入备注" v-model="model.measure"/>
              </a-form-model-item>
            </a-col>
          </a-row>
        <a-row>
          <a-col :span="24">
            <a-form-model-item prop="remark" label="备注" :labelCol="labelColLong" :wrapperCol="wrapperColLong">
              <a-textarea placeholder="请输入备注" v-model="model.remark"/>
            </a-form-model-item>
          </a-col>
        </a-row>
      </a-form-model>
        </a-form-model>
      </j-form-container>
    </a-spin>
  </j-modal>
</template>
@@ -105,7 +170,10 @@
      return {
        title: '操作',
        visible: false,
        //详情控制
        disableSubmit: false,
        model: {},
        customSpan: 6,
        labelCol: {
          xs: { span: 24 },
          sm: { span: 8 }
@@ -148,11 +216,12 @@
    },
    methods: {
      add() {
        this.editable = true
        //初始化默认值
        this.edit({
          faultDescription: '',
          breakdownFlag: this.breakdownFlagList.find(item => item.label === '否').value
        })
        this.model = {
          isProcessed: 0,
        }
        this.visible = true
      },
      edit(record) {
@@ -210,6 +279,23 @@
        }
      },
      /**\
       * 单选框值发生改变时触发
       * @param value 单选框值
       * @param key 单选框关联字段
       */
      handleRadioChange(value, key) {
        //key包含,说明是多选框
        if (key.includes(',')) {
          const keys = key.split(',')
          keys.forEach(key => {
            if (value === '0') delete this.model[key]
          })
        }else {
          if (value === '0') delete this.model[key]
        }
      },
      /**
       * 禁用日期
       * @params current 被禁用的时间
@@ -243,7 +329,10 @@
        this.$emit('close')
        this.visible = false
        if (this.$refs.form) this.$refs.form.clearValidate()
      }
      },
      handleCancel() {
        this.close()
      },
    }
  }
</script>