From 2203e220e71fe69bb89b7c01e431eaea08bdaf0d Mon Sep 17 00:00:00 2001
From: spring <2396852758@qq.com>
Date: 星期二, 25 二月 2025 14:23:22 +0800
Subject: [PATCH] 搬迁内审管理
---
src/api/cnas/systemManagement/documentControl.js | 13
src/views/CNAS/systemManagement/documentControl/components/DistributionCollectionRecord.vue | 52
src/views/standard/standardLibrary/index.vue | 35
src/views/CNAS/systemManagement/managementReview/components/reviewReport.vue | 291 +++++++++
src/views/CNAS/systemManagement/documentRecords/approvalRecord.vue | 2
src/views/CNAS/systemManagement/managementReview/components/meetingRecordsDia.vue | 158 ++++
src/views/CNAS/systemManagement/managementReview/components/managementReviewPlan.vue | 339 ++++++++++
src/views/CNAS/systemManagement/managementReview/components/meetingRecords.vue | 221 ++++++
src/api/cnas/systemManagement/measuresDealRisks.js | 8
src/api/cnas/systemManagement/internalAuditManagement.js | 24
src/utils/request.js | 3
src/views/CNAS/systemManagement/managementReview/components/reviewReportDia.vue | 259 ++++++++
src/views/CNAS/systemManagement/managementReview/components/managementFormDIa.vue | 246 +++++++
src/views/CNAS/systemManagement/managementReview/index.vue | 48 +
src/views/performance/manHour/workTimeConfig.vue | 4
src/api/cnas/systemManagement/managementReview.js | 159 ++++
16 files changed, 1,785 insertions(+), 77 deletions(-)
diff --git a/src/api/cnas/systemManagement/documentControl.js b/src/api/cnas/systemManagement/documentControl.js
index 2d35c9e..3fc97b7 100644
--- a/src/api/cnas/systemManagement/documentControl.js
+++ b/src/api/cnas/systemManagement/documentControl.js
@@ -63,9 +63,7 @@
return request({
url: "/manageDocumentControlled/checkManageDocumentControlledPdf",
method: "get",
- headers: {
- responseType: "blob",
- },
+ responseType: "blob",
params: query,
});
}
@@ -112,6 +110,7 @@
return request({
url: "/manageDocumentIssueRecycle/exportManageDocumentIssueRecycle",
method: "get",
+ responseType: "blob",
params: query,
});
}
@@ -121,7 +120,7 @@
return request({
url: "/manageDocumentIssueRecycle/addManageDocumentIssueRecycle",
method: "post",
- headers: { "Content-Type": "application/x-www-form-urlencoded" },
+ responseType: "blob",
data: data,
});
}
@@ -167,7 +166,7 @@
return request({
url: "/manageDocumentAlter/exportManageDocumentAlter",
method: "get",
- headers: { responseType: "blob" },
+ responseType: "blob",
params: query,
});
}
@@ -197,7 +196,7 @@
return request({
url: "/manageDocumentAlter/checkManageDocumentAlterPdf",
method: "get",
- headers: { responseType: "blob" },
+ responseType: "blob",
params: query,
});
}
@@ -262,7 +261,7 @@
return request({
url: "/manageDocumentCancel/exportManageDocumentCancel",
method: "get",
- headers: { responseType: "blob" },
+ responseType: "blob",
params: query,
});
}
diff --git a/src/api/cnas/systemManagement/internalAuditManagement.js b/src/api/cnas/systemManagement/internalAuditManagement.js
index e7ae621..4e22f4f 100644
--- a/src/api/cnas/systemManagement/internalAuditManagement.js
+++ b/src/api/cnas/systemManagement/internalAuditManagement.js
@@ -24,9 +24,7 @@
return request({
url: "/internalPlan/exportInternalPlan",
method: "get",
- headers: {
- responseType: "blob",
- },
+ responseType: "blob",
params: query,
});
}
@@ -99,9 +97,7 @@
return request({
url: "/internalImplement/exportInternalImplement",
method: "get",
- headers: {
- responseType: "blob",
- },
+ responseType: "blob",
params: query,
});
}
@@ -165,9 +161,7 @@
return request({
url: "/internalMeeting/exportInternalMeeting",
method: "get",
- headers: {
- responseType: "blob",
- },
+ responseType: "blob",
params: query,
});
}
@@ -222,9 +216,7 @@
return request({
url: "/internalCheck/exportInternalCheck",
method: "get",
- headers: {
- responseType: "blob",
- },
+ responseType: "blob",
params: query,
});
}
@@ -279,9 +271,7 @@
return request({
url: "/internalCorrect/exportInternalCorrect",
method: "get",
- headers: {
- responseType: "blob",
- },
+ responseType: "blob",
params: query,
});
}
@@ -327,9 +317,7 @@
return request({
url: "/internalReport/exportInternalReport",
method: "get",
- headers: {
- responseType: "blob",
- },
+ responseType: "blob",
params: query,
});
}
diff --git a/src/api/cnas/systemManagement/managementReview.js b/src/api/cnas/systemManagement/managementReview.js
new file mode 100644
index 0000000..5d410d3
--- /dev/null
+++ b/src/api/cnas/systemManagement/managementReview.js
@@ -0,0 +1,159 @@
+// 绠$悊璇勫鐩稿叧鎺ュ彛
+import request from "@/utils/request";
+
+// 绠$悊璁″垝-涓婁紶闄勪欢
+export function addReviewProgramFile(data) {
+ return request({
+ url: "/manageReviewProgramFile/addReviewProgramFile",
+ method: "post",
+ headers: { "Content-Type": "application/x-www-form-urlencoded" },
+ data: data,
+ });
+}
+
+//绠$悊璁″垝-闄勪欢鍒楄〃
+export function selectReviewProgramFile(query) {
+ return request({
+ url: "/manageReviewProgramFile/selectReviewProgramFile",
+ method: "get",
+ params: query,
+ });
+}
+
+//绠$悊璁″垝-鏌ヨ绠$悊璇勫璁″垝
+export function getPageReviewProgram(query) {
+ return request({
+ url: "/manageReviewProgram/getPageReviewProgram",
+ method: "get",
+ params: query,
+ });
+}
+
+//绠$悊璁″垝-鍒犻櫎绠$悊璇勫璁″垝
+export function deleteReviewProgram(query) {
+ return request({
+ url: "/manageReviewProgram/deleteReviewProgram",
+ method: "delete",
+ params: query,
+ });
+}
+
+//绠$悊璁″垝
+export function exportReviewProgram(query) {
+ return request({
+ url: "/manageReviewProgram/exportReviewProgram",
+ method: "get",
+ responseType: "blob",
+ params: query,
+ });
+}
+
+// 绠$悊璁″垝-缂栬緫绠$悊璇勫璁″垝
+export function modifyReviewProgram(data) {
+ return request({
+ url: "/manageReviewProgram/modifyReviewProgram",
+ method: "post",
+ data: data,
+ });
+}
+
+//浼氳璁板綍-鏌ヨ绠$悊璇勫浼氳璁板綍
+export function getPageMeeting(query) {
+ return request({
+ url: "/manageMeeting/getPageMeeting",
+ method: "get",
+ params: query,
+ });
+}
+
+//浼氳璁板綍-鍒犻櫎绠$悊璇勫浼氳璁板綍
+export function deleteMeeting(query) {
+ return request({
+ url: "/manageMeeting/deleteMeeting",
+ method: "delete",
+ params: query,
+ });
+}
+
+//浼氳璁板綍-涓嬭浇绠$悊璇勫浼氳璁板綍
+export function exportMeeting(query) {
+ return request({
+ url: "/manageMeeting/exportMeeting",
+ method: "get",
+ responseType: "blob",
+ params: query,
+ });
+}
+
+// 绠$悊璁″垝-鏂板绠$悊璇勫浼氳璁板綍
+export function addMeeting(data) {
+ return request({
+ url: "/manageMeeting/addMeeting",
+ method: "post",
+ data: data,
+ });
+}
+
+// 绠$悊璁″垝-淇敼绠$悊璇勫浼氳璁板綍
+export function modifyMeeting(data) {
+ return request({
+ url: "/manageMeeting/modifyMeeting",
+ method: "post",
+ data: data,
+ });
+}
+
+//璇勫浼氳鎶ュ憡-鏌ヨ绠$悊璇勫浼氳鎶ュ憡
+export function getPageReviewReport(query) {
+ return request({
+ url: "/manageReviewReport/getPageReviewReport",
+ method: "get",
+ params: query,
+ });
+}
+
+//璇勫浼氳鎶ュ憡-鍒犻櫎绠$悊璇勫浼氳鎶ュ憡
+export function deleteReviewReport(query) {
+ return request({
+ url: "/manageReviewReport/deleteReviewReport",
+ method: "delete",
+ params: query,
+ });
+}
+
+//璇勫浼氳鎶ュ憡-涓嬭浇
+export function exportReviewReport(query) {
+ return request({
+ url: "/manageReviewReport/exportReviewReport",
+ method: "get",
+ responseType: "blob",
+ params: query,
+ });
+}
+
+// 璇勫浼氳鎶ュ憡-缂栬緫绠$悊璇勫浼氳鎶ュ憡
+export function modifyReviewReport(data) {
+ return request({
+ url: "/manageReviewReport/modifyReviewReport",
+ method: "post",
+ data: data,
+ });
+}
+
+// 璇勫浼氳鎶ュ憡-鏂板绠$悊璇勫浼氳鎶ュ憡
+export function addReviewReport(data) {
+ return request({
+ url: "/manageReviewReport/addReviewReport",
+ method: "post",
+ data: data,
+ });
+}
+
+// 璇勫浼氳鎶ュ憡-鏂板绠$悊璇勫璁″垝
+export function addReviewProgram(data) {
+ return request({
+ url: "/manageReviewProgram/addReviewProgram",
+ method: "post",
+ data: data,
+ });
+}
diff --git a/src/api/cnas/systemManagement/measuresDealRisks.js b/src/api/cnas/systemManagement/measuresDealRisks.js
index 2649410..268b1a0 100644
--- a/src/api/cnas/systemManagement/measuresDealRisks.js
+++ b/src/api/cnas/systemManagement/measuresDealRisks.js
@@ -51,9 +51,7 @@
return request({
url: "/manageRiskAssessmentResults/exportHazardFactorIdentification",
method: "get",
- headers: {
- responseType: "blob",
- },
+ responseType: "blob",
params: query,
});
}
@@ -108,9 +106,7 @@
return request({
url: "/manageControlPlanList/exportSignificantRiskFactors",
method: "get",
- headers: {
- responseType: "blob",
- },
+ responseType: "blob",
params: query,
});
}
diff --git a/src/utils/request.js b/src/utils/request.js
index 1a89ee8..dc2024b 100644
--- a/src/utils/request.js
+++ b/src/utils/request.js
@@ -36,6 +36,9 @@
url = url.slice(0, -1);
config.params = {};
config.url = url;
+ config.headers["responseType"] = config.headers["responseType"]
+ ? config.headers["responseType"]
+ : ""; // 璁╂瘡涓姹傛惡甯﹁嚜瀹氫箟token 璇锋牴鎹疄闄呮儏鍐佃嚜琛屼慨鏀�
}
if (
!isRepeatSubmit &&
diff --git a/src/views/CNAS/systemManagement/documentControl/components/DistributionCollectionRecord.vue b/src/views/CNAS/systemManagement/documentControl/components/DistributionCollectionRecord.vue
index 1aba02d..0548ea4 100644
--- a/src/views/CNAS/systemManagement/documentControl/components/DistributionCollectionRecord.vue
+++ b/src/views/CNAS/systemManagement/documentControl/components/DistributionCollectionRecord.vue
@@ -394,33 +394,33 @@
exportManageDocumentIssueRecycle(this.queryParams).then(res => {
this.outLoading = false
const blob = new Blob([res], { type: 'application/octet-stream' });
- this.$download.saveAs(blob, '鍙戞斁鍥炴敹璁板綍.xlsx')
+ // this.$download.saveAs(blob, '鍙戞斁鍥炴敹璁板綍.xlsx')
//灏咮lob 瀵硅薄杞崲鎴愬瓧绗︿覆
- // let reader = new FileReader();
- // reader.readAsText(blob, 'utf-8');
- // reader.onload = () => {
- // try {
- // let result = JSON.parse(reader.result);
- // if (result.message) {
- // this.$message.error(result.message);
- // } else {
- // const url = URL.createObjectURL(blob);
- // const link = document.createElement('a');
- // link.href = url;
- // link.download = '鍙戞斁鍥炴敹璁板綍.xlsx';
- // link.click();
- // this.$message.success('瀵煎嚭鎴愬姛')
- // }
- // } catch (err) {
- // console.log(err);
- // const url = URL.createObjectURL(blob);
- // const link = document.createElement('a');
- // link.href = url;
- // link.download = '鍙戞斁鍥炴敹璁板綍.xlsx';
- // link.click();
- // this.$message.success('瀵煎嚭鎴愬姛')
- // }
- // }
+ let reader = new FileReader();
+ reader.readAsText(blob, 'utf-8');
+ reader.onload = () => {
+ try {
+ let result = JSON.parse(reader.result);
+ if (result.message) {
+ this.$message.error(result.message);
+ } else {
+ const url = URL.createObjectURL(blob);
+ const link = document.createElement('a');
+ link.href = url;
+ link.download = '鍙戞斁鍥炴敹璁板綍.xlsx';
+ link.click();
+ this.$message.success('瀵煎嚭鎴愬姛')
+ }
+ } catch (err) {
+ console.log(err);
+ const url = URL.createObjectURL(blob);
+ const link = document.createElement('a');
+ link.href = url;
+ link.download = '鍙戞斁鍥炴敹璁板綍.xlsx';
+ link.click();
+ this.$message.success('瀵煎嚭鎴愬姛')
+ }
+ }
})
},
changeFileList(e) {
diff --git a/src/views/CNAS/systemManagement/documentRecords/approvalRecord.vue b/src/views/CNAS/systemManagement/documentRecords/approvalRecord.vue
index 7e956bd..8431ad9 100644
--- a/src/views/CNAS/systemManagement/documentRecords/approvalRecord.vue
+++ b/src/views/CNAS/systemManagement/documentRecords/approvalRecord.vue
@@ -285,7 +285,7 @@
this.outLoading = false
if (res.code == 201) return this.$message.error('瀵煎嚭澶辫触')
this.$message.success('瀵煎嚭鎴愬姛')
- let url = this.javaApi + 'word/' + res.message
+ let url = this.javaApi + '/word/' + res.message
this.$download.saveAs(url, '鏂囦欢瀹℃壒璁板綍')
})
},
diff --git a/src/views/CNAS/systemManagement/managementReview/components/managementFormDIa.vue b/src/views/CNAS/systemManagement/managementReview/components/managementFormDIa.vue
new file mode 100644
index 0000000..5f1d57a
--- /dev/null
+++ b/src/views/CNAS/systemManagement/managementReview/components/managementFormDIa.vue
@@ -0,0 +1,246 @@
+<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-position="right" label-width="auto">
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="璇勫鏃堕棿" prop="reviewTime">
+ <el-date-picker v-model="form.reviewTime" :disabled="operationType === 'ratify'" clearable
+ format="yyyy-MM-dd HH:mm:ss" placeholder="閫夋嫨鏃ユ湡" size="small" style="width: 100%" type="datetime"
+ value-format="yyyy-MM-dd HH:mm:ss">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="璇勫鍦扮偣" prop="judgingLocation">
+ <el-input v-model="form.judgingLocation" :disabled="operationType === 'ratify'" clearable
+ size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="璇勫鐩殑" prop="judgingPurpose">
+ <el-input v-model="form.judgingPurpose" :disabled="operationType === 'ratify'" clearable
+ size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="璇勫鏂瑰紡" prop="judgingMethod">
+ <el-input v-model="form.judgingMethod" :disabled="operationType === 'ratify'" clearable
+ size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="鍙傚姞浜哄憳" prop="participants">
+ <!-- <el-input v-model="form.participants" :disabled="operationType === 'ratify'" clearable size="small"></el-input> -->
+ <el-select v-model="form.participants" size="small" style="width: 100%;" filterable
+ :disabled="operationType === 'ratify'" clearable multiple>
+ <el-option v-for="item in personList" :key="item.value" :label="item.label" :value="item.value">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="璇勫鑼冨洿" prop="judgingScope">
+ <el-input v-model="form.judgingScope" :disabled="operationType === 'ratify'" clearable
+ size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="璇勫渚濇嵁" prop="judgingBasis">
+ <el-input v-model="form.judgingBasis" :disabled="operationType === 'ratify'" :rows="3" clearable
+ size="small" type="textarea"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="璇勫涓昏鍐呭" prop="mainContext">
+ <el-input v-model="form.mainContext" :disabled="operationType === 'ratify'" :rows="3" clearable
+ size="small" type="textarea"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="鍑嗗宸ヤ綔瑕佹眰" prop="preparationRequirements">
+ <el-input v-model="form.preparationRequirements" :disabled="operationType === 'ratify'" :rows="3"
+ clearable size="small" type="textarea"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="closeImplementDia">鍙� 娑�</el-button>
+ <el-button v-if="operationType === 'ratify'" :loading="loading" type="primary" @click="handleApproval(1)">鎵�
+ 鍑�</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="qualityRemark" 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 {
+ addReviewProgram,
+ modifyReviewProgram,
+} from '@/api/cnas/systemManagement/managementReview.js'
+import { dateFormat } from '@/utils/date'
+import {
+ selectUserCondition,
+} from "@/api/business/inspectionTask.js";
+import { mapGetters } from "vuex";
+export default {
+ name: 'managementFormDIa',
+ // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+ components: {},
+ data() {
+ // 杩欓噷瀛樻斁鏁版嵁
+ return {
+ formDia: false,
+ diaLoading: false,
+ loading: false,
+ form: {
+ id: '',
+ reviewTime: '',
+ judgingLocation: '',
+ judgingPurpose: '',
+ judgingMethod: '',
+ participants: [],
+ judgingScope: '',
+ judgingBasis: '',
+ mainContext: '',
+ preparationRequirements: '',
+ },
+ rules: {
+ reviewTime: [{ required: true, message: '璇烽�夋嫨璇勫鏃堕棿', trigger: 'blur' }],
+ judgingLocation: [{ required: true, message: '璇峰~鍐欒瘎瀹″湴鐐�', trigger: 'blur' }],
+ judgingPurpose: [{ required: true, message: '璇峰~鍐欒瘎瀹$洰鐨�', trigger: 'blur' }],
+ judgingMethod: [{ required: true, message: '璇峰~鍐欒瘎瀹℃柟寮�', trigger: 'blur' }],
+ participants: [{ required: true, message: '璇峰~鍐欏弬鍔犱汉鍛�', trigger: 'change' }],
+ judgingScope: [{ required: true, message: '璇峰~鍐欒瘎瀹¤寖鍥�', trigger: 'blur' }],
+ judgingBasis: [{ required: true, message: '璇峰~鍐欒瘎瀹′緷鎹�', trigger: 'blur' }],
+ mainContext: [{ required: true, message: '璇峰~鍐欒瘎瀹′富瑕佸唴瀹�', trigger: 'blur' }],
+ preparationRequirements: [{ required: true, message: '璇峰~鍐欏噯澶囧伐浣滆姹�', trigger: 'blur' }],
+ },
+ operationType: '',
+ approvalDialog: false,
+ approvalLoading: false,
+ qualityRemark: '',
+ personList: [],
+ };
+ },
+ computed: {
+ ...mapGetters(['nickName'])
+ },
+ mounted() {
+ this.getAuthorizedPerson()
+ },
+ // 鏂规硶闆嗗悎
+ methods: {
+ // 鎵撳紑寮规
+ openDia(type, row) {
+ this.formDia = true
+ this.operationType = type
+ if (type !== 'add') {
+ this.form = row
+ this.form.participants = row.participants ? row.participants.split(',').map(m => Number(m)) : []
+ }
+ },
+ // 鏌ヨ璇︽儏
+ // searchInfo (row) {
+ // this.diaLoading = true
+ // this.$axios(this.$api.internalReport.getInternalReportOne + '?reportId=' + row.reportId).then(res => {
+ // this.diaLoading = false
+ // if (res.code === 201) return
+ // this.form = res.data
+ // }).catch(err => {
+ // console.log(err)
+ // this.diaLoading = false
+ // })
+ // },
+ // 鎻愪氦寮规鏁版嵁
+ handleEdit() {
+ this.$refs['form'].validate((valid) => {
+ if (valid) {
+ this.loading = true
+ const internalReport = this.HaveJson(this.form)
+ internalReport.participants = internalReport.participants.join(',')
+ if (this.operationType === 'add') {
+ addReviewProgram(internalReport).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') {
+ modifyReviewProgram(internalReport).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;
+ }
+ });
+ },
+ // 鎻愪氦鎵瑰噯淇℃伅
+ handleApproval(qualityStatus) {
+ this.approvalLoading = true
+ const internalReport = this.HaveJson(this.form)
+ internalReport.approve = this.nickName
+ internalReport.approveDate = dateFormat(new Date())
+ internalReport.participants = internalReport.participants.join(',')
+ modifyReviewProgram(internalReport).then(res => {
+ if (res.code === 200) {
+ this.$message.success('鎻愪氦鎴愬姛锛�');
+ this.approvalDialog = false
+ this.closeImplementDia(this.departId);
+ }
+ this.approvalLoading = false
+ }).catch(() => {
+ this.approvalLoading = false
+ })
+ },
+ closeImplementDia() {
+ this.$refs.form.resetFields();
+ this.formDia = false
+ this.$emit('closeImplementDia')
+ },
+ getAuthorizedPerson() {
+ selectUserCondition().then(res => {
+ let data = []
+ res.data.forEach(a => {
+ data.push({
+ label: a.name,
+ value: a.id
+ })
+ })
+ this.personList = data
+ })
+ },
+ }
+};
+</script>
+
+<style scoped>
+>>>.el-dialog {
+ margin: 6vh auto 50px !important;
+}
+</style>
diff --git a/src/views/CNAS/systemManagement/managementReview/components/managementReviewPlan.vue b/src/views/CNAS/systemManagement/managementReview/components/managementReviewPlan.vue
new file mode 100644
index 0000000..db15a30
--- /dev/null
+++ b/src/views/CNAS/systemManagement/managementReview/components/managementReviewPlan.vue
@@ -0,0 +1,339 @@
+<template>
+ <div>
+ <div class="search-background">
+ <span class="search-group">
+ <span style="width: 160px">璇勫鍦扮偣锛�</span>
+ <el-input v-model="searchForm.judgingLocation" clearable size="small"></el-input>
+ <el-button size="medium" style="margin-left: 10px" @click="resetSearchForm">閲� 缃�</el-button>
+ <el-button size="medium" type="primary" @click="searchList">鏌� 璇�</el-button>
+ </span>
+ <span class="search-group">
+ <el-button size="medium" type="primary" @click="openFormDia('add')">鏂� 澧�</el-button>
+ </span>
+ </div>
+ <div class="table">
+ <limsTable :column="tableColumn" :height="'calc(100vh - 23em)'" :table-data="tableData"
+ :table-loading="tableLoading" style="padding: 0 10px;margin-bottom: 16px" :page="page" @pagination="pagination">
+ </limsTable>
+ </div>
+ <management-form-d-ia v-if="managementFormDIa" ref="managementFormDIa"
+ @closeImplementDia="closeImplementDia"></management-form-d-ia>
+ <el-dialog :visible.sync="listDialogVisible" title="鏂囦欢鏌ョ湅" top="15vh" width="400px">
+ <div style="max-height:60vh;overflow-y: auto;">
+ <p v-for="(item, index) in fileList" :key="index">
+ <span>{{ item.fileName }}</span>
+ <el-button icon="el-icon-view" size="small" style="margin-left: 20px;" type="text"
+ @click="lookFile(item.url, item.fileName)">棰勮</el-button>
+ <el-button icon="el-icon-bottom" size="small" style="margin-left: 20px;" type="text"
+ @click="handleDown0(item.url, item.fileName)">涓嬭浇</el-button>
+ </p>
+ </div>
+ </el-dialog>
+ <el-dialog :visible.sync="lookDialogVisible" fullscreen title="鏌ョ湅闄勪欢" top="5vh" width="800px">
+ <filePreview v-if="lookDialogVisible" :currentFile="{}" :fileUrl="javaApi + '/word/' + currentInfo.url"
+ style="height: 90vh;overflow-y: auto;" />
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import limsTable from "@/components/Table/lims-table.vue";
+import ManagementFormDIa from './managementFormDIa.vue';
+import filePreview from "@/components/Preview/filePreview.vue";
+import {
+ addReviewProgramFile,
+ selectReviewProgramFile,
+ getPageReviewProgram,
+ deleteReviewProgram,
+ exportReviewProgram,
+} from '@/api/cnas/systemManagement/managementReview.js'
+
+export default {
+ name: 'managementReviewPlan',
+ // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+ components: { ManagementFormDIa, limsTable, filePreview },
+ data() {
+ // 杩欓噷瀛樻斁鏁版嵁
+ return {
+ searchForm: {
+ judgingLocation: '',
+ },
+ listDialogVisible: false,
+ lookDialogVisible: false,
+ fileList: [],
+ currentInfo: {},
+ tableColumn: [
+ {
+ label: '璇勫鏃堕棿',
+ prop: 'reviewTime',
+ },
+ {
+ label: '璇勫鍦扮偣',
+ prop: 'judgingLocation',
+ },
+ {
+ label: '璇勫鐩殑',
+ prop: 'judgingPurpose',
+ },
+ {
+ label: '璇勫鏂瑰紡',
+ prop: 'judgingMethod',
+ },
+ {
+ label: '璇勫鑼冨洿',
+ prop: 'judgingScope',
+ },
+ // {
+ // dataType: 'tag',
+ // label: '鎵瑰噯鐘舵��',
+ // prop: 'approve',
+ // minWidth: '100',
+ // formatData: (params) => {
+ // if (params === 0) {
+ // return '涓嶉�氳繃';
+ // } else if (params === 1) {
+ // return '閫氳繃';
+ // } else {
+ // return null;
+ // }
+ // },
+ // formatType: (params) => {
+ // if (params === 0) {
+ // return 'danger';
+ // } else if (params === 1) {
+ // return 'success';
+ // } else {
+ // return null;
+ // }
+ // }
+ // },
+ {
+ dataType: 'action',
+ minWidth: '110',
+ label: '鎿嶄綔',
+ operation: [
+ {
+ name: '缂栬緫',
+ type: 'text',
+ clickFun: (row) => {
+ this.openFormDia('edit', row);
+ },
+ disabled: (row) => {
+ return !!row.approve
+ },
+ },
+ {
+ name: '涓婁紶',
+ type: 'upload',
+ multiple: true,
+ limit: 20,
+ accept: '.doc,.docx,.xls,.xlsx,.jpg,.jpeg,.png,.pdf',
+ clickFun: async (row, file, fileList) => {
+ const formData = new FormData();
+ formData.append('file', file.raw); // 鏂囦欢瀛楁
+ formData.append('id', row.id); // 鏂囦欢鍚嶅瓧娈�
+ let res = await addReviewProgramFile(formData)
+ if (res.code == 200) {
+ this.$message({ message: '涓婁紶鎴愬姛', type: 'success' });
+ // this.searchList()
+ return
+ } else {
+ this.$message({ message: '涓婁紶澶辫触', type: 'error' });
+ return
+ }
+ },
+ disabled: (row) => {
+ return !!row.approve
+ },
+ },
+ {
+ name: '鏌ョ湅闄勪欢',
+ type: 'text',
+ clickFun: (row) => {
+ selectReviewProgramFile({ id: row.id }).then(res => {
+ this.listDialogVisible = true;
+ this.fileList = res.data.fileList
+ });
+ },
+ },
+ {
+ name: '鎵瑰噯',
+ type: 'text',
+ clickFun: (row) => {
+ this.openFormDia('ratify', row);
+ },
+ disabled: (row) => {
+ return !!row.approve
+ },
+ },
+ {
+ name: '鍒犻櫎',
+ type: 'text',
+ color: '#f56c6c',
+ clickFun: (row) => {
+ this.delPlan(row)
+ },
+ disabled: (row) => {
+ if (row.qualityStatus === 1) {
+ return true
+ } else {
+ return false
+ }
+ },
+ },
+ {
+ name: '涓嬭浇',
+ type: 'text',
+ clickFun: (row) => {
+ this.handleDown(row)
+ }
+ },
+ ]
+ }
+ ],
+ tableData: [],
+ tableLoading: false,
+ page: {
+ size: 20,
+ current: 1,
+ total: 0,
+ },
+ managementFormDIa: false,
+ };
+ },
+ mounted() {
+ this.searchList()
+ },
+ // 鏂规硶闆嗗悎
+ methods: {
+ // 鏌ヨ鍒楄〃
+ searchList() {
+ this.tableLoading = true
+ getPageReviewProgram({
+ judgingLocation: this.searchForm.judgingLocation,
+ pages: this.page.current,
+ size: this.page.size
+ }).then(res => {
+ this.tableLoading = false
+ if (res.code === 201) return
+ this.tableData = res.data.records
+ this.page.total = res.data.total
+ }).catch(err => {
+ console.log('err---', err);
+ this.tableLoading = false
+ })
+ },
+ // 鏂板锛岀紪杈戯紝鎵瑰噯寮规
+ openFormDia(type, row) {
+ this.managementFormDIa = true
+ this.$nextTick(() => {
+ this.$refs.managementFormDIa.openDia(type, row)
+ })
+ },
+ closeImplementDia() {
+ this.managementFormDIa = false
+ this.searchList()
+ },
+ // 閲嶇疆鏌ヨ鏉′欢
+ resetSearchForm() {
+ this.searchForm.judgingLocation = '';
+ this.searchList()
+ },
+ // 鍒犻櫎
+ delPlan(row) {
+ this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ this.tableLoading = true
+ deleteReviewProgram({ id: row.id }).then(res => {
+ this.tableLoading = false
+ if (res.code === 201) return
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.searchList()
+ }).catch(err => {
+ this.tableLoading = false
+ console.log('err---', err);
+ })
+ }).catch(() => {
+ this.$message({
+ type: 'info',
+ message: '宸插彇娑堝垹闄�'
+ });
+ });
+ },
+ // 鍒嗛〉
+ pagination({ page, limit }) {
+ this.page.current = page;
+ this.page.size = limit;
+ this.searchList();
+ },
+ handleDown(row) {
+ exportReviewProgram({ id: row.id }).then(res => {
+ if (res.code == 201) {
+ this.$message.error(res.message)
+ return
+ }
+ const blob = new Blob([res], { type: 'application/octet-stream' });
+ //灏咮lob 瀵硅薄杞崲鎴愬瓧绗︿覆
+ let reader = new FileReader();
+ reader.readAsText(blob, 'utf-8');
+ reader.onload = () => {
+ try {
+ let result = JSON.parse(reader.result);
+ if (result.message) {
+ this.$message.error(result.message);
+ } else {
+ const url = URL.createObjectURL(blob);
+ const link = document.createElement('a');
+ link.href = url;
+ link.download = '璇勫璁″垝.docx';
+ link.click();
+ this.$download.saveAs(blob, name)
+ this.$message.success('瀵煎嚭鎴愬姛')
+ }
+ } catch (err) {
+ console.log(err);
+ const url = URL.createObjectURL(blob);
+ const link = document.createElement('a');
+ link.href = url;
+ link.download = '璇勫璁″垝.docx';
+ link.click();
+ this.$message.success('瀵煎嚭鎴愬姛')
+ }
+ }
+ })
+ },
+ lookFile(url, name) {
+ this.currentInfo.url = url
+ this.currentInfo.name = name
+ this.lookDialogVisible = true
+ },
+ handleDown0(url, name) {
+ if (!url) return this.$message.warning('鏂囦欢鏈笂浼�')
+ let url0 = this.javaApi + '/word/' + url
+ const link = document.createElement('a');
+ link.href = url0;
+ link.target = '_blank';
+ link.click();
+ }
+ }
+};
+</script>
+
+<style scoped>
+.search-background {
+ width: 100%;
+ height: 60px;
+ line-height: 60px;
+ display: flex;
+ justify-content: space-between;
+}
+
+.search-group {
+ display: flex;
+ align-items: center;
+ margin: 0 20px;
+}
+</style>
diff --git a/src/views/CNAS/systemManagement/managementReview/components/meetingRecords.vue b/src/views/CNAS/systemManagement/managementReview/components/meetingRecords.vue
new file mode 100644
index 0000000..819fa92
--- /dev/null
+++ b/src/views/CNAS/systemManagement/managementReview/components/meetingRecords.vue
@@ -0,0 +1,221 @@
+<template>
+ <div>
+ <div class="search-background">
+ <span class="search-group">
+ <span style="width: 160px">浼氳鍦扮偣锛�</span>
+ <el-input v-model="searchForm.place" clearable size="small"></el-input>
+ <el-button size="medium" style="margin-left: 10px" @click="resetSearchForm">閲� 缃�</el-button>
+ <el-button size="medium" type="primary" @click="searchList">鏌� 璇�</el-button>
+ </span>
+ <span class="search-group">
+ <el-button size="medium" type="primary" @click="openFormDia('add')">鏂� 澧�</el-button>
+ </span>
+ </div>
+ <div class="table">
+ <limsTable :column="tableColumn" :height="'calc(100vh - 23em)'" :table-data="tableData"
+ :table-loading="tableLoading" style="padding: 0 10px;margin-bottom: 16px" :page="page" @pagination="pagination">
+ </limsTable>
+ </div>
+ <meeting-records-dia v-if="meetingRecordsDia" ref="meetingRecordsDia"
+ @closeYearDia="closeYearDia"></meeting-records-dia>
+ </div>
+</template>
+
+<script>
+import limsTable from "@/components/Table/lims-table.vue";
+import MeetingRecordsDia from './meetingRecordsDia.vue';
+import ManagementFormDIa from './managementFormDIa.vue';
+import {
+ getPageMeeting,
+ deleteMeeting,
+ exportMeeting,
+} from '@/api/cnas/systemManagement/managementReview.js'
+
+export default {
+ name: 'meetingRecords',
+ // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+ components: { ManagementFormDIa, MeetingRecordsDia, limsTable },
+ data() {
+ // 杩欓噷瀛樻斁鏁版嵁
+ return {
+ searchForm: {
+ place: '',
+ },
+ tableColumn: [
+ {
+ label: '鏃堕棿',
+ prop: 'meetingTime',
+ minWidth: '100'
+ },
+ {
+ label: '涓绘寔浜�',
+ prop: 'compere',
+ minWidth: '100'
+ },
+ {
+ label: '浼氳鍦扮偣',
+ prop: 'place',
+ minWidth: '100'
+ },
+ {
+ label: '浼氳鍐呭鎽樿',
+ prop: 'content',
+ minWidth: '100'
+ },
+ {
+ dataType: 'action',
+ minWidth: '120',
+ label: '鎿嶄綔',
+ operation: [
+ {
+ name: '缂栬緫',
+ type: 'text',
+ clickFun: (row) => {
+ this.openFormDia('edit', row);
+ },
+ },
+ {
+ name: '鍒犻櫎',
+ type: 'text',
+ color: '#f56c6c',
+ clickFun: (row) => {
+ this.delPlan(row)
+ }
+ },
+ {
+ name: '涓嬭浇',
+ type: 'text',
+ clickFun: (row) => {
+ this.handleDown(row)
+ }
+ },
+ ]
+ }
+ ],
+ tableData: [],
+ tableLoading: false,
+ page: {
+ size: 20,
+ current: 1,
+ total: 0,
+ },
+ meetingRecordsDia: false
+ };
+ },
+ mounted() {
+ this.searchList()
+ },
+ // 鏂规硶闆嗗悎
+ methods: {
+ // 鏌ヨ鍒楄〃
+ searchList() {
+ this.tableLoading = true
+ getPageMeeting({ place: this.searchForm.place, pages: this.page.current, size: this.page.size }).then(res => {
+ this.tableLoading = false
+ if (res.code === 201) return
+ this.tableData = res.data.records
+ this.page.total = res.data.total
+ }).catch(err => {
+ console.log('err---', err);
+ this.tableLoading = false
+ })
+ },
+ // 鏂板锛岀紪杈戝脊妗�
+ openFormDia(type, row) {
+ this.meetingRecordsDia = true
+ this.$nextTick(() => {
+ this.$refs.meetingRecordsDia.openDia(type, row)
+ })
+ },
+ closeYearDia() {
+ this.meetingRecordsDia = false
+ this.searchList()
+ },
+ // 閲嶇疆鏌ヨ鏉′欢
+ resetSearchForm() {
+ this.searchForm.place = '';
+ this.searchList()
+ },
+ // 鍒犻櫎
+ delPlan(row) {
+ this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ this.tableLoading = true
+ deleteMeeting({ id: row.id }).then(res => {
+ this.tableLoading = false
+ if (res.code === 201) return
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.searchList()
+ }).catch(err => {
+ this.tableLoading = false
+ console.log('err---', err);
+ })
+ }).catch(() => {
+ this.$message({
+ type: 'info',
+ message: '宸插彇娑堝垹闄�'
+ });
+ });
+ },
+ pagination({ page, limit }) {
+ this.page.current = page;
+ this.page.size = limit;
+ this.searchList();
+ },
+ handleDown(row) {
+ exportMeeting({ id: row.id }).then(res => {
+ if (res.code == 201) {
+ this.$message.error(res.message)
+ return
+ }
+ const blob = new Blob([res], { type: 'application/octet-stream' });
+ //灏咮lob 瀵硅薄杞崲鎴愬瓧绗︿覆
+ let reader = new FileReader();
+ reader.readAsText(blob, 'utf-8');
+ reader.onload = () => {
+ try {
+ let result = JSON.parse(reader.result);
+ if (result.message) {
+ this.$message.error(result.message);
+ } else {
+ const url = URL.createObjectURL(blob);
+ const link = document.createElement('a');
+ link.href = url;
+ link.download = '浼氳璁板綍.docx';
+ link.click();
+ this.$message.success('瀵煎嚭鎴愬姛')
+ }
+ } catch (err) {
+ console.log(err);
+ const url = URL.createObjectURL(blob);
+ const link = document.createElement('a');
+ link.href = url;
+ link.download = '浼氳璁板綍.docx';
+ link.click();
+ this.$message.success('瀵煎嚭鎴愬姛')
+ }
+ }
+ })
+ },
+ }
+};
+</script>
+
+<style scoped>
+.search-background {
+ width: 100%;
+ height: 60px;
+ line-height: 60px;
+ display: flex;
+ justify-content: space-between;
+}
+
+.search-group {
+ display: flex;
+ align-items: center;
+ margin: 0 20px;
+}
+</style>
diff --git a/src/views/CNAS/systemManagement/managementReview/components/meetingRecordsDia.vue b/src/views/CNAS/systemManagement/managementReview/components/meetingRecordsDia.vue
new file mode 100644
index 0000000..835e5e4
--- /dev/null
+++ b/src/views/CNAS/systemManagement/managementReview/components/meetingRecordsDia.vue
@@ -0,0 +1,158 @@
+<template>
+ <div>
+ <el-dialog v-loading="diaLoading" :close-on-click-modal="false" :close-on-press-escape="false"
+ :visible.sync="formDia" title="绠$悊璇勫浼氳璁板綍" width="1000px" @close="closeYearDia">
+ <el-form ref="form" :model="form" :rules="rules" label-position="top" label-width="auto">
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="鏃堕棿" prop="meetingTime">
+ <el-date-picker v-model="form.meetingTime" clearable format="yyyy-MM-dd HH:mm:ss" placeholder="閫夋嫨鏃ユ湡"
+ size="small" style="width: 100%" type="datetime" value-format="yyyy-MM-dd HH:mm:ss">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鍦扮偣" prop="place">
+ <el-input v-model="form.place" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="涓绘寔浜�" prop="compere">
+ <el-input v-model="form.compere" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="浼氳鍐呭鎽樿" prop="content">
+ <el-input v-model="form.content" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="鍙備細浜哄憳" prop="participant">
+ <el-select v-model="form.participant" clearable filterable multiple placeholder="璇烽�夋嫨" size="small"
+ style="width: 100%;">
+ <el-option v-for="(item, i) in personList" :key="i" :label="item.label" :value="item.value">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="closeYearDia">鍙� 娑�</el-button>
+ <el-button :loading="loading" type="primary" @click="handleEdit">鎻� 浜�</el-button>
+ </span>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import {
+ addMeeting,
+ modifyMeeting,
+} from '@/api/cnas/systemManagement/managementReview.js'
+import {
+ selectUserCondition,
+} from "@/api/business/inspectionTask.js";
+export default {
+ name: 'meetingRecordsDia',
+ // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+ components: {},
+ data() {
+ // 杩欓噷瀛樻斁鏁版嵁
+ return {
+ formDia: false,
+ diaLoading: false,
+ loading: false,
+ form: {
+ id: '',
+ meetingTime: '',
+ compere: '',
+ place: '',
+ content: '',
+ participant: [],
+ },
+ rules: {
+ meetingTime: [{ required: true, message: '璇峰~鍐欎細璁椂闂�', trigger: 'blur' }],
+ compere: [{ required: true, message: '璇峰~鍐欎富鎸佷汉', trigger: 'blur' }],
+ place: [{ required: true, message: '璇峰~鍐欏湴鐐�', trigger: 'blur' }],
+ content: [{ required: true, message: '璇峰~鍐欎細璁唴瀹规憳瑕�', trigger: 'blur' }],
+ participant: [{ required: true, message: '璇烽�夋嫨鍙傚姞浜哄憳', trigger: 'change' }],
+ },
+ operationType: '',
+ personList: []
+ };
+ },
+ mounted() {
+
+ },
+ // 鏂规硶闆嗗悎
+ methods: {
+ // 鎵撳紑寮规
+ openDia(type, row) {
+ this.operationType = type
+ this.getAuthorizedPerson()
+ if (type !== 'add') {
+ this.form = row
+ this.form.participant = row.participant.split(',').map(a => {
+ a = Number(a)
+ return a
+ })
+ }
+ this.formDia = true
+ },
+ // 鎻愪氦寮规鏁版嵁
+ handleEdit() {
+ this.$refs['form'].validate((valid) => {
+ if (valid) {
+ this.loading = true
+ const internalMeeting = this.HaveJson(this.form)
+ internalMeeting.participant = internalMeeting.participant.join(',')
+ if (this.operationType === 'add') {
+ addMeeting(internalMeeting).then(res => {
+ this.loading = false
+ if (res.code === 201) return
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.closeYearDia()
+ }).catch(err => {
+ console.log('err---', err);
+ this.loading = false
+ })
+ } else if (this.operationType === 'edit') {
+ modifyMeeting(internalMeeting).then(res => {
+ this.loading = false
+ if (res.code === 201) return
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.closeYearDia()
+ }).catch(err => {
+ console.log('err---', err);
+ this.loading = false
+ })
+ }
+ } else {
+ console.log('error submit!!');
+ return false;
+ }
+ });
+ },
+ closeYearDia() {
+ this.$refs.form.resetFields();
+ this.formDia = false
+ this.$emit('closeYearDia')
+ },
+ getAuthorizedPerson() {
+ selectUserCondition().then(res => {
+ let data = []
+ res.data.forEach(a => {
+ data.push({
+ label: a.name,
+ value: a.id
+ })
+ })
+ this.personList = data
+ })
+ },
+ }
+};
+</script>
+
+<style scoped></style>
diff --git a/src/views/CNAS/systemManagement/managementReview/components/reviewReport.vue b/src/views/CNAS/systemManagement/managementReview/components/reviewReport.vue
new file mode 100644
index 0000000..72a90bc
--- /dev/null
+++ b/src/views/CNAS/systemManagement/managementReview/components/reviewReport.vue
@@ -0,0 +1,291 @@
+<template>
+ <div>
+ <div class="search-background">
+ <span class="search-group">
+ <span style="width: 160px">鍦扮偣锛�</span>
+ <el-input v-model="searchForm.place" clearable size="small"></el-input>
+ <el-button size="medium" style="margin-left: 10px" @click="resetSearchForm">閲� 缃�</el-button>
+ <el-button size="medium" type="primary" @click="searchList">鏌� 璇�</el-button>
+ </span>
+ <span class="search-group">
+ <el-button size="medium" type="primary" @click="openFormDia('add')">鏂� 澧�</el-button>
+ </span>
+ </div>
+ <div class="table">
+ <limsTable :column="tableColumn" :height="'calc(100vh - 23em)'" :table-data="tableData"
+ :table-loading="tableLoading" style="padding: 0 10px;margin-bottom: 16px" :page="page" @pagination="pagination">
+ </limsTable>
+ </div>
+ <review-report-dia v-if="reviewReportDia" ref="reviewReportDia" @closeYearDia="closeYearDia"></review-report-dia>
+ </div>
+</template>
+
+<script>
+import limsTable from "@/components/Table/lims-table.vue";
+import ReviewReportDia from './reviewReportDia.vue';
+import {
+ getPageReviewReport,
+ deleteReviewReport,
+ exportReviewReport,
+ modifyReviewReport,
+} from '@/api/cnas/systemManagement/managementReview.js'
+import { mapGetters } from "vuex";
+export default {
+ name: 'reviewReport',
+ // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+ components: { ReviewReportDia, limsTable },
+ data() {
+ // 杩欓噷瀛樻斁鏁版嵁
+ return {
+ searchForm: {
+ place: '',
+ },
+ tableColumn: [
+ {
+ label: '鐩殑',
+ prop: 'objective',
+ minWidth: '100'
+ },
+ {
+ label: '鍦扮偣',
+ prop: 'place',
+ minWidth: '100'
+ },
+ {
+ label: '涓绘寔浜�',
+ prop: 'compere',
+ minWidth: '100'
+ },
+ {
+ label: '璁板綍浜�',
+ prop: 'recordPeople',
+ minWidth: '100'
+ },
+ {
+ label: '鏃ユ湡',
+ prop: 'date',
+ minWidth: '100'
+ },
+ {
+ label: '椤垫',
+ prop: 'page',
+ minWidth: '100'
+ },
+ {
+ label: '璇勫鏂瑰紡',
+ prop: 'judgingMethod',
+ minWidth: '100'
+ },
+ {
+ label: '璇勫渚濇嵁',
+ prop: 'reviewBasis',
+ minWidth: '100'
+ },
+ {
+ dataType: 'action',
+ minWidth: '160',
+ label: '鎿嶄綔',
+ operation: [
+ {
+ name: '缂栬緫',
+ type: 'text',
+ clickFun: (row) => {
+ this.openFormDia('edit', row);
+ },
+ disabled: (row) => {
+ return !!row.audit || !!row.approval
+ }
+ },
+ {
+ name: '瀹℃牳',
+ type: 'text',
+ clickFun: (row) => {
+ this.$confirm('纭畾瀹℃牳閫氳繃?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ this.submit('audit', row)
+ }).catch(() => {
+ });
+ },
+ disabled: (row) => {
+ return !!row.audit
+ }
+ },
+ {
+ name: '鎵瑰噯',
+ type: 'text',
+ clickFun: (row) => {
+ this.$confirm('纭畾鎵瑰噯閫氳繃?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ this.submit('approval', row)
+ }).catch(() => {
+ });
+ },
+ disabled: (row) => {
+ return !row.audit || !!row.approval
+ }
+ },
+ {
+ name: '鍒犻櫎',
+ type: 'text',
+ color: '#f56c6c',
+ clickFun: (row) => {
+ this.delPlan(row)
+ }
+ },
+ {
+ name: '涓嬭浇',
+ type: 'text',
+ clickFun: (row) => {
+ this.handleDown(row)
+ }
+ },
+ ]
+ }
+ ],
+ tableData: [],
+ tableLoading: false,
+ page: {
+ size: 20,
+ current: 1,
+ total: 0,
+ },
+ reviewReportDia: false,
+ };
+ },
+ computed: {
+ ...mapGetters(['nickName'])
+ },
+ mounted() {
+ this.searchList()
+ },
+ // 鏂规硶闆嗗悎
+ methods: {
+ // 鏌ヨ鍒楄〃
+ searchList() {
+ this.tableLoading = true
+ getPageReviewReport({ place: this.searchForm.place, pages: this.page.current, size: this.page.size }).then(res => {
+ this.tableLoading = false
+ if (res.code === 201) return
+ this.tableData = res.data.records
+ this.page.total = res.data.total
+ }).catch(err => {
+ console.log('err---', err);
+ this.tableLoading = false
+ })
+ },
+ // 鏂板锛岀紪杈戝脊妗�
+ openFormDia(type, row) {
+ this.reviewReportDia = true
+ this.$nextTick(() => {
+ this.$refs.reviewReportDia.openDia(type, row)
+ })
+ },
+ closeYearDia() {
+ this.reviewReportDia = false
+ this.searchList()
+ },
+ // 閲嶇疆鏌ヨ鏉′欢
+ resetSearchForm() {
+ this.searchForm.place = '';
+ this.searchList()
+ },
+ // 鍒犻櫎
+ delPlan(row) {
+ this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', {
+ confirmButtonText: '纭畾',
+ cancelButtonText: '鍙栨秷',
+ type: 'warning'
+ }).then(() => {
+ this.tableLoading = true
+ deleteReviewReport({ id: row.id }).then(res => {
+ this.tableLoading = false
+ if (res.code === 201) return
+ this.$message.success('鍒犻櫎鎴愬姛')
+ this.searchList()
+ }).catch(err => {
+ this.tableLoading = false
+ console.log('err---', err);
+ })
+ }).catch(() => {
+ this.$message({
+ type: 'info',
+ message: '宸插彇娑堝垹闄�'
+ });
+ });
+ },
+ pagination({ page, limit }) {
+ this.page.current = page;
+ this.page.size = limit;
+ this.searchList();
+ },
+ handleDown(row) {
+ exportReviewReport({ id: row.id }).then(res => {
+ if (res.code == 201) {
+ this.$message.error(res.message)
+ return
+ }
+ const blob = new Blob([res], { type: 'application/octet-stream' });
+ //灏咮lob 瀵硅薄杞崲鎴愬瓧绗︿覆
+ let reader = new FileReader();
+ reader.readAsText(blob, 'utf-8');
+ reader.onload = () => {
+ try {
+ let result = JSON.parse(reader.result);
+ if (result.message) {
+ this.$message.error(result.message);
+ } else {
+ const url = URL.createObjectURL(blob);
+ const link = document.createElement('a');
+ link.href = url;
+ link.download = '璇勫鎶ュ憡.docx';
+ link.click();
+ this.$message.success('瀵煎嚭鎴愬姛')
+ }
+ } catch (err) {
+ console.log(err);
+ const url = URL.createObjectURL(blob);
+ const link = document.createElement('a');
+ link.href = url;
+ link.download = '璇勫鎶ュ憡.docx';
+ link.click();
+ this.$message.success('瀵煎嚭鎴愬姛')
+ }
+ }
+ })
+ },
+ submit(type, row) {
+ let obj = row
+ obj[type] = this.nickNamee;
+ modifyReviewReport(obj).then(res => {
+ if (res.code === 201) return
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.searchList()
+ }).catch(err => {
+ console.log('err---', err);
+ })
+ }
+ }
+};
+</script>
+
+<style scoped>
+.search-background {
+ width: 100%;
+ height: 60px;
+ line-height: 60px;
+ display: flex;
+ justify-content: space-between;
+}
+
+.search-group {
+ display: flex;
+ align-items: center;
+ margin: 0 20px;
+}
+</style>
diff --git a/src/views/CNAS/systemManagement/managementReview/components/reviewReportDia.vue b/src/views/CNAS/systemManagement/managementReview/components/reviewReportDia.vue
new file mode 100644
index 0000000..b8afafc
--- /dev/null
+++ b/src/views/CNAS/systemManagement/managementReview/components/reviewReportDia.vue
@@ -0,0 +1,259 @@
+<template>
+ <div>
+ <el-dialog v-loading="diaLoading" :close-on-click-modal="false" :close-on-press-escape="false"
+ :visible.sync="formDia" title="绠$悊璇勫浼氳璁板綍" width="1000px" @close="closeYearDia">
+ <el-form ref="form" :model="form" :rules="rules" label-position="top" label-width="auto">
+ <el-row :gutter="20">
+ <el-col :span="12">
+ <el-form-item label="鐩殑" prop="objective">
+ <el-input v-model="form.objective" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鍦扮偣" prop="place">
+ <el-input v-model="form.place" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="涓绘寔浜�" prop="compere">
+ <el-input v-model="form.compere" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="璁板綍浜�" prop="recordPeople">
+ <el-input v-model="form.recordPeople" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="鏃ユ湡" prop="date">
+ <el-date-picker v-model="form.date" clearable format="yyyy-MM-dd HH:mm:ss" placeholder="閫夋嫨鏃ユ湡" size="small"
+ style="width: 100%" type="datetime" value-format="yyyy-MM-dd HH:mm:ss">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="椤垫" prop="page">
+ <el-input v-model="form.page" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="璇勫鏂瑰紡" prop="judgingMethod">
+ <el-input v-model="form.judgingMethod" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="12">
+ <el-form-item label="璇勫渚濇嵁" prop="reviewBasis">
+ <el-input v-model="form.reviewBasis" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="鍑哄腑浜哄憳" prop="attendess">
+ <!-- <el-input v-model="form.attendess " clearable size="small"></el-input> -->
+ <el-select v-model="form.attendess" size="small" style="width: 100%;" filterable clearable multiple>
+ <el-option v-for="item in personList" :key="item.value" :label="item.label" :value="item.value">
+ </el-option>
+ </el-select>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="璇勫杈撳叆鎯呭喌" prop="reviewInputs">
+ <el-input v-model="form.reviewInputs" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="璇勫杩囩▼姒傚喌" prop="reviewProcess">
+ <el-input v-model="form.reviewProcess" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="涓昏璁姒傝堪" prop="mainTopic">
+ <el-input v-model="form.mainTopic" :rows="5" clearable placeholder="璇疯緭鍏ュ唴瀹癸紝鍙緭鍏ュ嚑鍗冨瓧" size="small"
+ type="textarea">
+ </el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="浜嬮」" prop="matters">
+ <el-input v-model="form.matters" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="璐熻矗浜�" prop="head">
+ <el-input v-model="form.head" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="瀹屾垚鏃ユ湡" prop="completionDate">
+ <el-date-picker v-model="form.completionDate" clearable format="yyyy-MM-dd HH:mm:ss" placeholder="閫夋嫨鏃ユ湡"
+ size="small" style="width: 100%" type="datetime" value-format="yyyy-MM-dd HH:mm:ss">
+ </el-date-picker>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="璺熻釜纭浜�" prop="trackingConfirmed">
+ <el-input v-model="form.trackingConfirmed" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="璺熻釜鎯呭喌纭璁板綍" prop="follerUp">
+ <el-input v-model="form.follerUp" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ <el-col :span="24">
+ <el-form-item label="浣撶郴璇勪环" prop="overallEvaluation">
+ <el-input v-model="form.overallEvaluation" clearable size="small"></el-input>
+ </el-form-item>
+ </el-col>
+ </el-row>
+ </el-form>
+ <span slot="footer" class="dialog-footer">
+ <el-button @click="closeYearDia">鍙� 娑�</el-button>
+ <el-button :loading="loading" type="primary" @click="handleEdit">鎻� 浜�</el-button>
+ </span>
+ </el-dialog>
+ </div>
+</template>
+
+<script>
+import {
+ addReviewReport,
+ modifyReviewReport,
+} from '@/api/cnas/systemManagement/managementReview.js'
+import {
+ selectUserCondition,
+} from "@/api/business/inspectionTask.js";
+export default {
+ name: 'reviewReportDia',
+ // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+ components: {},
+ data() {
+ // 杩欓噷瀛樻斁鏁版嵁
+ return {
+ formDia: false,
+ diaLoading: false,
+ loading: false,
+ form: {
+ id: '',
+ objective: '',
+ place: '',
+ compere: '',
+ recordPeople: '',
+ date: '',
+ page: '',
+ judgingMethod: '',
+ reviewBasis: '',
+ attendess: [],
+ reviewInputs: '',
+ reviewProcess: '',
+ mainTopic: '',
+ matters: '',
+ head: '',
+ completionDate: '',
+ trackingConfirmed: '',
+ follerUp: '',
+ overallEvaluation: '',
+ },
+ rules: {
+ objective: [{ required: true, message: '璇峰~鍐欑洰鐨�', trigger: 'blur' }],
+ place: [{ required: true, message: '璇峰~鍐欏湴鐐�', trigger: 'blur' }],
+ compere: [{ required: true, message: '璇峰~鍐欎富鎸佷汉', trigger: 'blur' }],
+ recordPeople: [{ required: true, message: '璇峰~鍐欒褰曚汉', trigger: 'blur' }],
+ date: [{ required: true, message: '璇烽�夋嫨鏃ユ湡', trigger: 'change' }],
+ completionDate: [{ required: true, message: '璇烽�夋嫨瀹屾垚鏃ユ湡', trigger: 'change' }],
+ page: [{ required: true, message: '璇峰~鍐欓〉娆�', trigger: 'blur' }],
+ judgingMethod: [{ required: true, message: '璇峰~鍐欒瘎瀹℃柟寮�', trigger: 'blur' }],
+ reviewBasis: [{ required: true, message: '璇峰~鍐欒瘎瀹′緷鎹�', trigger: 'blur' }],
+ attendess: [{ required: true, message: '璇峰~鍐欏嚭甯汉鍛�', trigger: 'change' }],
+ reviewInputs: [{ required: true, message: '璇峰~鍐欒瘎瀹¤緭鍏ユ儏鍐�', trigger: 'blur' }],
+ reviewProcess: [{ required: true, message: '璇峰~鍐欒瘎瀹¤緭鍏ユ儏鍐�', trigger: 'blur' }],
+ mainTopic: [{ required: true, message: '璇峰~鍐欎富瑕佽棰樻杩�', trigger: 'blur' }],
+ matters: [{ required: true, message: '璇峰~鍐欎富瑕佽棰樻杩�', trigger: 'blur' }],
+ head: [{ required: true, message: '璇峰~鍐欒礋璐d汉', trigger: 'blur' }],
+ trackingConfirmed: [{ required: true, message: '璇峰~鍐欒窡韪‘璁や汉', trigger: 'blur' }],
+ follerUp: [{ required: true, message: '璇峰~鍐欒窡韪‘璁や汉', trigger: 'blur' }],
+ overallEvaluation: [{ required: true, message: '璇峰~鍐欎綋绯昏瘎浠�', trigger: 'blur' }],
+ },
+ operationType: '',
+ personList: []
+ };
+ },
+ mounted() {
+
+ },
+ // 鏂规硶闆嗗悎
+ methods: {
+ // 鎵撳紑寮规
+ openDia(type, row) {
+ this.formDia = true
+ this.operationType = type
+ this.getAuthorizedPerson()
+ if (type !== 'add') {
+ this.form = row
+ this.form.attendess = this.form.attendess ? this.form.attendess.split(',').map(m => Number(m)) : []
+ }
+ },
+ // 鎻愪氦寮规鏁版嵁
+ handleEdit() {
+ this.$refs['form'].validate((valid) => {
+ if (valid) {
+ this.loading = true
+ const internalMeeting = this.HaveJson(this.form)
+ internalMeeting.attendess = internalMeeting.attendess ? internalMeeting.attendess.join(',') : ''
+ if (this.operationType === 'add') {
+ addReviewReport(internalMeeting).then(res => {
+ this.loading = false
+ if (res.code === 201) return
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.closeYearDia()
+ }).catch(err => {
+ console.log('err---', err);
+ this.loading = false
+ })
+ } else if (this.operationType === 'edit') {
+ modifyReviewReport(internalMeeting).then(res => {
+ this.loading = false
+ if (res.code === 201) return
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.closeYearDia()
+ }).catch(err => {
+ console.log('err---', err);
+ this.loading = false
+ })
+ }
+ } else {
+ console.log('error submit!!');
+ return false;
+ }
+ });
+ },
+ closeYearDia() {
+ this.$refs.form.resetFields();
+ this.formDia = false
+ this.$emit('closeYearDia')
+ },
+ getAuthorizedPerson() {
+ selectUserCondition().then(res => {
+ let data = []
+ res.data.forEach(a => {
+ data.push({
+ label: a.name,
+ value: a.id
+ })
+ })
+ this.personList = data
+ })
+ },
+ }
+};
+</script>
+
+<style scoped>
+>>>.el-dialog {
+ margin: 4vh auto 50px !important;
+}
+
+>>>.el-dialog__body {
+ max-height: 600px;
+ overflow-y: auto;
+}
+</style>
diff --git a/src/views/CNAS/systemManagement/managementReview/index.vue b/src/views/CNAS/systemManagement/managementReview/index.vue
new file mode 100644
index 0000000..9111484
--- /dev/null
+++ b/src/views/CNAS/systemManagement/managementReview/index.vue
@@ -0,0 +1,48 @@
+<template>
+ <div class="main">
+ <el-tabs v-model="activeName" class="tab-panel" type="border-card">
+ <el-tab-pane label="绠$悊璇勫璁″垝" name="yearPlan">
+ <management-review-plan></management-review-plan>
+ </el-tab-pane>
+ <el-tab-pane label="浼氳璁板綍" name="implementationPlan">
+ <meeting-records></meeting-records>
+ </el-tab-pane>
+ <el-tab-pane label="璇勫鎶ュ憡" name="meetingSignIn">
+ <review-report></review-report>
+ </el-tab-pane>
+ </el-tabs>
+ </div>
+</template>
+
+<script>
+import ManagementReviewPlan from './components/managementReviewPlan.vue';
+import MeetingRecords from './components/meetingRecords.vue';
+import ReviewReport from './components/reviewReport.vue';
+
+export default {
+ name: 'a9-management-review',
+ // import 寮曞叆鐨勭粍浠堕渶瑕佹敞鍏ュ埌瀵硅薄涓墠鑳戒娇鐢�
+ components: { ReviewReport, MeetingRecords, ManagementReviewPlan },
+ data() {
+ // 杩欓噷瀛樻斁鏁版嵁
+ return {
+ activeName: 'yearPlan',
+ };
+ },
+ mounted() {
+
+ },
+ // 鏂规硶闆嗗悎
+ methods: {}
+};
+</script>
+
+<style scoped>
+.main {
+ padding: 15px 0;
+}
+
+.tab-panel {
+ background: #fff;
+}
+</style>
diff --git a/src/views/performance/manHour/workTimeConfig.vue b/src/views/performance/manHour/workTimeConfig.vue
index 5364c89..4fcad16 100644
--- a/src/views/performance/manHour/workTimeConfig.vue
+++ b/src/views/performance/manHour/workTimeConfig.vue
@@ -30,8 +30,8 @@
v-if="checkPermi(['performance:manHour:workTimeConfig:add'])">鏂� 澧�</el-button>
</div>
<div class="table">
- <lims-table :tableData="tableData" :column="column" :page="page" :tableLoading="tableLoading"
- :height="'calc(100vh - 290px)'" @pagination="pagination"></lims-table>
+ <lims-table :tableData="tableData" :column="column" :tableLoading="tableLoading" :height="'calc(100vh - 290px)'"
+ :page="page" @pagination="pagination"></lims-table>
</div>
<!-- 鏂板/缂栬緫 -->
<el-dialog :title="title" :visible.sync="timeDia" width="500px">
diff --git a/src/views/standard/standardLibrary/index.vue b/src/views/standard/standardLibrary/index.vue
index 4ead05c..180ad2c 100644
--- a/src/views/standard/standardLibrary/index.vue
+++ b/src/views/standard/standardLibrary/index.vue
@@ -212,10 +212,10 @@
<el-col :class="{ sort: node.level > 3 }" :span="19" :title="data.label" style="text-align: left">
<span>
<i :class="`node_i ${data.children != undefined
- ? data.code === '[1]'
- ? 'el-icon-folder-opened'
- : 'el-icon-folder'
- : 'el-icon-tickets'
+ ? data.code === '[1]'
+ ? 'el-icon-folder-opened'
+ : 'el-icon-folder'
+ : 'el-icon-tickets'
}`"></i>
{{ data.label }}
</span>
@@ -225,7 +225,7 @@
(node.data.children === null ||
node.data.children === undefined)
" :span="2" style="text-align: right">
- <el-button size="mini" type="text" @click="editTreeName(node.data)">
+ <el-button size="mini" type="text" @click.stop="editTreeName(node.data)">
<i class="el-icon-edit"></i>
</el-button>
</el-col>
@@ -286,8 +286,8 @@
<template slot-scope="scope">
<el-input v-if="
checkPermi(['standard:standardLibrary:upStandardProduct'])
- " v-model="scope.row.ask" :autosize="{ minRows: 1, maxRows: 3 }" clearable placeholder="瑕佹眰鍊�"
- size="small" type="textarea" @change="(value) => upStandardProductList(value, scope.row.id)"></el-input>
+ " v-model="scope.row.ask" :autosize="{ minRows: 1, maxRows: 3 }" clearable placeholder="瑕佹眰鍊�" size="small"
+ type="textarea" @change="(value) => upStandardProductList(value, scope.row.id)"></el-input>
<span v-else>{{ scope.row.ask }}</span>
</template>
</el-table-column>
@@ -306,7 +306,7 @@
<el-select v-if="
checkPermi(['standard:standardLibrary:upStandardProduct'])
" v-model="scope.row.methodS" clearable placeholder="璇曢獙鏂规硶" size="small" @change="(value) => upStandardProductListOfMethodS(value, scope.row.id)
- ">
+ ">
<el-option v-for="(a, i) in scope.row.method &&
JSON.parse(scope.row.method)" :key="i" :label="a" :value="a"></el-option>
</el-select>
@@ -318,7 +318,7 @@
<el-select v-if="
checkPermi(['standard:standardLibrary:upStandardProduct'])
" v-model="scope.row.radius" clearable placeholder="鏉′欢" size="small" @change="(value) => upStandardProductListOfRadius(value, scope.row.id)
- ">
+ ">
<el-option v-for="(a, i) in scope.row.radiusList &&
JSON.parse(scope.row.radiusList)" :key="i" :label="a" :value="a"></el-option>
</el-select>
@@ -331,7 +331,7 @@
<el-input v-if="
checkPermi(['standard:standardLibrary:upStandardProduct'])
" v-model="scope.row.price" placeholder="鍗曚环(鍏�)" size="small" @change="(value) => upStandardProductListOfPrice(value, scope.row.id)
- ">
+ ">
</el-input>
<span v-else>{{ scope.row.price }}</span>
</template>
@@ -341,7 +341,7 @@
<el-input v-if="
checkPermi(['standard:standardLibrary:upStandardProduct'])
" v-model="scope.row.manHour" placeholder="鍗曚环(鍏�)" size="small" @change="(value) => upStandardProductListOfManHour(value, scope.row.id)
- ">
+ ">
</el-input>
<span v-else>{{ scope.row.manHour }}</span>
</template>
@@ -351,7 +351,7 @@
<template slot-scope="scope">
<el-select v-model="scope.row.templateId" :disabled="!checkPermi(['standard:standardLibrary:upStandardProduct'])
" filterable size="small" @change="(value) =>
- upStandardProductListOfTemplate(value, scope.row.id)
+ upStandardProductListOfTemplate(value, scope.row.id)
">
<el-option v-for="(a, ai) in templateList" :key="ai" :label="a.name" :value="a.id"></el-option>
</el-select>
@@ -367,10 +367,10 @@
</template>
</el-table-column>
</el-table>
- <el-pagination :current-page="currentPage" :page-size="300" :total="total"
- layout="total, prev, pager, next, jumper" style="position: absolute; right: 16px; bottom: 1px"
- @current-change="handleCurrentChange">
- </el-pagination>
+ <!-- <el-pagination :current-page="currentPage" :page-size="300" :total="total" layout="total"
+ style="position: absolute; right: 16px; bottom: 1px" @current-change="handleCurrentChange">
+ </el-pagination> -->
+ <p style="text-align: right;margin-right: 20px;color: #333;">鍏眥{ total }}鏉�</p>
</el-row>
</div>
@@ -897,7 +897,8 @@
return;
}
this.$message.success("娣诲姞鎴愬姛");
- this.selectStandardTreeList();
+ this.$tab.refreshPage();
+ // this.selectStandardTreeList();
this.updateDia = false;
this.updateLoad = false;
})
--
Gitblit v1.9.3