From 77a041c5e9a31ad96fce404f06fe0c03f4031b1d Mon Sep 17 00:00:00 2001 From: Fixiaobai <fixiaobai@163.com> Date: 星期一, 28 八月 2023 09:19:13 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.110.209:9001/r/lims-before --- src/api/inspection/commisioninspection.js | 2 src/views/experiment/reportAuditing/index.vue | 26 src/views/chart/work/index.vue | 82 src/views/basicData/index.vue | 53 src/views/experiment/inspectionApplication/index.vue | 359 +++-- src/views/standardLibrary/index.vue | 124 + src/api/standardLibrary.js | 18 src/components/experiment/checkTheReport/index.vue | 136 ++ src/layout/components/Navbar.vue | 8 src/views/inspectionManagement/reportForInspection/index.vue | 7 src/api/laboratory/organizational.js | 40 src/views/laboratory/personnel/index.vue | 435 +++++- src/views/inspectionManagement/commissionInspection/addCommision.vue | 1017 ++++++++-------- src/api/util/requestUtil.js | 8 src/api/experiment/checkTheReport.js | 9 src/main.js | 1 src/views/template_testReport/index.vue | 651 ++++++++++ package.json | 1 src/views/laboratory/organizational/index.vue | 216 +++ src/views/experiment/checkTheReport/index.vue | 63 src/views/experiment/inspectionApplication/Viewdetails/index.vue | 177 -- src/api/experiment/planAssignments.js | 42 src/views/inspectionManagement/commissionInspection/index.vue | 123 +- 23 files changed, 2,449 insertions(+), 1,149 deletions(-) diff --git a/package.json b/package.json index 048f7b0..0b19172 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "nprogress": "0.2.0", "path-to-regexp": "2.4.0", "postcss-pxtorem": "^5.1.1", + "print-js": "^1.6.0", "vue": "2.6.10", "vue-clipboard2": "^0.3.3", "vue-router": "3.0.6", diff --git a/src/api/experiment/checkTheReport.js b/src/api/experiment/checkTheReport.js index 940fb8a..7484a0e 100644 --- a/src/api/experiment/checkTheReport.js +++ b/src/api/experiment/checkTheReport.js @@ -7,3 +7,12 @@ params }) } + +//鑾峰彇鎶ュ憡鍐呯殑鏁版嵁 +export function getReportData(params) { + return request({ + url: '/report/getReportContext', + method: 'post', + params + }) +} diff --git a/src/api/experiment/planAssignments.js b/src/api/experiment/planAssignments.js index bd94754..51f20e3 100644 --- a/src/api/experiment/planAssignments.js +++ b/src/api/experiment/planAssignments.js @@ -30,4 +30,44 @@ method: 'post', data }) -} \ No newline at end of file +} +//妫�楠屽崟璇︽儏 +export function selectInspectsListById(params){ + return request({ + url: '/inspection/selectInspectsListById', + method: 'get', + params + }) +} +//閫夋嫨璐d换椤圭洰妫�楠屼汉 +export function selectUser(params){ + return request({ + url: '/inspection/selectUser', + method: 'get', + params + }) +} +// 濮旀墭妫�楠屽垪琛� +export function getCommisionList(params) { + return request({ + url: '/link-basic-table/page', + method: 'get', + params + }) +} +//鍘熸潗鏂欐楠屽垪琛� +export function YANcailiso(params) { + return request({ + url: '/raw-material/selectAll', + method: 'get', + params + }) +} +//鐗堟湰鍙� +export function chooseVer(params) { + return request({ + url: '/inspection/chooseVer', + method: 'get', + params + }) +} diff --git a/src/api/inspection/commisioninspection.js b/src/api/inspection/commisioninspection.js index 982a2f0..275a65b 100644 --- a/src/api/inspection/commisioninspection.js +++ b/src/api/inspection/commisioninspection.js @@ -25,7 +25,7 @@ }) } - +//瑙勬牸鍨嬪彿 export function getModelSpecification(params){ return request({ url: '/link-basic/specification', diff --git a/src/api/laboratory/organizational.js b/src/api/laboratory/organizational.js index a88b77f..bec30c9 100644 --- a/src/api/laboratory/organizational.js +++ b/src/api/laboratory/organizational.js @@ -2,10 +2,50 @@ const Api = { getOrganizational: "/organizational/list", // 鍥涚骇鏍� + getTableInitialization: "/organizational/table", // 琛ㄦ牸鏁版嵁鎺ュ彛 + organizationalAdd: "/organizational/add", // 娣诲姞閮ㄩ棬 + organizationalUpdate: "/organizational/add", // 淇敼閮ㄩ棬 + organizationalDelete: "/organizational/delete", // 鍒犻櫎閮ㄩ棬 } export function getOrganizationalApi() { return request({ url: Api.getOrganizational, method: 'get' }) +} + +export function getTableInitializationApi(departmentId) { + return request({ + url: Api.getTableInitialization, + method: 'get', + params: { + departmentId + } + }) +} + +export function organizationalAddApi(formData){ + return request({ + url: Api.organizationalAdd, + method: 'post', + data: formData + }) +} + +export function organizationalUpdateApi(formData){ + return request({ + url: Api.organizationalUpdate + '?id=' + formData.id, + method: 'put', + data: formData + }) +} + +export function organizationalDeleteApi(id){ + return request({ + url: Api.organizationalDelete, + method: 'delete', + params: { + ids: id.toString() + } + }) } \ No newline at end of file diff --git a/src/api/standardLibrary.js b/src/api/standardLibrary.js index 09b57f9..2eb0e96 100644 --- a/src/api/standardLibrary.js +++ b/src/api/standardLibrary.js @@ -7,6 +7,24 @@ }) } +//鑾峰彇鎵�鏈夌増鏈� +export function getVersion(params){ + return request({ + url: '/product/chooseVersion', + method: 'get', + params + }) +} + +//娣诲姞鍚屼竴涓瀷鍙风殑鍏朵粬鐗堟湰 +export function addVersion(params){ + return request({ + url: '/product/addVersion', + method: 'post', + params + }) +} + // 鑾峰彇鎵�鏈夐」鐩� export function getProductList(params) { return request({ diff --git a/src/api/util/requestUtil.js b/src/api/util/requestUtil.js index 3055a2f..df22c02 100644 --- a/src/api/util/requestUtil.js +++ b/src/api/util/requestUtil.js @@ -16,6 +16,14 @@ }) } +export function put(path, data) { + return request({ + url: path, + method: 'put', + data + }) +} + export function wpost(path, params) { return request({ url: path, diff --git a/src/components/experiment/checkTheReport/index.vue b/src/components/experiment/checkTheReport/index.vue new file mode 100644 index 0000000..fe7d0f5 --- /dev/null +++ b/src/components/experiment/checkTheReport/index.vue @@ -0,0 +1,136 @@ +<template> + <div class="preview-main"> + <div class="logo"> + <img :src="logoSrc" /> + </div> + <div class="center"> + <h1>鍘熸潗鏂欐娴嬫姤鍛�</h1> + <table> + <tr> + <td>鏉愭枡鍚嶇О</td> + <td colspan="5">{{reportData.name}}</td> + </tr> + <tr> + <td>瑙勬牸鍨嬪彿</td> + <td colspan="2"> + {{reportData.specifications.split("-")[1]}} + </td> + <td>鏉愭枡鍘傚</td> + <td colspan="2">{{reportData.supplier}}</td> + </tr> + <tr> + <td>鏉愭枡缂栧彿</td> + <td colspan="2">{{reportData.imCode}}</td> + <td>妫�娴嬬紪鍙�</td> + <td colspan="2">{{reportData.insCode}}</td> + </tr> + <tr> + <td>妫�娴嬩緷鎹�</td> + <td colspan="2">{{reportData.specifications.split("-")[0]}}</td> + <td>妫�娴嬬被鍒�</td> + <td colspan="2">鍘熸潗鏂�</td> + </tr> + <tr> + <td>搴忓彿</td> + <td>妫�楠岄」鐩�</td> + <td>鍗曚綅</td> + <td>鏍囧噯瑕佹眰</td> + <td>妫�娴嬬粨鏋�</td> + <td>鍗曢」鍒ゆ柇</td> + </tr> + <tr v-for="(item,index) in reportData.products" :key="item"> + <td>{{index+1}}</td> + <td>{{item.ipName}}</td> + <td>{{item.unit}}</td> + <td>{{item.required}}</td> + <td>{{item.testValue}}</td> + <td>{{item.testState == 1 ? "鈭�" : "X"}}</td> + </tr> + <tr> + <td colspan="6">妫�楠岀粨璁猴細{{reportData.type == 1 ? "鍚堟牸" : "涓嶅悎鏍�"}}</td> + </tr> + <tr> + <td colspan="6"> + 娉細鈥溾垰鈥濊〃绀鸿椤圭洰鍚堟牸锛屸�溍椻�濊〃绀鸿椤圭洰涓嶅悎鏍硷紝鈥溾�斺�濊〃绀鸿椤圭洰涓嶈姹傛娴嬨�� + </td> + </tr> + </table> + <el-row class="date-group" :gutter="20"> + <el-col :span="12">妫�娴嬨�佹棩鏈燂細<span>{{reportData.createTime}}</span></el-col> + <el-col :span="12">瀹℃牳銆佹棩鏈燂細<span>{{reportData.checkTime}}</span></el-col> + </el-row> + <p class="footer"> + <span>缂栧彿:</span><span>{{reportData.reportCode}}</span> + <span> 鍙戣鏃ユ湡:</span><span>{{new Date() | formatDate}}</span> + <span> 淇濆瓨鏈熼檺:</span><span>闀挎湡</span> + </p> + </div> + </div> +</template> +<script> +export default({ + data() { + return { + logoSrc : require("@/assets/404_images/logo.png"), + } + }, + methods:{ + formatDate(val){ + var dt = new Date(val); + let year = dt.getFullYear(); + let month = (dt.getMonth() + 1).toString().padStart(2,'0'); + let date = dt.getDate().toString().padStart(2,'0'); + return `${year}-${month}-${date}`; + } + }, + props:["reportData"] +}) +</script> +<style scoped lang="scss"> + .preview-main{ + margin: 0; + padding: 0; + width:90%; + margin-left: 5%; + .logo{ + img{ + width: 150px; + height: 60px; + } + } + .center{ + width: 100%; + h1{ + width:100%; + font-family: "寰蒋闆呴粦" !important; + text-align: center; + } + table{ + width:100%; + height:100vh; + border-collapse: collapse; + font-size: 18px; + } + table,tr,th,td{ + border: 2px solid black; + } + tr,td,th{ + padding: 5px 5px; + } + .date-group .el-col{ + text-align: center; + padding: 50px 0px; + font-size: 18px; + } + .footer{ + margin: 0; + padding: 0; + width:90%; + margin-left: 5%; + color: gray; + text-align: center; + margin-top: 250px; + } + } + } +</style> diff --git a/src/layout/components/Navbar.vue b/src/layout/components/Navbar.vue index 905c4ac..be3b829 100644 --- a/src/layout/components/Navbar.vue +++ b/src/layout/components/Navbar.vue @@ -24,7 +24,7 @@ </el-dropdown-item> </el-dropdown-menu> </el-dropdown> - <el-dialog title="淇敼瀵嗙爜" :visible.sync="dialogFormVisible" :append-to-body="true"> + <el-dialog title="淇敼瀵嗙爜" :visible.sync="dialogFormVisible" :append-to-body="true" width="40%"> <el-form :model="form"> <el-form-item label="鏃у瘑鐮�" :label-width="formLabelWidth"> <el-input v-model="form.oldPwd" autocomplete="off"></el-input> @@ -69,7 +69,11 @@ name: 'value' }, dialogFormVisible: false, - formLabelWidth: '120px' + formLabelWidth: '120px', + user: { + id: null, + name: 'value' + } } }, components: { diff --git a/src/main.js b/src/main.js index 1eda87c..d578a57 100644 --- a/src/main.js +++ b/src/main.js @@ -20,6 +20,7 @@ import echarts from 'echarts' Vue.prototype.$echarts = echarts +import print from 'print-js' import '@/icons' // icon import '@/permission' // permission control diff --git a/src/views/basicData/index.vue b/src/views/basicData/index.vue index 4ee318a..e47537f 100644 --- a/src/views/basicData/index.vue +++ b/src/views/basicData/index.vue @@ -136,13 +136,14 @@ <el-table :data="tableData" style="width: 100%; margin-bottom: 20px" - row-key="name" + row-key="id" border height="calc(100vh - 250px)" default-expand-all ref="multipleTable" @select="selectTr" @select-all="selectAll" + @selection-change="handleSelectionChange" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" > <el-table-column type="selection" label="搴忓彿"> </el-table-column> @@ -344,20 +345,6 @@ this.isAllSelect = !this.isAllSelect; let data = this.tableData; this.toggleSelect(data, this.isAllSelect, "all"); - // 鑷畾涔� - if (this.isAllSelect) { - val.forEach((i) => { - if (i.id !== undefined) { - this.deleteList.push(i.id); - } else { - i.children.forEach((c) => { - this.deleteList.push(c.id); - }); - } - }); - } else { - this.deleteList.splice(0, this.deleteList.length); - } }, //閫夋嫨鏌愯 selectTr(selection, row) { @@ -366,33 +353,6 @@ this.isAllSelect = row.isChecked; this.toggleSelect(row, row.isChecked, "tr"); }); - - if (row.isChecked === true) { - if (row.children !== undefined) { - row.children.forEach((i) => { - this.deleteList.push(i.id); - }); - } else { - this.deleteList.push(row.id); - } - } else if (row.isChecked === false) { - if (row.children !== undefined) { - row.children.forEach((i) => { - this.deleteList.findIndex((c, index) => { - if (c === i.id) { - this.deleteList.splice(index, 1); - return; - } - }); - }); - } - this.deleteList.findIndex((c, index) => { - if (c === row.id) { - this.deleteList.splice(index, 1); - return; - } - }); - } }, //閫掑綊瀛愮骇 toggleSelect(data, flag, type) { @@ -426,6 +386,15 @@ } }); }, + handleSelectionChange(val) { + this.deleteList = [] + val.forEach((v) => { + if(v.id !== undefined) { + this.deleteList.push(v.id) + } + }) + console.log(`output->this.deleteList`,this.deleteList) + }, // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆 缁撴潫 deleteListClick() { deleteListApi(this.deleteList).then((res) => { diff --git a/src/views/chart/work/index.vue b/src/views/chart/work/index.vue index e04f144..46e1da2 100644 --- a/src/views/chart/work/index.vue +++ b/src/views/chart/work/index.vue @@ -90,12 +90,7 @@ }, } }, - mounted(){ - // this.initLeaderStatiChart(""); - this.initLeaderTimelyChart("leaderTimely"); - this.initTesterStatiChart("testerStati"); - this.initTesterTimelyChart("testerTimely"); - }, + mounted(){}, methods: { async queryData(){ let date = this.formInline.date; @@ -182,7 +177,7 @@ series: [ { name: '宸插畬鎴�', - barWidth: '20%', + barWidth: '30%', type: 'bar', stack: 'one', emphasis: emphasisStyle, @@ -207,22 +202,25 @@ option && myChart.setOption(option); }, initTesterStatiChart(id,executeMater){ - console.log("qqq----",executeMater); var chartDom = document.getElementById(id); var myChart = echarts.init(chartDom); window.addEventListener('resize', function() { myChart.resize(); }); var option; - + let max = 0; let xAxisData = []; let data1 = []; let data2 = []; - // for(let i=0;i<executeMater.length;i++){ - // xAxisData.push(executeMater[i].name); - // data1.push(executeMater[i].finsh); - // data2.push(executeMater[i].unfinsh); - // } + for(let i=0;i<executeMater.length;i++){ + xAxisData.push(executeMater[i].name); + data1.push(executeMater[i].finsh); + data2.push(executeMater[i].unfinsh); + let sum = executeMater[i].finsh + executeMater[i].unfinsh; + if(sum > max){ + max = sum; + } + } var emphasisStyle = { itemStyle: { shadowBlur: 10, @@ -244,8 +242,8 @@ }, yAxis: { min: 0, - max: 60, - interval: 10, + max: max, + interval: 1, }, grid: { bottom: 100 @@ -255,6 +253,7 @@ name: '鏁版嵁1', type: 'bar', stack: 'one', + barWidth: '30%', emphasis: emphasisStyle, data: data1, itemStyle:{ @@ -265,6 +264,7 @@ name: '鏁版嵁2', type: 'bar', stack: 'one', + barWidth: '30%', emphasis: emphasisStyle, data: data2, itemStyle:{ @@ -282,6 +282,18 @@ myChart.resize(); }); var option; + let xAxisData = []; + let data1 = []; + let data2 = []; + let yAxisData1 = 0; + for(let i=0;i<dutyTimely.length;i++){ + xAxisData.push(dutyTimely[i].name); + data1.push(dutyTimely[i].total); + data2.push(dutyTimely[i].timely); + if(dutyTimely[i].total > yAxisData1){ + yAxisData1 = dutyTimely[i].total; + } + } option = { tooltip: { trigger: 'axis', @@ -299,13 +311,10 @@ { name: '濮撳悕', type: 'category', - data: ['娌愮',], + data: xAxisData, axisPointer: { type: 'shadow' }, - itemStyle: { - top: '20px' - } } ], yAxis: [ @@ -313,7 +322,7 @@ type: 'value', name: '鏁伴噺', min: 0, - max: 10, + max: yAxisData1, interval: 1, axisLabel: { formatter: '{value}' @@ -334,13 +343,13 @@ { name: '鏍峰搧鏁�', type: 'bar', - barWidth: '20%', + barWidth: '30%', tooltip: { valueFormatter: function (value) { return value; } }, - data: [4.0], + data: data1, itemStyle: { color: '#9fceff' } @@ -348,19 +357,19 @@ { name: '瀹屾垚鍙婃椂鐜�', type: 'line', + yAxisIndex: 1, tooltip: { valueFormatter: function (value) { return value + ' %'; } }, - data: [7.5], + data: [{value:20},{value:40}], itemStyle: { color: '#d2eec5' } }, ] }; - option && myChart.setOption(option); }, initTesterTimelyChart(id,executeTimely){ @@ -370,6 +379,18 @@ myChart.resize(); }); var option; + let xAxisData = []; + let data1 = []; + let data2 = []; + let yAxisData1 = 0; + for(let i=0;i<executeTimely.length;i++){ + xAxisData.push(executeTimely[i].name); + data1.push(executeTimely[i].total); + data2.push(executeTimely[i].timely); + if(executeTimely[i].total > yAxisData1){ + yAxisData1 = executeTimely[i].total; + } + } option = { tooltip: { trigger: 'axis', @@ -387,7 +408,7 @@ xAxis: [ { type: 'category', - data: ["","",""], + data: xAxisData, axisPointer: { type: 'shadow' } @@ -398,8 +419,8 @@ type: 'value', name: '', min: 0, - max: 50, - interval: 5, + max: yAxisData1, + interval: 1, axisLabel: { formatter: '{value}' } @@ -419,12 +440,13 @@ { name: '椤圭洰鏁�', type: 'bar', + barWidth: '30%', tooltip: { valueFormatter: function (value) { return value ; } }, - data: [2.0, 4.9, 7.0], + data: data1, itemStyle: { color: '#5087ec' } @@ -438,7 +460,7 @@ return value + ' %'; } }, - data: [2.0, 2.2, 3.3], + data: data2, itemStyle: { color: '#68bbc4' } diff --git a/src/views/experiment/checkTheReport/index.vue b/src/views/experiment/checkTheReport/index.vue index a127c10..ab2d6ee 100644 --- a/src/views/experiment/checkTheReport/index.vue +++ b/src/views/experiment/checkTheReport/index.vue @@ -51,6 +51,18 @@ > </div> </div> + <el-dialog + top="10vh" + title="鎶ュ憡棰勮" + :visible.sync="dialogVisible" + width="60%"> + <span slot="footer" class="dialog-footer"> + <el-button type="primary" @click="printFun()">鎵撳嵃</el-button> + </span> + <div class="printStyle"> + <preview id="printDiv" :reportData="reportData"></preview> + </div> + </el-dialog> <div class="table-box"> <el-table ref="reportTable" @@ -81,14 +93,14 @@ </template></el-table-column > <el-table-column - prop="materialCode" + prop="reportCode" label="鎶ュ憡鍗曞彿" sortable min-width="10%" > <template slot-scope="scope"> <span style="color: #409eff;"> - {{ scope.row.materialCode }} + {{ scope.row.reportCode }} </span> </template></el-table-column > @@ -143,10 +155,9 @@ <el-button type="text" size="small" - @click="handleClick(scope.row)" - >棰勮</el-button + @click="previewFun(scope.row)" + >鏌ョ湅鎶ュ憡</el-button > - <el-button type="text" size="small">鎵撳嵃</el-button> </template> </el-table-column> </el-table> @@ -168,10 +179,13 @@ </template> <script> -import { selectAllReport } from "@/api/experiment/checkTheReport"; +import { selectAllReport,getReportData } from "@/api/experiment/checkTheReport"; +import Preview from "@/components/experiment/checkTheReport/index.vue"; +import PrintJS from 'print-js' export default { data() { return { + reportData: [], searchData:{ sample_code:'', reportCode:'', @@ -183,12 +197,39 @@ total: 0, pageSize: 10, checked: true, + dialogVisible: false, }; }, created() { this.getData(); }, + mounted(){ + }, + components:{ + Preview + }, methods: { + async queryReportByRCode(code){ + const resp = await getReportData({code:code}); + this.reportData = resp.data; + console.log(this.reportData); + }, + //鏌ョ湅鎶ュ憡鎸夐挳 + previewFun(row){ + this.dialogVisible = true; + this.queryReportByRCode(row.reportCode); + }, + //鎵撳嵃鎸夐挳 + printFun(){ + this.dialogVisible = false; + PrintJS({ + printable: "printDiv", + type: "html", + // header: "鍘熸潗鏂欐娴嬫姤鍛�", + targetStyles: ["*"], + ignoreElements: ["no-ignore"], + }); + }, // 鐘舵�佹寜閽� handleRadioChange() { this.getData(); @@ -227,6 +268,7 @@ }; const { data } = await selectAllReport(params); this.reportTable = data.row; + console.log(data.row); this.total = data.total; }, }, @@ -280,5 +322,14 @@ margin: 10px 0; } } + .printStyle{ + overflow: scroll; + height:600px; + .el-button{ + position: absolute; + top: 10vh; + left: 90%; + } + } } </style> diff --git a/src/views/experiment/inspectionApplication/Viewdetails/index.vue b/src/views/experiment/inspectionApplication/Viewdetails/index.vue index dd8a167..e61c489 100644 --- a/src/views/experiment/inspectionApplication/Viewdetails/index.vue +++ b/src/views/experiment/inspectionApplication/Viewdetails/index.vue @@ -12,7 +12,7 @@ <el-form ref="form" :model="searchData" label-width="80px"> <el-col :span="6"> <el-form-item label="鏉ユ枡鏃ユ湡:" > - <el-input :disabled="true" v-model="searchData.from_time"></el-input> + <el-input :disabled="true" v-model="searchData.formTime"></el-input> </el-form-item> </el-col> @@ -23,7 +23,7 @@ </el-col> <el-col :span="6"> <el-form-item label="浜у搧缂栧彿:"> - <el-input :disabled="true" v-model="searchData.mcode"></el-input> + <el-input :disabled="true" v-model="searchData.code"></el-input> </el-form-item> </el-col> </el-form> @@ -60,7 +60,7 @@ <el-col :span="6"> <el-form-item label="鐧昏鏃ユ湡:"> - <el-input :disabled="true" v-model="searchData.end_time"></el-input> + <el-input :disabled="true" v-model="searchData.endTime"></el-input> </el-form-item> </el-col> @@ -86,7 +86,7 @@ <div> <el-card style="margin: 10px;"> <el-table - :data="tableData" + :data="insProducts" border style="width: 100%"> <el-table-column @@ -95,52 +95,37 @@ width="50"> </el-table-column> <el-table-column - prop="date" + prop="name" label="椤圭洰" width="180"> </el-table-column> <el-table-column - prop="name" + prop="unit" label="鍗曚綅" width="180"> </el-table-column> <el-table-column - prop="kk" + prop="internal" label="鏍囧噯鍊�"> </el-table-column> <el-table-column - prop="zz" + prop="required" label="鍐呮帶鍊�"> </el-table-column> - <el-table-column - prop="oo" - wight="200" - label="缁忛獙浜�"> - <template> - <el-select v-model="value" placeholder="榛勬檽鏄�"> - <el-option - v-for="item in cities" - :key="item.value" - :label="item.label" - :value="item.value"> - <span style="float: left">{{ item.label }}</span> - <span style="float: right; color: #8492a6; font-size: 13px">{{ item.value }}</span> - </el-option> + <el-table-column prop="userName" label="缁忛獙浜�"> + <template slot-scope="scope"> + <el-select v-model="value" size="small" slot="append" style="width: 220px;"> + <el-option v-for="item in ZERENren" :key="item.id" :label="item.name" :value="item.name"></el-option> </el-select> </template> </el-table-column> <el-table-column - prop="pp" + prop="inspectionMaterialId" label="瀹為獙璁惧"> <template> - <el-select v-model="value" placeholder="鎷夊姏鏈�"> - <el-option - v-for="item in cities" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> + <!-- <el-select v-model="scope.row.checker" size="small" slot="append" style="width: 260px;"> + <el-option v-for="item in checkeroptions" :key="item.value" :label="item.label">{{ item.label }}</el-option> + </el-select> --> </template> </el-table-column> </el-table> @@ -151,126 +136,38 @@ </div> </template> <script> - import { selectInspectsList, selectAll, addInspect} from '@/api/experiment/planAssignments' + import { selectInspectsListById,selectUser} from '@/api/experiment/planAssignments' export default { data(){ return { - searchData:{ - from_time:'', - supplier:'', - mcode:'', - name:'', - specifications:'', - unit:'', - num:'', - userName:'', - end_time:'', - - }, - value:{}, - cities:[{ - value: 'Beijing', - label: '榛勫皬鏄�' - }, { - value: 'Shanghai', - label: '榛勫皬鏄�' - }, { - }], - tableData:[{ - date: '瀵肩嚎', - name: 'mm', - kk:'30.0', - zz:'30.0', - oo:'榛勬檽鏄�', - pp:'鎷夊姏鏈�', - },{ - date: '瀵肩嚎', - name: 'mm', - kk:'30.0', - zz:'30.0', - oo:'榛勬檽鏄�', - pp:'鎷夊姏鏈�', - },{ - date: '瀵肩嚎', - name: 'mm', - kk:'30.0', - zz:'30.0', - oo:'榛勬檽鏄�', - pp:'鎷夊姏鏈�', - },{ - date: '瀵肩嚎', - name: 'mm', - kk:'30.0', - zz:'30.0', - oo:'榛勬檽鏄�', - pp:'鎷夊姏鏈�', - },{ - date: '瀵肩嚎', - name: 'mm', - kk:'30.0', - zz:'30.0', - oo:'榛勬檽鏄�', - pp:'鎷夊姏鏈�', - }], - currentPage:1, - pageSize:8, - id:'' + searchData:{ }, + insProducts:[], + uu:'', + value:'' } }, created(){ - console.log(this.$route.query.icode); - this.id = this.$route.query.icode; - this.selectInspectsList() + this.uu = this.$route.query.id; + this.selectInspectsListById() + this.selectUser() }, methods: { - async goback(){ - + //杩斿洖 + async goback(){ this.$router.push({name:'inspectionApplication'}) }, - async selectInspectsList() { - - // 鑾峰彇鍒嗛〉鍒楄〃 - const res = await selectInspectsList({ countSize: this.pageSize, pageSize: this.currentPage ,message:this.id}) - // this.inspectionTable = data - console.log(res) - - // res.data.forEach((item) => { - // var formTime = item["DATE_FORMAT(`form_time`,'%Y-%m-%d')"] - // var startTime = item["DATE_FORMAT(i"]["`start_time`,'%Y-%m-%d')"] - // var endTime = item["DATE_FORMAT(i"]["`end_time`,'%Y-%m-%d')"] - // var checkdate = startTime + '~' + endTime - // var createTime = item["DATE_FORMAT(i"]["`create_time`,'%Y-%m-%d')"] - // item['formTime'] = formTime // 鏉ユ枡鏃ユ湡 - // item['checkdate'] = checkdate // 妫�楠屾棩鏈� - // item['createTime'] = createTime // 鐧昏鏃ユ湡 - // }) - this.searchData.mcode = res.data.row[0].mcode - this.searchData.supplier = res.data.row[0].supplier - this.searchData.from_time = res.data.row[0]["DATE_FORMAT(`form_time`,'%Y-%m-%d')"] - this.searchData.name = res.data.row[0].name - this.searchData.specifications = res.data.row[0].specifications - this.searchData.unit = res.data.row[0].unit - this.searchData.num = res.data.row[0].num - this.searchData.end_time = res.data.row[0]["DATE_FORMAT(i"]["`end_time`,'%Y-%m-%d')"] - this.searchData.userName = res.data.row[0].userName - - - - - const data = res.data.row - data.forEach((item) => { - var formTime = item["DATE_FORMAT(`form_time`,'%Y-%m-%d')"] - var startTime = item["DATE_FORMAT(i"]["`start_time`,'%Y-%m-%d')"] - var endTime = item["DATE_FORMAT(i"]["`end_time`,'%Y-%m-%d')"] - var checkdate = startTime + '~' + endTime - var createTime = item["DATE_FORMAT(i"]["`create_time`,'%Y-%m-%d')"] - item['formTime'] = formTime // 鏉ユ枡鏃ユ湡 - item['checkdate'] = checkdate // 妫�楠屾棩鏈� - item['createTime'] = createTime // 鐧昏鏃ユ湡 - }) - this.inspectionTable = data - this.total = res.data.total + //妫�楠屽崟璐d换浜� + async selectUser(){ + const res = await selectUser() + this.ZERENren = res.data + // console.log(this.ZERENren); }, + //妫�楠屽崟琛� + async selectInspectsListById() { + const res = await selectInspectsListById({id:this.uu}) + this.searchData = res.data + this.insProducts = res.data.insProducts + } } } </script> diff --git a/src/views/experiment/inspectionApplication/index.vue b/src/views/experiment/inspectionApplication/index.vue index a378d03..e6f5023 100644 --- a/src/views/experiment/inspectionApplication/index.vue +++ b/src/views/experiment/inspectionApplication/index.vue @@ -82,7 +82,7 @@ label="妫�楠岀被鍨�" min-width="80px"> <template slot-scope="scope"> - <div v-if="scope.row.type === 0" ><span>鍘熸潗鏂欐楠�</span></div> + <div v-if="scope.row.type === 0" ><span >鍘熸潗鏂欐楠�</span></div> <div v-if="scope.row.type === 1" ><span>濮旀墭妫�楠�</span></div> <div v-if="scope.row.type === 2" ><span>鎴愬搧妫�楠�</span></div> </template> @@ -180,16 +180,17 @@ title="鏂板妫�楠屽崟" :visible.sync="checkTypeVisible" width="50%" + top="10vh" > <div class="check-box"> - <el-radio-group v-model="type" @change="handleRadioChange"> - <el-radio :label="0" border >鍘熸潗鏂欐楠�</el-radio> - <el-radio :label="1" border>濮旀墭妫�楠�</el-radio> - <el-radio :label="2" border>鎴愬搧妫�楠�</el-radio> + <el-radio-group v-model="type" @click.native="handleRadioChange"> + <el-radio :style="`background-color: ${type==0?'rgb(170, 236, 214)':'#fff'};border-radius: 10px;`" :label="0" border>鍘熸潗鏂欐楠�</el-radio> + <el-radio :style="`background-color: ${type==1?'rgb(170, 236, 214)':'#fff'};border-radius: 10px;`" :label="1" border>濮旀墭妫�楠�</el-radio> + <el-radio :style="`background-color: ${type==2?'rgb(170, 236, 214)':'#fff'};border-radius: 10px;`" :label="2" border>鎴愬搧妫�楠�</el-radio> </el-radio-group> </div> - <div v-if="type === 0 || type === ''"> - <el-form :model="infoForm" ref="infoForm" class="checkTypeForm" label-position="top" label-width="200px" size="mini"> + <div v-if="type === 0"> + <el-form :model="infoForm" ref="infoForm" class="checkTypeForm" label-position="top" label-width="200px" size="medium"> <el-row :gutter="100"> <el-col :span="10"> <el-form-item label="鏉ユ枡鏃ユ湡锛�"> @@ -251,44 +252,44 @@ <el-form :model="commisionSelection" ref="commisionTable" class="checkTypeForm" label-position="top" label-width="200px" size="mini"> <el-row :gutter="100"> <el-col :span="10"> - <el-form-item label="鏉ユ枡鏃ユ湡锛�"> - <el-input style="width: 300px" type="text" :value="commisionSelection.formTime" placeholder="璇疯緭鍏ユ潵鏂欐棩鏈�" autocomplete="off" /> + <el-form-item label="濮旀墭缂栧彿"> + <el-input style="width: 300px" type="text" :value="commisionSelection.entrust_coding" placeholder="璇疯緭鍏ユ潵鏂欐棩鏈�" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="10"> - <el-form-item label="渚涘簲鍟嗗悕绉帮細"> - <el-input style="width: 300px" type="text" :value="commisionSelection.supplier" placeholder="璇疯緭鍏ュ鎵樺崟浣�" autocomplete="off" /> + <el-form-item label="濮旀墭鍗曚綅"> + <el-input style="width: 300px" type="text" :value="commisionSelection.entrusted" placeholder="璇疯緭鍏ュ鎵樺崟浣�" autocomplete="off" /> </el-form-item> </el-col> </el-row> <el-row :gutter="100"> <el-col :span="10"> - <el-form-item label="濮旀墭缂栧彿锛�"> - <el-input style="width: 300px" type="text" :value="commisionSelection.mcode" placeholder="璇疯緭鍏ユ牱鍝佺紪鍙�" autocomplete="off" /> + <el-form-item label="鏍峰搧缂栧彿"> + <el-input style="width: 300px" type="text" :value="commisionSelection.samples_number" placeholder="璇疯緭鍏ユ牱鍝佺紪鍙�" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="10"> - <el-form-item label="濮旀墭鍚嶇О锛�"> - <el-input style="width: 300px" type="text" :value="commisionSelection.name" placeholder="璇疯緭鍏ユ牱鍝佸悕绉�" autocomplete="off" /> + <el-form-item label="鏍峰搧鍚嶇О"> + <el-input style="width: 300px" type="text" :value="commisionSelection.sample_name" placeholder="璇疯緭鍏ユ牱鍝佸悕绉�" autocomplete="off" /> </el-form-item> </el-col> </el-row> <el-row :gutter="100"> <el-col :span="10"> <el-form-item label="瑙勬牸鍨嬪彿锛�"> - <el-input style="width: 300px" type="text" :value="commisionSelection.specifications" placeholder="璇疯緭鍏ュ瀷鍙疯鏍�" autocomplete="off" /> + <el-input style="width: 300px" type="text" :value="commisionSelection.specifications_models" placeholder="璇疯緭鍏ュ瀷鍙疯鏍�" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="10"> - <el-form-item label="鍗曚綅锛�"> - <el-input style="width: 300px" type="text" :value="commisionSelection.unit" placeholder="璇疯緭鍏ュ崟浣�" autocomplete="off" /> + <el-form-item label="閫佽揪鏃堕棿"> + <el-input style="width: 300px" type="text" :value="commisionSelection.dateSurvey" placeholder="璇疯緭鍏ュ崟浣�" autocomplete="off" /> </el-form-item> </el-col> </el-row> <el-row :gutter="100"> <el-col :span="10"> - <el-form-item label="鏁伴噺锛�"> - <el-input style="width: 300px" type="text" :value="commisionSelection.num" placeholder="璇疯緭鍏ユ暟閲�" autocomplete="off" /> + <el-form-item label="瀹屾垚鏈熼檺"> + <el-input style="width: 300px" type="text" :value="commisionSelection.completionDeadline" placeholder="璇疯緭鍏ユ暟閲�" autocomplete="off" /> </el-form-item> </el-col> <el-col :span="10"> @@ -367,11 +368,90 @@ </div> <span slot="footer" class="dialog-footer"> <el-button @click="checkTypeVisible = false">鍙� 娑�</el-button> - <el-button type="primary" @click="addInspection">纭� 瀹�</el-button> + <!-- <el-button type="primary" @click="addInspection">纭� 瀹�</el-button> --> + <el-button type="primary" @click="QUEding">纭� 瀹�</el-button> </span> </el-dialog> </div> </div> + + <!-- 纭畾璺宠浆鍩烘湰搴撳脊绐� --> + <el-dialog + title="鏍囧噯搴�" + :visible.sync="Standardframe" + width="48%"> + <el-card> + <template slot-scope="scope" > + <span>鐗堟湰閫夋嫨锛�</span> + <el-select v-model="commisionTable" size="small" slot="append" style="width: 220px;"> + <el-option v-for="item in BANben" :key="item.id" :label="item.name" :value="item.name"></el-option> + </el-select> + </template> + </el-card> + <el-table + :data="tableData" + style="width: 100%; margin-bottom: 20px" + row-key="name" + border + + default-expand-all + ref="multipleTable" + :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" + > + <el-table-column type="selection" label="搴忓彿"> </el-table-column> + <el-table-column + type="index" + width="50px" + label="搴忓彿" + ></el-table-column> + <el-table-column label="椤圭洰鍚嶇О" sortable> + <template scope="scope"> + <el-tag + ><div + class="firstDiv" + :style="`color: ${ + scope.row.code == '[1]' ? '#16a7ff' : '#58c173' + }`" + > + {{ scope.row.code == "[1]" ? "01" : "02" }} + </div> + <span style="color: black">{{ scope.row.name }}</span></el-tag + > + </template> + </el-table-column> + <el-table-column + prop="unit" + label="鍗曚綅" + sortable + ></el-table-column> + <el-table-column label="鏍囧噯鍊�" sortable> + <template scope="scope"> + <el-input + v-if="scope.row.edit === true || scope.row.code === '[2]'" + @blur="requiredOnfocus(scope)" + v-model="scope.row.required" + placeholder="璇疯緭鍏ユ爣鍑嗗��" + ></el-input> + </template> + </el-table-column> + <el-table-column prop="internal" label="鍐呮帶鍊�" sortable> + <template scope="scope"> + <el-input + v-if="scope.row.edit === true || scope.row.code === '[2]'" + @blur="requiredOnfocus(scope)" + v-model="scope.row.internal" + placeholder="璇疯緭鍏ュ唴鎺у��" + ></el-input> + </template> + </el-table-column> + </el-table> + <span slot="footer" class="dialog-footer"> + <el-button @click="Standardframe = false">鍙� 娑�</el-button> + <el-button type="primary" @click="Standardframe = false">纭� 瀹�</el-button> + </span> + + </el-dialog> + <!-- 鍘熸潗鏂欐楠屾ā鎬佹 --> <el-dialog title="鍘熸潗鏂欐楠�" @@ -385,11 +465,10 @@ :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}" :data="rawMaterialTable" style="width: 100%" - @selection-change="handleSelectionChange" + @selection-change="handleSelectionChange_0" > - <el-table-column + <el-table-column type="selection" - label="" min-width="10%" /> <el-table-column @@ -398,7 +477,7 @@ min-width="8%" /> <el-table-column - prop="dateSurvey" + prop="createTime" label="鏉ユ枡鏃ユ湡" min-width="8%" /> @@ -443,12 +522,12 @@ min-width="8%" /> <el-table-column - prop="createTime" + prop="dateSurvey" label="妫�楠屾棩鏈�" min-width="8%" /> <el-table-column - prop="state" + prop="condition" label="鐘舵��" min-width="8%" > @@ -480,50 +559,32 @@ @selection-change="handleSelectionChange" style="width: 100%" > - <el-table-column - type="selection" - min-width="10%" - /> - <el-table-column - type="index" - label="搴忓彿" - min-width="10%" - /> - <el-table-column - prop="formTime" - label="鏉ユ枡鏃ユ湡" - min-width="10%" - /> - <el-table-column - prop="supplier" - label="渚涘簲鍟嗗悕绉�" - min-width="12%" - /> - <el-table-column - prop="mcode" - label="鏉愭枡缂栫爜" - min-width="8%" - /> - <el-table-column - prop="specifications" - label="瑙勬牸鍨嬪彿" - min-width="8%" - /> - <el-table-column - prop="unit" - label="鍗曚綅" - min-width="12%" - /> - <el-table-column - prop="num" - label="鏁伴噺" - min-width="8%" - /> - <el-table-column - prop="checkdate_" - label="妫�楠屾棩鏈�" - min-width="8%" - /> + <el-table-column type="selection" min-width="10%" /> + <el-table-column type="index" label="搴忓彿" min-width="10%" /> + <el-table-column prop="entrust_coding" label="濮旀墭缂栧彿" min-width="10%" /> + <el-table-column prop="entrusted" label="濮旀墭鍗曚綅" min-width="12%" /> + <el-table-column prop="samples_number" label="鏍峰搧缂栧彿" min-width="8%" /> + <el-table-column prop="sample_name" label="鏍峰搧鍚嶇О" min-width="8%" /> + <el-table-column prop="specifications_models" label="瑙勬牸鍨嬪彿" min-width="12%" /> + <el-table-column prop="dateSurvey" label="閫佽揪鏃堕棿" min-width="8%" /> + <el-table-column prop="completionDeadline" label="瀹屾垚鏈熼檺" min-width="8%" /> + <el-table-column prop="contacts" label="濮旀墭缂栧埗浜�" min-width="8%" /> + <el-table-column prop="inspectionTime" label="妫�楠屾棩鏈�" min-width="8%" /> + <el-table-column prop="inspection_status" label="鐘舵��" min-width="8%"> + <template slot-scope="scope"> + <div v-if="scope.row.inspection_status === 1"> + <span style="color: green;">宸叉娴�</span> + </div> + <div v-else> + <span style="color: red;">寰呮娴�</span> + </div> + </template> + </el-table-column> + <el-table-column label="鎿嶄綔" min-width="8%"> + <template slot-scope="scope"> + <el-button type="text" size="small">鍒犻櫎</el-button> + </template> + </el-table-column> </el-table> <span slot="footer" class="dialog-footer"> <el-button @click="commisionVisible = false">鍙� 娑�</el-button> @@ -534,13 +595,12 @@ </template> <template v-else> <router-view /> - </template> </div> </template> <script> - import { selectInspectsList, selectAll, addInspect} from '@/api/experiment/planAssignments' + import { selectInspectsList, selectAll, addInspect,getCommisionList,YANcailiso,chooseVer} from '@/api/experiment/planAssignments' export default { data() { return { @@ -550,34 +610,11 @@ type: '', state: '', }, + valu:{}, icode:'', inspectionTable: [], rawMaterialTable: [], - commisionTable: [{ - specifications_models: "GGXH-AAAAA", - inspectionTime: "2023-08-03", - id: 2, - samples_number: 0, - dateSurvey: "2023-08-03", - entrusted: "闃块噷宸村反", - completionDeadline: "2023-08-03", - contacts: "灏忛粦", - entrust_coding: "SL20230803000003", - sample_name: "鍙戝姩鏈�", - inspection_status: 1 - },{ - specifications_models: "GGXH-AAAAA", - inspectionTime: "2023-08-03", - id: 2, - samples_number: 0, - dateSurvey: "2023-08-03", - entrusted: "闃块噷宸村反", - completionDeadline: "2023-08-03", - contacts: "灏忛粦", - entrust_coding: "SL20230803000003", - sample_name: "鍙戝姩鏈�", - inspection_status: 1 - }], + commisionTable: [], finishedTable: { deliverydate: '', supplier: '', @@ -588,7 +625,7 @@ amount: '', checkdate: [] }, - infoForm:'', + infoForm:{}, commisionSelection:{ entrust_coding: '', entrusted: '', @@ -629,10 +666,15 @@ pageSize: 8, // 姣忛〉鐨勬暟鎹潯鏁� radioValue: '鍏ㄩ儴', checkTypeVisible: false, - type: '', // 榛樿涓嶉�変腑鐨勭姸鎬� + type: 0, // 榛樿涓嶉�変腑鐨勭姸鎬� rawmaterialVisible: false, commisionVisible: false, - tmp: '' + tmp: '', + Standardframe: false, + tableData: [], + tableRow:{}, + BANben:[], + select_1: [] } }, watch: { @@ -653,23 +695,36 @@ }, methods: { async handleClick(row){ - // console.log(item); - // const res = await ddd({goodId:id}) - // this.$message({ - // message: '鎭枩浣狅紝杩欐槸涓�鏉℃垚鍔熸秷鎭�', - // type: 'success' - // }); - - // console.log(res); this.inspectionTable = row; - console.log(row.icode); - this.icode = row.icode - this.$router.push({name:'Viewdetails',query: {icode:row.icode}}); + this.id = row.id + this.$router.push({name:'Viewdetails',query: {id:row.id}}); this.selectInspectsList() + }, + //鐗堟湰搴� + async chooseVer() { + const res = await chooseVer ({ + mcode:this.commisionTable.entrust_coding, + name:this.commisionTable.entrusted, + scifications:this.commisionTable.specifications_models + }) + console.log(res); + this.BANben = res.data.row + }, + //濮旀墭妫�楠� + async getCommisionList() { + const res = await getCommisionList({pageNo:1,pageSize:10 }) + console.log(res); + this.commisionTable = res.data + }, + //鍘熸潗鏂� + async selecYANcailisotAllAPI() { + const res = await YANcailiso({pageNo:1,pageSize:10 }) + console.log(res); + this.rawMaterialTable = res.data.row }, async selectInspectsList() { // 鑾峰彇鍒嗛〉鍒楄〃 - const res = await selectInspectsList({ countSize: this.pageSize, pageSize: this.currentPage,message:this.icode}) + const res = await selectInspectsList({ countSize: this.pageSize, pageSize: this.currentPage,message:this.id}) // this.inspectionTable = data // console.log(res.data.row) const data = res.data.row @@ -699,7 +754,6 @@ item['checkdate'] = checkdate // 妫�楠屾棩鏈� item['createTime'] = createTime // 鐧昏鏃ユ湡 }) - console.log('data:',data) this.inspectionTable = data if(this.searchData.type !== ''){ if(this.searchData.state !== ''){ @@ -742,33 +796,30 @@ this.infoForm = this.tmp this.rawmaterialVisible = false }, - async handleRadioChange(){ - if(this.type === 0){ - // 鍘熸潗鏂欐姤妫� - // this.rawmaterialVisible = true - // const res = await selectAll({type: this.type}) - // var data = res.data - // data.forEach((item)=>{ - // var checkdate = [] - // checkdate.push(item['createTime']) - // checkdate.push(item['updateTime']) - // item['checkdate'] = checkdate // 妫�楠屾棩鏈� - // }) - this.$router.push({ name: 'ReportForInspection' }); - }else if(this.type === 1){ - // this.commisionVisible = true - // const res = await selectAll({type: this.type}) - // var data = res.data - // data.forEach((item)=>{ - // var checkdate = [] - // checkdate.push(item['startTime']) - // checkdate.push(item['endTime']) - // item['checkdate_'] = item['startTime'] + '~' + item['endTime'] - // item['checkdate'] = checkdate // 妫�楠屾棩鏈� - // }) - // this.commisionTable = res.data - this.$router.push({ name: 'CommissionInspection' }); - } + handleRadioChange(){ + setTimeout(()=>{ + if(this.type === 0){ + // 鍘熸潗鏂欐姤妫� + this.rawmaterialVisible = true + selectAll({type: this.type}).then(res=>{ + var data = res.data + data.forEach((item)=>{ + var checkdate = [] + checkdate.push(item['createTime']) + checkdate.push(item['updateTime']) + item['checkdate'] = checkdate // 妫�楠屾棩鏈� + }) + this.rawMaterialTable = res.data + }) + // this.$router.push({ name: 'ReportForInspection' }); + }else if(this.type === 1){ + this.commisionVisible = true + getCnList({pageNo:1,pageSize:10}).then(res=>{ + // consommisioole.log(res); + this.commisionTable = res.data.row + }) + } + },100) }, // 鏂板妫�楠� async addInspection(){ @@ -811,7 +862,7 @@ type: this.type, unit: this.finishedTable.unit }) } - this.type = '' + this.type = 0 this.checkTypeVisible = false this.$message({ message: '娣诲姞鎴愬姛锛�', @@ -830,6 +881,28 @@ console.log(`褰撳墠椤�: ${val}`) this.currentPage = val this.selectInspectsList() + }, + //纭畾璺宠浆 + QUEding(){ + // this.tableRow = a + this.Standardframe = true + chooseVer({mcode:this.select_1[0].materialCoding, + name:this.select_1[0].materialName, + scifications:this.select_1[0].specificationsModels}).then(res => { + this.BANben = res.data.row + console.log(this.BANben); + }) + + }, + handleSelectionChange_0(val){ + this.select_1 = [] + val.forEach(v => { + let obj = {} + obj.materialCoding = v.materialCoding + obj.materialName = v.materialName + obj.specificationsModels = v.specificationsModels + this.select_1.push(obj) + }) } } } @@ -854,7 +927,7 @@ } height: auto; font-size: 22px !important; - padding: 20px 40px !important; + padding: 40px 50px !important; ::v-deep .el-radio__label{ font-size: 22px !important; padding-left: 0px !important; diff --git a/src/views/experiment/reportAuditing/index.vue b/src/views/experiment/reportAuditing/index.vue index 6c699b2..4386859 100644 --- a/src/views/experiment/reportAuditing/index.vue +++ b/src/views/experiment/reportAuditing/index.vue @@ -78,7 +78,7 @@ </span> </template></el-table-column > - <el-table-column + <el-table-columne prop="materialName" label="鏍峰搧鍚嶇О" min-width="10%" @@ -86,7 +86,7 @@ <el-table-column prop="status" label="瀹℃壒鐘舵��" min-width="8%" v-model="Auditconclusion"> <template slot-scope="scope"> <span> - <el-tag type="warning">{{ + <el-tag :color="scope.row.status == 0 ? '' : 'rgb(187, 237, 221)'" type="warning">{{ scope.row.status == 0 ? "寰呴�氳繃" : "閫氳繃" }}</el-tag> </span> @@ -109,7 +109,7 @@ title="鍘熷璁板綍瀹℃牳" :visible.sync="checkskipvisible" width="30%" - + > <el-form :model="form"> <el-form-item label="璇烽�夋嫨瀹℃牳缁撴灉:" :label-width="formLabelWidth"> @@ -153,7 +153,7 @@ reportTable: [], page: 1, total: 0, - pageSize: 10, + pageSize: 8, checkskipvisible: false, form:{}, // handleClose:{}, @@ -163,7 +163,7 @@ Auditconclusion:{}, tableRow: {}, - + }; }, created() { @@ -201,9 +201,13 @@ //閫氳繃 async checkskip(row) { console.log(this.tableRow); - this.reportTable[this.tableRow.$index].status=2 + this.reportTable[this.tableRow.$index].status=1 this.transmitData(this.tableRow.row.id) this.checkskipvisible= false + this.$message({ + message: '閫氳繃鎴愬姛', + type: 'success' + }); }, //涓嶉�氳繃 @@ -212,12 +216,16 @@ this.reportTable[this.tableRow.$index].status=0 this.transmitData(this.tableRow.row.id) this.checkskipvisible= false + this.$message({ + message: '寰呴�氳繃', + type: 'warning' + }); }, //瀹℃牳 - async transmitData(id) { - let param={"id":id,"result":1} - let data = await checkApi(param) + async transmitData(id) { + let param={"id":id,"result":2} + let data = await checkApi(param) }, // 鏌ヨ鍒楄〃 async getData() { diff --git a/src/views/inspectionManagement/commissionInspection/addCommision.vue b/src/views/inspectionManagement/commissionInspection/addCommision.vue index bebe006..ce5d9d4 100644 --- a/src/views/inspectionManagement/commissionInspection/addCommision.vue +++ b/src/views/inspectionManagement/commissionInspection/addCommision.vue @@ -1,12 +1,13 @@ <template> - <div class="add_commision"> - <div class="content-main"> - <div class="firstBox"> - <div class="title">濮旀墭淇℃伅</div> - <div class="tableBox"> - <div class="tableBox-header"> - <el-button class="split" @click="dialogueFormVisible = true" type="primary" size="small" style="background-color: rgb(1, 102, 226);">娣诲姞鏍峰搧</el-button> -<!-- <el-input + <div class="add_commision"> + <div class="content-main"> + <div class="firstBox"> + <div class="title">濮旀墭淇℃伅</div> + <div class="tableBox"> + <div class="tableBox-header"> + <el-button class="split" @click="dialogueFormVisible = true" type="primary" size="small" + style="background-color: rgb(1, 102, 226);">娣诲姞鏍峰搧</el-button> + <!-- <el-input v-model="searchData" class="input-form split" placeholder="鎵弿浜岀淮鐮佸綍鍏ユ牱鍝�..." @@ -14,537 +15,493 @@ style="width: 200px;" > </el-input>--> - <el-button type="primary" size="small" style="background-color: rgb(1, 102, 226);">閲嶇疆</el-button> - </div> - <el-table - ref="detectionInfo" - :max-height="800" - :cell-style="{textAlign: 'center'}" - :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}" - :data="detectionInfo" - style="width: 100%" - > - <el-table-column - type="index" - label="搴忓彿" - min-width="10%" - /> - <el-table-column - prop="sampleNumber" - label="鏍峰搧缂栧彿" - min-width="8%" - /> - <el-table-column - prop="sampleName" - label="鏍峰搧鍚嶇О" - min-width="10%" - /> - <el-table-column - prop="specificationsModels" - label="瑙勬牸鍨嬪彿" - min-width="10%" - /> - <el-table-column - prop="unit" - label="鍗曚綅" - min-width="8%" - /> - <el-table-column - prop="samplesNumber" - label="鏁伴噺" - min-width="8%" - /> - <el-table-column - prop="addway" - label="娣诲姞鏂瑰紡" - min-width="8%"> - <template slot-scope="scope"> - <div v-if="scope.row.addway === 0"> - <el-tag :type= 'success' disable-transitions>鎵弿</el-tag> - </div> - <div v-if="scope.row.addway === 1"> - <el-tag :type= 'primary' disable-transitions>褰曞叆</el-tag> - </div> - <div v-else></div> - </template> - </el-table-column> - <el-table-column - prop="experiment" - label="璇曢獙" - min-width="8%" - /> - <el-table-column - prop="remarks" - label="澶囨敞" - min-width="8%" - /> - <el-table-column - label="鎿嶄綔" - min-width="8%" - > - <template slot-scope="scope"> - <el-button type="text" size="small">淇敼</el-button> - <el-button type="text" size="small" @click="deleteRow(scope.row)">鍒犻櫎</el-button> - </template> - </el-table-column> - </el-table> - <!-- 鍒嗛〉鍣� --> - <div> - <el-pagination - class="pagination" - @size-change="handleSizeChange" - @current-change="handleCurrentChange" - :current-page="currentPage" - :page-sizes="[100, 200, 300, 400]" - :page-size="100" - layout="total, sizes, prev, pager, next, jumper" - :total="400"> - </el-pagination> - </div> - </div> - <div class="secondBox"> - <el-row class="header"> - <el-col :span="12">鍩烘湰淇℃伅</el-col> - <el-col :span="12" style="text-align: right;"> - <!-- 鐐瑰嚮杩斿洖锛屽綋鍓嶉〉闈㈠�间负false --> - <!-- <el-button type="primary" size="mini" style="background-color: rgb(1, 102, 226); ">鎵撳嵃濮旀墭鍗�</el-button> --> - </el-col> - </el-row> - <el-form :model="infoForm" ref="infoForm" class="infoForm" label-position="right" label-width="100px" size="mini" > - <div class="formwrapper"> - <el-row :gutter="200"> - <el-col :span="5"> - <el-form-item label="濮旀墭缂栧彿锛�"> - <el-input style="width: 160px" type="text" :value="infoForm.commisioncode" readonly disabled="true" autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="濮旀墭鍗曚綅锛�"> - <el-input style="width: 160px" v-model="infoForm.department" placeholder="璇疯緭鍏ュ鎵樺崟浣�" /> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="鑱旂郴浜猴細"> - <el-input style="width: 160px" v-model="infoForm.contacter" placeholder="璇疯緭鍏ュ鎵樺崟浣�" /> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="鑱旂郴鐢佃瘽锛�"> - <el-input style="width: 160px" v-model="infoForm.tel" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" /> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="200"> - <el-col :span="5"> - <el-form-item label="鑱旂郴鍦板潃锛�" > - <el-input style="width: 160px;" v-model="infoForm.address" placeholder="璇疯緭鍏ヨ仈绯诲湴鍧�" autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="瀹屾垚鏈熼檺锛�"> - <el-date-picker - v-model="infoForm.deadline" - type="date" - placeholder="閫夋嫨鏃ユ湡" - style="width: 160px;"> - </el-date-picker> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="閫佹牱鏃堕棿锛�"> - <el-date-picker - v-model="infoForm.time" - type="date" - placeholder="閫夋嫨鏃ユ湡" - style="width: 160px;"> - </el-date-picker> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="閫佹牱鏂瑰紡锛�"> - <el-select style="width: 160px;" v-model="infoForm.way" size="small" placeholder="閫佹牱"> - <el-option v-for="options in sampleDeliveryMode" :key="options.key" :value="options.value">{{ options.value }}</el-option> - </el-select> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="200"> - <el-col :span="5"> - <el-form-item label="閫佹牱浜猴細" > - <el-input style="width: 160px;" v-model="infoForm.sender" placeholder="璇疯緭鍏ラ�佹牱浜�" autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="閫佹牱浜虹數璇濓細" > - <el-input style="width: 160px;" v-model="infoForm.sendertel" placeholder="璇疯緭鍏ラ�佹牱浜虹數璇�" autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="鎶ュ憡鏁帮細"> - <el-input style="width: 160px;" v-model="infoForm.num" placeholder="璇疯緭鍏ユ姤鍛婃暟" autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="5"> - <el-form-item label="濮旀墭澶囨敞锛�"> - <el-input style="width: 160px;" v-model="infoForm.other" placeholder="澶囨敞" autocomplete="off" /> - </el-form-item> - </el-col> - </el-row> - </div> - <div class="submitBtn"> - <el-button type="primary" size="small" @click="submitInspection" style="background-color: rgb(1, 102, 226);">鎻愪氦</el-button> - <!-- 鐐瑰嚮杩斿洖锛屽綋鍓嶉〉闈㈠�间负false --> - <el-button type="primary" size="mini" style="background-color: rgb(1, 102, 226); ">鎵撳嵃濮旀墭鍗�</el-button> - </div> - </el-form> - </div> - </div> - <div class="checkType"> - <el-dialog - title="娣诲姞鎸囨爣" - :visible.sync="dialogueFormVisible" - width="40%" - > - <el-form :model="addPointerForm" ref="addPointerForm" class="addPointerForm" label-position="right" label-width="100px" size="mini"> - <el-row :gutter="50"> - <el-col :span="10"> - <el-form-item label="鏍峰搧缂栧彿锛�"> - <el-select style="width: 160px;" v-model="addPointerForm.sampleNumber" size="small" placeholder="璇烽�夋嫨鏍峰搧缂栧彿"> - <el-option v-for="options in samplecodeoptions" :value="options.value" :key="options.key" >{{ options.value }}</el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="10"> - <el-form-item label="鏍峰搧鍚嶇О锛�"> - <el-select style="width: 160px;" v-model="addPointerForm.sampleName" size="small" placeholder="璇烽�夋嫨鏍峰搧鍚嶇О"> - <el-option v-for="options in sampleoptions" :value="options.value" :key="options.key">{{ options.value }}</el-option> - </el-select> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="50"> - <el-col :span="10"> - <el-form-item label="瑙勬牸鍨嬪彿锛�"> - <el-select style="width: 160px;" v-model="addPointerForm.specificationsModels" size="small" placeholder="璇烽�夋嫨鏍峰搧鍚嶇О"> - <el-option v-for="options in model_spe_options" :value="options.value" :key="options.key">{{ options.value }}</el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="10"> - <el-form-item label="鏍峰搧鍗曚綅锛�"> - <el-input style="width: 160px" type="text" v-model="addPointerForm.unit" placeholder="璇疯緭鍏ュ崟浣�" autocomplete="off" /> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="50"> - <el-col :span="10"> - <el-form-item label="鏍峰搧鏁伴噺锛�"> - <el-input style="width: 160px" type="text" v-model="addPointerForm.samplesNumber" placeholder="璇疯緭鍏ユ暟閲�" autocomplete="off" /> - </el-form-item> - </el-col> - <el-col :span="10"> - <el-form-item label="澶囨敞锛�"> - <el-input style="width: 160px" type="text" v-model="addPointerForm.remarks" placeholder="璇疯緭鍏ュ娉�" autocomplete="off" /> - </el-form-item> - </el-col> - </el-row> - <el-row :gutter="50"> - <el-col :span="10"> - <el-form-item label="娣诲姞瀹為獙锛�"> - <el-checkbox-group v-model="addPointerForm.experiment" style="display: flex; flex-direction: column;"> - <el-checkbox v-for="expers in experList" :label="expers.label" :key="expers.key">{{ expers.label }}</el-checkbox> - </el-checkbox-group> - </el-form-item> - </el-col> - </el-row> - </el-form> - <span slot="footer" class="dialog-footer"> - <el-button type="primary" @click="addInspection">娣诲姞</el-button> - <el-button @click="dialogueFormVisible = false">鍙� 娑�</el-button> - </span> - </el-dialog> - </div> - </div> -</div> + <el-button type="primary" size="small" style="background-color: rgb(1, 102, 226);">閲嶇疆</el-button> + </div> + <el-table ref="detectionInfo" :max-height="800" :cell-style="{textAlign: 'center'}" + :header-cell-style="{border:'0px',background:'#f5f7fa',color:'#606266',boxShadow: 'inset 0 1px 0 #ebeef5',textAlign: 'center'}" + :data="detectionInfo" style="width: 100%;margin-bottom: 20px;"> + <el-table-column type="index" label="搴忓彿" min-width="10%" /> + <el-table-column prop="sampleNumber" label="鏍峰搧缂栧彿" min-width="8%" /> + + <el-table-column prop="sampleName" label="鏍峰搧鍚嶇О" min-width="10%" /> + + <el-table-column prop="specificationsModels" label="瑙勬牸鍨嬪彿" min-width="10%" /> + <el-table-column prop="unit" label="鍗曚綅" min-width="8%" /> + <el-table-column prop="samplesNumber" label="鏁伴噺" min-width="8%" /> + <el-table-column prop="addway" label="娣诲姞鏂瑰紡" min-width="8%"> + <template slot-scope="scope"> + <div v-if="scope.row.addway === 0"> + <el-tag type="success" disable-transitions>鎵弿</el-tag> + </div> + <div v-if="scope.row.addway === 1"> + <el-tag type="primary" disable-transitions>褰曞叆</el-tag> + </div> + <div v-else></div> + </template> + </el-table-column> + <el-table-column prop="remarks" label="澶囨敞" min-width="8%" /> + <el-table-column label="鎿嶄綔" min-width="8%"> + <template slot-scope="scope"> + <el-button type="text" size="small">淇敼</el-button> + <el-button type="text" size="small" @click="deleteRow(scope.row)">鍒犻櫎</el-button> + </template> + </el-table-column> + </el-table> + </div> + <div class="secondBox"> + <el-row class="header"> + <el-col :span="12" style="font-size: 16px;margin-bottom: 5px;">鍩烘湰淇℃伅</el-col> + <el-col :span="12" style="text-align: right;"> + </el-col> + </el-row> + <el-form :model="infoForm" ref="infoForm" class="infoForm" label-position="right" label-width="100px" + size="mini"> + <div class="formwrapper"> + <el-row :gutter="200"> + <el-col :span="5"> + <el-form-item label="濮旀墭缂栧彿锛�"> + <el-input style="width: 200px" type="text" :value="infoForm.commisioncode" readonly disabled + autocomplete="off" size="small" /> + </el-form-item> + </el-col> + <el-col :span="5"> + <el-form-item label="濮旀墭鍗曚綅锛�"> + <el-input style="width: 200px" v-model="infoForm.department" placeholder="璇疯緭鍏ュ鎵樺崟浣�" size="small" /> + </el-form-item> + </el-col> + <el-col :span="5"> + <el-form-item label="鑱旂郴浜猴細"> + <el-input style="width: 200px" v-model="infoForm.contacter" placeholder="璇疯緭鍏ュ鎵樺崟浣�" size="small" /> + </el-form-item> + </el-col> + <el-col :span="5"> + <el-form-item label="鑱旂郴鐢佃瘽锛�"> + <el-input style="width: 200px" v-model="infoForm.tel" placeholder="璇疯緭鍏ヨ仈绯荤數璇�" size="small" /> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="200"> + <el-col :span="5"> + <el-form-item label="鑱旂郴鍦板潃锛�"> + <el-input style="width: 200px;" v-model="infoForm.address" placeholder="璇疯緭鍏ヨ仈绯诲湴鍧�" autocomplete="off" + size="small" /> + </el-form-item> + </el-col> + <el-col :span="5"> + <el-form-item label="瀹屾垚鏈熼檺锛�"> + <el-date-picker v-model="infoForm.deadline" type="date" placeholder="閫夋嫨鏃ユ湡" style="width: 200px;" + size="small"> + </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="5"> + <el-form-item label="閫佹牱鏃堕棿锛�"> + <el-date-picker v-model="infoForm.time" type="date" placeholder="閫夋嫨鏃ユ湡" style="width: 200px;"> + </el-date-picker> + </el-form-item> + </el-col> + <el-col :span="5"> + <el-form-item label="閫佹牱鏂瑰紡锛�"> + <el-select style="width: 200px;" v-model="infoForm.way" size="small" placeholder="閫佹牱"> + <el-option v-for="options in sampleDeliveryMode" :key="options.key" + :value="options.value">{{ options.value }}</el-option> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="200"> + <el-col :span="5"> + <el-form-item label="閫佹牱浜猴細"> + <el-input style="width: 200px;" v-model="infoForm.sender" placeholder="璇疯緭鍏ラ�佹牱浜�" autocomplete="off" + size="small" /> + </el-form-item> + </el-col> + <el-col :span="5"> + <el-form-item label="閫佹牱浜虹數璇濓細"> + <el-input style="width: 200px;" v-model="infoForm.sendertel" placeholder="璇疯緭鍏ラ�佹牱浜虹數璇�" + autocomplete="off" size="small" /> + </el-form-item> + </el-col> + <el-col :span="5"> + <el-form-item label="鎶ュ憡鏁帮細"> + <el-input style="width: 200px;" v-model="infoForm.num" placeholder="璇疯緭鍏ユ姤鍛婃暟" autocomplete="off" + size="small" /> + </el-form-item> + </el-col> + <el-col :span="5"> + <el-form-item label="濮旀墭澶囨敞锛�"> + <el-input style="width: 200px;" v-model="infoForm.other" placeholder="澶囨敞" autocomplete="off" + size="small" /> + </el-form-item> + </el-col> + </el-row> + </div> + <div class="submitBtn"> + <el-button type="primary" size="small" @click="submitInspection" + style="background-color: rgb(1, 102, 226);">鎻愪氦</el-button> + <!-- 鐐瑰嚮杩斿洖锛屽綋鍓嶉〉闈㈠�间负false --> + <el-button type="primary" size="mini" style="background-color: rgb(1, 102, 226); ">鎵撳嵃濮旀墭鍗�</el-button> + </div> + </el-form> + </div> + </div> + <div class="checkType"> + <el-dialog title="娣诲姞鏍峰搧" :visible.sync="dialogueFormVisible" width="40%" top="30vh"> + <el-form :model="addPointerForm" ref="addPointerForm" class="addPointerForm" label-position="right" + label-width="100px" size="mini"> + <el-row :gutter="50"> + <el-col :span="11"> + <el-form-item label="鏍峰搧缂栧彿锛�"> + <el-input v-model="addPointerForm.sampleNumber" size="small" disabled> + </el-input> + </el-form-item> + </el-col> + <el-col :span="11"> + <el-form-item label="鏍峰搧鍚嶇О锛�"> + <el-select v-model="addPointerForm.sampleName" size="small" placeholder="璇烽�夋嫨鏍峰搧鍚嶇О" + @change="upMaterialName"> + <el-option v-for="options in sampleoptions" :value="options.key" :label="options.value"></el-option> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row :gutter="50"> + <el-col :span="11"> + <el-form-item label="璇勫畾鏍囧噯锛�"> + <el-select v-model="addPointerForm.addway" size="small" placeholder="璇烽�夋嫨璇勫畾鏍囧噯"> + <el-option v-for="options in model_spe_options" :value="options.value" + :key="options.key">{{ options.value }}</el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="11"> + <el-form-item label="瑙勬牸鍨嬪彿锛�"> + <el-select v-model="addPointerForm.specificationsModels" size="small" placeholder="璇峰厛閫夋嫨鏍峰搧鍚嶇О"> + <el-option v-for="options in model_spe_options" :value="options.value" + :key="options.key">{{ options.value }}</el-option> + </el-select> + </el-form-item> + </el-col> + + </el-row> + <el-row :gutter="50"> + + <el-col :span="11"> + <el-form-item label="鏍峰搧鍗曚綅锛�"> + <el-input type="text" v-model="addPointerForm.unit" placeholder="璇疯緭鍏ュ崟浣�" autocomplete="off" /> + </el-form-item> + </el-col> + + <el-col :span="11"> + <el-form-item label="鏍峰搧鏁伴噺锛�"> + <el-input type="text" v-model="addPointerForm.samplesNumber" placeholder="璇疯緭鍏ユ暟閲�" autocomplete="off" /> + </el-form-item> + </el-col> + + </el-row> + <el-row :gutter="50"> + <el-col :span="9"> + <el-form-item label="娣诲姞椤圭洰锛�"> + <el-checkbox-group v-model="addPointerForm.experiment" style="display: flex; flex-direction: column;"> + <el-checkbox v-for="expers in experList" :label="expers.label" + :key="expers.key">{{ expers.label }}</el-checkbox> + </el-checkbox-group> + </el-form-item> + </el-col> + <el-col :span="41"> + <el-form-item label="澶囨敞锛�"> + <el-input type="textarea" :autosize="{ minRows: 4, maxRows: 20}" style="width: 200px;" v-model="addPointerForm.remarks" placeholder="璇疯緭鍏ュ娉�" autocomplete="off" /> + </el-form-item> + </el-col> + </el-row> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button type="primary" @click="addInspection">娣诲姞</el-button> + <el-button @click="dialogueFormVisible = false">鍙� 娑�</el-button> + </span> + </el-dialog> + </div> + </div> + </div> </template> <script> -import {getSampleName, getModelSpecification, getlink, addInspection} from '@/api/inspection/commisioninspection' -export default { - data() { - return { - currentPage: 0, - searchData: '', - infoForm: { - commisioncode: '', - department: '', - contacter: '', - tel: '', - address: '', - deadline: '', - time: '', - way: '', - sender: '', - sendertel: '', - num: '', - other: '' - }, - detectionInfo: [], - addPointerForm:{ - sampleNumber: '', - sampleName: '', - specificationsModels: '', - unit: '', - samplesNumber: '', - remarks: '', - experiment: [], - addway: '' - }, - experList:[{ - key: '1', - label: '澶栬妫�鏌�' - },{ - key: '2', - label: '鍔ㄤ綔鐢靛帇璇曢獙' - },{ - key: '3', - label: '鐢甸樆绠℃硠婕忕數娴佽瘯楠�' - },{ - key: '4', - label: '缁濈紭閮ㄥ垎浜ゆ祦鑰愬帇璇曢獙' - }], - sampleoptions:[{ - key:'1', - value: '閫夐」1' - },{ - key:'2', - value: '閫夐」2' - }], - samplecodeoptions:[{ - key:'1', - value: '' - }], - model_spe_options:[{ - key:'1', - value: '閫夐」1' - },{ - key: '2', - value: '閫夐」2' - }], - sampleDeliveryMode:[{ - key: '1', - value: '閫佹牱' - },{ - key: '2', - value: '涓婇棬' - }], - dialogueFormVisible: false, - showDetail: false - } - }, - created(){ - this.getlink() - }, - mounted(){ - this.getSampleName() - this.getModelSpecification() - }, - methods: { - // 鑾峰彇閾炬帴link - getlink(){ - getlink().then((result)=>{ - this.$store.commit('settings/SAVE_LINK',result.data) - console.log(this.$store.state.settings.link) - }) - }, - async getSampleName(){ - const res = await getSampleName() - // console.log('res',res.data) - this.sampleoptions = res.data.map((item)=>{ - return{ - key:item.id.toString(), - value:item.name - } - }) - this.samplecodeoptions = res.data.map((item)=>{ - return{ - key:item.id.toString(), - value:item.code - } - }) - }, - async getModelSpecification(){ - const res = await getModelSpecification({materialId: '1'}) - // console.log(res) - this.model_spe_options = res.data.map((item)=>{ - return{ - key:item.specificationsId, - value:item.specificationsName - } - }) - }, - addInspection(){ - let exper = this.addPointerForm.experiment[0] - this.addPointerForm.addway = 1 - for(let i=1;i<this.addPointerForm.experiment.length;i++){ - exper += ',' + this.addPointerForm.experiment[i] - } - // console.log(exper) - this.addPointerForm.experiment = exper - let tmp = this.addPointerForm - this.detectionInfo.push(tmp) - this.dialogueFormVisible = false - this.addPointerForm ={ - sampleNumber: '', - sampleName: '', - specificationsModels: '', - unit: '', - samplesNumber: '', - remarks: '', - experiment: [], - addway: '' - } - }, - async submitInspection(){ - let sampledeliveryway - if(this.infoForm.way === '閫佹牱'){ - sampledeliveryway = 1 - }else{ - sampledeliveryway = 2 - } - const res = await addInspection({completionDeadline: this.infoForm.deadline, - contactAddress: this.infoForm.address, - contactNumber: this.infoForm.tel, - contacts: this.infoForm.contacter, - entrustRemarks: this.infoForm.other, - entrusted: this.infoForm.department, - inspectionTime: this.infoForm.time, - linkDetectionList: this.detectionInfo, - reportNumber: parseInt(this.infoForm.num), - sampleDeliveryMode: sampledeliveryway, - sampleDeliveryPhone: this.infoForm.sendertel, - sampleSender: this.infoForm.sender}) -// const res = await addInspection({ -// completionDeadline: "2023-08-03", -// contactAddress: "姹熻嫃鍗楅��", -// contactNumber: "12321423432", -// contacts: "灏忛粦", -// entrustRemarks: "濮旀墭澶囨敞YPBH123456789YPBH123456789YPBH123456789", -// entrusted: "闃块噷宸村反", -// inspectionTime: "2023-08-03", -// linkDetectionList: [ -// { -// "experiment": "鍋氭ⅵ", -// "remarks": "閫氳繃浜�", -// "sampleName": "鍙戝姩鏈�", -// "sampleNumber": "YPBH123456789", -// "samplesNumber": 20, -// "specificationsModels": "GGXH-AAAAA", -// "unit": "鐧惧害" -// } -// ], -// reportNumber: 23, -// sampleDeliveryMode: 1, -// sampleDeliveryPhone: "123456789676", -// sampleSender: "灏忕櫧" -// }) - // console.log(res) - this.infoForm.commisioncode = res.data - if(res.data){ - this.$message({ - message: '鎭枩浣�!', - type: 'success' - }) - // 璺宠浆椤甸潰 - this.$router.push('/inspectionManagement/commissionInspection') - this.showDetail = true - }else{ - this.$message.error(res.message) - } - }, - handleSizeChange(pageSize) { - this.pageParams.pageSize = pageSize - }, - handleCurrentChange(pageNo) { - this.pageParams.pageNo = pageNo - }, - deleteRow(row){ - console.log(row) - row = null - } - } -} + import { + getSampleName, + getModelSpecification, + getlink, + addInspection, + isIfViewUUID + } from '@/api/inspection/commisioninspection' + export default { + data() { + return { + currentPage: 0, + searchData: '', + infoForm: { + commisioncode: '', + department: '', + contacter: '', + tel: '', + address: '', + deadline: '', + time: '', + way: '', + sender: '', + sendertel: '', + num: '', + other: '' + }, + detectionInfo: [], + addPointerForm: { + sampleNumber: '', + sampleName: '', + specificationsModels: '', + unit: '', + samplesNumber: '', + remarks: '', + experiment: [], + addway: '' + }, + experList: [{ + key: '1', + label: '澶栬妫�鏌�' + }, { + key: '2', + label: '鍔ㄤ綔鐢靛帇璇曢獙' + }, { + key: '3', + label: '鐢甸樆绠℃硠婕忕數娴佽瘯楠�' + }, { + key: '4', + label: '缁濈紭閮ㄥ垎浜ゆ祦鑰愬帇璇曢獙' + }], + sampleoptions: [{ + key: '1', + value: '閫夐」1' + }, { + key: '2', + value: '閫夐」2' + }], + samplecodeoptions: [{ + key: '1', + value: '' + }], + model_spe_options: [], + sampleDeliveryMode: [{ + key: '1', + value: '閫佹牱' + }, { + key: '2', + value: '涓婇棬' + }], + dialogueFormVisible: false, + showDetail: false, + viewId: null + } + }, + created() { + this.viewId = this.$route.params.viewId + this.$store.commit('settings/SAVE_LINK', this.viewId) + this.getlink(this.$route.params.viewId) + }, + mounted() { + this.getSampleName() + }, + methods: { + getlink(viewId) { + if (viewId == null) { + this.$message.error('褰撳墠閾炬帴涓嶅湪鏈夋晥鏈熷唴,绯荤粺鑷姩鍏抽棴') + this.$router.push('/404') + return + } + isIfViewUUID({ + viewId + }).then(res => { + if (!res.data) { + this.$message.error('褰撳墠閾炬帴涓嶅湪鏈夋晥鏈熷唴,绯荤粺鑷姩鍏抽棴') + this.$router.push('/404') + } + }) + }, + async getSampleName() { + const res = await getSampleName() + this.sampleoptions = res.data.map((item) => { + return { + key: item.id.toString(), + value: item.name, + code: item.code + } + }) + }, + async getModelSpecification(val) { + const res = await getModelSpecification({ + materialId: val + }) + this.model_spe_options = res.data.map((item) => { + return { + key: item.specificationsId, + value: item.specificationsName + } + }) + }, + addInspection() { + let exper = this.addPointerForm.experiment[0] + this.addPointerForm.addway = 1 + for (let i = 1; i < this.addPointerForm.experiment.length; i++) { + exper += ',' + this.addPointerForm.experiment[i] + } + + // console.log(exper) + this.addPointerForm.experiment = exper + let tmp = this.addPointerForm + this.detectionInfo.push(tmp) + this.dialogueFormVisible = false + this.addPointerForm = { + sampleNumber: '', + sampleName: '', + specificationsModels: '', + unit: '', + samplesNumber: '', + remarks: '', + experiment: [], + addway: '' + } + }, + async submitInspection() { + let sampledeliveryway + if (this.infoForm.way === '閫佹牱') { + sampledeliveryway = 1 + } else { + sampledeliveryway = 2 + } + const res = await addInspection({ + completionDeadline: this.infoForm.deadline, + contactAddress: this.infoForm.address, + contactNumber: this.infoForm.tel, + contacts: this.infoForm.contacter, + entrustRemarks: this.infoForm.other, + entrusted: this.infoForm.department, + inspectionTime: this.infoForm.time, + linkDetectionList: this.detectionInfo, + reportNumber: parseInt(this.infoForm.num), + sampleDeliveryMode: sampledeliveryway, + sampleDeliveryPhone: this.infoForm.sendertel, + sampleSender: this.infoForm.sender + }) + this.infoForm.commisioncode = res.data + if (res.data) { + this.$message({ + message: '鎭枩浣�!', + type: 'success' + }) + // 璺宠浆椤甸潰 + this.$router.push('/inspectionManagement/commissionInspection') + this.showDetail = true + } else { + this.$message.error(res.message) + } + }, + handleSizeChange(pageSize) { + this.pageParams.pageSize = pageSize + }, + handleCurrentChange(pageNo) { + this.pageParams.pageNo = pageNo + }, + deleteRow(row) { + + }, + upMaterialName(val) { + this.sampleoptions.forEach(a => { + if (a.key == val) { + this.addPointerForm.sampleNumber = a.code + } + }) + this.getModelSpecification(val) + } + } + } </script> <style lang="scss" scoped> -.add_commision{ - padding: 20px; -} - .content-main{ padding: 20px 40px; background-color: #f0f2f5; width: 100%; height: 100vh; + display: flex; + flex-direction: column; + justify-content: space-between; + // align-items: center; -.firstBox{ - .title { - padding: 15px 10px; - font-size: 18px; - background-color: #0166e2; - color: #fff; - border-radius: 4px; - } - .tableBox{ - background-color: #fff; - padding: 0px 20px; - margin: 0px -15px; - flex: 1; - background: #fff; - /* padding: 20px 20px 10px 20px; */ - display: flex; - flex-direction: column; - .tableBox-header{ - padding: 20px 0px; - .split{ - margin-right: 15px; - } - } - .el-table { - flex: 1; - } - >div:nth-child(3){ - display: flex; - justify-content: end; - margin: 10px 0; - } - } -} -.secondBox{ - margin: 0px -15px; - .header{ - display: flex; - justify-content: space-between; - padding: 10px 20px; - margin-top: 10px; - } - .submitBtn{ - display: flex; - justify-content: end; - margin-right: 40px; - margin-top: 20px; - } -} -.infoForm{ - background-color: #fff; - padding: 20px 50px; - .formwrapper{ - margin: 20px 0px; - padding-left: 30px; - .el-row{ - margin: 10px 0px; - } - } -} -} -</style> + .firstBox { + .title { + padding: 15px 10px; + font-size: 18px; + background-color: #0166e2; + color: #fff; + border-radius: 4px; + margin-bottom: 20px; + } + + .tableBox { + background-color: #fff; + padding: 0px 20px; + flex: 1; + background: #fff; + /* padding: 20px 20px 10px 20px; */ + display: flex; + flex-direction: column; + + .tableBox-header { + padding: 20px 0px; + + .split { + margin-right: 15px; + } + } + + .el-table { + flex: 1; + } + + >div:nth-child(3) { + display: flex; + justify-content: end; + margin: 10px 0; + } + } + } + + .secondBox { + + .header { + display: flex; + justify-content: space-between; + padding: 10px 20px; + margin-top: 10px; + } + + .submitBtn { + display: flex; + justify-content: end; + margin-right: 40px; + margin-top: 20px; + } + } + + .infoForm { + background-color: #fff; + padding: 20px 50px; + + .formwrapper { + margin: 20px 0px; + padding-left: 30px; + + .el-row { + margin: 10px 0px; + } + } + } + } +</style> \ No newline at end of file diff --git a/src/views/inspectionManagement/commissionInspection/index.vue b/src/views/inspectionManagement/commissionInspection/index.vue index a07fdda..b113ca8 100644 --- a/src/views/inspectionManagement/commissionInspection/index.vue +++ b/src/views/inspectionManagement/commissionInspection/index.vue @@ -339,70 +339,71 @@ display: flex; justify-content: space-between; padding: 5px 24px 0px 24px; - } -.top-bar{ - margin: -25px -15px; - background: #fff; - display: flex; - justify-content: space-between; - padding: 5px 24px 0px 24px; - .sermargin{ - margin-right: 60px; - } - .rightForm{ - display: flex; - justify-content: space-between; - /* background-color: #bfa; */ - height: 40px; - line-height: 40px; - >div{ - padding: 0px 10px; - padding-bottom: 10px; - border:1px solid rgb(8, 156, 230); - margin-right: 10px; - /* height: 40px; + .sermargin { + margin-right: 60px; + } + + .rightForm { + display: flex; + justify-content: space-between; + /* background-color: #bfa; */ + height: 40px; + line-height: 40px; + + >div { + padding: 0px 10px; + padding-bottom: 10px; + border: 1px solid rgb(8, 156, 230); + margin-right: 10px; + /* height: 40px; line-height: 40px; */ - } - .rightBtn{ - background-color: rgb(1, 102, 226); - } - } - } + } -.library-table{ - background-color: #fff; - flex: 1; - margin: 0px -15px; - margin-top: 40px; - display: flex; - flex-direction: column; - .table-header{ - padding: 20px; - display: flex; - justify-content: space-between; - .el-form-item{ - margin-bottom: 30px !important; - } - } - .table-box{ - padding: 0px 20px; - margin-top: 0px; - flex: 1; - background: #fff; - /* padding: 20px 20px 10px 20px; */ - display: flex; - flex-direction: column; - .el-table { - flex: 1; - } - >div:nth-child(2){ - display: flex; - justify-content: end; - margin: 10px 0; - } - } - } + .rightBtn { + background-color: rgb(1, 102, 226); + } + } + } + + .library-table { + background-color: #fff; + flex: 1; + margin: 0px -15px; + margin-top: 40px; + display: flex; + flex-direction: column; + + .table-header { + padding: 20px; + display: flex; + justify-content: space-between; + + .el-form-item { + margin-bottom: 30px !important; + } + } + + .table-box { + padding: 0px 20px; + margin-top: 0px; + flex: 1; + background: #fff; + /* padding: 20px 20px 10px 20px; */ + display: flex; + flex-direction: column; + + .el-table { + flex: 1; + } + + >div:nth-child(2) { + display: flex; + justify-content: end; + margin: 10px 0; + } + } + } .rightBtn { background-color: rgb(1, 102, 226); diff --git a/src/views/inspectionManagement/reportForInspection/index.vue b/src/views/inspectionManagement/reportForInspection/index.vue index e48728d..a2d7b1e 100644 --- a/src/views/inspectionManagement/reportForInspection/index.vue +++ b/src/views/inspectionManagement/reportForInspection/index.vue @@ -123,13 +123,13 @@ min-width="8%" /> <el-table-column - prop="condition" + prop="type" label="鐘舵��" min-width="8%" > <template slot-scope="scope"> - <span :style="{ color: scope.row.condition === 1 ? 'green' : 'red' }"> - {{ scope.row.condition === 1 ? '宸叉娴�':'鏈娴�' }} + <span :style="{ color: scope.row.type === 1 ? 'green' : 'red' }"> + {{ scope.row.type === 1 ? '宸叉娴�':'鏈娴�' }} </span> </template> </el-table-column> @@ -386,6 +386,7 @@ // console.log(res) this.inspectionTable = res.data.row this.data = res.data.row + console.log(res.data.row); this.total = res.data.total }, async search(){ diff --git a/src/views/laboratory/organizational/index.vue b/src/views/laboratory/organizational/index.vue index b25fa6a..b44012b 100644 --- a/src/views/laboratory/organizational/index.vue +++ b/src/views/laboratory/organizational/index.vue @@ -23,9 +23,15 @@ type="primary" size="small" icon="el-icon-circle-plus-outline" + @click="dialogVisible = true" >鏂板</el-button > - <el-button size="small" icon="el-icon-delete-solid">鍒犻櫎</el-button> + <el-button + size="small" + icon="el-icon-delete-solid" + @click="listDeleteClick" + >鍒犻櫎</el-button + > </div> </div> <div class="table-main-div"> @@ -39,27 +45,84 @@ @selection-change="handleSelectionChange" > <el-table-column type="selection" width="55"> </el-table-column> - <el-table-column label="鏃ユ湡" width="120"> - <template slot-scope="scope">{{ scope.row.date }}</template> - </el-table-column> - <el-table-column prop="name" label="濮撳悕" width="120"> - </el-table-column> - <el-table-column prop="address" label="鍦板潃" show-overflow-tooltip> + <el-table-column + label="搴忓彿" + type="index" + width="70" + ></el-table-column> + <el-table-column prop="department" label="閮ㄩ棬"> </el-table-column> + <el-table-column label="鎿嶄綔"> + <template scope="scope"> + <el-button type="text" size="mini" @click="updateClick(scope)" + >缂栬緫</el-button + > + <el-button type="text" size="mini" @click="deleteClick(scope)" + >鍒犻櫎</el-button + > + </template> </el-table-column> </el-table> </div> </div> + <el-dialog + :title="isUpdate ? '鏇存柊閮ㄩ棬鍚嶇О' : '鏂板閮ㄩ棬'" + :visible.sync="dialogVisible" + width="30%" + > + <el-form + :model="formData" + :rules="rules" + ref="ruleForm" + class="elFormClass" + > + <el-form-item label="涓婄骇閮ㄩ棬锛�" prop="name" style="padding-left: 10px"> + <el-input + v-model="treeNodeData.department" + :disabled="true" + style="width: 81.3%" + > + </el-input> + </el-form-item> + <el-form-item + label="閮ㄩ棬鍚嶇О锛�" + prop="department" + style="padding-top: 20px" + > + <el-input + placeholder="璇疯緭鍏ラ儴闂ㄥ悕绉�" + v-model="formData.department" + clearable + style="width: 80%" + > + </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="saveForm">{{ + isUpdate ? "鏇� 鏂�" : "鏂� 澧�" + }}</el-button> + </span> + </el-dialog> </div> </template> <script> -import { getOrganizationalApi } from "@/api/laboratory/organizational"; +import { + getOrganizationalApi, + getTableInitializationApi, + organizationalAddApi, + organizationalUpdateApi, + organizationalDeleteApi, +} from "@/api/laboratory/organizational"; export default { name: "Organizational", data() { return { filterText: "", + dialogVisible: false, msg: "", + isUpdate: false, data: [], // tree鏍戦粯璁ゅ�奸厤缃� defaultProps: { @@ -67,28 +130,24 @@ label: "department", id: "id", }, - tableData: [ - { - date: "2016-05-02", - name: "鐜嬪皬铏�", - address: "涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1518 寮�", - }, - { - date: "2016-05-04", - name: "鐜嬪皬铏�", - address: "涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1517 寮�", - }, - { - date: "2016-05-01", - name: "鐜嬪皬铏�", - address: "涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1519 寮�", - }, - { - date: "2016-05-03", - name: "鐜嬪皬铏�", - address: "涓婃捣甯傛櫘闄�鍖洪噾娌欐睙璺� 1516 寮�", - }, - ], + formData: { + fatherId: "", + department: "", + }, + // 鏂板鎸夐挳閲岄潰绂佹杈撳叆妗嗘暟鎹� + disabledInputShow: "", + // 淇濆瓨鐐瑰嚮鑺傜偣鏁版嵁 + treeNodeData: {}, + // 澶氶�夊垹闄� + listDelete: [], + // 琛ㄦ牸鏁版嵁 + tableData: [], + rules: { + department: [ + { required: true, message: "璇疯緭鍏ユ椿鍔ㄥ悕绉�", trigger: "blur" }, + { min: 1, max: 25, message: "闀垮害鍦� 1 鍒� 5 涓瓧绗�", trigger: "blur" }, + ], + }, }; }, methods: { @@ -101,6 +160,13 @@ treeInitialization() { getOrganizationalApi().then((res) => { this.data = res.data; + // 鍒濆鍖栭粯璁sg鎻愮ず璺緞涓虹涓�鑺傜偣鍚嶇О + this.msg = res.data[0].department; + // 鍒濆鍖栬皟鐢ㄨ〃鏍兼帴鍙� + this.tableInitialization(res.data[0].id); + // 鍒濆鍖栦繚瀛樼涓�鑺傜偣鏁版嵁 + this.treeNodeData.department = res.data[0].department; + this.treeNodeData.id = res.data[0].id; }); }, // 鑾峰彇鏍戣矾寰� @@ -115,10 +181,14 @@ // 鐐瑰嚮鏍戣妭鐐� handleNodeClick(data, node, element) { this.getParentData(node.parent, node.data.department); - console.log(`output->this.msg`, this.msg); - console.log(`output->data`, data); - console.log(`output->node`, node); - console.log(`output->element`, element); + // 鐢变簬鐐瑰嚮绗竴鑺傜偣鏃犳硶瑙﹀彂getParentData閲岄潰鐨勫垽鏂紝鍙兘棰濆鍒ゆ柇 + if (node.data.id === 0) { + this.msg = node.data.department; + } + // 鐐瑰嚮鑺傜偣鏁版嵁瀛樺偍涓嬫潵 + this.treeNodeData = node.data; + // 鐐瑰嚮瑙﹀彂璇ュ嚱鏁帮紝鏇存柊琛ㄦ牸鏁版嵁 + this.tableInitialization(node.data.id); }, // 鏀瑰彉澶氶�夋鐘舵�� toggleSelection(rows) { @@ -132,7 +202,71 @@ }, // 鐐瑰嚮澶氶�夋浠ュ悗鐨勬搷浣� handleSelectionChange(val) { - this.multipleSelection = val; + this.listDelete = [] + val.forEach((v) => { + this.listDelete.push(v.id); + }); + }, + // 鍒濆鍖栬〃鏍兼暟鎹� + tableInitialization(departmentId) { + getTableInitializationApi(departmentId).then((res) => { + this.tableData = res.data; + }); + }, + // 鏇存柊涓庢柊澧炶〃鍗� + saveForm() { + this.formData.fatherId = this.treeNodeData.id; + this.$refs.ruleForm.validate((valid) => { + if (valid) { + if (!this.isUpdate) { + organizationalAddApi(this.formData).then((res) => { + this.$message({ + message: res.message, + type: "success", + }); + this.treeInitialization(); + this.dialogVisible = false; + }); + } else { + organizationalUpdateApi(this.formData).then((res) => { + this.$message({ + message: res.message, + type: "success", + }); + this.treeInitialization(); + this.dialogVisible = false; + }); + } + } + }); + }, + // 鐐瑰嚮缂栬緫瑙﹀彂 + updateClick(scope) { + this.dialogVisible = true; + this.isUpdate = true; + this.formData.id = scope.row.id; + this.formData.fatherId = this.treeNodeData.id; + this.formData.department = scope.row.department; + }, + // 琛ㄦ牸涓殑鍒犻櫎鎸夐挳 + deleteClick(scope) { + organizationalDeleteApi(scope.row.id).then((res) => { + this.$message({ + message: res.message, + type: "success", + }); + this.treeInitialization(); + }); + }, + // 澶撮儴澶氶�夊垹闄� + listDeleteClick() { + organizationalDeleteApi(this.listDelete).then((res) => { + this.$message({ + message: res.message, + type: "success", + }); + this.treeInitialization(); + }); }, }, mounted() { @@ -141,6 +275,15 @@ watch: { filterText(val) { this.$refs.tree.filter(val); + }, + dialogVisible: { + handler(newVal, oldVal) { + if (newVal == false) { + this.isUpdate = false; + this.formData = {}; + this.$refs.ruleForm.resetFields(); + } + }, }, }, }; @@ -187,4 +330,7 @@ font-weight: 500; color: #999999; } +.elFormClass .el-form-item__error { + padding-left: 90px; +} </style> diff --git a/src/views/laboratory/personnel/index.vue b/src/views/laboratory/personnel/index.vue index 26998b3..4259f2f 100644 --- a/src/views/laboratory/personnel/index.vue +++ b/src/views/laboratory/personnel/index.vue @@ -1,5 +1,5 @@ <template> - <div class="personnel-main "> + <div class="personnel-main"> <div class="page-header-search"> <div class="search-bar"> <el-form ref="form" :inline="true"> @@ -10,74 +10,197 @@ </el-form-item> <el-form-item> <el-button type="primary" @click="getData()">鏌ヨ</el-button> - <el-button type="primary" plain @click="resetData()">閲嶇疆</el-button> + <el-button type="primary" plain @click="resetData()" + >閲嶇疆</el-button + > <!-- <el-button type="text">楂樼骇鎼滅储<i class="el-icon-arrow-down el-icon--right" /></el-button> --> </el-form-item> </el-form> </div> <div class="serve-btn"> - <el-button type="primary" icon="el-icon-plus" @click="dialogFormVisible = true">鏂板浜哄憳</el-button> + <el-button + type="primary" + icon="el-icon-plus" + @click="dialogFormVisible = true" + >鏂板浜哄憳</el-button + > - <el-dialog title="鏂板浜哄憳" :visible.sync="dialogFormVisible" width="30%"> - <el-form :model="form" :rules="rules"> - <el-form-item label="璐﹀彿" :label-width="formLabelWidth" prop="account"> - <el-input v-model="form.account" autocomplete="off" /> + <el-dialog + :title="isUpdate == true ? '鏇存柊浜哄憳淇℃伅' : '鏂板浜哄憳'" + :visible.sync="dialogFormVisible" + width="30%" + > + <el-form :model="form" ref="form" :rules="rules"> + <el-form-item + label="璐﹀彿" + :label-width="formLabelWidth" + prop="account" + > + <el-input v-model="form.account" /> </el-form-item> <el-form-item label="骞撮緞" :label-width="formLabelWidth"> - <el-input v-model="form.age" autocomplete="off" /> + <el-input v-model="form.age" /> </el-form-item> - <el-form-item label="閭" :label-width="formLabelWidth" prop="email"> - <el-input v-model="form.email" autocomplete="off" /> + <el-form-item + label="閭" + :label-width="formLabelWidth" + prop="email" + > + <el-input v-model="form.email" /> </el-form-item> - <el-form-item label="鍚嶅瓧" :label-width="formLabelWidth" prop="name"> - <el-input v-model="form.name" autocomplete="off" /> + <el-form-item + label="鍚嶅瓧" + :label-width="formLabelWidth" + prop="name" + > + <el-input v-model="form.name" /> </el-form-item> - <el-form-item label="鐢佃瘽" :label-width="formLabelWidth" prop="phone"> - <el-input v-model="form.phone" autocomplete="off" /> + <el-form-item + label="鐢佃瘽" + :label-width="formLabelWidth" + prop="phone" + > + <el-input v-model="form.phone" /> </el-form-item> - <el-form-item label="鏉冮檺" :label-width="formLabelWidth" prop="role_id"> - <el-input v-model="form.role_id" autocomplete="off" /> + <el-form-item + label="閮ㄩ棬" + :label-width="formLabelWidth" + required + prop="organizationId" + > + <el-cascader + style="width: 100%" + :options="options" + :props="myProp" + v-model="form.organizationId" + clearable + ></el-cascader> + </el-form-item> + + <el-form-item + label="鏉冮檺" + :label-width="formLabelWidth" + prop="roleId" + > + <el-select + v-model="form.roleId" + clearable + style="100%" + placeholder="璇烽�夋嫨鏉冮檺" + > + <el-option + v-for="item in roleList" + :key="item.id" + :label="item.name" + :value="item.id" + > + </el-option> + </el-select> </el-form-item> </el-form> <div slot="footer" class="dialog-footer"> <el-button @click="dialogFormVisible = false">鍙� 娑�</el-button> - <el-button type="primary" @click="submitForm()">纭� 瀹�</el-button> + <el-button type="primary" @click="submitForm()">{{ + isUpdate == true ? "鏇� 鏂�" : "纭� 瀹�" + }}</el-button> </div> </el-dialog> </div> </div> <div class="content-main"> <div class="personner-table"> - <el-table ref="personnerlTable" :max-height="700" :cell-style="{ textAlign: 'center' }" - :header-cell-style="{ border: '0px', background: '#f5f7fa', color: '#606266', boxShadow: 'inset 0 1px 0 #ebeef5', textAlign: 'center' }" - :data="personnerlTable" style="width: 100%"> + <el-table + ref="personnerlTable" + height="calc(100vh - 240px)" + border + :cell-style="{ textAlign: 'center' }" + :header-cell-style="{ + border: '0px', + background: '#f5f7fa', + color: '#606266', + boxShadow: 'inset 0 1px 0 #ebeef5', + textAlign: 'center', + }" + @filter-change="fnFilterChangeInit" + :data="personnerlTable" + style="width: 100%" + > <el-table-column prop="username" label="瑙掕壊鍚嶇О" min-width="120" /> <el-table-column prop="roleName" label="瑙掕壊鏉冮檺" min-width="120" /> - <el-table-column prop="age" label="骞撮緞" min-width="150" /> + <el-table-column prop="age" label="骞撮緞" min-width="150"> + <template scope="scope"> + {{ + scope.row.age === "" || + scope.row.age === null || + scope.row.age == undefined + ? "---" + : scope.row.age + }} + </template> + </el-table-column> + <el-table-column prop="department" label="閮ㄩ棬" min-width="150" /> <el-table-column prop="createTime" label="鍒涘缓鏃堕棿" min-width="180" /> - <el-table-column prop="phone" label="鐢佃瘽" min-width="200" /> - <el-table-column prop="email" label="閭" min-width="200" /> - <el-table-column prop="jobState" label="鍦ㄨ亴鐘舵��" min-width="120" - :filters="[{ text: 0, value: 0 }, { text: 1, value: 1 }]" :filter-method="filterTag" - filter-placement="bottom-end"> + <el-table-column prop="phone" label="鐢佃瘽" min-width="200"> + <template scope="scope"> + {{ + scope.row.phone === "" || scope.row.phone === undefined + ? "---" + : scope.row.phone + }} + </template> + </el-table-column> + <el-table-column prop="email" label="閭" min-width="200"> + <template scope="scope"> + {{ + scope.row.email === "" || scope.row.email === undefined + ? "---" + : scope.row.email + }} + </template> + </el-table-column> + <el-table-column + prop="jobState" + label="鍦ㄨ亴鐘舵��" + min-width="120" + :filters="[ + { text: '鍦ㄨ亴', value: 1 }, + { text: '绂诲矖', value: 0 }, + ]" + column-key="status" + :filter-method="filterTag" + filter-placement="bottom-end" + > <template slot-scope="scope"> - <el-tag :type="scope.row.jobState === 0 ? 'danger' : 'success'" disable-transitions>{{ - scope.row.jobState === 0 ? '绂诲矖' : '鍦ㄨ亴' }}</el-tag> + <el-tag + :type="scope.row.jobState === 0 ? 'danger' : 'success'" + disable-transitions + >{{ scope.row.jobState === 0 ? "绂诲矖" : "鍦ㄨ亴" }}</el-tag + > </template> </el-table-column> <el-table-column label="鎿嶄綔" min-width="120"> <template slot-scope="scope"> - <el-button type="text" size="small" @click="handleClick(scope.row)">缂栬緫</el-button> - <!-- <el-button type="text" size="small">缂栬緫</el-button> --> + <el-button + type="text" + size="small" + @click="handleClick(scope.row)" + >缂栬緫</el-button + > </template> </el-table-column> </el-table> <div> <!-- 鍒嗛〉鍣� --> - <el-pagination :current-page="currentPage" :page-sizes="[100, 200, 300, 400]" :page-size="pageSize" - layout="total, sizes, prev, pager, next, jumper" :total="this.personnerlTable.length" - @size-change="handleSizeChange" @current-change="handleCurrentChange" /> + <el-pagination + :current-page="currentPage" + :page-sizes="[10, 15, 20, 25]" + :page-size="pageSize" + layout="total, sizes, prev, pager, next, jumper" + :total="total" + @size-change="handleSizeChange" + @current-change="handleCurrentChange" + /> </div> </div> </div> @@ -85,15 +208,15 @@ </template> <script> -import { get, post } from '@/api/util/requestUtil'; -import urlInfo from '../../../api/urlEnum/personnel.js' +import { get, post, put } from "@/api/util/requestUtil"; +import urlInfo from "../../../api/urlEnum/personnel.js"; +import { getOrganizationalApi } from "@/api/laboratory/organizational"; export default { data() { return { - keyword: '', - personnerlTable: [ - - ], + keyword: "", + roleList: "", + personnerlTable: [], filteredpersonnerlTable: [], currentindex: 1, currentPage: 1, // 褰撳墠椤电爜 @@ -102,108 +225,224 @@ personData: [], // 鐢ㄦ潵瀛樻斁鎺ュ彛浼犺繃鏉ョ殑浜哄憳鍒楄〃鏁版嵁 dialogFormVisible: false, form: { - account: '', - age: '', - email: '', - name: '', - phone: '', - role_id: '' + account: "", + age: "", + email: "", + name: "", + phone: "", + organizationId: "", + roleId: "", }, - formLabelWidth: '100px', + myProp: { + value: "id", + label: "department", + checkStrictly: true, //鍏佽閫夋嫨浠绘剰涓�鑺� + }, + formLabelWidth: "100px", rules: { account: [ { - required: true, message: '璇疯緭鍏ヨ处鍙�', trigger: 'blur' - } + required: true, + message: "璇疯緭鍏ヨ处鍙�", + trigger: "blur", + }, ], - name: [{ - required: true, message: '璇疯緭鍏ュ悕瀛�', trigger: 'blur' - }], + name: [ + { + required: true, + message: "璇疯緭鍏ュ悕瀛�", + trigger: "blur", + }, + ], phone: [ // { required: true, message: '璇疯緭鍏�11浣嶇數璇濆彿鐮�', trigger: 'blur' }, - { pattern: /^1[34578]\d{9}$/, message: '闈炴硶鎵嬫満鍙风爜', trigger: 'blur' } + { + pattern: /^1[3456789]\d{9}$/, + message: "闈炴硶鎵嬫満鍙风爜", + trigger: ["blur", "change"], + }, ], email: [ // { required: true, message: '璇疯緭鍏ラ偖绠卞湴鍧�', trigger: 'blur' }, - { type: 'email', message: '闈炴硶閭鍦板潃', trigger: ['blur', 'change'] } + { + type: "email", + message: "闈炴硶閭鍦板潃", + trigger: ["blur", "change"], + }, ], - role_id: [ - { required: true, message: '璇疯緭鍏ユ潈闄�(0鎴�1)', trigger: 'blur' } - - ] - } - } + organizationId: [ + { + required: true, + type: "array", + message: "璇烽�夋嫨閮ㄩ棬", + trigger: "change", + }, + ], + roleId: [ + { required: true, message: "璇疯緭鍏ユ潈闄�(0鎴�1)", trigger: "blur" }, + ], + }, + options: [], + status: "", + isUpdate: false, + }; }, mounted() { - this.getData() + this.getData(); + this.getTreeData(); }, methods: { // 姣忛〉鏉℃暟鏀瑰彉鏃惰Е鍙� 閫夋嫨涓�椤垫樉绀哄灏戣 handleSizeChange(val) { - console.log(`姣忛〉 ${val} 鏉) - this.currentPage = 1 - this.pageSize = val + console.log(`姣忛〉 ${val} 鏉); + this.currentPage = 1; + this.pageSize = val; }, - filterTag() { - console.log(11); + filterTag(value) { + this.status = ""; + this.status = value; + return true; }, // 褰撳墠椤垫敼鍙樻椂瑙﹀彂 璺宠浆鍏朵粬椤� handleCurrentChange(val) { - console.log(`褰撳墠椤�: ${val}`) - this.currentPage = val + console.log(`褰撳墠椤�: ${val}`); + this.currentPage = val; }, async getData() { let data = { pageNo: 0, - pageSize: 20, - name: this.keyword - } + pageSize: 10, + name: this.keyword, + status: this.status, + }; let res = await get(urlInfo.url.list_new_personnel, data); - this.personnerlTable=res.data.row - this.total=res.data.total + this.personnerlTable = res.data.row; + this.total = res.data.total; }, searchData() { this.filteredpersonnerlTable = this.personnerlTable.filter((item) => { - return item.username === this.keyword - } - ) - this.personnerlTable = this.filteredpersonnerlTable + return item.username === this.keyword; + }); + this.personnerlTable = this.filteredpersonnerlTable; }, resetData() { - // console.log("111111") - this.personnerlTable = this.personData - this.keyword = '' + this.personnerlTable = this.personData; + this.keyword = ""; + this.status = ""; + this.getData(); }, // 鎻愪氦鏂板浜哄憳琛ㄥ崟 submitForm() { - // Handle form submission here - // console.log(this.form); - // POST璇锋眰 this.$refs.form.validate((valid) => { if (valid) { - this.dialogFormVisible = false - axios.post('/user/add_new_personnel', this.form) - .then(response => { - console.log(response) - // this.dialogVisible = false; - }) - .catch(error => { - console.error(error) - }) + let departmentId = this.form.organizationId; + this.form.organizationId = departmentId[departmentId.length - 1]; + if (!this.isUpdate) { + post("/user/add_new_personnel", this.form).then((response) => { + this.$message({ + message: response.message, + type: "success", + }); + this.dialogFormVisible = false; + this.getData(); + }); + } else { + put("/user/update_new_personnel", this.form).then((res) => { + this.$message({ + message: res.message, + type: "success", + }); + this.dialogFormVisible = false; + this.getData(); + }); + } } else { - console.log('error submit!!') - return false + console.log("error submit!!"); + return false; } - }) + }); }, - } + // 娓呯┖Cascader绌虹櫧 + clearCascaderBlank(list) { + list.forEach((i) => { + if (i.children.length === 0) { + i.children = undefined; + } else { + this.clearCascaderBlank(i.children); + } + }); + }, + fnFilterChangeInit() { + this.personData = []; + this.getData(); + }, + /* + * @param list 鏁版嵁鍒楄〃 + * @param id 鍚庣杩斿洖鐨刬d + **/ + getParentsById(list, id) { + for (let i in list) { + if (list[i].id == id) { + return [list[i].id]; + } + if (list[i].children) { + let node = this.getParentsById(list[i].children, id); + if (node !== undefined) { + //鏌ヨ鍒版妸鐖惰妭鎶婄埗鑺傜偣鍔犲埌鏁扮粍鍓嶉潰 + node.unshift(list[i].id); + return node; + } + } + } + }, -} + handleClick(row) { + this.isUpdate = true; + this.dialogFormVisible = true; + this.form.name = row.username; + this.form.roleName = row.roleName; + this.form.phone = row.phone; + this.form.id = row.id; + this.form.email = row.email; + this.form.organizationId = this.getParentsById( + this.options, + row.departmentId + ); + this.form.roleId = row.roleName; + this.form.age = row.age; + this.form.account = row.account; + }, + getTreeData() { + getOrganizationalApi().then((res) => { + this.options = res.data[0].children; + this.clearCascaderBlank(this.options); + }); + }, + getRoleList() { + get("/user/list").then((res) => { + console.log(`output->res`, res); + this.roleList = res.data; + }); + }, + }, + watch: { + dialogFormVisible: { + handler(newVal, oldVal) { + if (newVal == false) { + this.isUpdate = false; + this.form = {}; + this.$refs.form.resetFields(); + } else { + this.getRoleList(); + } + }, + }, + }, +}; </script> <style lang="scss" scoped> .personnel-main { - // width: 100%; // height: 100%; .page-header-search { @@ -229,7 +468,7 @@ background: #fff; padding: 20px 20px 10px 20px; - >div:nth-child(2) { + > div:nth-child(2) { display: flex; justify-content: end; margin: 10px 0; diff --git a/src/views/standardLibrary/index.vue b/src/views/standardLibrary/index.vue index 6070828..5c69021 100644 --- a/src/views/standardLibrary/index.vue +++ b/src/views/standardLibrary/index.vue @@ -25,6 +25,16 @@ <div class="table-header"> <div class="serve-btn"> <span class="tipMsg">{{ msg !== "" ? msg : "" }}</span> + <el-select v-model="versionValue" @change="changeSelect" placeholder="璇烽�夋嫨鐗堟湰鍙�"> + <el-option + v-for="item in options" + :key="item.value" + :label="item.label" + :value="item.value" + > + </el-option> + </el-select> + <el-button type="primary" @click="addVersionFun">鏂板鐗堟湰鍙�</el-button> <el-button type="primary" icon="el-icon-plus" @@ -44,13 +54,14 @@ <el-table :data="tableData" style="width: 100%; margin-bottom: 20px" - row-key="name" + row-key="id" border height="calc(100vh - 250px)" default-expand-all ref="multipleTable" @select="selectTr" @select-all="selectAll" + @selection-change="handleSelectionChange" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" > <el-table-column type="selection" label="搴忓彿"> </el-table-column> @@ -160,12 +171,16 @@ addSpecifications, deleteListApi, blurUpdateApi, + getVersion, + addVersion } from "@/api/standardLibrary"; import { selectproductModelApi } from "@/api/basicData/index"; export default { data() { return { + options:[], + versionValue: '', deleteList: [], msg: "", isAllSelect: false, @@ -198,7 +213,48 @@ created() { this.getStandardTree(); }, + mounted(){ + + }, methods: { + async initSelect(){ + this.options = []; + this.versionValue = ""; + const response = await getVersion({"specificationsId":this.selectData.id}); + if(response.code===200 && response.data.length>0){ + this.getTableByClick(this.selectData,response.data[0]) + for(let i=0;i<response.data.length;i++){ + this.options.push({ + value: response.data[i], + label: "V" + response.data[i] + }) + this.versionValue = response.data[0]; + } + } + }, + changeSelect(){ + this.tableData = []; + this.getTableByClick(this.selectData,this.versionValue); + }, + async insertVersion(){ + const resp = await addVersion({"specificationsId":this.selectData.id}); + if(resp.code===200){ + this.initSelect(); + this.$message({ + type: 'success', + message: resp.message + }); + } + }, + addVersionFun() { + this.$confirm('纭娣诲姞鏂扮殑鐗堟湰鍙峰悧?', '鎻愮ず', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + this.insertVersion(); + }).catch(() => {}); + }, filterNode(value, data) { if (!value) return true; return data.name.indexOf(value) !== -1; @@ -252,7 +308,8 @@ this.getParentData(node.parent, node.data.name); // 瀛樹笅閫変腑鑺傜偣 this.selectData = data; - this.getTableByClick(data); + this.getTableByClick(data,this.versionValue); + this.initSelect(); } if (!("children" in data)) { return; @@ -267,9 +324,10 @@ this.getParentData(node.parent, this.msg); } }, - async getTableByClick(data) { + async getTableByClick(data,versionVal) { await getProductList({ specificationsId: data.id, + version: versionVal }).then((res) => { res.data.forEach((i) => { if (i.name === undefined) { @@ -345,13 +403,12 @@ this.$message.error("娣诲姞澶辫触"); } - console.log(res); this.$message.success("娣诲姞鎴愬姛"); this.addTreeForm = { addTypeArr: [], }; this.getStandardTree(); - this.getTableByClick(this.selectData); + this.getTableByClick(this.selectData,this.versionValue); }, changeCascader(data) { this.addTreeForm.addTypeArr = data; @@ -400,20 +457,6 @@ this.isAllSelect = !this.isAllSelect; let data = this.tableData; this.toggleSelect(data, this.isAllSelect, "all"); - // 鑷畾涔� - if (this.isAllSelect) { - val.forEach((i) => { - if (i.id !== undefined) { - this.deleteList.push(i.id); - } else { - i.children.forEach((c) => { - this.deleteList.push(c.id); - }); - } - }); - } else { - this.deleteList.splice(0, this.deleteList.length); - } }, //閫夋嫨鏌愯 selectTr(selection, row) { @@ -422,33 +465,6 @@ this.isAllSelect = row.isChecked; this.toggleSelect(row, row.isChecked, "tr"); }); - - if (row.isChecked === true) { - if (row.children !== undefined) { - row.children.forEach((i) => { - this.deleteList.push(i.id); - }); - } else { - this.deleteList.push(row.id); - } - } else if (row.isChecked === false) { - if (row.children !== undefined) { - row.children.forEach((i) => { - this.deleteList.findIndex((c, index) => { - if (c === i.id) { - this.deleteList.splice(index, 1); - return; - } - }); - }); - } - this.deleteList.findIndex((c, index) => { - if (c === row.id) { - this.deleteList.splice(index, 1); - return; - } - }); - } }, //閫掑綊瀛愮骇 toggleSelect(data, flag, type) { @@ -482,6 +498,15 @@ } }); }, + handleSelectionChange(val) { + this.deleteList = [] + val.forEach((v) => { + if(v.id !== undefined){ + this.deleteList.push(v.id) + } + }) + console.log(`output->this.deleteList`,this.deleteList) + }, // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆 缁撴潫 deleteListClick() { deleteListApi(this.deleteList).then((res) => { @@ -489,7 +514,7 @@ message: res.message, type: "success", }); - this.getTableByClick(this.selectData); + this.getTableByClick(this.selectData,this.versionValue); }); }, async requiredOnfocus(scope) { @@ -504,7 +529,7 @@ message: res.message, type: "success", }); - this.getTableByClick(this.selectData); + this.getTableByClick(this.selectData,this.versionValue); }); }, }, @@ -640,6 +665,9 @@ width: 100%; padding-bottom: 6px; text-align: right; + .el-select{ + margin-right:10px; + } } .tipMsg { float: left; diff --git a/src/views/template_testReport/index.vue b/src/views/template_testReport/index.vue new file mode 100644 index 0000000..575e579 --- /dev/null +++ b/src/views/template_testReport/index.vue @@ -0,0 +1,651 @@ +<template> + <div class="content-wrapper"> + <div class="content-main"> + <div class="cover"> + <div class="cover-top"> + <div> + <div style="height: 30px; line-height: 30px;">鎶ュ憡缂栧彿:</div> + <div style="height: 30px; line-height: 30px;">Reference No:</div> + </div> + </div> + <div class="title"> + <h1 style="text-align-last:justify ;">妫�楠屾姤鍛�</h1> + <h1>Test Report</h1> + </div> + <div class="cover-body"> + <div class="name"> + <div style="width:140px; text-align-last: justify;"> + <div>璇曟牱鍚嶇О</div> + <span style="font-size: 14px;">Name of Product</span> + </div> + <div class="line"> 娴嬭瘯鍚嶇О</div> + </div> + <div class="name"> + <div style="width:140px; text-align-last: justify;"> + <div style="text-align-last: justify;">鍨嬪彿</div> + <span style="font-size: 14px;">Type and Size</span> + </div> + <div class="line"> 娴嬭瘯鍚嶇О</div> + </div> + <div class="name"> + <div style="width:140px; text-align-last: justify;"> + <div>濮旀墭鍗曚綅</div> + <span style="font-size: 14px;display: block;margin: 10px 50px 0px;">Client</span> + </div> + <div class="line"> 娴嬭瘯鍚嶇О</div> + </div> + <div class="name"> + <div style="width:140px; text-align-last: justify;"> + <div>妫�楠岀被鍒�</div> + <span style="font-size: 14px;">Kind of Test</span></div> + <div class="line"> 娴嬭瘯鍚嶇О</div> + </div> + </div> + <div class="cover-footer"> + <span>姹熻嫃涓ぉ绉戞妧鑲′唤鏈夐檺鍏徃妫�娴嬩腑蹇�</span><br> + <span style="font-size: 14px;">TEST CENTER OF JIANGSU ZHONGTIAN TECHNOLOGY CO.,LTD</span> + </div> + </div> + <div class="pageOne"> + <div class="statement"> + <div><h2>澹版槑</h2></div> + <div style="text-align-last: center;"><h2 style="font-size: 14px;">Statement</h2></div> + </div> + <div class="statement-body"> + <div> + <span>1. 鏈楠屾姤鍛婏紙鍖呮嫭澶嶅嵃浠讹級鏈姞妫�娴嬩笓鐢ㄧ珷涓�寰嬫棤鏁堛��</span><br> + <span>This test report (including any duplicates) shall become effective only with pecial chapter for testing on.</span> + </div> + <div> + <span>2. 鏈楠屾姤鍛婃棤缂栧啓銆佸鏍搞�佹壒鍑嗕汉绛剧珷鏃犳晥銆�</span><br> + <span>This test report shall become effective only with the signatures of compiler checker and approver.</span> + </div> + <div> + <span>3. 鏈楠屾姤鍛婃秱鏀规棤鏁堛��</span><br> + <span>This test report will be invalid if altered.</span> + </div> + <div> + <span>4. 鏈楠屾姤鍛婁笉寰楅儴鍒嗗鍗般��</span><br> + <span>This test report mustn鈥檛 copy partly.</span> + </div> + <div> + <span>5. 閫佹牱濮旀墭妫�楠岋紝浠呭鏉ユ牱璐熻矗銆�</span><br> + <span>For the sample submitted by clients, the test result is valid only for these samples.</span> + </div> + <div> + <span>6. 鏍峰搧鍙婂鎵樺崟浣嶄负濮旀墭鏂硅嚜鍛藉悕銆�</span><br> + <span>Samples and consignor name for the principal.</span> + </div> + <div> + <span>7. 鏈楠屾姤鍛婁腑鑻辨枃鎻忚堪鏈夊啿绐佹椂锛屼互涓枃瑙i噴涓哄噯銆�</span><br> + <span>If the Chinese and English version of the test report have any conflict, the Chinese version should be the standard for arbitrament.</span> + </div> + <div> + <span>8. 濮旀墭鏂瑰鏈楠屾姤鍛婅嫢鏈夊紓璁紝搴斾簬鏍峰搧淇濆瓨鏈熷唴鍚戞湰涓績鎻愬嚭锛岃仈绯荤數璇濓細0513-84885657</span><br> + <span>Clients who have any different ideas about this test report, may contract with Test Central within the sample reservation time. Tel: 0513-84885657</span> + </div> + <div> + <span>9. 鏈腑蹇冩牱鍝佽嚜鎶ュ憡鍙戦�佹棩璧凤紝涓�鑸繚瀛樹竴涓湀锛屼互澶囧楠屻��</span><br> + <span>The sample shall be reserved for one month beginning from the data when this test report is submitted for examine or review.</span> + </div> + </div> + <div class="statement-footer"> + <div class="depart"> + <span>姹熻嫃涓ぉ绉戞妧鑲′唤鏈夐檺鍏徃妫�娴嬩腑蹇�</span><br> + <span>Test Center of Jiangsu Zhongtian Technology Co., LTD</span> + </div> + <div class="address"> + <span>鍦� 鍧�锛氭睙鑻忕渷鍗楅�氬競缁忔祹鎶�鏈紑鍙戝尯鏂板紑鍗楄矾19鍙�</span><br> + <span>Address: No.19 Xinkai South Road, Nantong Economic and Technological Development Zone, Jiangsu Province</span> + </div> + <div class="zipcode">閭斂缂栫爜Zip Code锛�226010</div> + <div class="tel">鐢� 璇漈el锛�0513-89059043</div> + <div class="email">閭� 绠盓-mail:锛歾tttc@chinaztt.com </div> + </div> + </div> + <div class="pageTwo"> + <div class="header" style="line-height: 10px;"> + <div style="width: 350px;margin: 0 auto; text-align-last: justify;"> + <h2 style="font-size: 18px;">姹熻嫃涓ぉ绉戞妧鑲′唤鏈夐檺鍏徃妫�娴嬩腑蹇�</h2> + </div> + <div style="width: 500px; margin: 0 auto;text-align-last: justify;"> + <h2 style="font-size: 14px;">TEST CENTER OF JIANGSU ZHONGTIAN TECHNOLOGY CO.,LTD</h2> + </div> + <div style="width: 120px;margin: 0 auto;text-align-last: justify;"> + <h2 style="font-size: 18px;">妫�娴嬫姤鍛�</h2> + </div> + <div style="width: 100px; margin: 0 auto;text-align-last: justify;"> + <h2 style="font-size: 14px;">Test Report</h2> + </div> + </div> + <div class="table"> + <div class="table-header"> + <div> + <span>鎶ュ憡缂栧彿锛�</span><br> + <span>Reference No锛�</span> + </div> + <div> + <span>绗�1椤靛叡2椤�</span><br> + <span>Page 1 of 2</span> + </div> + </div> + <div class="table-body"> + <table width="100%" border="1" cellspacing="0" style="text-align: center;"> + <tr> + <td><span>璇曟牱鍚嶇О</span><br> + <span>Name of product</span></td> + <td colspan="2"></td> + <td> + <span>瑙勬牸鍨嬪彿</span><br> + <span>Type and size</span> + </td> + <td colspan="2"></td> + </tr> + <tr> + <td> + <span>鏍峰搧鏁伴噺</span><br> + <span>Test item</span> + </td> + <td colspan="2"></td> + <td> + <span>妫�楠岄」鐩�</span><br> + <span>Test item</span> + </td> + <td colspan="2"></td> + </tr> + <tr> + <td> + <span>鏉ユ牱鏂瑰紡</span><br> + <span>Delivering method</span> + </td> + <td colspan="2"></td> + <td> + <span>妫�楠岀被鍨�</span><br> + <span>Type of test</span> + </td> + <td colspan="2"></td> + </tr> + <tr> + <td> + <span>鏍峰搧鐘舵��</span><br> + <span>Sample discription</span> + </td> + <td colspan="2"></td> + <td> + <span>鐢熶骇鍗曚綅</span><br> + <span>Producer</span> + </td> + <td colspan="2"></td> + </tr> + <tr> + <td> + <span>鏀舵牱鏃堕棿</span><br> + <span>Received date</span> + </td> + <td colspan="2"></td> + <td> + <span>妫�楠屾棩鏈�</span><br> + <span>Test date</span> + </td> + <td colspan="2"></td> + </tr> + <tr> + <td> + <span>濮旀墭浜�</span><br> + <span>Consignor</span> + </td> + <td colspan="2"></td> + <td> + <span>鐢佃瘽</span><br> + <span>Tel</span> + </td> + <td colspan="2"></td> + </tr> + <tr> + <td> + <span>濮旀墭鍗曚綅</span><br> + <span>Client</span> + </td> + <td colspan="5"></td> + </tr> + <tr> + <td> + <span>濮旀墭鍗曚綅鍦板潃</span><br> + <span>Address</span> + </td> + <td colspan="5"></td> + </tr> + <tr> + <td> + <span>妫�楠岀幆澧�</span><br> + <span>Test environment</span> + </td> + <td colspan="5"></td> + </tr> + <tr> + <td> + <span>妫�楠屼緷鎹�</span><br> + <span>Test standard</span> + </td> + <td colspan="5"></td> + </tr> + <tr> + <td style="height: 180px;"> + <span>缁撹</span><br> + <span>Conclusion </span> + </td> + <td colspan="5"> + <div style="height: 120px;"></div> + <div style="height: 60px;margin-left: 250px;"> + <span>锛堟娴嬫姤鍛婁笓鐢ㄧ珷锛�</span><br> + <span>( SPECIFIC STAMP FOR TEST RTORT) </span><br> + <span>绛惧彂鏃ユ湡锛� 骞� 鏈� 鏃�</span><br> + <span>Date of issue: August 23, 2023</span> + </div> + </td> + </tr> + <tr> + <td> + <span>澶囨敞</span><br> + <span>Remark </span> + </td> + <td colspan="5"></td> + </tr> + <tr> + <td> + <span>缂栧埗</span><br> + <span>Preparer</span> + </td> + <td colspan="2"></td> + <td> + <span>妫�楠�</span><br> + <span>Tester</span> + </td> + <td colspan="2"></td> + </tr> + <tr> + <td> + <span>瀹℃牳</span><br> + <span>Checker </span> + </td> + <td colspan="2"></td> + <td> + <span>鎵瑰噯</span><br> + <span>Approver</span> + </td> + <td colspan="2"></td> + </tr> + </table> + </div> + </div> + </div> + <div class="pageThree"> + <div class="header" style="line-height: 10px;"> + <div style="width: 350px;margin: 0 auto; text-align-last: justify;"> + <h2 style="font-size: 18px;">姹熻嫃涓ぉ绉戞妧鑲′唤鏈夐檺鍏徃妫�娴嬩腑蹇�</h2> + </div> + <div style="width: 500px; margin: 0 auto;text-align-last: justify;"> + <h2 style="font-size: 14px;">TEST CENTER OF JIANGSU ZHONGTIAN TECHNOLOGY CO.,LTD</h2> + </div> + <div style="width: 120px;margin: 0 auto;text-align-last: justify;"> + <h2 style="font-size: 18px;">妫�娴嬫姤鍛�</h2> + </div> + <div style="width: 100px; margin: 0 auto;text-align-last: justify;"> + <h2 style="font-size: 14px;">Test Report</h2> + </div> + </div> + <div class="table"> + <div class="table-header"> + <div> + <span>鎶ュ憡缂栧彿锛�</span><br> + <span>Reference No锛�</span> + </div> + <div> + <span>绗�2椤靛叡2椤�</span><br> + <span>Page 2 of 2</span> + </div> + </div> + <div class="table-body"> + <table width="100%" border="1" cellspacing="0" style="text-align: center;"> + <tr> + <td colspan="4"> + <span>鏍峰搧缂栧彿</span><br> + <span>Sample No</span></td> + <td colspan="3"></td> + <td colspan="4"> + <span>瑙勬牸鍨嬪彿</span><br> + <span>Type</span> + </td> + <td colspan="3"></td> + </tr> + <tr> + <td> + <span>搴忓彿</span><br> + <span>No</span> + </td> + <td colspan="3"> + <span>妫�楠岄」鐩�</span><br> + <span>Test item</span> + </td> + <td> + <span>鍗曚綅</span><br> + <span>Unit</span> + </td> + <td colspan="3"> + <span>鏍囧噯瑕佹眰</span><br> + <span>Requirement</span> + </td> + <td colspan="3"> + <span>妫�楠岀粨鏋�</span><br> + <span>Test result</span> + </td> + <td> + <span>缁撹</span><br> + <span>Conclusion</span> + </td> + </tr> + <tr> + <td> + <span></span><br> + <span></span> + </td> + <td colspan="3"> + <span>鏍峰搧鏍囪瘑</span><br> + <span>Sample labeling</span> + </td> + <td> + <span></span><br> + <span>I</span> + </td> + <td colspan="3"> + <span></span><br> + <span></span> + </td> + <td colspan="3"> + <span></span><br> + <span></span> + </td> + <td> + <span></span><br> + <span></span> + </td> + </tr> + <tr v-for="item in resultTable" :key="index"> + <td> + <span>{{ item.id }}</span><br> + </td> + <td colspan="3"> + <span>{{ item.testitem }}</span><br> + <span>{{ item.testitem_engName }}</span> + </td> + <td> + <span>{{ item.unit }}</span> + </td> + <td colspan="3"> + <span>{{ item.requirement }}</span><br> + <span>{{ item.requirement_eng }}</span> + </td> + <td colspan="3"> + <span>{{ item.testresult }}</span><br> + <span>{{ item.testresult_engName }}</span> + </td> + <td> + <span>{{ item.conclusion }}</span> + </td> + </tr> + + </table> + </div> + </div> + </div> + <div class="pageFour"> + <div class="page-header" style="display: flex;justify-content: space-between;font-size: 12px;"> + <div> + <span>鎶ュ憡缂栧彿锛�</span><br> + <span>Reference No锛�</span> + </div> + <div> + <span>闄勯〉</span><br> + <span>Appenfix</span> + </div> + </div> + <hr> + <div class="table"> + <div class="table-header"> + <div style="width: 200px; margin: 0 auto;text-align-last: justify;"><h2>妫�楠岃澶囦竴瑙堣〃</h2></div> + <div style="text-align-last: center;"><h2 style="font-size: 14px;">Equipment List</h2></div> + </div> + <div class="table-body"> + <table width="100%" border="1" cellspacing="0" style="text-align: center;"> + <thead> + <tr> + <td> + <span>搴忓彿</span><br> + <span>No</span> + </td> + <td colspan="2"> + <span>璁惧鍚嶇О</span><br> + <span>Equipment name</span> + </td> + <td> + <span>璁惧鍨嬪彿</span><br> + <span>type</span> + </td> + <td colspan="2"> + <span>缂栧彿</span><br> + <span>Factory number</span> + </td> + <td colspan="2"> + <span>鏍″噯鏈夋晥鏈�</span><br> + <span>Date of validity</span> + </td> + </tr> + </thead> + <tr v-for="item in table" :key="index"> + <td> + <span>{{ item.id }}</span> + </td> + <td colspan="2"> + <span>{{ item.equipment_name }}</span> + </td> + <td> + <span>{{ item.type }}</span><br> + </td> + <td colspan="2"> + <span>{{ item.factory_number }}</span> + </td> + <td colspan="2"> + <span>{{ item.validity }}</span> + </td> + </tr> + + </table> + </div> + </div> + </div> + </div> + </div> +</template> + +<script> +export default { + props:{ + + }, + data(){ + return { + resultTable:[ + { + id: '1', + testitem: '鍘熷鎷変几', + testitem_engName: 'Primitive strength', + unit: 'MPa', + requirement: '鏈�灏�10.0', + requirement_eng: 'Minimun 10.0', + testresult: '', + testitem_engName: '' + } + ], + table:[{ + id: 1, + equipment_name: '鎷栨媺鏈�', + type: 1, + factory_number: 'Akjgfewof', + validity:'2023.8.25~2023.8.27' + }] + } + } +} +</script> + +<style lang="scss" scoped> +.content-wrapper{ + background-color: #f0f2f5; + width: 100%; + height: 100vh; + overflow-y: auto; + .content-main{ + margin: -50px auto; + width: 50%; + // background-color: #fff; + // background-color: #bfa; + .cover{ + margin: 80px 0px; + padding:0px 50px; + height: 1200px; + background-color: #fff; + box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2); + .cover-top{ + display: flex; + justify-content: end; + font-size: 20px; + margin-right: 50px; + padding-top: 50px; + // font-weight: bold; + } + .title{ + margin-top: 100px; + padding: 0px 220px; + text-align: center; + font-size: 25px; + } + .cover-body{ + font-size: 25px; + margin: 100px 80px; + .name{ + // background-color: #bfa; + display: flex; + justify-content: space-between; + margin-bottom: 20px; + .line{ + width: 500px; + border-bottom: solid 1px black; + text-align: center; + // height: 60px; + line-height: 60px; + } + } + } + .cover-footer{ + text-align: center; + margin-top: 200px; + span{ + font-size: 23px; + height: 40px; + line-height: 40px; + } + } + } + .pageOne{ + margin-top: -50px; + background-color: #fff; + box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2); + padding:50px 100px; + height: 1200px; + .statement{ + margin: 0 auto; + width: 100px; + text-align-last: justify; + } + .statement-body{ + line-height: 32px; + text-align: justify; + margin: 30px 0px; + font-size: 12px; + } + .statement-footer{ + line-height: 30px; + font-size: 12px; + } + } + .pageTwo{ + margin-top: 30px; + background-color: #fff; + box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2); + padding:50px 60px; + height: 1200px; + .table{ + margin-top: 20px; + .table-header{ + display: flex; + justify-content: space-between; + font-size: 14px; + line-height: 20px; + } + .table-body{ + font-size: 12px; + table td{ + width: 150px; + height: 52px; + } + } + } + } + .pageThree{ + margin-top: 30px; + background-color: #fff; + box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2); + padding:50px 60px; + height: 1200px; + .table{ + margin-top: 20px; + .table-header{ + display: flex; + justify-content: space-between; + font-size: 14px; + line-height: 20px; + } + .table-body{ + font-size: 12px; + table td{ + width: 8%; + height: 52px; + } + } + } + } + .pageFour{ + margin-top: 30px; + background-color: #fff; + box-shadow: 0px 0px 4px rgba(0, 0, 0, 0.2); + padding:50px 60px; + height: 1200px; + .table{ + margin-top: 50px; + .table-header{ + line-height: 20px; + } + .table-body{ + margin-top: 20px; + font-size: 12px; + table td{ + width: 80px; + height: 52px; + } + } + } + } + + } +} +</style> \ No newline at end of file -- Gitblit v1.9.3