src/views/mdc/base/modules/MdcMessageApproval/MdcMessageApprovalModal.vue
@@ -4,28 +4,32 @@
           @cancel="closeModal"
           :visible="visible"
           :footer="null">
    <a-spin :spinning="confirmLoading">
      <a-form-model ref="form" :form="form" :model="formParams" :rules="validatorRules">
        <a-form-model-item label="设备编号" :labelCol="{span: 4}" :wrapperCol="{span: 8}">
          <a-input v-model="formParams.equipmentId" disabled></a-input>
    <a-spin :spinning="spinning">
      <a-form-model ref="form" :form="form" :model="formParams" :rules="validatorRules" :labelCol="{span: 4}"
                    :wrapperCol="{span: 20}">
        <a-form-model-item label="设备编号" :labelCol="{span: 4}" :wrapperCol="{span: 10}" prop="equipmentId">
          <a-input-search :readOnly="true" :disabled="disableSubmit" v-model="formParams.equipmentId"
                          @search="deviceSearch" enter-button
                          placeholder="请选择设备"/>
        </a-form-model-item>
        <a-form-model-item label="标题" :labelCol="{span: 4}" :wrapperCol="{span: 20}">
          <a-input v-model="formParams.titile" disabled></a-input>
        <a-form-model-item label="异常类型" :labelCol="{span: 4}" :wrapperCol="{span: 10}"
                           :prop="!buttonId?'msgType':''">
          <j-dict-select-tag dictCode="mdcMsgType" v-model='formParams.msgType' placeholder="请选择异常类型"
                             :disabled="disableSubmit&&buttonId!==2"/>
        </a-form-model-item>
        <a-form-model-item label="内容" :labelCol="{span: 4}" :wrapperCol="{span: 20}">
          <a-input v-model="formParams.msgContent" disabled></a-input>
        <a-form-model-item label="标题">
          <a-input placeholder="请输入标题" v-model="formParams.titile" :disabled="disableSubmit"/>
        </a-form-model-item>
        <a-form-model-item label="内容">
          <a-input placeholder="请输入内容" v-model="formParams.msgContent" :disabled="disableSubmit"/>
        </a-form-model-item>
        <a-form-model-item label="原因" :labelCol="{span: 4}" :wrapperCol="{span: 20}" prop="reportContent"
                           v-if="buttonId===1">
          <a-textarea v-model="formParams.reportContent" :disabled="buttonId!==1"></a-textarea>
        </a-form-model-item>
        <a-form-model-item label="原因" :labelCol="{span: 4}" :wrapperCol="{span: 20}" v-else>
          <a-textarea v-model="formParams.reportContent" :disabled="buttonId!==1"></a-textarea>
        <a-form-model-item label="原因" prop="reportContent" v-if="buttonId">
          <a-textarea v-model="formParams.reportContent" :disabled="buttonId!==2"/>
        </a-form-model-item>
        <a-form-model-item label="确认" :labelCol="{span: 4}" :wrapperCol="{span: 12}" prop="isConfirm"
                           v-if="buttonId==2">
                           v-if="buttonId==3">
          <a-select v-model='formParams.isConfirm' placeholder="请选择是否确认">
            <a-select-option value="2">确认</a-select-option>
            <a-select-option value="3">拒绝</a-select-option>
@@ -34,20 +38,26 @@
      </a-form-model>
    </a-spin>
    <div class="drawer-bottom-button" v-show="buttonId!==0">
      <a-popconfirm title="确定放弃操作?" @confirm="closeModal" okText="确定" cancelText="取消">
        <a-button style="margin-right: .8rem">取消</a-button>
      </a-popconfirm>
      <a-button @click="handleSubmit" type="primary" :loading="confirmLoading">提交</a-button>
    <div class="drawer-bottom-button" v-show="buttonId!==1">
      <a-space>
        <a-popconfirm title="确定放弃操作?" @confirm="closeModal" okText="确定" cancelText="取消">
          <a-button>取消</a-button>
        </a-popconfirm>
        <a-button @click="handleSubmit" type="primary" :loading="confirmLoading">提交</a-button>
      </a-space>
    </div>
    <SelectDeviceDrawerSingleSelection ref="selectDeviceDrawer" @selectFinished="selectOK" :title="'选择设备'"/>
  </a-modal>
</template>
<script>
  import { postAction } from '@/api/manage'
  import SelectDeviceDrawerSingleSelection from './SelectDeviceDrawer-SingleSelection'
  export default {
    name: 'MdcMessageApprovalModal',
    components: { SelectDeviceDrawerSingleSelection },
    props: {
      visible: {
        type: Boolean
@@ -57,11 +67,16 @@
      },
      buttonId: {
        type: Number
      },
      disableSubmit: {
        type: Boolean
      }
    },
    data() {
      return {
        form: this.$form.createForm(this),
        treeData: [],
        treeDefaultExpandedKeys: [],
        formParams: {
          equipmentId: '',
          titile: '',
@@ -71,7 +86,14 @@
          isConfirm: ''
        },
        confirmLoading: false,
        spinning: false,
        validatorRules: {
          equipmentId: [
            { required: true, message: '请选择设备', trigger: 'change' }
          ],
          msgType: [
            { required: true, message: '请选择异常类型' }
          ],
          reportContent: [
            { required: true, message: '请输入上报原因' }
          ],
@@ -80,29 +102,45 @@
          ]
        },
        url: {
          add: '/mdc/mdcMessageApproval/add',
          reportUrl: '/mdc/mdcMessageApproval/reportReason',
          confirmUrl: '/mdc/mdcMessageApproval/handleConfirm'
        }
      }
    },
    methods: {
      closeModal() {
        this.$refs.form.clearValidate()
        this.$emit('closeModal')
      deviceSearch() {
        this.$refs.selectDeviceDrawer.visible = true
        this.$refs.selectDeviceDrawer.checkedKeys = this.formParams.equipmentId ? [this.formParams.equipmentId] : []
        this.$refs.selectDeviceDrawer.selectedKeys = this.formParams.equipmentId ? [this.formParams.equipmentId] : []
      },
      /**
       * 选择已有设备后点击确定时触发
       * @param data 已选择的设备
       */
      selectOK(data) {
        this.$set(this.formParams, 'equipmentId', data[0])
      },
      handleSubmit() {
        const that = this
        // 触发表单验证
        this.$refs.form.validate(valid => {
          if (valid) {
            that.confirmLoading = true
            that.confirmLoading = that.spinning = true
            this.formParams.msgStatus = this.formParams.isConfirm
            let obj
            if (this.buttonId === 1) {
              obj = postAction(this.url.reportUrl, this.formParams)
            if (!this.buttonId) {
              obj = postAction(this.url.add, this.formParams)
            } else {
              obj = postAction(this.url.confirmUrl, this.formParams)
              if (this.buttonId === 2) {
                obj = postAction(this.url.reportUrl, this.formParams)
              } else {
                obj = postAction(this.url.confirmUrl, this.formParams)
              }
            }
            obj.then((res) => {
              if (res.success) {
                that.$notification.success({
@@ -110,6 +148,7 @@
                  description: res.message
                })
                that.$emit('formHasSubmitted')
                that.closeModal()
              } else {
                that.$notification.warning({
                  message: '消息',
@@ -117,13 +156,17 @@
                })
              }
            }).finally(() => {
              that.confirmLoading = false
              that.closeModal()
              that.confirmLoading = that.spinning = false
            })
          } else {
            return false
          }
        })
      },
      closeModal() {
        this.$refs.form.clearValidate()
        this.$emit('closeModal')
      }
    }
  }