From e888346ebcd8e3e099a15c7edd7bf367c057193a Mon Sep 17 00:00:00 2001
From: zouyu <2723363702@qq.com>
Date: 星期二, 04 三月 2025 15:33:33 +0800
Subject: [PATCH] Merge branch 'refs/heads/dev'

---
 src/views/CNAS/systemManagement/internalAuditManagement/components/implementPlanDia.vue |  307 +++++++++++++++++++++++++++++++++++++++++++++++++++
 1 files changed, 307 insertions(+), 0 deletions(-)

diff --git a/src/views/CNAS/systemManagement/internalAuditManagement/components/implementPlanDia.vue b/src/views/CNAS/systemManagement/internalAuditManagement/components/implementPlanDia.vue
new file mode 100644
index 0000000..5a94ebe
--- /dev/null
+++ b/src/views/CNAS/systemManagement/internalAuditManagement/components/implementPlanDia.vue
@@ -0,0 +1,307 @@
+<template>
+  <div>
+    <el-dialog v-loading="diaLoading" :close-on-click-modal="false" :close-on-press-escape="false"
+      :visible.sync="formDia" title="鍐呴儴瀹℃牳瀹炴柦璁″垝" width="80%" @close="closeImplementDia">
+      <el-form ref="form" :model="form" :rules="rules" label-width="auto">
+        <el-col :span="24">
+          <el-form-item label="瀹℃牳鐩殑" prop="purposes">
+            <el-input v-model="form.purposes" :disabled="operationType === 'ratify'" clearable size="small"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="瀹℃牳鎬ц川" prop="nature">
+            <el-input v-model="form.nature" :disabled="operationType === 'ratify'" clearable size="small"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="瀹℃牳鑼冨洿" prop="scope">
+            <el-input v-model="form.scope" :disabled="operationType === 'ratify'" clearable size="small"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="24">
+          <el-form-item label="瀹℃牳渚濇嵁" prop="basis">
+            <el-input v-model="form.basis" :disabled="operationType === 'ratify'" clearable size="small"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="瀹℃牳缁勯暱" prop="teamLeader">
+            <el-input v-model="form.teamLeader" :disabled="operationType === 'ratify'" clearable
+              size="small"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="鍐呭鍛�" prop="internalAuditor">
+            <el-input v-model="form.internalAuditor" :disabled="operationType === 'ratify'" clearable
+              size="small"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="瀹℃牳鏃ユ湡" prop="reviewDate">
+            <el-date-picker v-model="form.reviewDate" :disabled="operationType === 'ratify'" clearable
+              format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" size="small" style="width: 100%" type="date"
+              value-format="yyyy-MM-dd">
+            </el-date-picker>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="瀹℃牳鏂规硶" prop="auditMethod">
+            <el-input v-model="form.auditMethod" :disabled="operationType === 'ratify'" clearable
+              size="small"></el-input>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="棣栨浼氳鏃堕棿" prop="firstMeetingTime">
+            <el-date-picker v-model="form.firstMeetingTime" :disabled="operationType === 'ratify'" clearable
+              format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" size="small" style="width: 100%" type="date"
+              value-format="yyyy-MM-dd">
+            </el-date-picker>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="鏈浼氳鏃堕棿" prop="lastMeetingTime">
+            <el-date-picker v-model="form.lastMeetingTime" :disabled="operationType === 'ratify'" clearable
+              format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" size="small" style="width: 100%" type="date"
+              value-format="yyyy-MM-dd">
+            </el-date-picker>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="瀹℃牳鎶ュ憡鎻愪氦鏃ユ湡" prop="submitTime">
+            <el-date-picker v-model="form.submitTime" :disabled="operationType === 'ratify'" clearable
+              format="yyyy-MM-dd" placeholder="閫夋嫨鏃ユ湡" size="small" style="width: 100%" type="date"
+              value-format="yyyy-MM-dd">
+            </el-date-picker>
+          </el-form-item>
+        </el-col>
+        <el-col :span="12">
+          <el-form-item label="瀹℃牳鎶ュ憡鍙戞斁鑼冨洿" prop="submitScope">
+            <el-input v-model="form.submitScope" :disabled="operationType === 'ratify'" clearable
+              size="small"></el-input>
+          </el-form-item>
+        </el-col>
+      </el-form>
+      <div v-if="operationType !== 'ratify'" style="text-align: right;margin-bottom: 10px">
+        <el-button size="small" type="primary" @click="addRow">娣诲姞</el-button>
+        <el-button size="small" type="danger" @click="clearTable">娓呯┖</el-button>
+      </div>
+      <el-table :data="implementDetailList" border height="300" style="width: 100%">
+        <el-table-column align="center" label="搴忓彿" type="index" width="60" />
+        <el-table-column header-align="center" label="鏃堕棿" prop="implement">
+          <template slot-scope="{row}">
+            <el-input v-model="row.implement" :disabled="operationType === 'ratify'" size="small" />
+          </template>
+        </el-table-column>
+        <el-table-column header-align="center" label="鍙楀鏍搁儴闂�" prop="department">
+          <template slot-scope="{row}">
+            <el-input v-model="row.department" :disabled="operationType === 'ratify'" size="small" />
+          </template>
+        </el-table-column>
+        <el-table-column header-align="center" label="璐d换浜�" prop="responsible">
+          <template slot-scope="{row}">
+            <el-input v-model="row.responsible" :disabled="operationType === 'ratify'" size="small" />
+          </template>
+        </el-table-column>
+        <el-table-column header-align="center" label="瀹℃牳鍛�" prop="auditor" width="180">
+          <template slot-scope="{row}">
+            <el-input v-model="row.auditor" :disabled="operationType === 'ratify'" size="small" />
+          </template>
+        </el-table-column>
+        <el-table-column header-align="center" label="瀹℃牳鍐呭" prop="reviewContent" width="180">
+          <template slot-scope="{row}">
+            <el-input v-model="row.reviewContent" :disabled="operationType === 'ratify'" size="small" />
+          </template>
+        </el-table-column>
+      </el-table>
+      <span slot="footer" class="dialog-footer">
+        <el-button v-if="operationType === 'ratify'" :loading="loading" @click="ratify(0)">涓嶆壒鍑�</el-button>
+        <el-button v-if="operationType === 'ratify'" :loading="loading" type="primary" @click="ratify(1)">鎵�
+          鍑�</el-button>
+        <el-button v-if="operationType !== 'ratify'" @click="closeImplementDia">鍙� 娑�</el-button>
+        <el-button v-if="operationType !== 'ratify'" :loading="loading" type="primary" @click="handleEdit">鎻�
+          浜�</el-button>
+      </span>
+    </el-dialog>
+    <el-dialog :visible.sync="approvalDialog" title="鎵瑰噯" width="30%" @close="approvalDialog = false">
+      <span>
+        鎵瑰噯澶囨敞锛�
+        <el-input v-model="ratifyRemark" type="textarea"></el-input>
+      </span>
+      <span slot="footer" class="dialog-footer">
+        <el-button :loading="approvalLoading" @click="approvalDialog = false">鍙� 娑�</el-button>
+        <el-button :loading="approvalLoading" type="primary" @click="handleApproval(0)">纭� 瀹�</el-button>
+      </span>
+    </el-dialog>
+  </div>
+</template>
+
+<script>
+import {
+  getInternalImplementOne,
+  addInternalImplement,
+  updateInternalImplement,
+  ratifyInternalImplement,
+} from '@/api/cnas/systemManagement/internalAuditManagement.js'
+export default {
+  name: 'implementPlanDia',
+  // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+  components: {},
+  data() {
+    // 杩欓噷瀛樻斁鏁版嵁
+    return {
+      formDia: false,
+      diaLoading: false,
+      loading: false,
+      form: {
+        purposes: '',
+        nature: '',
+        scope: '',
+        basis: '',
+        teamLeader: '',
+        internalAuditor: '',
+        reviewDate: '',
+        auditMethod: '',
+        firstMeetingTime: '',
+        lastMeetingTime: '',
+        submitTime: '',
+        submitScope: '',
+      },
+      rules: {
+        purposes: [{ required: true, message: '璇峰~鍐欏鏍哥洰鐨�', trigger: 'blur' }],
+        nature: [{ required: true, message: '璇峰~鍐欏鏍告�ц川', trigger: 'blur' }],
+        scope: [{ required: true, message: '璇峰~鍐欏鏍歌寖鍥�', trigger: 'blur' }],
+        basis: [{ required: true, message: '璇峰~鍐欏鏍镐緷鎹�', trigger: 'blur' }],
+        teamLeader: [{ required: true, message: '璇峰~鍐欏鏍哥粍闀�', trigger: 'blur' }],
+        internalAuditor: [{ required: true, message: '璇峰~鍐欏唴瀹″憳', trigger: 'blur' }],
+        reviewDate: [{ required: true, message: '璇峰~鍐欏鏍告椂闂�', trigger: 'blur' }],
+        auditMethod: [{ required: true, message: '璇峰~鍐欏鏍告柟娉�', trigger: 'blur' }],
+        firstMeetingTime: [{ required: true, message: '璇峰~鍐欓娆′細璁椂闂�', trigger: 'blur' }],
+        lastMeetingTime: [{ required: true, message: '璇峰~鍐欐湯娆′細璁椂闂�', trigger: 'blur' }],
+        submitTime: [{ required: true, message: '璇峰~鍐欏鏍告姤鍛婃彁浜ゆ棩鏈�', trigger: 'blur' }],
+        submitScope: [{ required: true, message: '璇峰~鍐欏鏍告姤鍛婂彂鏀捐寖鍥�', trigger: 'blur' }],
+      },
+      implementDetailList: [],
+      operationType: '',
+      approvalDialog: false,
+      approvalLoading: false,
+      ratifyRemark: '',
+    };
+  },
+  // 鏂规硶闆嗗悎
+  methods: {
+    // 鎵撳紑寮规
+    openDia(type, row) {
+      this.formDia = true
+      this.operationType = type
+      if (type !== 'add') {
+        this.searchInfo(row)
+      }
+    },
+    // 鏌ヨ璇︽儏
+    searchInfo(row) {
+      this.diaLoading = true
+      getInternalImplementOne({ implementId: row.implementId }).then(res => {
+        this.diaLoading = false
+        if (res.code === 201) return
+        this.form = res.data
+        this.implementDetailList = this.form.implementDetailList
+      }).catch(err => {
+        console.log(err)
+        this.diaLoading = false
+      })
+    },
+    // 鎻愪氦寮规鏁版嵁
+    handleEdit() {
+      this.$refs['form'].validate((valid) => {
+        if (valid) {
+          if (this.implementDetailList.length === 0) {
+            this.$message.warning('璇锋坊鍔犺〃鏍兼暟鎹�')
+            return
+          }
+          this.loading = true
+          const internalImplementDto = this.HaveJson(this.form)
+          internalImplementDto.implementDetailList = this.HaveJson(this.implementDetailList)
+          if (this.operationType === 'add') {
+            addInternalImplement(internalImplementDto).then(res => {
+              this.loading = false
+              if (res.code === 201) return
+              this.$message.success('鎿嶄綔鎴愬姛')
+              this.closeImplementDia()
+            }).catch(err => {
+              console.log('err---', err);
+              this.loading = false
+            })
+          } else if (this.operationType === 'edit') {
+            updateInternalImplement(internalImplementDto).then(res => {
+              this.loading = false
+              if (res.code === 201) return
+              this.$message.success('鎿嶄綔鎴愬姛')
+              this.closeImplementDia()
+            }).catch(err => {
+              console.log('err---', err);
+              this.loading = false
+            })
+          }
+        } else {
+          console.log('error submit!!');
+          return false;
+        }
+      });
+    },
+    ratify(ratifyStatus) {
+      // 涓嶆壒鍑嗛渶瑕佸~鍐欐壒鍑嗗唴瀹�
+      if (ratifyStatus === 0) {
+        this.approvalDialog = true
+      } else {
+        this.handleApproval(ratifyStatus)
+      }
+    },
+    // 鎻愪氦鎵瑰噯淇℃伅
+    handleApproval(ratifyStatus) {
+      this.approvalLoading = true
+      const internalImplementDto = this.HaveJson(this.form)
+      internalImplementDto.ratifyStatus = ratifyStatus
+      internalImplementDto.ratifyRemark = ratifyStatus === 0 ? this.ratifyRemark : ''
+      ratifyInternalImplement(internalImplementDto).then(res => {
+        if (res.code === 200) {
+          this.$message.success('鎻愪氦鎴愬姛锛�');
+          this.approvalDialog = false
+          this.closeImplementDia(this.departId);
+        }
+        this.approvalLoading = false
+      }).catch(() => {
+        this.approvalLoading = false
+      })
+    },
+    // 澧炲姞琛ㄦ牸琛屾暟鎹�
+    addRow() {
+      this.implementDetailList.push({
+        implement: '',
+        department: '',
+        responsible: '',
+        auditor: '',
+        reviewContent: '',
+      })
+    },
+    // 娓呯┖琛ㄦ牸鏁版嵁
+    clearTable() {
+      this.implementDetailList = []
+    },
+    closeImplementDia() {
+      this.$refs.form.resetFields();
+      this.formDia = false
+      this.$emit('closeImplementDia')
+    },
+  }
+};
+</script>
+
+<style scoped>
+>>>.el-dialog {
+  margin: 10vh auto 50px !important;
+}
+
+>>>.el-dialog__body {
+  max-height: 38em;
+  overflow-y: auto;
+}
+</style>

--
Gitblit v1.9.3