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