From df5f05fdc4acc8b0258d391a495e544bc0991e64 Mon Sep 17 00:00:00 2001 From: 王震 <10952869+daywangzhen@user.noreply.gitee.com> Date: 星期六, 26 八月 2023 17:42:40 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/views/chart/work/index.vue | 82 ++- src/views/basicData/index.vue | 51 - src/views/experiment/inspectionApplication/index.vue | 77 +-- src/views/standardLibrary/index.vue | 124 +++-- src/api/standardLibrary.js | 18 src/components/experiment/checkTheReport/index.vue | 126 ++++++ src/layout/components/Navbar.vue | 2 src/api/laboratory/organizational.js | 40 + src/views/laboratory/personnel/index.vue | 435 ++++++++++++++++---- src/router/index.js | 1 src/api/util/requestUtil.js | 8 src/main.js | 1 package.json | 1 src/views/laboratory/organizational/index.vue | 216 ++++++++- src/views/experiment/checkTheReport/index.vue | 50 ++ src/views/experiment/inspectionApplication/Viewdetails/index.vue | 1 16 files changed, 926 insertions(+), 307 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/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..72f4c28 --- /dev/null +++ b/src/components/experiment/checkTheReport/index.vue @@ -0,0 +1,126 @@ +<template> + <div class="preview-main"> + <div class="logo"> + <img :src="logoSrc" /> + </div> + <div class="center"> + <h1>鍘熸潗鏂欐娴嬫姤鍛�</h1> + <table> + <tr> + <td>鏉愭枡鍚嶇О</td> + <td colspan="5"></td> + </tr> + <tr> + <td>瑙勬牸鍨嬪彿</td> + <td colspan="2"></td> + <td>鏉愭枡鍘傚</td> + <td colspan="2"></td> + </tr> + <tr> + <td>鏉愭枡鎵瑰彿</td> + <td colspan="2"></td> + <td>妫�娴嬬紪鍙�</td> + <td colspan="2"></td> + </tr> + <tr> + <td>妫�娴嬩緷鎹�</td> + <td colspan="2"></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 in 15" :key="item"> + <td>{{item}}</td> + <td></td> + <td></td> + <td></td> + <td></td> + <td></td> + </tr> + <tr> + <td colspan="6">妫�楠岀粨璁猴細</td> + </tr> + <tr> + <td colspan="6"> + 娉細鈥溾垰鈥濊〃绀鸿椤圭洰鍚堟牸锛屸�溍椻�濊〃绀鸿椤圭洰涓嶅悎鏍尖�溾�斺�濊〃绀鸿椤圭洰涓嶈姹傛娴嬨�� + </td> + </tr> + </table> + <el-row class="date-group" :gutter="20"> + <el-col :span="8">妫�娴嬨�佹棩鏈燂細<span>2023-08-25</span></el-col> + <el-col :span="8">瀹℃牳銆佹棩鏈燂細<span>2023-08-25</span></el-col> + <el-col :span="8">鎵瑰噯銆佹棩鏈燂細<span>2023-08-25</span></el-col> + </el-row> + <p class="footer"> + <span>缂栧彿:</span><span>ZTT/ICSRCP18-003</span> + <span> 鍙戣鏃ユ湡:</span><span>2023-08-25</span> + <span> 鍙戣閮ㄩ棬:</span><span>璐ㄩ噺閮�</span> + <span> 淇濆瓨鏈熼檺:</span><span>闀挎湡</span> + </p> + </div> + </div> +</template> +<script> +export default({ + data() { + return { + logoSrc : require("@/assets/404_images/logo.png"), + } + } +}) +</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: 15px 20px; + } + .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 3876bf3..dd146bb 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> 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/router/index.js b/src/router/index.js index 25cd92c..6e2fc1e 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -437,7 +437,6 @@ { path: 'message', name: 'Message', - // hidden: true, component: () => import('@/views/message/message/index'), // meta: { title: '鎴戠殑娑堟伅', icon: 'table' } }, diff --git a/src/views/basicData/index.vue b/src/views/basicData/index.vue index 952955e..e47537f 100644 --- a/src/views/basicData/index.vue +++ b/src/views/basicData/index.vue @@ -143,6 +143,7 @@ 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..171ca9d 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" size="small" @click="printFun()">鎵撳嵃</el-button> + </span> + <div class="printStyle"> + <preview id="printDiv"></preview> + </div> + </el-dialog> <div class="table-box"> <el-table ref="reportTable" @@ -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> @@ -169,6 +180,8 @@ <script> import { selectAllReport } from "@/api/experiment/checkTheReport"; +import Preview from "@/components/experiment/checkTheReport/index.vue"; +import PrintJS from 'print-js' export default { data() { return { @@ -183,12 +196,33 @@ total: 0, pageSize: 10, checked: true, + dialogVisible: false, }; }, created() { this.getData(); }, + mounted(){ + // this.dialogVisible = true; + }, + components:{ + Preview + }, methods: { + //棰勮鎸夐挳 + previewFun(){ + this.dialogVisible = true; + }, + //鎵撳嵃鎸夐挳 + printFun(){ + PrintJS({ + printable: "printDiv", + type: "html", + // header: "鍘熸潗鏂欐娴嬫姤鍛�", + targetStyles: ["*"], + ignoreElements: ["no-ignore"], + }); + }, // 鐘舵�佹寜閽� handleRadioChange() { this.getData(); @@ -227,6 +261,7 @@ }; const { data } = await selectAllReport(params); this.reportTable = data.row; + console.log(data.row); this.total = data.total; }, }, @@ -280,5 +315,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 a0919e6..e61c489 100644 --- a/src/views/experiment/inspectionApplication/Viewdetails/index.vue +++ b/src/views/experiment/inspectionApplication/Viewdetails/index.vue @@ -147,7 +147,6 @@ } }, created(){ - console.log(this.$route.query.id); this.uu = this.$route.query.id; this.selectInspectsListById() this.selectUser() diff --git a/src/views/experiment/inspectionApplication/index.vue b/src/views/experiment/inspectionApplication/index.vue index 3b08605..e6f5023 100644 --- a/src/views/experiment/inspectionApplication/index.vue +++ b/src/views/experiment/inspectionApplication/index.vue @@ -393,7 +393,7 @@ style="width: 100%; margin-bottom: 20px" row-key="name" border - + default-expand-all ref="multipleTable" :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" @@ -449,7 +449,7 @@ <el-button @click="Standardframe = false">鍙� 娑�</el-button> <el-button type="primary" @click="Standardframe = false">纭� 瀹�</el-button> </span> - + </el-dialog> <!-- 鍘熸潗鏂欐楠屾ā鎬佹 --> @@ -470,7 +470,7 @@ <el-table-column type="selection" min-width="10%" - /> + /> <el-table-column type="index" label="搴忓彿" @@ -695,16 +695,7 @@ }, 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.id); this.id = row.id this.$router.push({name:'Viewdetails',query: {id:row.id}}); this.selectInspectsList() @@ -723,7 +714,7 @@ async getCommisionList() { const res = await getCommisionList({pageNo:1,pageSize:10 }) console.log(res); - this.commisionTable = res.data.row + this.commisionTable = res.data }, //鍘熸潗鏂� async selecYANcailisotAllAPI() { @@ -763,7 +754,6 @@ item['checkdate'] = checkdate // 妫�楠屾棩鏈� item['createTime'] = createTime // 鐧昏鏃ユ湡 }) - console.log('data:',data) this.inspectionTable = data if(this.searchData.type !== ''){ if(this.searchData.state !== ''){ @@ -807,40 +797,29 @@ this.rawmaterialVisible = false }, handleRadioChange(){ - setTimeout(() => { - if(this.type === 0){ - // 鍘熸潗鏂欐姤妫� - this.rawmaterialVisible = true - YANcailiso({pageNo:1,pageSize:10}).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.row - }) - - // this.infoForm = res.data - // this.$router.push({ name: 'ReportForInspection' }); - }else if(this.type === 1){ - this.commisionVisible = true - getCommisionList({pageNo:1,pageSize:10}).then(res=>{ - // console.log(res); - this.commisionTable = res.data.row - }) - // 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 // 妫�楠屾棩鏈� - // }) - - } - }, 100); + 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(){ @@ -913,7 +892,7 @@ this.BANben = res.data.row console.log(this.BANben); }) - + }, handleSelectionChange_0(val){ this.select_1 = [] 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; -- Gitblit v1.9.3