zenglf
2023-09-18 92ff846fb659c62037a32b1d8c15eae9df9d9b54
src/views/eam/modules/dailyInspectionOrder/DailyInspectionOrderModal.vue
¶Ô±ÈÐÂÎļþ
@@ -0,0 +1,691 @@
<template>
  <a-modal
    :title="title"
    :width="1250"
    :visible="visible"
    :maskClosable="false"
    @ok="handleOk"
    cancelText="关闭"
    @cancel="handleCancel"
    :confirmLoading="confirmLoading"
  >
    <a-spin :spinning="confirmLoading">
      <a-form :form="form">
        <a-row :gutter="24">
          <a-col :span="12">
            <a-form-item
              label="点检工单"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
            >
              <a-input
                allow-clear
                :disabled="codeDisable"
                :placeholder="disableSubmit?'':'请输入点检工单'"
                v-decorator="['num', validatorRules.num ]"
              />
            </a-form-item>
          </a-col>
          <a-col :span="12">
            <a-form-item
              label="开工条件"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
            >
              <a-switch
                :disabled="disableSubmit"
                checked-children="是"
                un-checked-children="否"
                :checked="model.startWorkCondition == '1'"
                @change="handle2Switch(model.startWorkCondition)"
              />
            </a-form-item>
          </a-col>
        </a-row>
        <a-row :gutter="24">
          <a-col :span="12">
            <a-form-item
              label="点检标准"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
            >
              <a-input-search
                :disabled="disableSubmit"
                placeholder="请选择点检标准"
                enter-button
                @search="onDailyInspectionStandardList()"
                :read-only="true"
                v-decorator="['inspectionStandardNum', validatorRules.inspectionStandardNum]"
              />
            </a-form-item>
          </a-col>
          <a-col :span="12">
            <a-form-item
              label="设备名称"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
            >
              <a-input
                allow-clear
                :disabled="true"
                :placeholder="disableSubmit?'':'请输入设备名称'"
                v-decorator="['equipmentName', validatorRules.equipmentName ]"
              />
            </a-form-item>
          </a-col>
        </a-row>
        <a-row :gutter="24">
          <a-col :span="12">
            <a-form-item
              label="点检周期"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
            >
              <a-select
                :placeholder="disableSubmit?'':'请选择点检周期'"
                :options="this.inspectionCycles"
                @change="(e)=>handle3Change(e)"
                style="width: 100%"
                :disabled="disableSubmit"
                v-decorator="['inspectionCycleId', validatorRules.inspectionCycleId]"
              />
            </a-form-item>
          </a-col>
          <a-col :span="12">
            <a-form-item
              label="点检日期"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
            >
              <j-date
                :disabled="disableSubmit"
                v-decorator="['inspectionTime', validatorRules.inspectionTime ]"
                placeholder="请选择点检时间"
                style="width: 100%"
                :showTime="true"
                dateFormat="YYYY-MM-DD HH:mm:ss"
              />
            </a-form-item>
          </a-col>
        </a-row>
        <a-row :gutter="24">
          <a-col :span="24 / 2">
            <a-form-item
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
              label="派工方式"
            >
              <j-dict-select-tag
                allow-clear
                :disabled="true"
                :placeholder="disableSubmit?'':'请选择派工方式'"
                :triggerChange="true"
                dictCode="assign_mode"
                v-decorator="['assignMode', validatorRules.assignMode]"
              />
            </a-form-item>
          </a-col>
          <a-col :span="24 / 2">
            <a-form-item
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
              label="责任班组"
            >
              <a-input
                allow-clear
                :disabled="true"
                :placeholder="disableSubmit?'':'请输入责任班组'"
                v-decorator="['teamName', validatorRules.teamName ]"
              />
            </a-form-item>
          </a-col>
        </a-row>
        <a-row :gutter="24">
        </a-row>
        <a-row
          hidden
          :gutter="24"
        >
          <a-col :span="12">
            <a-form-item
              label="点检标准Id"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
            >
              <a-input
                allow-clear
                :disabled="true"
                :placeholder="disableSubmit?'':'点检标准Id'"
                v-decorator="['inspectionStandardId', validatorRules.inspectionStandardId ]"
              />
            </a-form-item>
          </a-col>
          <a-col :span="12">
            <a-form-item
              label="设备Id"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
            >
              <a-input
                allow-clear
                :disabled="true"
                :placeholder="disableSubmit?'':'设备Id'"
                v-decorator="['equipmentId', validatorRules.equipmentId ]"
              />
            </a-form-item>
          </a-col>
        </a-row>
        <a-row
          hidden
          :gutter="24"
        >
          <a-col :span="12">
            <a-form-item
              label="有效时长"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
            >
              <a-input-number
                style="width: 100%"
                allow-clear
                :disabled="true"
                :placeholder="disableSubmit?'':'请输入有效时长'"
                v-decorator="['effectiveTime', validatorRules.effectiveTime ]"
              />
            </a-form-item>
          </a-col>
          <a-col :span="12">
            <a-form-item
              label="时间单位"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
            >
              <a-input
                allow-clear
                :disabled="true"
                :placeholder="disableSubmit?'':'请输入时间单位'"
                v-decorator="['unit', validatorRules.unit ]"
              />
            </a-form-item>
          </a-col>
        </a-row>
        <a-row :gutter="24">
          <a-col
            v-if="!isHidden"
            :span="12"
          >
            <a-form-item
              label="责任人"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
            >
              <a-input-search
                :disabled="disableSubmit"
                placeholder="责任人"
                enter-button
                @search="onDutyUserList()"
                :read-only="true"
                v-decorator="['inspectionUserName', validatorRules.inspectionUserName]"
              />
            </a-form-item>
          </a-col>
        </a-row>
        <a-row
          hidden
          :gutter="24"
        >
          <a-col :span="12">
            <a-form-item
              label="责任班组"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
            >
              <a-input
                allow-clear
                :disabled="true"
                :placeholder="disableSubmit?'':'请输入责任班组'"
                v-decorator="['teamId', validatorRules.teamId ]"
              />
            </a-form-item>
          </a-col>
          <a-col :span="12">
            <a-form-item
              label="责任人/点检人"
              :labelCol="labelCol"
              :wrapperCol="wrapperCol"
            >
              <a-input
                allow-clear
                :disabled="true"
                :placeholder="disableSubmit?'':'请输入责任人/点检人'"
                v-decorator="['inspectionUserId', validatorRules.inspectionUserId ]"
              />
            </a-form-item>
          </a-col>
        </a-row>
        <a-row :gutter="24">
          <a-col :span="24">
            <a-form-item
              :labelCol="{span:3}"
              :wrapperCol="{span:21}"
              label="备注"
            >
              <a-textarea
                allow-clear
                :disabled="disableSubmit"
                :placeholder="disableSubmit?'':'请输入备注'"
                v-decorator="['remark', validatorRules.remark]"
              />
            </a-form-item>
          </a-col>
        </a-row>
      </a-form>
    </a-spin>
    <a-table
      ref="table"
      size="middle"
      bordered
      rowKey="id"
      :scroll="{x:true}"
      :columns="columns"
      :dataSource="dataSource"
      :pagination="ipagination"
      :loading="loading"
      @change="handleTableChange"
    >
      <template
        slot="photo"
        slot-scope="text,record"
      >
        <span
          v-if="!text"
          style="font-size: 12px;font-style: italic;"
        >无图片</span>
        <img
          v-else
          :src="getImgView(text)"
          :preview="record.id"
          height="25px"
          alt=""
          style="max-width:80px;font-size: 12px;font-style: italic;"
        />
      </template>
    </a-table>
    <template slot="footer">
      <a-button
        :style="{marginRight: '8px'}"
        @click="handleCancel()"
      >
        å…³é—­
      </a-button>
      <a-button
        @click="handleOk()"
        type="primary"
        :loading="confirmLoading"
        :disabled="disableSubmit || confirmLoading"
      >确定</a-button>
    </template>
    <daily-inspection-standard-list
      ref="DailyInspectionStandardList"
      @sendDailyInspectionStandardRecord='sendDailyInspectionStandardRecord'
    ></daily-inspection-standard-list>
    <user-list
      ref="UserList"
      @sendDutyUserRecord='sendDutyUserRecord'
    ></user-list>
  </a-modal>
</template>
<script>
import { JeecgListMixin } from '@/mixins/JeecgListMixin'
import { getAction, postAction, requestPut } from '@/api/manage'
import pick from 'lodash.pick'
import JMultiSelectTag from '@/components/dict/JMultiSelectTag'
import Tooltip from 'ant-design-vue/es/tooltip'
import { ACCESS_TOKEN } from '@/store/mutation-types'
import Vue from 'vue'
import { getFileAccessHttpUrl } from '@/api/manage';
import DailyInspectionStandardList from './DailyInspectionStandardList'
import UserList from './UserList'
import { preview } from 'vue-photo-preview'
export default {
  name: "DailyInspectionOrderModal",
  mixins: [JeecgListMixin],
  components: {
    JMultiSelectTag,
    Tooltip,
    DailyInspectionStandardList,
    preview,
    UserList
  },
  data() {
    return {
      columns: [
        {
          title: '#',
          dataIndex: '',
          key: 'rowIndex',
          align: 'center',
          customRender: function (t, r, index) {
            return parseInt(index) + 1
          },
          width: 50,
        },
        {
          title: '部位',
          align: 'center',
          dataIndex: 'location'
        },
        {
          title: '点检项目',
          align: 'center',
          dataIndex: 'inspectionProjectNum'
        },
        {
          title: '检测标准',
          align: 'center',
          dataIndex: 'detectionStandard'
        },
        {
          title: '合格范围',
          align: 'center',
          dataIndex: 'acceptabilityLimit'
        },
        {
          title: '方法',
          align: 'center',
          dataIndex: 'inspectionMethodName'
        },
        {
          title: '工具',
          align: 'center',
          dataIndex: 'inspectionTool'
        },
        {
          title: '示意图',
          align: "center",
          dataIndex: 'photo',
          scopedSlots: { customRender: 'photo' },
        },
      ],
      title: "操作",
      visible: false,
      disableSubmit: false,
      codeDisable: true,
      model: {},
      inspectionCycles: [],
      queryParam: { inspectionStandardId: '-1', inspectionCycleId: '-1' },
      isHidden: true,
      labelCol: {
        xs: { span: 24 },
        sm: { span: 6 },
      },
      wrapperCol: {
        xs: { span: 24 },
        sm: { span: 18 },
      },
      confirmLoading: false,
      form: this.$form.createForm(this),
      validatorRules: {
        num: {
          rules: [
            { required: true, message: '请输入设备编码!' },
          ]
        },
        equipmentId: {
          rules: [
            { required: true, message: '请选择设备!' },
          ]
        },
        inspectionStandardNum: {
          rules: [
            { required: true, message: '请选择点检标准!' },
          ]
        },
        inspectionCycleId: {
          rules: [
            { required: true, message: '请选择点检周期!' },
          ]
        },
        inspectionTime: {
          rules: [
            { required: true, message: '请选择点检日期!' },
          ]
        },
        inspectionUserName: {
          rules: [
            { required: true, message: '请选择责任人!' },
          ]
        },
        assignMode: {
          rules: [
            { required: true, message: '请选择派工方式!' },
          ]
        },
      },
      url: {
        list: "/eam/inspectionOrder/getInspectionProjectId",
        add: "/eam/inspectionOrder/add",
        edit: "/eam/inspectionOrder/edit",
        getInspectionCycles: "/eam/inspectionOrder/getInspectionCycles",
        getInspectionProjectId: "/eam/inspectionOrder/getInspectionProjectId",
        // getEquipmentIdById: "/eam/equipment/list",
      },
      dataSource: [],
      equipmentId: "-1",
      inspectionStandardId: "-1",
      oldInspectionCycleId: "-1"
    }
  },
  methods: {
    add() {
      this.edit({ startWorkCondition: "1", inspectionOrderDetails: [] })
    },
    edit(record) {
      let that = this;
      this.inspectionCycles = record.inspectionCycles
      this.equipmentId = record.equipmentId
      this.oldInspectionCycleId = record.inspectionCycleId
      this.dataSource = [];
      this.form.resetFields();
      this.model = Object.assign({}, record);
      this.visible = true;
      if (record.inspectionOrderDetails != undefined) {
        const temp = [...record.inspectionOrderDetails];
        that.dataSource = temp;
      }
      that.$nextTick(() => {
        that.form.setFieldsValue(pick(that.model, 'num', 'equipmentId',
          'equipmentName', 'inspectionCycleId', 'inspectionStandardId', 'inspectionStandardNum',
          'inspectionTime', 'effectiveTime', 'unit', 'teamId',
          'assignMode', 'teamName', 'inspectionUserId', 'inspectionUserName', 'remark'));
      });
      if (record.id) {
        if ("3" == record.assignMode) {
          this.isHidden = false
        } else {
          this.isHidden = true
        }
        this.codeDisable = true;
      } else {
        this.isHidden = true
        this.codeDisable = false;
      }
    },
    close() {
      this.$emit('close');
      this.visible = false;
    },
    handleCancel() {
      this.close();
    },
    handleOk() {
      const that = this;
      this.form.validateFields((err, values) => {
        if (!err) {
          that.confirmLoading = true;
          let formData = Object.assign(this.model, values);
          formData.inspectionOrderDetailList = that.dataSource;
          formData.oldInspectionCycleId = that.oldInspectionCycleId
          let obj;
          if (!this.model.id) {
            obj = postAction(this.url.add, formData);
          } else {
            obj = requestPut(this.url.edit, formData, { id: this.model.id });
          }
          obj.then((res) => {
            if (res.success) {
              that.$message.success(res.message);
              that.$emit('ok');
            } else {
              that.$message.warning(res.message);
            }
          }).finally(() => {
            that.confirmLoading = false;
            that.close();
          })
        }
      })
    },
    // handleDelete(text, record, index) {
    //   this.dataSource.splice(index, 1);
    // },
    getInspectionCycles(inspectionStandardId) {
      getAction(this.url.getInspectionCycles, { inspectionStandardId: inspectionStandardId }).then((res) => {
        if (res.success) {
          this.inspectionCycles = res.result
        }
      })
    },
    // getEquipmentIdById(equipmentId) {
    //   if (equipmentId != null && equipmentId != "") {
    //     getAction(this.url.getEquipmentIdById, { id: equipmentId }).then((res) => {
    //       if (res.success) {
    //         if (res.result.records.length == 0) {
    //           this.form.setFieldsValue({ "useId": null, "teamId": null })
    //         } else {
    //           this.form.setFieldsValue({ "useId": res.result.records[0].useId, "teamId": res.result.records[0].teamId })
    //         }
    //       }
    //     })
    //   } else {
    //     this.form.setFieldsValue({ "useId": null, "teamId": null })
    //   }
    // },
    handle2Switch(startWorkCondition) {
      if ('1' == startWorkCondition) {
        this.model.startWorkCondition = '0'
      } else {
        this.model.startWorkCondition = '1'
      }
    },
    // handle2Change(val) {
    //   this.inspectionCycles = [];
    //   this.dataSource = [];
    //   this.equipmentId = val;
    //   this.getInspectionCycleByEqId(val);
    //   this.getEquipmentIdById(val)
    //   this.form.setFieldsValue({ "inspectionCycleId": null, "effectiveTime": null, "unit": null })
    // },
    onDailyInspectionStandardList() {
      this.$refs.DailyInspectionStandardList.list();
      this.$refs.DailyInspectionStandardList.title = "选择日常点检标准";
    },
    sendDailyInspectionStandardRecord(data) {
      this.dataSource = [];
      this.inspectionCycles = [];
      this.form.setFieldsValue({ inspectionStandardId: null, inspectionStandardNum: null, equipmentId: null, equipmentName: null, assignMode: null, teamId: null, teamName: null, inspectionUserId: null, inspectionUserName: null });
      let record = data.record;
      this.equipmentId = record.equipmentId;
      this.inspectionStandardId = record.id;
      this.form.setFieldsValue({ inspectionStandardId: record.id, inspectionStandardNum: record.num + "/" + record.version });
      this.form.setFieldsValue({ equipmentId: record.equipmentId, equipmentName: record.equipmentNum + "/" + record.equipmentName });
      this.form.setFieldsValue({ assignMode: record.assignMode, teamId: record.teamId, teamName: record.teamName });
      this.form.setFieldsValue({ effectiveTime: null, inspectionCycleId: null, unit: null });
      this.getInspectionCycles(record.id)
      if ("3" == record.assignMode) {
        this.isHidden = false
      } else {
        this.isHidden = true
      }
    },
    onDutyUserList() {
      let data = this.form.getFieldsValue(['teamId']);
      if (data.teamId == null || data.teamId == "") {
        this.$message.warning("请先维护班组!");
        return
      }
      this.$refs.UserList.list(data.teamId);
      this.$refs.UserList.title = "选择人员";
    },
    sendDutyUserRecord(data) {
      let record = data.record;
      this.form.setFieldsValue({ inspectionUserId: record.id, inspectionUserName: record.username + "/" + record.realname });
    },
    handle3Change(val) {
      getAction(this.url.getInspectionProjectId, { inspectionStandardId: this.inspectionStandardId, inspectionCycleId: val }).then((res) => {
        if (res.success) {
          this.dataSource = res.result
          if (res.result.length == 0) {
            this.form.setFieldsValue({ "effectiveTime": null, "unit": null })
          } else {
            this.form.setFieldsValue({ "effectiveTime": res.result[0].effectiveTime, "unit": res.result[0].unit })
          }
        }
      })
    },
  },
}
</script>
<style lang="less" scoped>
/deep/ .frozenRowClass {
  color: #c9c9c9;
}
.fontweight {
  font-weight: bold;
}
.ant-btn {
  padding: 0 10px;
  margin-left: 3px;
}
.ant-form-item-control {
  line-height: 0px;
}
/** ä¸»è¡¨å•行间距 */
.ant-form .ant-form-item {
  margin-bottom: 10px;
}
/** Tab页面行间距 */
.ant-tabs-content .ant-form-item {
  margin-bottom: 0px;
}
</style>