zenglf
2023-09-18 92ff846fb659c62037a32b1d8c15eae9df9d9b54
src/views/eam/modules/inspectionCycle/InspectionCycleForm.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,380 @@
<template>
  <a-spin :spinning="confirmLoading">
    <j-form-container :disabled="formDisabled">
      <a-form-model
        ref="form"
        :model="model"
        :rules="validatorRules"
        slot="detail"
      >
        <a-row>
          <a-col :span="24/2">
            <a-form-model-item
              label="周期编码"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
              prop="code"
            >
              <a-input
                v-model="model.code"
                placeholder="请输入周期编码"
                :disabled="true"
              ></a-input>
              <!-- :disabled="model.isRevise" -->
            </a-form-model-item>
          </a-col>
          <a-col :span="24/2">
            <a-form-model-item
              label="周期"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
              prop="cycle"
            >
              <a-input-number
                v-model="model.cycle"
                placeholder="请输入周期"
                :min=0
                style="width: 100%"
              />
            </a-form-model-item>
          </a-col>
        </a-row>
        <a-row>
          <a-col :span="24/2">
            <a-form-model-item
              label="周期单位"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
              prop="cycleUnit"
            >
              <j-dict-select-tag
                placeholder="请选择周期单位"
                :triggerChange="true"
                dictCode="cycle_unit"
                v-model="model.cycleUnit"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="24/2">
            <a-form-model-item
              label="首次点检时间"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
              prop="firstInspectionTime"
            >
              <j-date
                placeholder="请选择首次点检时间"
                v-model="model.firstInspectionTime"
                style="width: 100%"
                :showTime="true"
                dateFormat="YYYY-MM-DD HH:mm:ss"
              />
            </a-form-model-item>
          </a-col>
        </a-row>
        <a-row>
          <a-col :span="24/2">
            <a-form-model-item
              label="提前时间"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
              prop="leadTime"
            >
              <a-input-number
                v-model="model.leadTime"
                placeholder="请输入提前时间"
                :min=0
                style="width: 100%"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="24/2">
            <a-form-model-item
              label="有效时间"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
              prop="effectiveTime"
            >
              <a-input-number
                v-model="model.effectiveTime"
                placeholder="请输入有效时间"
                :min=0
                style="width: 100%"
              />
            </a-form-model-item>
          </a-col>
        </a-row>
        <a-row>
          <a-col :span="24/2">
            <a-form-model-item
              label="时间单位"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
              prop="unit"
            >
              <j-dict-select-tag
                placeholder="请选择时间单位"
                :triggerChange="true"
                dictCode="cycle_time_unit"
                v-model="model.unit"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="24/2">
            <a-form-model-item
              label="开工条件"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
              prop="startCondition"
            >
              <j-dict-select-tag
                placeholder="请选择开工条件"
                :triggerChange="true"
                dictCode="start_condition"
                v-model="model.startCondition"
              />
            </a-form-model-item>
          </a-col>
        </a-row>
        <a-row>
          <a-col :span="24/2">
            <a-form-model-item
              label="调整方式"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
              prop="arrangeWay"
            >
              <j-dict-select-tag
                placeholder="请选择调整方式"
                :triggerChange="true"
                dictCode="arrange_way"
                v-model="model.arrangeWay"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="24/2">
            <a-form-model-item
              label="逾期处理方式"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
              prop="overdueDisposeMode"
            >
              <j-dict-select-tag
                placeholder="请选择逾期处理方式"
                :triggerChange="true"
                dictCode="overdue_dispose_mode"
                v-model="model.overdueDisposeMode"
              />
            </a-form-model-item>
          </a-col>
        </a-row>
        <a-row>
          <a-col :span="24/2">
            <a-form-model-item
              label="依据日历"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
              prop="accordingCalendar"
            >
              <j-dict-select-tag
                placeholder="请选择依据日历"
                :triggerChange="true"
                dictCode="according_calendar"
                v-model="model.accordingCalendar"
              />
            </a-form-model-item>
          </a-col>
          <a-col :span="24/2">
            <a-form-model-item
              label="版本"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
              prop="version"
            >
              <a-input
                v-model="model.version"
                placeholder="请输入版本号"
                :disabled=true
              ></a-input>
            </a-form-model-item>
          </a-col>
        </a-row>
        <a-row>
          <a-col
            v-if=" model.isRevise == true"
            :span="24/2"
          >
            <a-form-model-item
              label="历史版本"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
              prop="version"
            >
              <a-input
                v-model="model.historyVersion"
                placeholder="请输入历史版本"
                :disabled=true
              ></a-input>
            </a-form-model-item>
          </a-col>
        </a-row>
      </a-form-model>
    </j-form-container>
  </a-spin>
</template>
<script>
import { httpAction, getAction, requestPut } from '@/api/manage'
import { validateDuplicateValue } from '@/utils/util'
import pick from 'lodash.pick'
export default {
  name: 'InspectionCycleForm',
  components: {},
  props: {
    //表单禁用
    disabled: {
      type: Boolean,
      default: false,
      required: false,
    },
  },
  data() {
    return {
      model: {},
      labelCol: {
        xs: { span: 24 },
        sm: { span: 5 },
      },
      wrapperCol: {
        xs: { span: 24 },
        sm: { span: 16 },
      },
      confirmLoading: false,
      validatorRules: {
        // code: [
        //   { required: true, message: '请输入周期编码!' },
        // ],
        cycle: [
          { required: true, message: '请输入周期!' },
        ],
        cycleUnit: [
          { required: true, message: '请输入周期单位!' },
        ],
        firstInspectionTime: [
          { required: true, message: '请选择首次点检时间!' },
        ],
        leadTime: [
          { required: true, message: '请输入提前时间!' },
        ],
        effectiveTime: [
          { required: true, message: '请输入有效时间!' },
        ],
        unit: [
          { required: true, message: '请选择时间单位!' },
        ],
        arrangeWay: [
          { required: true, message: '请选择调整方式!' },
        ],
        startCondition: [
          { required: true, message: '请选择开工条件!' },
        ],
        version: [
          { required: true, message: '请输入版本号!' },
        ],
        overdueDisposeMode: [
          { required: true, message: '请选择逾期处理方式!' },
        ],
        accordingCalendar: [
          { required: true, message: '请选择依据日历!' },
        ],
      },
      url: {
        add: '/eam/inspectionCycle/addNew',
        edit: '/eam/inspectionCycle/edit',
        revise: '/eam/inspectionCycle/revise',
        getReviseVersion: "/eam/inspectionCycle/getReviseVersion",
      },
    }
  },
  computed: {
    formDisabled() {
      return this.disabled
    },
  },
  created() {
    //备份model原始值
    this.modelDefault = JSON.parse(JSON.stringify(this.model))
  },
  methods: {
    add() {
      this.edit(this.modelDefault)
    },
    edit(record) {
      this.model = Object.assign({}, record)
      this.visible = true
      this.model.isRevise = false;
      //修改时
      if (record.id) {
        //新增时
      } else {
        this.model.version = '1.0'
        this.model.versionStatus = '1'
      }
    },
    //升版
    revise(record) {
      let that = this;
      that.visible = true;
      that.model = Object.assign({}, record)
      that.model.isRevise = true;
      that.model.historyVersion = record.version
      that.model.versionStatus = '1'
      requestPut(that.url.getReviseVersion, record).then((res) => {
        if (res.success) {
          that.model.version = res.result;
        }
      })
    },
    submitForm() {
      const that = this
      // è§¦å‘表单验证
      this.$refs.form.validate((valid) => {
        if (valid) {
          that.confirmLoading = true
          let httpurl = ''
          let method = ''
          if (!this.model.id) {
            httpurl += this.url.add
            method = 'post'
          } else {
            if (this.model.isRevise) {
              httpurl += this.url.revise
              method = 'post'
            } else {
              httpurl += this.url.edit
              method = 'put'
            }
          }
          httpAction(httpurl, this.model, method)
            .then((res) => {
              if (res.success) {
                that.$message.success(res.message)
                that.$emit('ok')
              } else {
                that.$message.warning(res.message)
              }
            })
            .finally(() => {
              that.confirmLoading = false
            })
        }
      })
    },
  },
}
</script>