spring
2025-02-19 bb98d4606e64ee048e99a83df2ef554c9605d692
src/components/caorui/Department/components/Records/dispose/index.vue
@@ -1,278 +1,287 @@
<template>
    <div>
        <el-dialog
            title="纠错处理单"
            :visible.sync="dialogVisible"
        >
            <el-steps
                :active="active"
                finish-status="success"
                :align-center="true"
            >
                <el-step
                    style="cursor: pointer;"
                    v-for="(item, index) in stepList"
                    :key="index"
                    :title="item.label"
                    @click.native="setStep(item.value)"
                ></el-step>
            </el-steps>
            <el-divider></el-divider>
            <Fact
                v-if="pageStatus == 0"
                :factForm.sync="mainForm.factForm"
                :userList="userList"
                :currentResponsible="currentResponsible"
                :disabled="active != 0"
                :step="active"
                @nextStep="submit"
                @cancel="cancel"
            ></Fact>
            <Reason
                v-if="pageStatus == 1"
                :reasonForm.sync="mainForm.reasonForm"
                :userList="userList"
                :currentResponsible="currentResponsible"
                :disabled="active != 1"
                :step="active"
                @nextStep="submit"
                @cancel="cancel"
            ></Reason>
            <Measure
                v-if="pageStatus == 2"
                :measureForm.sync="mainForm.measureForm"
                :userList="userList"
                :currentResponsible="currentResponsible"
                :disabled="active != 2"
                :step="active"
                @nextStep="submit"
                @cancel="cancel"
            ></Measure>
            <Result
                v-if="pageStatus == 3"
                :resultForm.sync="mainForm.resultForm"
                :userList="userList"
                :currentResponsible="currentResponsible"
                :disabled="active != 3"
                :step="active"
                @nextStep="submit"
                @cancel="cancel"
            ></Result>
            <!-- <div slot="footer" class="dialog-footer">
  <div>
    <el-dialog title="纠错处理单" :visible.sync="dialogVisible">
      <el-steps :active="active" finish-status="success" :align-center="true">
        <el-step
          style="cursor: pointer;"
          v-for="(item, index) in stepList"
          :key="index"
          :title="item.label"
          @click.native="setStep(item.value)"
        ></el-step>
      </el-steps>
      <el-divider></el-divider>
      <Fact
        v-if="pageStatus == 0"
        :factForm.sync="mainForm.factForm"
        :userList="userList"
        :currentResponsible="currentResponsible"
        :disabled="active != 0"
        :step="active"
        @nextStep="submit"
        @cancel="cancel"
      ></Fact>
      <Reason
        v-if="pageStatus == 1"
        :reasonForm.sync="mainForm.reasonForm"
        :userList="userList"
        :currentResponsible="currentResponsible"
        :disabled="active != 1"
        :step="active"
        @nextStep="submit"
        @cancel="cancel"
      ></Reason>
      <Measure
        v-if="pageStatus == 2"
        :measureForm.sync="mainForm.measureForm"
        :userList="userList"
        :currentResponsible="currentResponsible"
        :disabled="active != 2"
        :step="active"
        @nextStep="submit"
        @cancel="cancel"
      ></Measure>
      <Result
        v-if="pageStatus == 3"
        :resultForm.sync="mainForm.resultForm"
        :userList="userList"
        :currentResponsible="currentResponsible"
        :disabled="active != 3"
        :step="active"
        @nextStep="submit"
        @cancel="cancel"
      ></Result>
      <!-- <div slot="footer" class="dialog-footer">
                <el-button v-if="active == 4" type="primary" @click="submit(5)">完成</el-button>
            </div> -->
        </el-dialog>
    </div>
    </el-dialog>
  </div>
</template>
<script>
import Fact from './Step/Fact.vue'
import Reason from './Step/Reason.vue'
import Measure from './Step/Measure.vue'
import Result from './Step/Result.vue'
import dayjs from 'dayjs'
import Fact from "./Step/Fact.vue";
import Reason from "./Step/Reason.vue";
import Measure from "./Step/Measure.vue";
import Result from "./Step/Result.vue";
import dayjs from "dayjs";
import {
    getUserListApi,
    personSupervisionProcessingPage,
    addOrUpdatePersonnelServiceProcessing
 } from '../../../../../../assets/api/api'
  getUserListApi,
  personSupervisionProcessingPage,
  addOrUpdatePersonnelServiceProcessing
} from "../../../../../../assets/api/api";
export default {
    components: {
        Fact, Reason, Measure, Result
    },
    data() {
        return {
            active: 0,
            pageStatus: 0,
            dialogVisible: false,
            currentResponsible: undefined,
            stepList: [
                {
                    label: '问题描述',
                    value: 0
                }, {
                    label: '原因分析',
                    value: 1
                }, {
                    label: '纠正措施',
                    value: 2
                }, {
                    label: '验证结果',
                    value: 3
                }
            ],
            supervisionRecordId: undefined,
            processId: undefined,
            mainForm: {
                factForm: {
                    proposingDepartmentPersonId: undefined,
                    descriptionNonconformity: undefined
                },
                reasonForm: {
                    causeAnalysisPersonId: undefined,
                    causeAnalysis: undefined
                },
                measureForm: {
                    correctiveActionId: undefined,
                    correctiveMeasure: undefined,
                    requestDepartmentConfirmation: undefined
                },
                resultForm: {
                    verificationDepartmentPersonId: undefined,
                    implementationVerificationResults: undefined
                }
            },
            userList: [],
  components: {
    Fact,
    Reason,
    Measure,
    Result
  },
  data() {
    return {
      active: 0,
      pageStatus: 0,
      dialogVisible: false,
      currentResponsible: undefined,
      stepList: [
        {
          label: "问题描述",
          value: 0
        },
        {
          label: "原因分析",
          value: 1
        },
        {
          label: "纠正措施",
          value: 2
        },
        {
          label: "验证结果",
          value: 3
        }
    },
    methods: {
        openDialog(id) {
            this.dialogVisible = true
            this.getUserList()
            this.getProcessData(id)
      ],
      supervisionRecordId: undefined,
      processId: undefined,
      mainForm: {
        factForm: {
          proposingDepartmentPersonId: undefined,
          descriptionNonconformity: undefined
        },
        /**
         * @desc 获取用户信息
         */
         async getUserList() {
            const { code, data } = await this.$axios({
                method: 'get',
                url: getUserListApi,
            })
            if(code == 200) {
                this.userList = data
            }
        reasonForm: {
          causeAnalysisPersonId: undefined,
          causeAnalysis: undefined
        },
        /**
         * @desc 查询监督记录处理单
         * @param {监督记录id} id
         */
        async getProcessData(id) {
            const { code, data } = await this.$axios({
                method: 'get',
                url: personSupervisionProcessingPage,
                params: {id}
            })
            if(code == 202) {
                this.controlType = '新增'
                this.supervisionRecordId = id
                this.active = 0
                this.pageStatus = 0
                this.processId = undefined
            }
            if(code == 200) {
                this.currentResponsible = data.currentResponsible
                this.controlType = '编辑'
                this.supervisionRecordId = id
                this.processId = data.processingId
                this.active = Number(data.currentState)
                this.pageStatus = Number(data.currentState === 2 ? 0 : data.currentState)
                // 第1步数据
                this.mainForm.factForm.proposingDepartmentPersonId = data.proposingDepartmentPersonId
                this.mainForm.factForm.descriptionNonconformity = data.descriptionNonconformity
                // 第2步数据
                this.mainForm.reasonForm.causeAnalysisPersonId = data.causeAnalysisPersonId
                this.mainForm.reasonForm.causeAnalysis = data.causeAnalysis
                // 第3步数据
                this.mainForm.measureForm.correctiveActionId = data.correctiveActionId
                this.mainForm.measureForm.correctiveMeasure = data.correctiveMeasure
                this.mainForm.measureForm.requestDepartmentConfirmation = data.requestDepartmentConfirmation == '1' ? true:false
                // 第4步数据
                this.mainForm.resultForm.verificationDepartmentPersonId = data.verificationDepartmentPersonId
                this.mainForm.resultForm.implementationVerificationResults = data.implementationVerificationResults
            }
        measureForm: {
          correctiveActionId: undefined,
          correctiveMeasure: undefined,
          requestDepartmentConfirmation: undefined
        },
        closeDialog() {
            this.dialogVisible = false
        },
        submit(type) {
            let currentState = undefined
            if(type == 'submit') {
                currentState = this.active + 1
            } else if(type == 'save') {
                currentState = undefined
            }
            if(this.active == 0) {
                // 第1步
                console.log('第1步', this.active, currentState)
                let { factForm } = this.mainForm
                this.submitForm({
                    proposingDepartmentDate: dayjs().format('YYYY-MM-DD HH:mm:ss'),
                    currentState: currentState,
                    ...factForm
                })
            } else if(this.active == 1) {
                // 第2步
                console.log('第2步', this.active, currentState)
                let { reasonForm } = this.mainForm
                this.submitForm({
                    causeAnalysisDate: dayjs().format('YYYY-MM-DD HH:mm:ss'),
                    currentState: currentState,
                    ...reasonForm
                })
            } else if(this.active == 2) {
                // 第3步
                console.log('第3步', this.active, currentState)
                let { measureForm } = this.mainForm
                let { requestDepartmentConfirmation, ...measureFormRest } = measureForm
                this.submitForm({
                    correctiveActionDate: dayjs().format('YYYY-MM-DD HH:mm:ss'),
                    currentState: currentState,
                    requestDepartmentConfirmation: requestDepartmentConfirmation ? 1:2,
                    ...measureFormRest
                })
            } else if(this.active == 3) {
                // 第4步
                console.log('第4步', this.active, currentState)
                let { resultForm } = this.mainForm
                this.submitForm({
                    verificationDepartmentDate: dayjs().format('YYYY-MM-DD HH:mm:ss'),
                    currentState: currentState,
                    ...resultForm
                })
            }
        },
        /**
         * @desc 提交表单
         */
        async submitForm(form) {
            console.log('提交表单', form)
            const { code } = await this.$axios({
                method: 'post',
                url: addOrUpdatePersonnelServiceProcessing,
                data: {
                    processingId: this.processId,
                    supervisionRecordId: this.supervisionRecordId,
                    ...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.processId,
                supervisionRecordId: this.supervisionRecordId,
                currentState: currentState,
            })
        },
        setStep(e) {
            console.log(e)
            this.pageStatus = e
        resultForm: {
          verificationDepartmentPersonId: undefined,
          implementationVerificationResults: undefined
        }
      },
      userList: []
    };
  },
  methods: {
    openDialog(id) {
      this.dialogVisible = true;
      this.getUserList();
      this.getProcessData(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 getProcessData(id) {
      const { code, data } = await this.$axios({
        method: "get",
        url: personSupervisionProcessingPage,
        params: { id }
      });
      if (code == 202) {
        this.controlType = "新增";
        this.supervisionRecordId = id;
        this.active = 0;
        this.pageStatus = 0;
        this.processId = undefined;
      }
      if (code == 200) {
        this.currentResponsible = data.currentResponsible;
        this.controlType = "编辑";
        this.supervisionRecordId = id;
        this.processId = data.processingId;
        this.active = Number(data.currentState);
        this.pageStatus = Number(
          data.currentState === 2 ? 0 : data.currentState
        );
        // 第1步数据
        this.mainForm.factForm.proposingDepartmentPersonId =
          data.proposingDepartmentPersonId;
        this.mainForm.factForm.descriptionNonconformity =
          data.descriptionNonconformity;
        // 第2步数据
        this.mainForm.reasonForm.causeAnalysisPersonId =
          data.causeAnalysisPersonId;
        this.mainForm.reasonForm.causeAnalysis = data.causeAnalysis;
        // 第3步数据
        this.mainForm.measureForm.correctiveActionId = data.correctiveActionId;
        this.mainForm.measureForm.correctiveMeasure = data.correctiveMeasure;
        this.mainForm.measureForm.requestDepartmentConfirmation =
          data.requestDepartmentConfirmation;
        // 第4步数据
        this.mainForm.resultForm.verificationDepartmentPersonId =
          data.verificationDepartmentPersonId;
        this.mainForm.resultForm.implementationVerificationResults =
          data.implementationVerificationResults;
      }
    },
    closeDialog() {
      this.dialogVisible = false;
    },
    submit(type) {
      let currentState = undefined;
      if (type == "submit") {
        currentState = this.active + 1;
      } else if (type == "save") {
        currentState = undefined;
      }
      if (this.active == 0) {
        // 第1步
        console.log("第1步", this.active, currentState);
        let { factForm } = this.mainForm;
        this.submitForm({
          proposingDepartmentDate: dayjs().format("YYYY-MM-DD HH:mm:ss"),
          currentState: currentState,
          ...factForm
        });
      } else if (this.active == 1) {
        // 第2步
        console.log("第2步", this.active, currentState);
        let { reasonForm } = this.mainForm;
        this.submitForm({
          causeAnalysisDate: dayjs().format("YYYY-MM-DD HH:mm:ss"),
          currentState: currentState,
          ...reasonForm
        });
      } else if (this.active == 2) {
        // 第3步
        console.log("第3步", this.active, currentState);
        let { measureForm } = this.mainForm;
        let { requestDepartmentConfirmation, ...measureFormRest } = measureForm;
        this.submitForm({
          correctiveActionDate: dayjs().format("YYYY-MM-DD HH:mm:ss"),
          currentState: currentState,
          requestDepartmentConfirmation: requestDepartmentConfirmation ? 1 : 2,
          ...measureFormRest
        });
      } else if (this.active == 3) {
        // 第4步
        console.log("第4步", this.active, currentState);
        let { resultForm } = this.mainForm;
        this.submitForm({
          verificationDepartmentDate: dayjs().format("YYYY-MM-DD HH:mm:ss"),
          currentState: currentState,
          ...resultForm
        });
      }
    },
    /**
     * @desc 提交表单
     */
    async submitForm(form) {
      console.log("提交表单", form);
      const { code } = await this.$axios({
        method: "post",
        url: addOrUpdatePersonnelServiceProcessing,
        data: {
          processingId: this.processId,
          supervisionRecordId: this.supervisionRecordId,
          ...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.processId,
        supervisionRecordId: this.supervisionRecordId,
        currentState: currentState
      });
    },
    setStep(e) {
      console.log(e);
      this.pageStatus = e;
    }
}
  }
};
</script>