spring
2025-03-19 07a41ade45c962e93a9d449ce1be0eec52e66a6a
src/components/caorui/Department/components/Records/control/index.vue
@@ -1,331 +1,350 @@
<template>
    <div>
        <el-dialog
            :visible.sync="dialogVisible"
            title="不符合工作控制单"
        >
            <el-steps :active="active" :align-center="true" finish-status="success">
                <el-step
                    v-for="(item, index) in stepList"
                    :key="index"
                    :title="item.label"
                    style="cursor: pointer;"
                    @click.native="setStep(item.value)"
                ></el-step>
            </el-steps>
            <el-divider></el-divider>
                <ConditionForm
                    v-if="pageStatus == 0"
                    :condiForm.sync="mainForm.condiForm"
                    :currentResponsible="currentResponsible"
                    :disabled="active != 0"
                    :step="active"
                    :userList="userList"
                    @nextStep="submit"
                ></ConditionForm>
                <ConditionForm
                    v-if="pageStatus == 1"
                    :condiForm.sync="mainForm.condiForm"
                    :currentResponsible="currentResponsible"
                    :disabled="true"
                    :step="active"
                    :userList="userList"
                    @cancel="cancel"
                    @nextStep="submit"
                ></ConditionForm>
                <MeasureForm
                    v-if="pageStatus == 2"
                    :currentResponsible="currentResponsible"
                    :disabled="active != 2"
                    :handleForm.sync="mainForm.handleForm"
                    :step="active"
                    :userList="userList"
                    @cancel="cancel"
                    @nextStep="submit"
                ></MeasureForm>
                <RectifyForm
                    v-if="pageStatus == 3"
                    :currentResponsible="currentResponsible"
                    :disabled="active != 3"
                    :rectifyForm.sync="mainForm.rectifyForm"
                    :step="active"
                    :userList="userList"
                    @cancel="cancel"
                    @nextStep="submit"
                ></RectifyForm>
                <Inform
                    v-if="pageStatus == 4"
                    :disabled="active != 4"
                    :inform.sync="mainForm.inform"
                    :step="active"
                    :userList="userList"
                    @cancel="cancel"
                    @nextStep="submit"
                ></Inform>
                <el-result v-if="pageStatus == 5" icon="success" subTitle="处理完成" title="审核完成">
                </el-result>
        </el-dialog>
    </div>
  <div>
    <el-dialog :visible.sync="dialogVisible" title="不符合工作控制单">
      <el-steps :active="active" :align-center="true" finish-status="success">
        <el-step
          v-for="(item, index) in stepList"
          :key="index"
          :title="item.label"
          style="cursor: pointer;"
          @click.native="setStep(item.value)"
        ></el-step>
      </el-steps>
      <el-divider></el-divider>
      <ConditionForm
        v-if="pageStatus == 0"
        :condiForm.sync="mainForm.condiForm"
        :currentResponsible="currentResponsible"
        :disabled="active != 0"
        :step="active"
        :userList="userList"
        @nextStep="submit"
      ></ConditionForm>
      <ConditionForm
        v-if="pageStatus == 1"
        :condiForm.sync="mainForm.condiForm"
        :currentResponsible="currentResponsible"
        :disabled="true"
        :step="active"
        :userList="userList"
        @cancel="cancel"
        @nextStep="submit"
      ></ConditionForm>
      <MeasureForm
        v-if="pageStatus == 2"
        :currentResponsible="currentResponsible"
        :disabled="active != 2"
        :handleForm.sync="mainForm.handleForm"
        :step="active"
        :userList="userList"
        @cancel="cancel"
        @nextStep="submit"
      ></MeasureForm>
      <RectifyForm
        v-if="pageStatus == 3"
        :currentResponsible="currentResponsible"
        :disabled="active != 3"
        :rectifyForm.sync="mainForm.rectifyForm"
        :step="active"
        :userList="userList"
        @cancel="cancel"
        @nextStep="submit"
      ></RectifyForm>
      <Inform
        v-if="pageStatus == 4"
        :disabled="active != 4"
        :inform.sync="mainForm.inform"
        :step="active"
        :userList="userList"
        @cancel="cancel"
        @nextStep="submit"
      ></Inform>
      <el-result
        v-if="pageStatus == 5"
        icon="success"
        subTitle="处理完成"
        title="审核完成"
      >
      </el-result>
    </el-dialog>
  </div>
</template>
<script>
import ConditionForm from './Step/ConditionForm.vue'
import MeasureForm from './Step/MeasureForm.vue'
import RectifyForm from './Step/RectifyForm.vue'
import Inform from './Step/Inform.vue'
import ConditionForm from "./Step/ConditionForm.vue";
import MeasureForm from "./Step/MeasureForm.vue";
import RectifyForm from "./Step/RectifyForm.vue";
import Inform from "./Step/Inform.vue";
import {
    personSupervisionControlSheetPage,
    getUserListApi,
    addOrUpdatePersonSupervisionControl
} from "../../../../../../assets/api/api"
  personSupervisionControlSheetPage,
  getUserListApi,
  addOrUpdatePersonSupervisionControl
} from "../../../../../../assets/api/api";
export default {
    components: {
        ConditionForm, MeasureForm, RectifyForm, Inform
    },
    data() {
        return {
            active: 0,
            pageStatus: 0,
            dialogVisible: false,
            currentResponsible: undefined,
            stepList: [{
                    label: '工作情况',
                    value: 0
                }, {
                    label: '被监督人确认',
                    value: 1
                }, {
                    label: '处理措施',
                    value: 2
                }, {
                    label: '纠正措施',
                    value: 3
                }, {
                    label: '通知客户',
                    value: 4
                }
            ],
            supervisionRecordId: undefined,
            controlId: undefined,
            mainForm: {
                condiForm: {
                    departmentHeadId: undefined,
                    supervisedPersonId: undefined,
                    discoveryApproach: [],
                    notConformDetails: undefined,
                    nonConformityClause: undefined,
                },
                handleForm: {
                    responsibleDepartmentPersonId: undefined,
                    treatmentMeasures: undefined
                },
                rectifyForm: {
                    correctiveMeasure: undefined,
                    correctiveMeasureFollowTracks: undefined,
                    correctiveMeasurePersonId: undefined
                },
                inform: {
                    whetherInformCustomer: undefined,
                    whetherResumeWork: undefined,
                    qualitySupervisorId: undefined
                }
            },
            userList: [],
            controlType: undefined
  components: {
    ConditionForm,
    MeasureForm,
    RectifyForm,
    Inform
  },
  data() {
    return {
      active: 0,
      pageStatus: 0,
      dialogVisible: false,
      currentResponsible: undefined,
      stepList: [
        {
          label: "工作情况",
          value: 0
        },
        {
          label: "被监督人确认",
          value: 1
        },
        {
          label: "处理措施",
          value: 2
        },
        {
          label: "纠正措施",
          value: 3
        },
        {
          label: "通知客户",
          value: 4
        }
    },
    methods: {
        /**
         * @desc 初始化表单
         */
        initForm() {
            this.mainForm.condiForm.departmentHeadId = undefined
            this.mainForm.condiForm.supervisedPersonId = undefined
            this.mainForm.condiForm.discoveryApproach = []
            this.mainForm.condiForm.notConformDetails = undefined
            this.mainForm.condiForm.nonConformityClause = undefined
            this.mainForm.handleForm.responsibleDepartmentPersonId = undefined
            this.mainForm.handleForm.treatmentMeasures = undefined
            this.mainForm.rectifyForm.correctiveMeasure = undefined
            this.mainForm.rectifyForm.correctiveMeasureFollowTracks = undefined
            this.mainForm.rectifyForm.correctiveMeasurePersonId = undefined
            this.mainForm.inform.whetherInformCustomer = undefined
            this.mainForm.inform.whetherResumeWork = undefined
            this.mainForm.inform.qualitySupervisorId = undefined
      ],
      supervisionRecordId: undefined,
      controlId: undefined,
      mainForm: {
        condiForm: {
          departmentHeadId: undefined,
          supervisedPersonId: undefined,
          discoveryApproach: [],
          notConformDetails: undefined,
          nonConformityClause: undefined
        },
        /**
         * @desc 打开模态框
         * @param {监督记录id} id
         */
        openDialog(id) {
            this.dialogVisible = true
            this.getUserList()
            this.getControlData(id)
        handleForm: {
          responsibleDepartmentPersonId: undefined,
          treatmentMeasures: undefined
        },
        /**
         * @desc 获取用户信息
         */
         async getUserList() {
            const { code, data } = await this.$axios({
                method: 'get',
                url: getUserListApi,
            })
            if(code == 200) {
                this.userList = data
            }
        rectifyForm: {
          correctiveMeasure: undefined,
          correctiveMeasureFollowTracks: undefined,
          correctiveMeasurePersonId: undefined
        },
        /**
         * @desc 查询监督记录控制单
         * @param {监督记录id} id
         */
        async getControlData(id) {
            const { code, data } = await this.$axios({
                method: 'get',
                url: personSupervisionControlSheetPage,
                params: {id}
            })
            if(code == 202) {
                this.controlType = '新增'
                this.supervisionRecordId = id
                this.active = 0
                this.pageStatus = 0
                this.controlId = undefined
                this.initForm()
            }
            if(code == 200) {
                this.currentResponsible = data.currentResponsible
                this.controlType = '编辑'
                this.controlId = data.id
                this.active = Number(data.currentState)
                this.pageStatus = Number(data.currentState === 4 ? 0 : data.currentState)
                // 第1、2步数据
                this.mainForm.condiForm.departmentHeadId = data.departmentHeadId
                this.mainForm.condiForm.supervisedPersonId = data.supervisedPersonId
                this.mainForm.condiForm.notConformDetails = data.notConformDetails
                this.mainForm.condiForm.nonConformityClause = data.nonConformityClause
                // 第3步数据
                this.mainForm.handleForm.responsibleDepartmentPersonId = data.responsibleDepartmentPersonId
                this.mainForm.handleForm.treatmentMeasures = data.treatmentMeasures
                // 第4步数据
                this.mainForm.rectifyForm.correctiveMeasure = data.correctiveMeasure
                this.mainForm.rectifyForm.correctiveMeasureFollowTracks = data.correctiveMeasureFollowTracks
                this.mainForm.rectifyForm.correctiveMeasurePersonId = data.correctiveMeasurePersonId
                // 第5步数据
                this.mainForm.whetherInformCustomer = data.whetherInformCustomer
                this.mainForm.whetherResumeWork = data.whetherResumeWork
                this.mainForm.qualitySupervisorId = data.qualitySupervisorId
                this.supervisionRecordId = data.supervisionRecordId
            }
        },
        submit(type) {
            let currentState = undefined
            if(type == 'submit') {
                currentState = this.active + 1
            } else if(type == 'save') {
                currentState = undefined
            }
            if(this.active == 0) {
                let { discoveryApproach, ...condiFormRest } = this.mainForm.condiForm
                let approcahStr = discoveryApproach.join(',')
                this.submitForm({
                    id: this.controlId,
                    supervisionRecordId: this.supervisionRecordId,
                    discoveryApproach: approcahStr,
                    currentState: currentState,
                  discovererDate: this.$moment().format('YYYY-MM-DD HH:mm:ss'),
                    ...condiFormRest
                })
            }
            if(this.active == 1) {
                let { discoveryApproach, ...condiFormRest } = this.mainForm.condiForm
                let approcahStr = discoveryApproach.join(',')
                this.submitForm({
                    id: this.controlId,
                    supervisionRecordId: this.supervisionRecordId,
                    discoveryApproach: approcahStr,
                    currentState: currentState,
                  supervisedPersonDate: this.$moment().format('YYYY-MM-DD'),
                    ...condiFormRest
                })
            }
            if(this.active == 2) {
                let { handleForm } = this.mainForm
                this.submitForm({
                    id: this.controlId,
                    supervisionRecordId: this.supervisionRecordId,
                    currentState: currentState,
                  responsibleDepartmentDate: this.$moment().format('YYYY-MM-DD HH:mm:ss'),
                    ...handleForm
                })
            }
            if(this.active == 3) {
                let { rectifyForm } = this.mainForm
                this.submitForm({
                    id: this.controlId,
                    supervisionRecordId: this.supervisionRecordId,
                    currentState: currentState,
                  correctiveMeasureDate: this.$moment().format('YYYY-MM-DD HH:mm:ss'),
                    ...rectifyForm
                })
            }
            if(this.active == 4) {
                let { inform } = this.mainForm
                this.submitForm({
                    id: this.controlId,
                    supervisionRecordId: this.supervisionRecordId,
                    currentState: currentState,
                  qualitySupervisorDate: this.$moment().format('YYYY-MM-DD HH:mm:ss'),
                    ...inform
                })
            }
        },
        /**
         * @desc 提交表单
         */
        async submitForm(form) {
            let user = JSON.parse(localStorage.getItem('user'));
            const { code } = await this.$axios({
                method: 'post',
                url: addOrUpdatePersonSupervisionControl,
                data: {
                    currentResponsible: user.name,
                    ...form
                },
                noQs: true
            })
            if(this.controlType == '新增') {
                if(code == 200) {
                    this.$message.success('提交成功')
                }
            } else if(this.controlType == '编辑') {
                if(code == 200) {
                    this.$message.success('提交成功')
                }
            }
            this.dialogVisible = false
        },
        /**
         * @desc 驳回
         */
        cancel() {
            let currentState = this.active - 1
            this.submitForm({
                id: this.controlId,
                supervisionRecordId: this.supervisionRecordId,
                currentState: currentState,
            })
        },
        setStep(e) {
            this.pageStatus = e
        inform: {
          whetherInformCustomer: undefined,
          whetherResumeWork: undefined,
          qualitySupervisorId: undefined
        }
      },
      userList: [],
      controlType: undefined
    };
  },
  methods: {
    /**
     * @desc 初始化表单
     */
    initForm() {
      this.mainForm.condiForm.departmentHeadId = undefined;
      this.mainForm.condiForm.supervisedPersonId = undefined;
      this.mainForm.condiForm.discoveryApproach = [];
      this.mainForm.condiForm.notConformDetails = undefined;
      this.mainForm.condiForm.nonConformityClause = undefined;
      this.mainForm.handleForm.responsibleDepartmentPersonId = undefined;
      this.mainForm.handleForm.treatmentMeasures = undefined;
      this.mainForm.rectifyForm.correctiveMeasure = undefined;
      this.mainForm.rectifyForm.correctiveMeasureFollowTracks = undefined;
      this.mainForm.rectifyForm.correctiveMeasurePersonId = undefined;
      this.mainForm.inform.whetherInformCustomer = undefined;
      this.mainForm.inform.whetherResumeWork = undefined;
      this.mainForm.inform.qualitySupervisorId = undefined;
    },
    /**
     * @desc 打开模态框
     * @param {监督记录id} id
     */
    openDialog(id) {
      this.dialogVisible = true;
      this.getUserList();
      this.getControlData(id);
    },
    /**
     * @desc 获取用户信息
     */
    async getUserList() {
      const { code, data } = await this.$axios({
        method: "get",
        url: getUserListApi
      });
      if (code == 200) {
        this.userList = data;
      }
    },
    /**
     * @desc 查询监督记录控制单
     * @param {监督记录id} id
     */
    async getControlData(id) {
      const { code, data } = await this.$axios({
        method: "get",
        url: personSupervisionControlSheetPage,
        params: { id }
      });
      if (code == 202) {
        this.controlType = "新增";
        this.supervisionRecordId = id;
        this.active = 0;
        this.pageStatus = 0;
        this.controlId = undefined;
        this.initForm();
      }
      if (code == 200) {
        this.currentResponsible = data.currentResponsible;
        this.controlType = "编辑";
        this.controlId = data.id;
        this.active = Number(data.currentState);
        this.pageStatus = Number(
          data.currentState === 4 ? 0 : data.currentState
        );
        // 第1、2步数据
        this.mainForm.condiForm.departmentHeadId = data.departmentHeadId;
        this.mainForm.condiForm.supervisedPersonId = data.supervisedPersonId;
        this.mainForm.condiForm.notConformDetails = data.notConformDetails;
        this.mainForm.condiForm.nonConformityClause = data.nonConformityClause;
        // 第3步数据
        this.mainForm.handleForm.responsibleDepartmentPersonId =
          data.responsibleDepartmentPersonId;
        this.mainForm.handleForm.treatmentMeasures = data.treatmentMeasures;
        // 第4步数据
        this.mainForm.rectifyForm.correctiveMeasure = data.correctiveMeasure;
        this.mainForm.rectifyForm.correctiveMeasureFollowTracks =
          data.correctiveMeasureFollowTracks;
        this.mainForm.rectifyForm.correctiveMeasurePersonId =
          data.correctiveMeasurePersonId;
        // 第5步数据
        this.mainForm.whetherInformCustomer = data.whetherInformCustomer;
        this.mainForm.whetherResumeWork = data.whetherResumeWork;
        this.mainForm.qualitySupervisorId = data.qualitySupervisorId;
        this.supervisionRecordId = data.supervisionRecordId;
      }
    },
    submit(type) {
      let currentState = undefined;
      if (type == "submit") {
        currentState = this.active + 1;
      } else if (type == "save") {
        currentState = undefined;
      }
      if (this.active == 0) {
        let { discoveryApproach, ...condiFormRest } = this.mainForm.condiForm;
        let approcahStr = discoveryApproach.join(",");
        this.submitForm({
          id: this.controlId,
          supervisionRecordId: this.supervisionRecordId,
          discoveryApproach: approcahStr,
          currentState: currentState,
          discovererDate: this.$moment().format("YYYY-MM-DD HH:mm:ss"),
          ...condiFormRest
        });
      }
      if (this.active == 1) {
        let { discoveryApproach, ...condiFormRest } = this.mainForm.condiForm;
        let approcahStr = discoveryApproach.join(",");
        this.submitForm({
          id: this.controlId,
          supervisionRecordId: this.supervisionRecordId,
          discoveryApproach: approcahStr,
          currentState: currentState,
          supervisedPersonDate: this.$moment().format("YYYY-MM-DD"),
          ...condiFormRest
        });
      }
      if (this.active == 2) {
        let { handleForm } = this.mainForm;
        this.submitForm({
          id: this.controlId,
          supervisionRecordId: this.supervisionRecordId,
          currentState: currentState,
          responsibleDepartmentDate: this.$moment().format(
            "YYYY-MM-DD HH:mm:ss"
          ),
          ...handleForm
        });
      }
      if (this.active == 3) {
        let { rectifyForm } = this.mainForm;
        this.submitForm({
          id: this.controlId,
          supervisionRecordId: this.supervisionRecordId,
          currentState: currentState,
          correctiveMeasureDate: this.$moment().format("YYYY-MM-DD HH:mm:ss"),
          ...rectifyForm
        });
      }
      if (this.active == 4) {
        let { inform } = this.mainForm;
        this.submitForm({
          id: this.controlId,
          supervisionRecordId: this.supervisionRecordId,
          currentState: currentState,
          qualitySupervisorDate: this.$moment().format("YYYY-MM-DD HH:mm:ss"),
          ...inform
        });
      }
    },
    /**
     * @desc 提交表单
     */
    async submitForm(form) {
      let user = JSON.parse(localStorage.getItem("user"));
      const { code } = await this.$axios({
        method: "post",
        url: addOrUpdatePersonSupervisionControl,
        data: {
          currentResponsible: user.name,
          ...form
        },
        noQs: true
      });
      if (this.controlType == "新增") {
        if (code == 200) {
          this.$message.success("提交成功");
          this.$parent.getTableData();
        }
      } else if (this.controlType == "编辑") {
        if (code == 200) {
          this.$message.success("提交成功");
          this.$parent.getTableData();
        }
      }
      this.dialogVisible = false;
    },
    /**
     * @desc 驳回
     */
    cancel() {
      let currentState = this.active - 1;
      this.submitForm({
        id: this.controlId,
        supervisionRecordId: this.supervisionRecordId,
        currentState: currentState
      });
    },
    setStep(e) {
      this.pageStatus = e;
    }
}
  }
};
</script>
<style scoped>
.dialog-footer {
    width: 100%;
  width: 100%;
}
>>> .el-dialog__footer {
    padding-right: 20px;
  padding-right: 20px;
}
</style>