From dbb368d910c38781d862dc394e13a7779183bd01 Mon Sep 17 00:00:00 2001 From: gaoluyang <2820782392@qq.com> Date: 星期四, 27 二月 2025 17:56:28 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/dev' into dev --- src/api/cnas/systemManagement/documentControl.js | 2 src/views/CNAS/externalService/serviceAndSupplyPro/component/Edit.vue | 252 ++++++ src/views/CNAS/externalService/serviceAndSupplyPro/component/ConsumableList.vue | 240 ++++++ src/views/CNAS/externalService/serviceAndSupplyPro/component/Store.vue | 468 ++++++++++++ src/views/CNAS/process/sampleDisposal/index.vue | 238 +++--- src/views/CNAS/systemManagement/measuresDealRisks/components/hazardIdentificationRiskAssessment.vue | 4 src/views/CNAS/externalService/serviceAndSupplyPro/component/AddProject.vue | 97 ++ src/views/CNAS/systemManagement/documentControl/components/FileList.vue | 25 src/views/CNAS/systemManagement/documentControl/components/ControlledFileApplication.vue | 29 src/views/CNAS/externalService/serviceAndSupplyPro/component/ConsumableProject.vue | 164 ++++ src/utils/file.js | 69 + src/views/business/inspectionTask/index.vue | 12 src/api/cnas/externalService/serviceAndSupplyPro/serviceAndSupplyPro.js | 220 +++++ src/components/UpPdfStamp/index.vue | 4 src/views/CNAS/systemManagement/measuresDealRisks/components/listRiskAnalysisControlPlans.vue | 2 src/views/CNAS/externalService/serviceAndSupplyPro/component/ConsumableOverview.vue | 1 package.json | 1 src/api/cnas/process/sampleDisposal.js | 9 src/views/CNAS/externalService/serviceAndSupplyPro/component/contents.vue | 312 ++++++++ src/views/CNAS/externalService/serviceAndSupplyPro/index.vue | 53 src/views/performance/class/index.vue | 2 src/views/CNAS/systemManagement/correctiveAction/index.vue | 4 22 files changed, 1,998 insertions(+), 210 deletions(-) diff --git a/package.json b/package.json index a4ff793..2b89237 100644 --- a/package.json +++ b/package.json @@ -55,6 +55,7 @@ "jspdf": "^3.0.0", "mammoth": "^1.9.0", "nprogress": "0.2.0", + "pako": "^2.1.0", "print-js": "^1.6.0", "quill": "2.0.2", "screenfull": "5.0.2", diff --git a/src/api/cnas/externalService/serviceAndSupplyPro/serviceAndSupplyPro.js b/src/api/cnas/externalService/serviceAndSupplyPro/serviceAndSupplyPro.js index 890fb4e..2a0d5ca 100644 --- a/src/api/cnas/externalService/serviceAndSupplyPro/serviceAndSupplyPro.js +++ b/src/api/cnas/externalService/serviceAndSupplyPro/serviceAndSupplyPro.js @@ -8,3 +8,223 @@ params: query }) } + +export function deleteProcurementSuppliesList(query) { + return request({ + url: '/procurementSuppliesList/deleteProcurementSuppliesList', + method: 'delete', + params: query + }) +} + +export function exportProcurementSuppliesList(query) { + return request({ + url: "/procurementSuppliesList/exportProcurementSuppliesList", + method: "get", + responseType: "blob", + params: query, + }); +} + +export function addProcurementSuppliesList(query) { + return request({ + url: '/procurementSuppliesList/addProcurementSuppliesList', + method: 'post', + data: query, + }) +} + +export function selectEnumByCategory(query) { + return request({ + url: '/enum/selectEnumByCategory', + method: 'post', + data: query, + }) +} + +export function updateProcurementSuppliesList(query) { + return request({ + url: '/procurementSuppliesList/updateProcurementSuppliesList', + method: 'post', + data: query, + }) +} + +// 鏈嶅姟鍜屼緵搴斿搧閲囪喘 +export function selectSupplierManagementAll(query) { + return request({ + url: '/supplierManagement/selectSupplierManagementAll', + method: 'get', + params: query + }) +} + +export function addProcurementSuppliesExpends(query) { + return request({ + url: '/procurementSuppliesExpends/addProcurementSuppliesExpends', + method: 'post', + data: query, + }) +} + +export function deleteProcurementSuppliesExpends(query) { + return request({ + url: '/procurementSuppliesExpends/deleteProcurementSuppliesExpends', + method: 'delete', + params: query + }) +} + +export function procurementSuppliesExpendlist(query) { + return request({ + url: '/procurementSuppliesExpends/procurementSuppliesExpendlist/', + method: 'get', + params: query + }) +} + +export function exportProcurementSuppliesStoreExcel(query) { + return request({ + url: '/procurementSuppliesStore/exportExcel', + method: "get", + responseType: "blob", + params: query, + }) +} + +// 鏂板鑺傜偣 +export function addSuppliersDirectoryContents(query) { + return request({ + url: '/suppliersDirectoryContents/addSuppliersDirectoryContents', + method: 'post', + data: query, + }) +} + +// 缂栬緫鑺傜偣 +export function updateSuppliersDirectoryContents(query) { + return request({ + url: '/suppliersDirectoryContents/updateSuppliersDirectoryContents', + method: 'post', + data: query, + }) +} + +// 鍒犻櫎鑺傜偣 +export function deleteSuppliersDirectoryContentsById(query) { + return request({ + url: '/suppliersDirectoryContents/deleteSuppliersDirectoryContentsById', + method: 'delete', + params: query + }) +} + +// 閲囪喘鐗╄祫鐩綍鍒犻櫎 +export function deleteProcurementSuppliesContentById(query) { + return request({ + url: '/procurementSuppliesContents/deleteProcurementSuppliesContentById', + method: 'delete', + params: query + }) +} + +// 鏌ヨ鎵�鏈夎妭鐐� +export function getSuppliersDirectoryContentsNodeNames(query) { + return request({ + url: '/suppliersDirectoryContents/getSuppliersDirectoryContentsNodeNames', + method: 'get', + params: query + }) +} + +// 閲囪喘鐗╄祫鐩綍鑾峰彇鑺傜偣鍚嶇О +export function getProcurementSuppliesContentsNodeNames(query) { + return request({ + url: '/procurementSuppliesContents/getNodeNames', + method: 'get', + params: query + }) +} + +//鑾峰彇鐢ㄦ埛鍒楄〃 +export function selectUserCondition(query) { + return request({ + url: "/system/newUser/selectUserCondition", + method: "get", + params: query, + }); +} + +// 閲囪喘鐗╄祫鐩綍璇︽儏 +export function selectProcurementSuppliesContentById(query) { + return request({ + url: "/procurementSuppliesContents/selectProcurementSuppliesContentById", + method: "get", + params: query, + }); +} + +// 閲囪喘鐗╄祫鐩綍鍒楄〃 +export function directoryListing(query) { + return request({ + url: "/procurementSuppliesContents/directoryListing", + method: "get", + params: query, + }); +} + +// 鑰楁潗鍏ュ簱淇敼 +export function updateStore(query) { + return request({ + url: '/procurementSuppliesStore/updateStore', + method: 'post', + data: query, + }) +} + +// 鑰楁潗鍏ュ簱鏂板 +export function addStore(query) { + return request({ + url: '/procurementSuppliesStore/addStore', + method: 'post', + data: query, + }) +} + +// 鏍规嵁id鏌ヨ鑰楁潗鍏ュ簱 +export function selectStoreById(query) { + return request({ + url: "/procurementSuppliesStore/selectStoreById", + method: "get", + params: query, + }); +} + +// 鑰楁潗鍏ュ簱鍒楄〃 +export function storeList(query) { + return request({ + url: "/procurementSuppliesStore/storeList", + method: "get", + params: query, + }); +} + +// 鑰楁潗鍏ュ簱鍒犻櫎 +export function deleteStore(query) { + return request({ + url: '/procurementSuppliesStore/deleteStore', + method: 'delete', + params: query + }) +} + +// 閲囪喘鐗╄祫鐩綍鏂板 +export function addProcurementSuppliesContents(query) { + return request({ + url: '/procurementSuppliesContents/addProcurementSuppliesContents', + method: 'post', + data: query, + }) +} + + diff --git a/src/api/cnas/process/sampleDisposal.js b/src/api/cnas/process/sampleDisposal.js index 9eef314..a763edd 100644 --- a/src/api/cnas/process/sampleDisposal.js +++ b/src/api/cnas/process/sampleDisposal.js @@ -63,3 +63,12 @@ params: query, }); } + +//鏌ョ湅鍘嗗彶 +export function pageProcessTotaldeal(query) { + return request({ + url: "/processTotaldeal/pageProcessTotaldeal", + method: "get", + params: query, + }); +} diff --git a/src/api/cnas/systemManagement/documentControl.js b/src/api/cnas/systemManagement/documentControl.js index 3fc97b7..9a322b4 100644 --- a/src/api/cnas/systemManagement/documentControl.js +++ b/src/api/cnas/systemManagement/documentControl.js @@ -120,7 +120,7 @@ return request({ url: "/manageDocumentIssueRecycle/addManageDocumentIssueRecycle", method: "post", - responseType: "blob", + headers: { "Content-Type": "application/x-www-form-urlencoded" }, data: data, }); } diff --git a/src/components/UpPdfStamp/index.vue b/src/components/UpPdfStamp/index.vue index e348eab..9b8fe8c 100644 --- a/src/components/UpPdfStamp/index.vue +++ b/src/components/UpPdfStamp/index.vue @@ -12,6 +12,7 @@ <script> import jsPDF from "jspdf"; +import file from '@/utils/file.js' export default { props: ['isUpFile'], data() { @@ -142,8 +143,7 @@ } const pdf = new jsPDF("p", "mm", "a4"); for (let i = 0; i < this.contextList.length; i++) { - console.log(2222, this.contextList.length, this.$refs.pdfCanvas[i]) - const imgData = this.$refs.pdfCanvas[i].toDataURL('image/jpeg', 1.0); + const imgData = this.$refs.pdfCanvas[i].toDataURL('image/jpeg', 0.7); const pdfWidth = pdf.internal.pageSize.getWidth(); const pdfHeight = (this.$refs.pdfCanvas[i].height * pdfWidth) / this.$refs.pdfCanvas[i].width; pdf.addImage(imgData, "JPEG", 0, 0, pdfWidth, pdfHeight); // 灏嗗浘鐗囨坊鍔犲埌 PDF diff --git a/src/utils/file.js b/src/utils/file.js index c3a3e7b..9c7e99e 100644 --- a/src/utils/file.js +++ b/src/utils/file.js @@ -1,48 +1,55 @@ -import { convertToHtml } from 'mammoth'; -import Vue from 'vue' +import { convertToHtml } from "mammoth"; +import pako from "pako"; +import Vue from "vue"; export default { async convertFileToHtml(url) { var xhr = new XMLHttpRequest(); - xhr.open('GET', Vue.prototype.javaApi+url, true);//鑾峰彇鏂囦欢娴佺殑鎺ュ彛 + xhr.open("GET", Vue.prototype.javaApi + url, true); //鑾峰彇鏂囦欢娴佺殑鎺ュ彛 xhr.send(); - xhr.responseType = "blob";//涓嶈兘婕� + xhr.responseType = "blob"; //涓嶈兘婕� let xhrPromise = new Promise((resolve, reject) => { xhr.onload = async function () { if (this.status === 200) { // 杩斿洖鐨勬枃浠舵祦锛岃浆鎹㈡垚blob瀵硅薄 - var blob = new Blob([this.response],{ type:'application/vnd.openxmlformats-officedocument.wordprocessingml.document' }); + var blob = new Blob([this.response], { + type: "application/vnd.openxmlformats-officedocument.wordprocessingml.document", + }); // 浣跨敤mammoth灏哤ord杞崲涓篐TML let reader = new FileReader(); reader.readAsArrayBuffer(blob); let htmlContentPromise = new Promise((resolve, reject) => { reader.onload = async function () { var arrayBuffer = xhr.response; //arrayBuffer - const result = await convertToHtml({ arrayBuffer: arrayBuffer }) - let html = result.value.replace(/飪�/g, '') - .replace('<h1>', '<h1 style="text-align: center;">') - .replace(/<table>/g, '<table style="border-collapse: collapse;border: 1px solid #000;">') - .replace(/<tr>/g, '<tr style="height: 30px;">') - .replace(/<td>/g, '<td style="border: 1px solid #000;">') - .replace(/<p>/g, '<p style="text-indent: 2em;">') - .replace(/<a [^>]*>/g, "") - .replace(/<\/a>/g, "") + const result = await convertToHtml({ arrayBuffer: arrayBuffer }); + let html = result.value + .replace(/飪�/g, "") + .replace("<h1>", '<h1 style="text-align: center;">') + .replace( + /<table>/g, + '<table style="border-collapse: collapse;border: 1px solid #000;">' + ) + .replace(/<tr>/g, '<tr style="height: 30px;">') + .replace(/<td>/g, '<td style="border: 1px solid #000;">') + .replace(/<p>/g, '<p style="text-indent: 2em;">') + .replace(/<a [^>]*>/g, "") + .replace(/<\/a>/g, ""); // .replace(/em/g, "cm"); - resolve(html) + resolve(html); }; - }) - resolve(await htmlContentPromise) + }); + resolve(await htmlContentPromise); } - - } - }) - return await xhrPromise + }; + }); + return await xhrPromise; }, - downloadIamge(imgsrc, name) {//涓嬭浇鍥剧墖鍦板潃鍜屽浘鐗囧悕 + downloadIamge(imgsrc, name) { + //涓嬭浇鍥剧墖鍦板潃鍜屽浘鐗囧悕 var image = new Image(); // 瑙e喅璺ㄥ煙 Canvas 姹℃煋闂 image.setAttribute("crossOrigin", "anonymous"); - image.onload = function() { + image.onload = function () { var canvas = document.createElement("canvas"); canvas.width = image.width; canvas.height = image.height; @@ -57,5 +64,19 @@ a.dispatchEvent(event); // 瑙﹀彂a鐨勫崟鍑讳簨浠� }; image.src = imgsrc; - } + }, + // 鍘嬬缉blob + compressBlob(blob) { + const reader = new FileReader(); + reader.readAsArrayBuffer(blob); + return new Promise((resolve) => { + reader.onload = () => { + const arrayBuffer = reader.result; + const uint8Array = new Uint8Array(arrayBuffer); + const compressedData = pako.deflate(uint8Array); + const compressedBlob = new Blob([compressedData], { type: blob.type }); + resolve(compressedBlob); + }; + }); + }, }; diff --git a/src/views/CNAS/externalService/serviceAndSupplyPro/component/AddProject.vue b/src/views/CNAS/externalService/serviceAndSupplyPro/component/AddProject.vue new file mode 100644 index 0000000..326d5f4 --- /dev/null +++ b/src/views/CNAS/externalService/serviceAndSupplyPro/component/AddProject.vue @@ -0,0 +1,97 @@ +<template> + <el-dialog + :title="dialogTitle" + width="60%" + :visible.sync="dialogVisible" + > + <el-form :model="model" label-width="100px"> + <el-col :span="12"> + <el-form-item label="椤圭洰鍚嶇О"> + <el-select + v-model="model.name" + placeholder="璇烽�夋嫨椤圭洰鍚嶇О" + style="width: 100%" + :disabled="row ? true:false" + @change="handleSelect" + > + <el-option + v-for="(v, i) in consumableOptions" + :label="v.consumablesName" + :value="v" + :key="i" + /> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="娑堣�楁暟閲�"> + <el-input-number v-model="model.amount" :min="0" :step="1" placeholder="璇疯緭鍏ユ秷鑰楁暟閲�"></el-input-number> + </el-form-item> + </el-col> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button @click="dialogVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="sumbit">纭� 瀹�</el-button> + </span> + </el-dialog> +</template> + +<script> + +import { + addProcurementSuppliesExpends, + procurementSuppliesList +} from "@/api/cnas/externalService/serviceAndSupplyPro/serviceAndSupplyPro"; + +export default { + data() { + return { + dialogTitle: "", + dialogVisible: false, + model: { + listId: undefined, + name: "" + }, + consumableOptions: [], + row: undefined + } + }, + created() { + this.fetchConsumableOptions() + }, + methods: { + fetchConsumableOptions() { + procurementSuppliesList().then(res => { + if (res.code === 200) { + this.consumableOptions = res.data.records + } + }) + }, + openDialog(row) { + if(row) { + console.log(row, 'true') + this.dialogTitle = `${row.consumablesName}娣诲姞娑堣�楅」` + this.row = row + this.model.listId = row.id + this.model.name = row.consumablesName + } else { + this.dialogTitle = '娣诲姞娑堣�楅」' + } + this.dialogVisible = true + }, + handleSelect(item) { + console.log(item) + this.model.listId = item.id + this.model.name = item.consumablesName + }, + sumbit() { + addProcurementSuppliesExpends(this.model).then(res => { + if (res.code === 200) { + this.dialogVisible = false + this.$emit('submit') + } + }) + } + } + } +</script> diff --git a/src/views/CNAS/externalService/serviceAndSupplyPro/component/ConsumableList.vue b/src/views/CNAS/externalService/serviceAndSupplyPro/component/ConsumableList.vue new file mode 100644 index 0000000..189ccd3 --- /dev/null +++ b/src/views/CNAS/externalService/serviceAndSupplyPro/component/ConsumableList.vue @@ -0,0 +1,240 @@ +<template> + <div> + <TableCard :showTitle="false"> + <template slot="form"> + <div class="action-box"> + <div></div> + <div class="flex"> + <el-button icon="el-icon-plus" size="small" type="primary" @click="showDialog(undefined)"> + 鏂板缓 + </el-button> + <el-button icon="el-icon-upload2" size="small" @click="exportExcel"> + 瀵煎嚭Excel + </el-button> + </div> + </div> + </template> + <template v-slot:table> + <limsTable + :column="columns" + :currentChange="rowClick" + :height="'25vh'" + :highlightCurrentRow="true" + :isSelection="false" + :rowStyle="tableRowStyle" + :table-data="tableData" + rowKey="id" + style="margin-top: 18px; padding: 0 15px;" + > + <template v-slot:consumablesTypeSlot="{row}"> + {{ findType(row.consumablesType) }} + </template> + <template v-slot:operation="scope"> + <el-button size="small" type="text" @click="showDialog(scope.row)">缂栬緫</el-button> + <el-button size="small" style="color: #f56c6c" type="text" @click="handleDelete(scope.row)">鍒犻櫎</el-button> + </template> + </limsTable> + <div class="pagination"> + <div></div> + <el-pagination + :page-size="pagination.pageSize" + :page-sizes="[10, 20, 30, 40]" + :total="pagination.total" + layout="total, sizes, prev, pager, next, jumper" + @current-change="handleCurrent" + @size-change="handleSize" + > + </el-pagination> + </div> + </template> + </TableCard> + <el-divider></el-divider> + <div> + <ConsumableProject ref="consumableProject"></ConsumableProject> + </div> + <Edit ref="editRef" :contentsId="contentsId" @submit="fetchData"/> + </div> +</template> + +<script> +import TableCard from './index.vue'; +import Edit from "./Edit.vue" +import limsTable from '@/components/Table/lims-table.vue' +import { + deleteProcurementSuppliesList, + procurementSuppliesList, + exportProcurementSuppliesList +} from "@/api/cnas/externalService/serviceAndSupplyPro/serviceAndSupplyPro"; +import ConsumableProject from "./ConsumableProject.vue" + +export default { + dicts: ["consumables_type"], + components: { + TableCard, limsTable,Edit, ConsumableProject + }, + props: { + contentsId: { + type: Number, + required: true, + } + }, + watch: { + contentsId(newVal, oldVal) { + if (newVal !== 0) { + this.fetchData() + } + } + }, + data() { + return { + columns: [ + { + label: "璐у彿", + prop: "itemNumber" + }, + { + label: "绫诲埆", + prop: "consumablesType", + dataType: "slot", + slot: "consumablesTypeSlot" + }, + { + label: "鍚嶇О", + prop: "consumablesName" + }, + { + label: "瑙勬牸", + prop: "specifications" + }, + { + label: "鍙傝�冧緵搴斿晢", + prop: "supplierName" + }, + { + label: "搴撳瓨涓嬮檺", + prop: "lowerLimit" + }, + { + label: "褰撳墠搴撳瓨", + prop: "currentAmount" + }, + { + label: "璁¢噺鍗曚綅", + prop: "unit" + }, + { + label: "澶囨敞", + prop: "remark" + }, + { + label: "璐熻矗浜�", + prop: "personInChargeName" + }, + { + label: "鏈�杩戞洿鏂颁汉", + prop: "updateUserName" + }, + { + label: "鏈�杩戞洿鏂版棩鏈�", + prop: "updateTime" + }, + { + fixed: 'right', + label: "鎿嶄綔", + width: 120, + dataType: "slot", + slot: "operation" + } + ], + tableData: [], + pagination: { + current: 1, + pageSize: 20, + total: 0 + }, + options: [], + } + }, + mounted() { + this.fetchData() + this.options = this.dict.type.consumables_type; + }, + methods: { + async fetchData() { + procurementSuppliesList({ contentId: this.contentsId}).then(res => { + if (res.code === 200) { + this.tableData = res.data.records + if (this.tableData.length > 0) { + this.rowClick(this.tableData[0]) + } + } + }) + }, + findType(val) { + this.$nextTick() + let res + const e = this.options.find(item => item.value == val) + if(e) { + res = e.label + } else { + res = '-' + } + return res + }, + showDialog(row) { + this.$refs.editRef.openDialog(row); + }, + async exportExcel() { + exportProcurementSuppliesList({parentId:this.contentsId}).then(res => { + const blob = new Blob([res], {type: 'application/octet-stream'}); + this.$download.saveAs(blob, '鑰楁潗鍒楄〃.xlsx') + this.$message.success('瀵煎嚭鎴愬姛') + }) + }, + handleCurrent() { + }, + handleSize() { + }, + handleDelete(row) { + deleteProcurementSuppliesList({ id:row.id }).then(res => { + if (res.code === 200) { + this.$message.success('鍒犻櫎鎴愬姛') + this.fetchData() + } + }) + }, + rowClick(row) { + this.$refs.consumableProject.fetchListId(row) + }, + tableRowStyle({row}) { + if(row.currentAmount <= row.lowerLimit) { + return { background: '#ffcaca' } + } else { + return {} + } + } + } +} +</script> + + +<style scoped> +.flex { + display: flex; +} + +.action-box { + width: 100%; + padding-top: 10px; + display: flex; + align-items: center; + justify-content: space-between; +} + +.pagination { + padding-top: 15px; + padding-right: 10px; + display: flex; + justify-content: space-between +} +</style> diff --git a/src/views/CNAS/externalService/serviceAndSupplyPro/component/ConsumableOverview.vue b/src/views/CNAS/externalService/serviceAndSupplyPro/component/ConsumableOverview.vue index 6c465f3..6ac65b9 100644 --- a/src/views/CNAS/externalService/serviceAndSupplyPro/component/ConsumableOverview.vue +++ b/src/views/CNAS/externalService/serviceAndSupplyPro/component/ConsumableOverview.vue @@ -29,7 +29,6 @@ import TableCard from './index.vue'; import { procurementSuppliesList } from "@/api/cnas/externalService/serviceAndSupplyPro/serviceAndSupplyPro" import limsTable from '@/components/Table/lims-table.vue' -import axios from "axios"; export default { components: { CardPanel, TableCard, limsTable }, diff --git a/src/views/CNAS/externalService/serviceAndSupplyPro/component/ConsumableProject.vue b/src/views/CNAS/externalService/serviceAndSupplyPro/component/ConsumableProject.vue new file mode 100644 index 0000000..1f2ed15 --- /dev/null +++ b/src/views/CNAS/externalService/serviceAndSupplyPro/component/ConsumableProject.vue @@ -0,0 +1,164 @@ +<template> + <div> + <TableCard :showTitle="false"> + <template slot="form"> + <div class="action-box"> + <div></div> + <div class="flex"> + <el-button icon="el-icon-plus" size="small" type="primary" @click="showDialog"> + 娣诲姞椤圭洰 + </el-button> + <el-button icon="el-icon-upload2" size="small" @click="exportExcel"> + 瀵煎嚭 + </el-button> + </div> + </div> + </template> + <template v-slot:table> + <limsTable + :column="columns" + :height="'25vh'" + :isSelection="true" + :table-data="tableData" + style="margin-top: 18px; padding: 0 15px;" + > + <template v-slot:operation="scope"> + <el-button size="small" type="text" @click="deleteData(scope.row)">鍒犻櫎</el-button> + </template> + </limsTable> + <div class="pagination"> + <div></div> + <el-pagination + :page-size="pagination.pageSize" + :page-sizes="[10, 20, 30, 40]" + :total="pagination.total" + layout="total, sizes, prev, pager, next, jumper" + @current-change="handleCurrent" + @size-change="handleSize" + > + </el-pagination> + </div> + </template> + </TableCard> + <AddProject ref="AddProjectRef" @submit="fetchData"/> + </div> +</template> + +<script> +import TableCard from './index.vue'; +import limsTable from '@/components/Table/lims-table.vue' +import Edit from "./Edit.vue" +import AddProject from './AddProject.vue'; +import { + deleteProcurementSuppliesExpends, + procurementSuppliesExpendlist +} from "@/api/cnas/externalService/serviceAndSupplyPro/serviceAndSupplyPro"; + +export default { + components: { + TableCard, limsTable, Edit, AddProject + }, + data() { + return { + columns: [ + // { + // label: "缂栧彿" + // }, + { + label: "椤圭洰鍚嶇О", + prop: "listName" + }, + { + label: "娑堣�楁暟閲�", + prop: "amount" + }, + { + label: "褰曞叆浜�", + prop: "enterUserName" + }, + { + label: "鏈�杩戞洿鏂颁汉", + prop: "updateUserName" + }, + { + label: "鏈�杩戞洿鏂版棩鏈�", + prop: "updateTime" + }, + { + label: "鎿嶄綔", + dataType: "slot", + slot: "operation" + } + ], + tableData: [], + pagination: { + current: 1, + pageSize: 20, + total: 0 + }, + listId: 0, + row: undefined + } + }, + mounted() { + this.fetchData() + }, + methods: { + fetchListId(row) { + if(row) { + this.listId = row.id + this.row = row + } + this.fetchData() + }, + async fetchData() { + if (this.listId === 0) return + procurementSuppliesExpendlist({ + procurementSuppliesListId:this.listId + }).then(res => { + if (res.code === 200) { + this.tableData = res.data + } + }) + }, + showDialog() { + this.$refs.AddProjectRef.openDialog(this.row); + }, + deleteData(row) { + deleteProcurementSuppliesExpends({ expendId:row.expendId}).then(res => { + if (res.code === 200) { + this.$message.success('鍒犻櫎鎴愬姛') + this.fetchData() + } + }) + }, + handleCurrent() { + }, + handleSize() { + }, + exportExcel() { + } + } +} +</script> + +<style scoped> +.flex { + display: flex; +} + +.action-box { + width: 100%; + padding-top: 10px; + display: flex; + align-items: center; + justify-content: space-between; +} + +.pagination { + padding-top: 15px; + padding-right: 10px; + display: flex; + justify-content: space-between +} +</style> diff --git a/src/views/CNAS/externalService/serviceAndSupplyPro/component/Edit.vue b/src/views/CNAS/externalService/serviceAndSupplyPro/component/Edit.vue new file mode 100644 index 0000000..5e7f431 --- /dev/null +++ b/src/views/CNAS/externalService/serviceAndSupplyPro/component/Edit.vue @@ -0,0 +1,252 @@ +<template> + <el-dialog + :visible.sync="dialogVisible" + title="娣诲姞鑰楁潗椤圭洰淇℃伅" + width="70%" + > + <el-form ref="modelForm" :model="model" :rules="rules" label-width="100px"> + <el-col :span="12"> + <el-form-item label="鑰楁潗绫诲瀷" prop="consumablesType"> + <el-select v-model="model.consumablesType" placeholder="璇烽�夋嫨鑰楁潗绫诲瀷" size="small" style="width: 100%"> + <el-option v-for="(v, i) in dict.type.consumables_type" :key="i" :label="v.label" :value="v.value"></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="璐у彿"> + <el-input v-model="model.itemNumber" placeholder="璇疯緭鍏ヨ揣鍙�" size="small"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鑰楁潗鍚嶇О"> + <el-input v-model="model.consumablesName" placeholder="璇疯緭鍏ヨ�楁潗鍚嶇О" size="small"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="瑙勬牸"> + <el-input v-model="model.specifications" placeholder="璇疯緭鍏ヨ鏍�" size="small"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="璁¢噺鍗曚綅"> + <el-input v-model="model.unit" placeholder="璇疯緭鍏ヨ閲忓崟浣�" size="small"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鍙傝�冧环鏍�"> + <el-input-number v-model="model.referencePrice" :min="0" :precision="2" :step="0.01" placeholder="璇疯緭鍏ュ弬鑰冧环鏍�" + size="small"></el-input-number> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="瀛樻斁浣嶇疆"> + <el-select v-model="model.contentId" placeholder="璇烽�夋嫨瀛樻斁浣嶇疆" size="small" style="width: 100%"> + <el-option v-for="(v, i) in procurementSuppliesContentOptions" :key="i" :label="v.nodeName" + :value="v.id"></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="璐熻矗浜�"> + <el-select v-model="model.personInCharge" placeholder="璇烽�夋嫨璐熻矗浜�" size="small" style="width: 100%"> + <el-option v-for="(v, i) in userOptions" :key="i" :label="v.name" :value="v.id"></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="搴撳瓨涓婇檺"> + <el-input-number v-model="model.upperLimit" :min="0" :step="1" placeholder="璇疯緭鍏ュ簱瀛樹笂闄�" size="small"></el-input-number> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="搴撳瓨涓嬮檺"> + <el-input-number v-model="model.lowerLimit" :min="0" :step="1" placeholder="璇疯緭鍏ュ簱瀛樹笅闄�" size="small"></el-input-number> + </el-form-item> + </el-col> + <el-col :span="24"> + <el-form-item label="渚涘簲鍟�"> + <el-select v-model="model.supplier" placeholder="璇烽�夋嫨渚涘簲鍟�" size="small" style="width: 100%"> + <el-option v-for="(v, i) in supplierOptions" :key="i" :label="v.supplierName" + :value="v.supplierManagementId"></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="24"> + <el-form-item label="鑰楁潗鍥炬爣"> + <div class="rows"> + <el-input v-model="model.consumablesIcon" placeholder="璇疯緭鍏ヨ�楁潗鍥炬爣" size="small" style="width: 90%;"/> + <el-upload + ref="upload" + :action="action" + :headers="uploadHeader" + :on-success="onSuccessIcon" + :show-file-list="false" + style="float: left; margin: 0 12px 0 20px;" + > + <el-button slot="trigger" class="uploadFile" size="small" type="primary">娴忚</el-button> + </el-upload> + </div> + </el-form-item> + </el-col> + <el-col :span="24"> + <el-form-item label="鑰楁潗闄勪欢"> + <div class="rows"> + <el-input v-model="model.attachment" placeholder="璇疯緭鍏ヨ�楁潗闄勪欢" size="small" style="width: 90%;"/> + <el-upload + ref="upload" + :action="action" + :on-success="onSuccessFile" + :show-file-list="false" + :headers="uploadHeader" + style="float: left; margin: 0 12px 0 20px;" + > + <el-button slot="trigger" class="uploadFile" size="small" type="primary">娴忚</el-button> + </el-upload> + </div> + </el-form-item> + </el-col> + <el-col :span="24"> + <el-form-item label="澶囨敞"> + <el-input + v-model="model.remark" + :rows="2" + placeholder="璇疯緭鍏ュ娉�" + size="small" + type="textarea" + > + </el-input> + </el-form-item> + </el-col> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button @click="resetForm">鍙� 娑�</el-button> + <el-button type="primary" @click="submit">淇� 瀛�</el-button> + </span> + </el-dialog> +</template> + +<script> +import { + addProcurementSuppliesList, + updateProcurementSuppliesList, + selectSupplierManagementAll, + getProcurementSuppliesContentsNodeNames, + selectUserCondition +} from '@/api/cnas/externalService/serviceAndSupplyPro/serviceAndSupplyPro' +export default { + data() { + return { + dialogVisible: false, + model: { + consumablesType: undefined, + consumablesIcon: undefined, + attachment: undefined, + }, + procurementSuppliesContentOptions: [], + userOptions: [], + supplierOptions: [], + rules: { + consumablesType: [{ required: true, message: '璇烽�夋嫨鑰楁潗绫诲瀷', trigger: 'blur' }], + }, + } + }, + dicts: ["consumables_type"], + props: { + contentsId: { + type: Number, + required: true, + } + }, + computed: { + action() { + return this.javaApi + '/personBasicInfo/saveCNASFile' + } + }, + mounted() { + this.findProcurementSuppliesContentOptions() + this.findUserOptions() + this.findSupplierOptions() + }, + methods: { + // 閲嶇疆琛ㄥ崟 + resetForm() { + this.$refs.modelForm.resetFields(); + this.dialogVisible = false + }, + openDialog(row) { + if (row) { + console.log("row", row) + this.model = row + } else { + this.model = {} + } + this.dialogVisible = true + }, + findProcurementSuppliesContentOptions() { + getProcurementSuppliesContentsNodeNames().then(res => { + if (res.code === 200) { + this.procurementSuppliesContentOptions = res.data + } + }) + }, + findUserOptions() { + selectUserCondition().then(res => { + if (res.code === 200) { + this.userOptions = res.data + } + }) + }, + findSupplierOptions() { + selectSupplierManagementAll().then(res => { + if (res.code === 200) { + this.supplierOptions = res.data + } + }) + }, + async onSuccessIcon(response) { + this.$set(this.model, "consumablesIcon", response.data) + }, + async onSuccessFile(response) { + this.$set(this.model, "attachment", response.data) + }, + submit() { + this.$refs.modelForm.validate((valid) => { + if (valid) { + if (this.model.id) { + updateProcurementSuppliesList(this.model).then(res => { + if (res.code === 200) { + this.dialogVisible = false + } + }) + } else { + addProcurementSuppliesList(this.model).then(res => { + if (res.code === 200) { + this.dialogVisible = false + this.$emit('submit') + } + }) + } + } + }) + } + } +} +</script> + +<style scoped> +>>>.el-dialog { + margin: 6vh auto 50px !important; +} +>>> .el-dialog__body { + max-height: 42em; + overflow-y: auto; +} +.rows { + width: 100%; + display: flex; + justify-content: space-between; +} +>>>.el-form-item__content { + line-height: 39px; +} +</style> diff --git a/src/views/CNAS/externalService/serviceAndSupplyPro/component/Store.vue b/src/views/CNAS/externalService/serviceAndSupplyPro/component/Store.vue new file mode 100644 index 0000000..1951036 --- /dev/null +++ b/src/views/CNAS/externalService/serviceAndSupplyPro/component/Store.vue @@ -0,0 +1,468 @@ +<template> + <div> + <div style=" + display: flex; + justify-content: flex-end; + margin-right: 20px; + margin-bottom: 20px; + "> + <el-button icon="el-icon-plus" size="small" type="primary" @click="addOrUpdateStore('add')">娣诲姞 + </el-button> + <el-button icon="el-icon-download" size="small" @click="importExcel"> + 瀵煎嚭excel + </el-button> + </div> + <div class="table"> + <limsTable + :column="tableColumn" + :height="'calc(100vh - 20em)'" + :table-data="storageTableData" + :table-loading="tableLoading" + style="padding: 0 10px;margin-bottom: 16px" + :page="page" + @pagination="pagination"> + </limsTable> + </div> + + <!-- 缂栬緫-鏂板寮规 --> + <el-dialog :before-close="handleClose" :close-on-click-modal="false" + :close-on-press-escape="false" :title="title" + :visible.sync="dialogVisible" width="70%"> + <!-- 鍏ュ簱鍗� --> + <div> + <div style="display: flex; align-items: center"> + <span style="margin-left: 10px">鍏ュ簱鍗�</span> + </div> + <el-form ref="formModel" :model="form" label-width="auto"> + <el-col :span="12"> + <el-form-item label="鍏ュ簱鍗曞彿"> + <el-input v-model="form.oddNumbers" placeholder="璇疯緭鍏ュ叆搴撳崟鍙�" size="small"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鍏ュ簱搴撳瓨"> + <el-input v-model="form.inventory" placeholder="璇疯緭鍏ュ叆搴撳簱瀛�" size="small"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鍏ュ簱鎬婚噾棰�"> + <el-input v-model="form.totalAmount" placeholder="璇疯緭鍏ュ叆搴撴�婚噾棰�" size="small"></el-input> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鍏ュ簱鏃ユ湡"> + <el-date-picker v-model="form.storageTime" 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="鍏ュ簱浜�"> + <el-select v-model="form.storageUser" size="small" style="width: 100%"> + <el-option v-for="item in users" :key="item.id" :label="item.name" :value="item.id"></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="12"> + <el-form-item label="鍏ュ簱璇存槑"> + <el-input v-model="form.remark" :rows="2" placeholder="璇疯緭鍏ュ唴瀹�" type="textarea"> + </el-input> + </el-form-item> + </el-col> + </el-form> + </div> + <!-- 鍏ュ簱鏄庣粏 --> + <div> + <div>鍏ュ簱鏄庣粏</div> + <div class="input-form"> + <div> + <div> + <span>鑰楁潗鍚嶇О:</span> + <el-select v-model="formTwo.id" filterable placeholder="璇烽�夋嫨鑰楁潗鍚嶇О" size="small" style="width: 70%"> + <el-option v-for="(v, i) in consumableOptions" :key="i" :label="v.consumablesName" + :value="v.id"></el-option> + </el-select> + </div> + </div> + <div> + <div> + <span>鍗曚环:</span> + <el-input v-model="formTwo.unitPrice" placeholder="璇疯緭鍏ュ崟浠�" size="small" style="width: 70%"> + </el-input> + </div> + </div> + <div> + <div> + <span>鍏ュ簱鏁伴噺:</span> + <el-input v-model="formTwo.storeNumber" placeholder="璇疯緭鍏ュ叆搴撴暟閲�" size="small" style="width: 70%"> + </el-input> + </div> + </div> + <div> + <div> + <span>鎬讳环:</span> + <el-input v-model="formTwo.totalPrice" placeholder="璇疯緭鍏ユ�讳环" size="small" style="width: 70%"> + </el-input> + </div> + </div> + <el-button size="mini" type="primary" + @click="addTableData">娣诲姞 + </el-button> + </div> + <el-table :data="consumables" style="margin-top: 10px"> + <el-table-column label="缂栧彿" type="index" width="120px"></el-table-column> + <el-table-column label="璐у彿" prop="itemNumber"></el-table-column> + <el-table-column label="绫诲埆" prop="type"></el-table-column> + <el-table-column label="鍚嶇О" prop="consumablesName"></el-table-column> + <el-table-column label="瑙勬牸" prop="specifications"></el-table-column> + <el-table-column label="鍙傝�冧緵搴斿晢" prop="supplier"></el-table-column> + <el-table-column label="璁¢噺鍗曚綅" prop="unit"></el-table-column> + <el-table-column label="鍗曚环" prop="unitPrice"></el-table-column> + <el-table-column label="鍏ュ簱鏁伴噺" prop="storeNumber"></el-table-column> + <el-table-column label="鎬讳环" prop="totalPrice"></el-table-column> + <el-table-column label="鎿嶄綔" width="80px"> + <template slot-scope="scope"> + <el-button size="mini" style="color: #f56c6c" type="text" @click="deleteTableData(scope.$index)">鍒犻櫎 + </el-button> + </template> + </el-table-column> + </el-table> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="handleClose">鍙� 娑�</el-button> + <el-button type="primary" :loading="saveLoading" @click="save">淇� 瀛�</el-button> + </span> + </el-dialog> + </div> +</template> + +<script> +import { + addStore, + deleteStore, + exportProcurementSuppliesStoreExcel, + procurementSuppliesList, + selectStoreById, + selectUserCondition, + storeList, + updateStore +} from '@/api/cnas/externalService/serviceAndSupplyPro/serviceAndSupplyPro' +import limsTable from '@/components/Table/lims-table.vue' + +export default { + computed: { + title() { + return this.dialogType == "add" ? "鏂板缓鍏ュ簱" : "缂栬緫鍏ュ簱"; + }, + }, + dicts: ["consumables_type"], + props: { + contentsId: { + type: Number, + default: 0 + } + }, + watch: { + + }, + data() { + return { + mutiList: [], + consumables: [], + users: [], + form: { + oddNumbers: null, + inventory: null, + totalAmount: null, + storageTime: null, + storageUser: null, + remark: null, + }, + formTwo: { + consumablesName: null, + unitPrice: null, + storeNumber: null, + totalPrice: null, + }, + dialogVisible: false, + dialogType: "", + upIndex: 0, + tableColumn: [ + { + label: '鍏ュ簱鍗曞彿', + prop: 'oddNumbers', + minWidth: '100' + }, + { + label: '鑰楁潗鍚嶇О', + prop: 'consumablesName', + minWidth: '100' + }, + { + label: '鍏ュ簱鏁伴噺', + prop: 'storeNumber', + minWidth: '100' + }, + { + label: '鍏ュ簱鎬讳环', + prop: 'totalPrice', + minWidth: '100' + }, + { + label: '鍏ュ簱浜�', + prop: 'storageUserName', + minWidth: '100' + }, { + label: '鍏ュ簱鏃ユ湡', + prop: 'storageTime', + minWidth: '100' + }, { + label: '璇存槑', + prop: 'remark', + minWidth: '100' + }, { + label: '鐧昏浜�', + prop: 'registrantName', + minWidth: '160' + },{ + label: '鐧昏鏃ユ湡', + prop: 'registrantTime', + minWidth: '100' + }, + { + dataType: 'action', + fixed: 'right', + minWidth: '120', + label: '鎿嶄綔', + operation: [ + { + name: '缂栬緫', + type: 'text', + clickFun: (row) => { + this.addOrUpdateStore('edit', row); + }, + }, + { + name: '鍒犻櫎', + type: 'text', + color: '#f56c6c', + clickFun: (row) => { + this.deleteStore(row) + }, + } + ] + } + ], + tableLoading: false, + page: { + total: 0, + size: 10, + current: 1 + }, + consumableOptions: [], + options: [], + storageTableData: [], + searchForm: { + orderBy: { + field: "id", + order: "desc", + }, + }, + saveLoading: false, + }; + }, + components: { + limsTable, + }, + mounted() { + this.searchList(); + this.getUserList(); + this.fetchListOptions() + this.options = this.dict.type.consumables_type + }, + methods: { + // 淇濆瓨 + save() { + let data = { + store: this.form, + consumables: this.consumables, + }; + this.saveLoading = true; + if (this.dialogType === "update") { + updateStore(data).then((res) => { + this.saveLoading = false + if (res.code == 200) { + this.$message.success("淇敼鎴愬姛"); + this.handleClose(); + // this.$refs.selectList() + this.searchList() + } + }).catch((err) => { + this.saveLoading = false + }) + } else { + addStore(data).then((res) => { + this.saveLoading = false + if (res.code == 200) { + this.$message.success("鏂板鎴愬姛"); + this.handleClose(); + // this.$refs.selectList() + this.searchList() + } + }).catch((err) => { + this.saveLoading = false + }) + } + }, + findType(val) { + console.log(val) + return this.options.find(item => item.value === val).label + }, + // 娣诲姞琛ㄦ牸鏁版嵁 + addTableData() { + this.$nextTick() + console.log('this.consumableOptions',this.consumableOptions) + this.consumableOptions.forEach(item => { + if (item.id === this.formTwo.id) { + this.consumables.push({ + itemNumber: null, + type: this.findType(item.consumablesType), + consumablesName: item.consumablesName, + specifications: item.specifications, + supplier: item.supplierName, + unit: item.unit, + unitPrice: this.formTwo.unitPrice, + storeNumber: this.formTwo.storeNumber, + totalPrice: this.formTwo.totalPrice, + }); + } + }) + }, + deleteTableData(index) { + this.consumables.splice(index, 1); + }, + // 鎵撳紑寮规 + addOrUpdateStore(type,row) { + if (type === 'edit') { + this.dialogType = "update"; + selectStoreById({id:row.id}).then(res => { + if (res.code === 201) return + this.consumables = res.data.consumables + this.form = {...res.data.store} + }).catch(err => { + console.log('err---', err); + }) + } else { + this.dialogType = "add"; + } + this.dialogVisible = true; + }, + // 鏌ヨ鍒楄〃 + searchList () { + this.tableLoading = true + storeList({...this.page,...this.searchForm}).then(res => { + this.tableLoading = false + if (res.code === 200){ + this.storageTableData = res.data.records + this.page.total = res.data.total + } + }).catch(err => { + console.log('err---', err); + this.tableLoading = false + }) + }, + // 瀵煎嚭excel + async importExcel() { + exportProcurementSuppliesStoreExcel({parentId:this.contentsId}).then(res => { + const blob = new Blob([res], {type: 'application/octet-stream'}); + this.$download.saveAs(blob, '鑰楁潗鍏ュ簱.xlsx') + this.$message.success('瀵煎嚭鎴愬姛') + }) + }, + handleClose() { + this.form = { + oddNumbers: null, + inventory: null, + totalAmount: null, + storageTime: null, + storageUser: null, + remark: null, + }; + this.formTwo = { + consumablesName: null, + unitPrice: null, + storeNumber: null, + totalPrice: null, + }; + this.consumables = []; + this.dialogVisible = false; + }, + viewIssued(row) { + console.log(row); + }, + // 鑾峰彇鎵�鏈夌敤鎴� + getUserList() { + selectUserCondition().then((res) => { + this.users = res.data; + }); + }, + async fetchListOptions() { + procurementSuppliesList({contentsId: this.contentsId}).then(res => { + if (res.code === 200) { + this.consumableOptions = res.data.records + } + }) + + }, + // 鍒犻櫎 + deleteStore (row) { + this.$confirm('姝ゆ搷浣滃皢姘镐箙鍒犻櫎璇ユ暟鎹�, 鏄惁缁х画?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + this.tableLoading = true + console.log('row>>>>>>>>>>>>>>s',row) + deleteStore({ + id:row.id, + consumablesId:row.consumablesId + }).then(res => { + this.tableLoading = false + if (res.code === 200){ + this.$message.success('鍒犻櫎鎴愬姛') + this.searchList() + } + }).catch(err => { + this.tableLoading = false + console.log('err---', err); + }) + }).catch(() => { + this.$message({ + type: 'info', + message: '宸插彇娑堝垹闄�' + }); + }); + }, + + pagination(page) { + this.page.size = page.limit + this.searchList(); + }, + }, +}; +</script> + +<style scoped> +.el-dialog { + margin: 6vh auto 50px !important; +} +.el-dialog__body { + max-height: 42em; + overflow-y: auto; +} +.input-form { + display: flex; + margin: 10px 0; +} +</style> diff --git a/src/views/CNAS/externalService/serviceAndSupplyPro/component/contents.vue b/src/views/CNAS/externalService/serviceAndSupplyPro/component/contents.vue new file mode 100644 index 0000000..2d17786 --- /dev/null +++ b/src/views/CNAS/externalService/serviceAndSupplyPro/component/contents.vue @@ -0,0 +1,312 @@ +<template> + <div class="parent-class"> + <div style="display: flex; justify-content: flex-end; margin-right: 20px"> + <el-button + type="primary" + @click="addContents" + size="small" + icon="el-icon-plus" + >娣诲姞瀛愯妭鐐�</el-button + > + <el-button + type="danger" + @click="deletetContents" + size="small" + icon="el-icon-delete" + >鍒犻櫎瀛愯妭鐐�</el-button + > + <el-button + type="warning" + @click="updateContents" + size="small" + icon="el-icon-edit" + >鏇存柊瀛愯妭鐐�</el-button + > + </div> + <el-form label-width="100px"> + <el-form-item label="鑺傜偣鍚嶇О"> + <el-input + v-model="form.nodeName" + style="width: 200px" + size="small" + ></el-input> + </el-form-item> + <el-form-item label="浠e彿"> + <el-input + v-model="form.code" + style="width: 200px" + size="small" + ></el-input> + </el-form-item> + <el-form-item label="鏇存柊浜�"> + <el-select v-model="form.updateUser"> + <el-option + v-for="item in users" + :key="item.id" + :label="item.name" + :value="item.id" + ></el-option> + </el-select> + </el-form-item> + <el-form-item label="鏇存柊鏃堕棿"> + <el-input + v-model="form.updateTime" + style="width: 200px" + size="small" + ></el-input> + </el-form-item> + </el-form> + + <!-- 鏂板寮规 --> + <el-dialog title="娣诲姞鑺傜偣" :visible.sync="dialogVisible" width="40%"> + <el-form + label-width="100px" + :model="addForm" + ref="addForm" + :rules="rules" + > + <el-form-item label="鐖惰妭鐐瑰悕绉�"> + <!-- <el-select v-model="addForm.parentId"> + <el-option v-for="(item,index) in nodeNames" :key="index" :label="item.nodeName" :value="item.id"></el-option> + </el-select> --> + <el-cascader + v-model="addForm.parentId" + :options="treeData" + :props="{ checkStrictly: true, value: 'id', label: 'nodeName' }" + clearable + ></el-cascader> + </el-form-item> + <el-form-item label="鑺傜偣鍚嶇О" prop="nodeName"> + <el-input + v-model="addForm.nodeName" + style="width: 200px" + size="small" + ></el-input> + </el-form-item> + <el-form-item label="浠e彿"> + <el-input + v-model="addForm.code" + style="width: 200px" + size="small" + ></el-input> + </el-form-item> + </el-form> + + <span slot="footer" class="dialog-footer"> + <el-button @click="dialogVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="submitForm">纭� 瀹�</el-button> + </span> + </el-dialog> + </div> +</template> +<script> + +import { + addSuppliersDirectoryContents, + updateSuppliersDirectoryContents, + deleteSuppliersDirectoryContentsById, + getSuppliersDirectoryContentsNodeNames, + selectUserCondition, + selectProcurementSuppliesContentById, + getProcurementSuppliesContentsNodeNames, + addProcurementSuppliesContents, deleteProcurementSuppliesContentById +} from '@/api/cnas/externalService/serviceAndSupplyPro/serviceAndSupplyPro' +export default { + props: { + id: { + type: Number, + default: 0, + }, + treeData: { + type: Array, + default: () => [], + }, + from: { + type: String, + default: "鑰楁潗鏍�" + } + }, + data() { + return { + nodeNames: [], + users: [], + dialogVisible: false, + form: { + nodeName: "", + code: "", + updateUser: "", + updateTime: "", + }, + addForm: { + nodeName: "", + code: "", + updateUser: "", + updateTime: "", + parentId: null, + }, + rules: { + nodeName: [ + { required: true, message: "璇疯緭鍏ヨ妭鐐瑰悕绉�", trigger: "blur" }, + ], + }, + }; + }, + mounted() { + if (this.id !== 0) { + this.getContentsDetail(); + } + this.getNodeNames(); + this.getUserList(); + }, + watch: { + id(newVal, oldVal) { + if (newVal !== 0) { + console.log(newVal, oldVal); + this.getContentsDetail(); + } + }, + }, + methods: { + // 鑾峰彇鐩綍璇︽儏 + getContentsDetail() { + selectProcurementSuppliesContentById({id:this.id}) + .then((res) => { + if (res.data == null) { + this.form = { + nodeName: "", + code: "", + updateUser: "", + updateTime: "", + }; + return; + } + this.form = res.data; + }); + }, + // 鏂板缓 + addContents() { + this.dialogVisible = true; + this.resetForm(); + }, + resetForm() { + this.addForm = { + nodeName: "", + code: "", + updateUser: "", + updateTime: "", + parentId: null, + }; + }, + async submitForm() { + let flag = true; + this.$refs.addForm.validate((valid) => { + if (!valid) { + flag = false; + return false; + } + }); + if (this.addForm.parentId) { + this.addForm.parentId = + this.addForm.parentId[this.addForm.parentId.length - 1]; + } + if (!flag) { + return; + } + try { + let res = null + console.log('this.from',this.from) + if(this.from == '鑰楁潗鏍�' ){ + console.log('111') + res = await addProcurementSuppliesContents(this.addForm) + }else { + console.log('222') + res = await addSuppliersDirectoryContents(this.addForm) + } + if (res.code === 200) { + this.$message.success("娣诲姞鎴愬姛"); + this.dialogVisible = false; + this.$emit("contentsUpdate", res.data); + this.getContentsDetail(); + } + }catch (error){ + this.$message.error("娣诲姞澶辫触"); + } + }, + // 鏇存柊 + updateContents() { + Object.keys(this.form).forEach((key) => { + if (key == "children") { + delete this.form[key]; + } + }); + updateSuppliersDirectoryContents(this.form).then((res) => { + if (res.code === 200) { + this.$message.success("鏇存柊鎴愬姛"); + this.$emit("contentsUpdate", this.id); + this.dialogVisible = false; + this.getContentsDetail(); + } + }); + }, + // 鍒犻櫎 + deletetContents() { + if ( + this.form.id == null || + this.form.id == "" || + this.form.id == undefined + ) { + this.$message.error("璇烽�夋嫨瑕佸垹闄ょ殑鑺傜偣"); + return; + } + this.$confirm("姝ゆ搷浣滃皢鍒犻櫎璇ヨ妭鐐�, 鏄惁缁х画?", "鎻愮ず", { + confirmButtonText: "纭畾", + cancelButtonText: "鍙栨秷", + type: "warning", + }).then(() => { + if(this.from == '鑰楁潗鏍�'){ + deleteProcurementSuppliesContentById({id:this.form.id}).then((res) => { + if (res.code == 200) { + this.$message.success("鍒犻櫎鎴愬姛"); + this.$emit("contentsUpdate", this.form.parentId, true); + this.getContentsDetail(); + } + }); + }else { + deleteSuppliersDirectoryContentsById({id:this.form.id}).then((res) => { + if (res.code == 200) { + this.$message.success("鍒犻櫎鎴愬姛"); + this.$emit("contentsUpdate", this.form.parentId, true); + this.getContentsDetail(); + } + }); + } + }); + }, + // 鑾峰彇鎵�鏈夌洰褰曡妭鐐� + getNodeNames() { + if(this.from == '鑰楁潗鏍�'){ + getProcurementSuppliesContentsNodeNames().then(res => { + this.nodeNames = res.data; + }) + }else { + getSuppliersDirectoryContentsNodeNames().then(res => { + this.nodeNames = res.data; + }) + } + }, + // 鑾峰彇鎵�鏈夌敤鎴� + getUserList() { + selectUserCondition().then((res) => { + this.users = res.data; + }) + }, + }, + created() {}, +}; +</script> + + <style scoped> +.parent-class { + margin-top: 20px; +} +</style> diff --git a/src/views/CNAS/externalService/serviceAndSupplyPro/index.vue b/src/views/CNAS/externalService/serviceAndSupplyPro/index.vue index 36ec5c0..9efac6d 100644 --- a/src/views/CNAS/externalService/serviceAndSupplyPro/index.vue +++ b/src/views/CNAS/externalService/serviceAndSupplyPro/index.vue @@ -27,30 +27,33 @@ <el-tab-pane label="鑰楁潗鎬昏" name="first" :lazy="true"> <ConsumableOverview v-if="activeName == 'first'" :contentsId="contentsId"></ConsumableOverview> </el-tab-pane> -<!-- <el-tab-pane label="鑰楁潗鍒楄〃" name="second" :lazy="true">--> -<!-- <ConsumableList v-if="activeName == 'second'" :contentsId="contentsId"></ConsumableList>--> -<!-- </el-tab-pane>--> -<!-- <el-tab-pane label="鑰楁潗鍏ュ簱" name="third" :lazy="true">--> -<!-- <Store v-if="activeName == 'third'" :contentsId="contentsId"></Store>--> -<!-- </el-tab-pane>--> -<!-- <el-tab-pane label="鐩綍缁存姢" name="fourth" :lazy="true">--> -<!-- <Contents--> -<!-- v-if="activeName == 'fourth'"--> -<!-- :id="contentsId"--> -<!-- @contentsUpdate="contentsUpdate"--> -<!-- :treeData="treeData"--> -<!-- from="鑰楁潗鏍�"--> -<!-- ></Contents>--> -<!-- </el-tab-pane>--> + <el-tab-pane label="鑰楁潗鍒楄〃" name="second" :lazy="true"> + <ConsumableList v-if="activeName == 'second'" :contentsId="contentsId"></ConsumableList> + </el-tab-pane> + <el-tab-pane label="鑰楁潗鍏ュ簱" name="third" :lazy="true"> + <Store v-if="activeName == 'third'" :contentsId="contentsId"></Store> + </el-tab-pane> + <el-tab-pane label="鐩綍缁存姢" name="fourth" :lazy="true"> + <Contents + v-if="activeName == 'fourth'" + :id="contentsId" + @contentsUpdate="contentsUpdate" + :treeData="treeData" + from="鑰楁潗鏍�" + ></Contents> + </el-tab-pane> </el-tabs> </div> </div> </template> <script> -// import Contents from "@/tabs/do/a6.service-and-supply-purchase/contents.vue"; -// import Store from "@/tabs/do/a6.service-and-supply-purchase/store.vue"; -import ConsumableOverview from "../serviceAndSupplyPro/component/ConsumableOverview.vue"; -// import ConsumableList from "@/tabs/do/a6.service-and-supply-purchase/ConsumableList.vue" +import Contents from "./component/contents.vue"; +import Store from "./component/Store.vue"; +import ConsumableOverview from "./component/ConsumableOverview.vue"; +import ConsumableList from "./component/ConsumableList.vue" +import { + directoryListing +} from '@/api/cnas/externalService/serviceAndSupplyPro/serviceAndSupplyPro' export default { data() { @@ -70,10 +73,10 @@ }; }, components: { - // Contents, - // Store, - ConsumableOverview - // ConsumableList + Contents, + Store, + ConsumableOverview, + ConsumableList }, watch: { contentsId(newVal, oldVal) { @@ -129,9 +132,7 @@ }, // 鏌ヨ鎵�鏈夌洰褰� getTreeData() { - this.$axios - .get(this.$api.procurementSuppliesContents.directoryListing) - .then((res) => { + directoryListing().then((res) => { this.treeData = res.data; }); }, diff --git a/src/views/CNAS/process/sampleDisposal/index.vue b/src/views/CNAS/process/sampleDisposal/index.vue index 705000e..0d12c66 100644 --- a/src/views/CNAS/process/sampleDisposal/index.vue +++ b/src/views/CNAS/process/sampleDisposal/index.vue @@ -1,20 +1,11 @@ <template> <div class="sample-disposal"> - <el-row class="title"> - <el-col :span="20" style="padding-left: 20px;text-align: left;">妫�娴嬫垨鏍″噯鐗╁搧鐨勫缃�</el-col> - <el-col :span="4" style="text-align: right;"> - <!-- <el-button size="medium" type="primary" @click="handleDown" v-loading="outLoading" style="margin-right: 16px;">瀵煎嚭</el-button> --> - </el-col> - </el-row> <el-tabs type="border-card" v-model="activeName" style="height: 100%;" @tab-click="queryParams.totaldealId = ''"> <el-tab-pane label="濉啓" name="濉啓" style="height: 100%;" :key="1"> - <el-button size="small" type="primary" @click="handleAdd0" style="margin-left: 20px;" - v-if="addPower">鏂板</el-button> + <el-button size="small" type="primary" @click="handleAdd0" style="margin-left: 20px;">鏂板</el-button> <div class="table" style="height: calc(100% - 200px)" v-if="activeName == '濉啓'"> <lims-table :tableData="tableData" :column="column" :tableLoading="tableLoading" :height="'calc(100vh - 290px)'" :page="page" @pagination="pagination"></lims-table> - <!-- <ValueTable ref="ValueTable0" :url="$api.processTotaldeal.pageProcessDeal" :componentData="componentData0" - :key="upIndex0" :delUrl="$api.processTotaldeal.delProcessDeal" /> --> </div> </el-tab-pane> <el-tab-pane label="鍘嗗彶璁板綍" name="鍘嗗彶璁板綍" style="height: 100%;" :key="2"> @@ -22,7 +13,7 @@ <div class="search_thing"> <div class="search_label">骞存湀锛�</div> <div class="search_input"> - <el-date-picker v-model="componentData.entity.month" type="month" placeholder="閫夋嫨鏈�" format="yyyy-MM" + <el-date-picker v-model="queryParams0.month" type="month" placeholder="閫夋嫨鏈�" format="yyyy-MM" value-format="yyyy-MM" size="small" @change="refreshTable()"> </el-date-picker> </div> @@ -33,8 +24,8 @@ </div> </div> <div class="table"> - <!-- <ValueTable ref="ValueTable" :url="$api.processTotaldeal.pageProcessTotaldeal" :componentData="componentData" - :key="upIndex" /> --> + <lims-table :tableData="tableData0" :column="column0" :tableLoading="tableLoading" + :height="'calc(100vh - 300px)'" :page="page0" @pagination="pagination0"></lims-table> </div> </el-tab-pane> </el-tabs> @@ -122,6 +113,7 @@ checkProcessTotaldeal, ratifyProcessTotaldeal, delProcessDeal, + pageProcessTotaldeal, } from "@/api/cnas/process/sampleDisposal"; export default { components: { @@ -142,105 +134,6 @@ noCheckLoading: false, checkLoading: false, // 鍘嗗彶鍒楄〃 - componentData: { - entity: { - month: null, - orderBy: { - field: 'id', - order: 'desc' - } - }, - isIndex: true, - showSelect: false, - select: false, - do: [{ - id: 'handleLook', - font: '鏌ョ湅', - type: 'text', - method: 'handleLook', - }, { - id: 'handleDown0', - font: '涓嬭浇', - type: 'text', - method: 'handleDown0', - disabFun: (row, index) => { - return !row.url - } - }, - // { - // id: 'handleAdd', - // font: '濉啓', - // type: 'text', - // method: 'handleAdd', - // disabFun: (row, index) => { - // return row.submitState=='宸叉彁浜�' - // } - // }, - { - id: 'handleSubmit', - font: '鎻愪氦', - type: 'text', - method: 'handleSubmit', - disabFun: (row, index) => { - return !!row.submitState && row.submitState != '寰呮彁浜�' - } - }, { - id: 'handleCheck', - font: '瀹℃牳', - type: 'text', - method: 'handleCheck', - disabFun: (row, index) => { - return row.examineState == '閫氳繃' || row.submitState == '寰呮彁浜�' - } - }, { - id: 'handleApproval', - font: '鎵瑰噯', - type: 'text', - method: 'handleApproval', - disabFun: (row, index) => { - return row.ratifyState == '閫氳繃' || row.submitState == '寰呮彁浜�' - } - }], - tagField: {}, - selectField: {}, - requiredAdd: [], - requiredUp: [], - needSort: [], - inputType: '' - }, - // 鏍峰搧鍒楄〃 - componentData0: { - entity: { - totaldealId: null, - orderBy: { - field: 'id', - order: 'desc' - } - }, - isIndex: true, - showSelect: false, - select: false, - do: [{ - id: 'handleAdd0', - font: '淇敼', - type: 'text', - method: 'handleAdd0' - }, { - id: 'delete', - font: '鍒犻櫎', - type: 'text', - method: 'doDiy' - }], - tagField: {}, - selectField: {}, - requiredAdd: [], - requiredUp: [], - needSort: [], - inputType: '' - }, - upIndex0: 100, - entityCopy: {}, - upIndex: 0, addInfo: {},//鏂板鏍峰搧 customPageList: [], currentInfo: { @@ -285,12 +178,81 @@ current: 0, }, tableLoading: false, + queryParams0: {}, + tableData0: [], + column0: [ + { label: "鏈堜唤", prop: "month" }, + { label: "鎬绘暟閲�", prop: "totalNum" }, + { label: "鎻愪氦浜�", prop: "submitUserName" }, + { label: "瀹℃牳浜�", prop: "examineUserName" }, + { label: "鎵瑰噯浜�", prop: "ratifyUserName" }, + { + dataType: "action", + fixed: "right", + label: "鎿嶄綔", + operation: [ + { + name: "鏌ョ湅", + type: "text", + clickFun: (row) => { + this.handleLook(row); + }, + }, + { + name: "涓嬭浇", + type: "text", + clickFun: (row) => { + this.handleDown0(row); + }, + disabled: (row) => { + return !row.url + } + }, + { + name: "鎻愪氦", + type: "text", + clickFun: (row) => { + this.handleSubmit(row); + }, + disabled: (row) => { + return !!row.submitState && row.submitState != '寰呮彁浜�' + } + }, + { + name: "瀹℃牳", + type: "text", + clickFun: (row) => { + this.handleCheck(row); + }, + disabled: (row) => { + return row.examineState == '閫氳繃' || row.submitState == '寰呮彁浜�' + } + }, + { + name: "鎵瑰噯", + type: "text", + clickFun: (row) => { + this.handleApproval(row); + }, + disabled: (row) => { + return row.ratifyState == '閫氳繃' || row.submitState == '寰呮彁浜�' + } + }, + ], + }, + ], + page0: { + total: 0, + size: 10, + current: 0, + }, }; }, mounted() { // this.entityCopy = this.HaveJson(this.componentData.entity); this.getCustomPageList() - // this.getPower() + this.getList() + this.getList0() }, methods: { getPower() { @@ -364,13 +326,34 @@ this.getList(); }, refresh() { - this.queryParams = {}; - this.page.current = 1; - this.getList(); + this.queryParams0 = {}; + this.page0.current = 1; + this.getList0(); }, refreshTable() { - this.page.current = 1; - this.getList(); + this.page0.current = 1; + this.getList0(); + }, + getList0() { + this.tableLoading = true; + let param = { ...this.queryParams0, ...this.page }; + delete param.total; + pageProcessTotaldeal({ ...param }) + .then((res) => { + this.tableLoading = false; + if (res.code === 200) { + this.tableData0 = res.data.records; + this.page0.total = res.data.total; + } + }) + .catch((err) => { + this.tableLoading = false; + }); + }, + pagination0({ page, limit }) { + this.page0.current = page; + this.page0.size = limit; + this.getList0(); }, // 濉啓 // handleAdd(row){ @@ -404,7 +387,8 @@ type: 'success', message: '缂栬緫鎴愬姛!' }); - this.$refs.ValueTable0.selectList() + this.page.current = 0; + this.getList(); }).catch(err => { }); } else { // 鏂板 @@ -420,7 +404,8 @@ type: 'success', message: '鏂板鎴愬姛!' }); - this.$refs.ValueTable0.selectList() + this.page.current = 0; + this.getList(); }).catch(err => { }); } }, @@ -439,7 +424,7 @@ type: 'success', message: '鎻愪氦鎴愬姛!' }); - this.$refs['ValueTable'].selectList() + this.refreshTable() }).catch(err => { }); }) }, @@ -451,7 +436,8 @@ this.activeName = '濉啓' this.queryParams.totaldealId = row.id this.$nextTick(() => { - this.$refs['ValueTable0'].selectList() + this.page.current = 0; + this.getList(); }) }, commonFun(row, callbanck) { @@ -461,8 +447,8 @@ current: -1, size: -1, ...this.queryParams }).then(res => { - this.currentInfo.arr = res.data.body.records this.lookDialogVisible = true + this.currentInfo.arr = res.data.records if (callbanck) { callbanck() } @@ -497,7 +483,7 @@ type: 'success', message: '鎿嶄綔鎴愬姛!' }); - this.$refs['ValueTable'].selectList() + this.refreshTable() this.lookDialogVisible = false }).catch(err => { }); } else if (this.title0 == '鎵瑰噯') { @@ -512,7 +498,7 @@ type: 'success', message: '鎿嶄綔鎴愬姛!' }); - this.$refs['ValueTable'].selectList() + this.refreshTable() this.lookDialogVisible = false }).catch(err => { }); } @@ -574,7 +560,6 @@ .table { background-color: #fff; - width: calc(100% - 40px); height: calc(100% - 60px - 140px); padding: 20px; } @@ -586,7 +571,6 @@ .tables { table-layout: fixed; width: 100%; - margin-top: 10px; } .tables td { diff --git a/src/views/CNAS/systemManagement/correctiveAction/index.vue b/src/views/CNAS/systemManagement/correctiveAction/index.vue index 6e92fbd..bb41fae 100644 --- a/src/views/CNAS/systemManagement/correctiveAction/index.vue +++ b/src/views/CNAS/systemManagement/correctiveAction/index.vue @@ -109,8 +109,8 @@ page: { size: 20, current: 1, + total: 0, }, - total: 0, correctiveInfo: false, viewTestRecordDialog: false, }; @@ -131,7 +131,7 @@ this.tableLoading = false if (res.code === 201) return this.tableData = res.data.records - this.total = res.data.total + this.page.total = res.data.total }).catch(err => { console.log('err---', err); this.tableLoading = false diff --git a/src/views/CNAS/systemManagement/documentControl/components/ControlledFileApplication.vue b/src/views/CNAS/systemManagement/documentControl/components/ControlledFileApplication.vue index 81b5f6a..1a25201 100644 --- a/src/views/CNAS/systemManagement/documentControl/components/ControlledFileApplication.vue +++ b/src/views/CNAS/systemManagement/documentControl/components/ControlledFileApplication.vue @@ -470,18 +470,25 @@ formData.append('state', this.type); // 鏂囦欢鍚嶅瓧娈� formData.append('writer', this.currentInfo.writer); // 鏂囦欢鍚嶅瓧娈� - let res = await checkManageDocumentControlled(formData) - this.checkLoading = false - this.noCheckLoading = false - if (res.code == 200) { - this.$message({ message: '鎿嶄綔鎴愬姛', type: 'success' }); - this.checkDialogVisible = false; - this.refreshTable() - return true - } else { - this.$message({ message: '鎿嶄綔澶辫触', type: 'error' }); - return false + try { + let res = await checkManageDocumentControlled(formData) + this.checkLoading = false + this.noCheckLoading = false + if (res.code == 200) { + this.$message({ message: '鎿嶄綔鎴愬姛', type: 'success' }); + this.checkDialogVisible = false; + this.refreshTable() + return true + } else { + this.$message({ message: '鎿嶄綔澶辫触', type: 'error' }); + return false + } + } catch (e) { + this.checkLoading = false + this.noCheckLoading = false } + + }, handleCheckSub(type) { this.type = type diff --git a/src/views/CNAS/systemManagement/documentControl/components/FileList.vue b/src/views/CNAS/systemManagement/documentControl/components/FileList.vue index 7a88db6..765c0d3 100644 --- a/src/views/CNAS/systemManagement/documentControl/components/FileList.vue +++ b/src/views/CNAS/systemManagement/documentControl/components/FileList.vue @@ -334,17 +334,22 @@ formData.append('file', pdfBlob, fileName); // 鏂囦欢瀛楁 formData.append('id', this.currentInfo.id); // 鏂囦欢鍚嶅瓧娈� - let res = await uploadFileManageDocumentList(formData) - this.addLoading = false - if (res.code == 200) { - this.$message({ message: '涓婁紶鎴愬姛', type: 'success' }); - this.addDialogVisible = false; - this.refreshTable() - return true - } else { - this.$message({ message: '涓婁紶澶辫触', type: 'error' }); - return false + try { + let res = await uploadFileManageDocumentList(formData) + this.addLoading = false + if (res.code == 200) { + this.$message({ message: '涓婁紶鎴愬姛', type: 'success' }); + this.addDialogVisible = false; + this.refreshTable() + return true + } else { + this.$message({ message: '涓婁紶澶辫触', type: 'error' }); + return false + } + } catch (e) { + this.addLoading = false } + }, handleDelete(row) { this.$confirm("鏄惁鍒犻櫎璇ユ潯鏁版嵁?", "鎻愮ず", { diff --git a/src/views/CNAS/systemManagement/measuresDealRisks/components/hazardIdentificationRiskAssessment.vue b/src/views/CNAS/systemManagement/measuresDealRisks/components/hazardIdentificationRiskAssessment.vue index 07629ec..b0c63c5 100644 --- a/src/views/CNAS/systemManagement/measuresDealRisks/components/hazardIdentificationRiskAssessment.vue +++ b/src/views/CNAS/systemManagement/measuresDealRisks/components/hazardIdentificationRiskAssessment.vue @@ -13,7 +13,7 @@ <el-button size="small" @click="openDownloadDia">瀵煎嚭</el-button> </div> </div> - <el-table :data="tableData" style="width: 100%" height="calc(100vh - 18em)"> + <el-table :data="tableData" style="width: 100%" height="calc(100vh - 18em)" key="table1"> <el-table-column type="index" label="搴忓彿" width="120"> <template v-slot="scope"> <span>{{ (page.current - 1) * page.size + scope.$index + 1 }}</span> @@ -142,7 +142,7 @@ page: { total: 0, size: 10, - current: 0, + current: 1, }, tableData: [], loading: false diff --git a/src/views/CNAS/systemManagement/measuresDealRisks/components/listRiskAnalysisControlPlans.vue b/src/views/CNAS/systemManagement/measuresDealRisks/components/listRiskAnalysisControlPlans.vue index 33adb1f..ca6e916 100644 --- a/src/views/CNAS/systemManagement/measuresDealRisks/components/listRiskAnalysisControlPlans.vue +++ b/src/views/CNAS/systemManagement/measuresDealRisks/components/listRiskAnalysisControlPlans.vue @@ -13,7 +13,7 @@ <el-button size="small" @click="openDownloadDia">瀵煎嚭</el-button> </div> </div> - <el-table :data="tableData" style="width: 100%" height="calc(100vh - 18em)"> + <el-table :data="tableData" style="width: 100%" height="calc(100vh - 18em)" key="table0"> <el-table-column type="index" label="搴忓彿" width="120"> <template v-slot="scope"> <span>{{ (search.current - 1) * search.size + scope.$index + 1 }}</span> diff --git a/src/views/business/inspectionTask/index.vue b/src/views/business/inspectionTask/index.vue index 600e362..e10d812 100644 --- a/src/views/business/inspectionTask/index.vue +++ b/src/views/business/inspectionTask/index.vue @@ -518,10 +518,18 @@ prop: "insResult", dataType: "tag", formatData: (params) => { - return this.insResultList.find((m) => m.value == params).label; + let obj = this.insResultList.find((m) => m.value == params) + if (obj) { + return this.insResultList.find((m) => m.value == params).label; + } else { + return '' + } }, formatType: (params) => { - return this.insResultList.find((m) => m.value == params).type; + let obj = this.insResultList.find((m) => m.value == params) + if (obj) { + return this.insResultList.find((m) => m.value == params).type; + } }, }, { diff --git a/src/views/performance/class/index.vue b/src/views/performance/class/index.vue index d5a7a4a..31ac64c 100644 --- a/src/views/performance/class/index.vue +++ b/src/views/performance/class/index.vue @@ -808,7 +808,7 @@ } }, getUsers() { - selectUserCondition().then((res) => { + selectUserCondition({ type: 1 }).then((res) => { if (res.code === 201) { return; } -- Gitblit v1.9.3