From e40c2d5988a9ad1afa26421bf8cfdfffba1e0ff3 Mon Sep 17 00:00:00 2001 From: 王震 <10952869+daywangzhen@user.noreply.gitee.com> Date: 星期三, 30 八月 2023 18:01:28 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/utils/request.js | 5 src/views/laboratory/gather/index.vue | 10 src/api/inspection/commisioninspection.js | 8 src/views/laboratory/measure/Add.vue | 67 ++- src/views/laboratory/measure/index.vue | 50 +- src/views/laboratory/personnel/index.vue | 801 +++++++++++++++++++++-------------------------- src/layout/components/Sidebar/SidebarItem.vue | 2 src/router/index.js | 8 src/views/inspectionManagement/commissionInspection/addCommision.vue | 20 9 files changed, 471 insertions(+), 500 deletions(-) diff --git a/src/api/inspection/commisioninspection.js b/src/api/inspection/commisioninspection.js index d986bb3..95df195 100644 --- a/src/api/inspection/commisioninspection.js +++ b/src/api/inspection/commisioninspection.js @@ -88,3 +88,11 @@ params }) } + +export function getSpecificationsName(params){ + return request({ + url: '/link-basic-table/getSpecificationsName', + method: 'get', + params + }) +} \ No newline at end of file diff --git a/src/layout/components/Sidebar/SidebarItem.vue b/src/layout/components/Sidebar/SidebarItem.vue index 9c2d33b..ca1bccd 100644 --- a/src/layout/components/Sidebar/SidebarItem.vue +++ b/src/layout/components/Sidebar/SidebarItem.vue @@ -2,10 +2,10 @@ <div v-if="!item.hidden"> <template v-if="hasOneShowingChild(item.children,item) && (!onlyOneChild.children||onlyOneChild.noShowingChildren)&&!item.alwaysShow"> <app-link v-if="onlyOneChild.meta" :to="resolvePath(onlyOneChild.path)"> - <el-menu-item v-if="onlyOneChild.meta.show==false ?onlyOneChild.meta.show: true" :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}"> <item :show="onlyOneChild.meta.show" :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" /> <span v-if="onlyOneChild.meta.title==='涓婚〉'">涓婚〉</span> + <span v-if="onlyOneChild.meta.title==='鍩虹鏁版嵁'">鍩虹鏁版嵁</span> </el-menu-item> </app-link> </template> diff --git a/src/router/index.js b/src/router/index.js index da562bd..a9c9a8d 100644 --- a/src/router/index.js +++ b/src/router/index.js @@ -539,9 +539,11 @@ let menuFather = baseRouter const dataMenuFather = fn3(menuFather) role.roleMenuList.forEach((r) => { - dataMenuFather.push(Routees.filter(item => { - return item.path === r.menuUrl - })[0]) + if(r.menuName!='棣栭〉'){ + dataMenuFather.push(Routees.filter(item => { + return item.path === r.menuUrl + })[0]) + } }) let eqChildren = []; role.roleMenuList.forEach((r) => { diff --git a/src/utils/request.js b/src/utils/request.js index 4218d62..58cf36d 100644 --- a/src/utils/request.js +++ b/src/utils/request.js @@ -1,4 +1,5 @@ import axios from 'axios' +import router from '../router/index' import { MessageBox, Message } from 'element-ui' import store from '@/store' import { getToken } from '@/utils/auth' @@ -63,8 +64,8 @@ }) sessionStorage.removeItem("user") sessionStorage.setItem("flushPage",1) - this.$router.replace({path: '/login'}); - location.reload() + router.replace({path: '/login'}); + // location.reload() } if(res.code===403){ Message({ diff --git a/src/views/inspectionManagement/commissionInspection/addCommision.vue b/src/views/inspectionManagement/commissionInspection/addCommision.vue index cbb7408..00c25ea 100644 --- a/src/views/inspectionManagement/commissionInspection/addCommision.vue +++ b/src/views/inspectionManagement/commissionInspection/addCommision.vue @@ -22,7 +22,8 @@ <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="speName" label="瑙勬牸鍨嬪彿" min-width="10%" > + </el-table-column> <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%"> @@ -228,7 +229,8 @@ addInspection, isIfViewUUID, getProductList, - getContractsSampleInfo + getContractsSampleInfo, + getSpecificationsName } from '@/api/inspection/commisioninspection' export default { data() { @@ -342,7 +344,6 @@ let res = await getContractsSampleInfo({ viewId }) - console.log(res.data); }, async getSampleName() { const res = await getSampleName() @@ -384,7 +385,8 @@ samplesNumber: '', remarks: '', experiment: [], - addway: '' + addway: '', + speName: '' } }, async submitInspection() { @@ -406,7 +408,8 @@ reportNumber: parseInt(this.infoForm.num), sampleDeliveryMode: sampledeliveryway, sampleDeliveryPhone: this.infoForm.sendertel, - sampleSender: this.infoForm.sender + sampleSender: this.infoForm.sender, + speName: this.infoForm.speName }) this.infoForm.commisioncode = res.data if (res.data) { @@ -444,6 +447,11 @@ return item.name }) }) + this.model_sta_options.forEach(a=>{ + if(a.key == val){ + this.addPointerForm.speName = a.value + } + }) }, getContractsSampleInfo() { getContractsSampleInfo({ @@ -467,7 +475,7 @@ } this.detectionInfo = res.data.linkDetectionList }) - } + }, } } </script> diff --git a/src/views/laboratory/gather/index.vue b/src/views/laboratory/gather/index.vue index cccf8cc..c7e421a 100644 --- a/src/views/laboratory/gather/index.vue +++ b/src/views/laboratory/gather/index.vue @@ -17,7 +17,7 @@ </el-form> </div> <div class="library-table"> - <el-card v-for="item in device" :key="index" class="box-card" style="width: 22.8%;"> + <el-card v-for="(item,index) in device" :key="index" class="box-card" style="width: 22.8%;"> <div class="header"> <div style="display: flex;justify-content: start; width: 100%;"> <div class="el-icon-set-up" style="font-size: 25px;color: rgb(103, 194, 58);line-height: 55px ;"></div> @@ -76,6 +76,14 @@ ] } }, + methods:{ + searchInspections(){ + + }, + reset(){ + + } + } } </script> diff --git a/src/views/laboratory/measure/Add.vue b/src/views/laboratory/measure/Add.vue index 0533251..889c813 100644 --- a/src/views/laboratory/measure/Add.vue +++ b/src/views/laboratory/measure/Add.vue @@ -5,26 +5,30 @@ </el-col> <el-col> <el-form :model="planAddInfo" style="padding-left: 150px;"> - <el-form-item> + <el-col> <el-col :span="6" style="display: flex;justify-content: space-around;"> - <span>璐熻矗浜猴細</span> - <el-select v-model="planAddInfo.measurePerson" placeholder="璇烽�夋嫨璐熻矗浜�"> - <el-option v-for="item in userList" :key="item.value" :label="item.label" :value="item.value"> - </el-option> - </el-select> + <el-form-item label="璐熻矗浜猴細" :rules="[{ required: true, message: '璇烽�夋嫨璐熻矗浜�', trigger: 'change' }]"> + <el-select v-model="planAddInfo.measurePerson" placeholder="璇烽�夋嫨璐熻矗浜�"> + <el-option v-for="item in userList" :key="item.value" :label="item.label" + :value="item.value"> + </el-option> + </el-select> + </el-form-item> </el-col> <el-col :span="8" style="display: flex;justify-content: space-around;"> - <span>璁″垝鏃堕棿锛�</span> - <el-date-picker v-model="planAddInfo.planDate" type="daterange" range-separator="鑷�" - start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡"> - </el-date-picker> + <el-form-item label="璁″垝鏃堕棿锛�" :rules="[{ required: true, message: '璇烽�夋嫨璁″垝鏃堕棿', trigger: 'change' }]"> + <el-date-picker v-model="planAddInfo.planDate" type="daterange" range-separator="鑷�" + start-placeholder="寮�濮嬫棩鏈�" end-placeholder="缁撴潫鏃ユ湡"> + </el-date-picker> + </el-form-item> </el-col> <el-col :span="5"></el-col> <el-col :span="5" style="display: flex;justify-content: space-around;"> - <span>璁¢噺鍗曚綅锛�</span> - <el-input style="width: 150px;" v-model="planAddInfo.unit" placeholder=""></el-input> + <el-form-item label="璁¢噺鍗曚綅锛�"> + <el-input style="width: 150px;" v-model="planAddInfo.unit" placeholder=""></el-input> + </el-form-item> </el-col> - </el-form-item> + </el-col> </el-form> </el-col> <el-col> @@ -47,7 +51,8 @@ <el-table-column prop="equipmentPointName" label="浠櫒璁惧" min-width="150"> <template slot-scope="scope"> <span v-show="!codePointesTableStatus">{{ scope.row.equipmentPointName }}</span> - <el-select @change="insListChange(scope.row.equipmentPointName,scope)" v-model="scope.row.equipmentPointName" placeholder="璇烽�夋嫨浠櫒璁惧"> + <el-select @change="insListChange(scope.row.equipmentPointName, scope)" + v-model="scope.row.equipmentPointName" placeholder="璇烽�夋嫨浠櫒璁惧"> <el-option v-for="item in insList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> @@ -95,6 +100,7 @@ getListUserAndListIns, addPlanAndMeasure } from '@/api/laboratory/measure' import { dateFormat } from "../../../utils/dateUtil"; +import { MessageBox, Message } from 'element-ui' export default { data() { return { @@ -125,7 +131,7 @@ }], userList: [], insList: [], - instrumentList:[], + instrumentList: [], // 鐮佺偣琛ㄦ牸鐨勭姸鎬侊細鏁版嵁灞曠ずfalse/鏂板杈撳叆true codePointesTableStatus: false, } @@ -136,7 +142,7 @@ res.data.userList.forEach(element => { this.userList.push({ label: element.name, value: element.id }) }); - this.instrumentList=res.data.instrumentList + this.instrumentList = res.data.instrumentList res.data.instrumentList.forEach(item => { this.insList.push({ label: item.equipmentName, value: item.id }) }) @@ -161,21 +167,28 @@ }) }, async add() { - console.log(111111); + if (this.planAddInfo.measurePerson == null || this.planAddInfo.measurePerson == ''||this.planAddInfo.planDate[0]==null||this.planAddInfo.planDate[0]=='') { + Message({ + message: "璐熻矗浜哄拰璁″垝鏃ユ湡涓嶈兘涓虹┖锛�", + type: 'warning', + duration: 2 * 1000 + }) + return false + } this.planAddInfo.startTime = dateFormat(this.planAddInfo.planDate[0]) this.planAddInfo.endTime = dateFormat(this.planAddInfo.planDate[1]) console.log(this.planAddInfo); this.planAddInfo.planDate = null this.codePointsTable.forEach(item => { - if(item.endDate!=null&&item.endDate!=''){ + if (item.endDate != null && item.endDate != '') { item.endDate = dateFormat(item.endDate) } }) - console.log(this.codePointsTable); + console.log(this.codePointsTable); let data = {} - this.codePointsTable.length>0?data = { measureList: this.codePointsTable, plan: this.planAddInfo }:data = {plan: this.planAddInfo } + this.codePointsTable.length > 0 ? data = { measureList: this.codePointsTable, plan: this.planAddInfo } : data = { plan: this.planAddInfo } let add = await addPlanAndMeasure(data) - this.planAddInfo={ + this.planAddInfo = { plannedOrderNumber: '', measurePerson: '', planDate: "", @@ -183,17 +196,17 @@ createPerson: '', createTime: '' } - this.codePointsTable=[] + this.codePointsTable = [] return add.data }, - insListChange(i,s){ + insListChange(i, s) { console.log(i); console.log(s.$index); - let ins= this.instrumentList.filter(item=>{ - return item.id==i + let ins = this.instrumentList.filter(item => { + return item.id == i })[0] - this.codePointsTable[s.$index].measuringRange=ins.measuringRange - this.codePointsTable[s.$index].termValidity=ins.termValidity+'鏈�' + this.codePointsTable[s.$index].measuringRange = ins.measuringRange + this.codePointsTable[s.$index].termValidity = ins.termValidity + '鏈�' } } } diff --git a/src/views/laboratory/measure/index.vue b/src/views/laboratory/measure/index.vue index d70dd9c..1bb43b8 100644 --- a/src/views/laboratory/measure/index.vue +++ b/src/views/laboratory/measure/index.vue @@ -7,6 +7,9 @@ <el-input v-model="searchData.code" @blur="blurSearch()" class="input-form" placeholder="璇疯緭鍏�"> </el-input> </el-form-item> + <el-form-item v-if="this.radioValue === 1"> + <el-button type="primary" @click="searchPlan">鏌ヨ</el-button> + </el-form-item> <el-form-item v-if="this.radioValue === 0" :label="this.radioValue === 0 ? '浠櫒璁惧鍚嶇О:' : '璁惧鍚嶇О'" class="sermargin"> <el-input v-model="searchData.name" class="input-form" placeholder="璇疯緭鍏�"> @@ -70,10 +73,10 @@ <el-table-column prop="name" label="璐熻矗浜�" min-width="10%" /> <el-table-column prop="createTime" label="鍒涘缓鏃ユ湡" min-width="10%" /> <el-table-column prop="name" label="鍒涘缓浜�" min-width="8%" /> - <el-table-column prop="code" label="璁¢噺缂栧彿" min-width="8%" /> + <el-table-column prop="code" label="璁¢噺缂栧彿" min-width="12%" /> <el-table-column label="鎿嶄綔" min-width="15%"> <template slot-scope="scope"> - <el-button type="text" @click="lookMeasurement(scope.row.equipmentCode)" size="small">鏌ョ湅璁¢噺灞ュ巻</el-button> + <!-- <el-button type="text" @click="lookMeasurement(scope.row.equipmentCode)" size="small">鏌ョ湅璁¢噺灞ュ巻</el-button> --> <el-button type="text" size="small">鏌ョ湅闄勪欢</el-button> </template> </el-table-column> @@ -109,7 +112,7 @@ </el-table-column> </el-table> <!-- 鍒嗛〉鍣� --> - <div style="display: flex;justify-content: end;"> + <div style="display: flex;justify-content: end;padding: 10px 0;"> <el-pagination @size-change="handleSizeChange" @current-change="handleCurrentChange" :current-page="currentPage" :page-sizes="[5, 10, 20]" :page-size="pageSize" layout="total, sizes, prev, pager, next, jumper" :total="total"> @@ -118,9 +121,12 @@ </div> </div> <div> - <el-button v-if="selectInfoBtn" @click="combackLookPlan" style="position: fixed;top: 43px;right: 14px; z-index: 1000;" type="primary" icon="el-icon-refresh-left" size="mini" plain >杩斿洖</el-button> - <div v-if="addBtn" style="display: flex;justify-content: center;width: 10%;position: fixed;top: 43px;right: 14px; z-index: 1000;"> - <el-button @click="addTop = -82;addBtn=false" size="mini" style="width: 60px;" >杩斿洖</el-button> + <el-button v-if="selectInfoBtn" @click="combackLookPlan" + style="position: fixed;top: 43px;right: 14px; z-index: 1000;" type="primary" icon="el-icon-refresh-left" + size="mini" plain>杩斿洖</el-button> + <div v-if="addBtn" + style="display: flex;justify-content: center;width: 10%;position: fixed;top: 43px;right: 14px; z-index: 1000;"> + <el-button @click="addTop = -82; addBtn = false" size="mini" style="width: 60px;">杩斿洖</el-button> <el-button size="mini" @click="measureAdd" style="width: 60px;" type="primary">淇濆瓨</el-button> </div> </div> @@ -378,13 +384,19 @@ this.measureUpInfo.remarks = scope.row.remarks this.measureUpInfo.termValidity = scope.row.termValidity }, - measureAdd() { + async measureAdd() { + let res = await this.$refs.add.add() + if (!res) { + return + } this.addTop = -82 - this.$message({ - message: '鎿嶄綔鎴愬姛锛�', - type: 'success' - }); - this.lookVisible = false + this.$message({ + message: '鎿嶄綔鎴愬姛锛�', + type: 'success' + }); + this.lookVisible = false + this.addBtn = false + this.limitGetPlanMeasureInstrument() }, async handleSizeChangePlan(num) { this.pageSizePlan = num @@ -399,7 +411,7 @@ this.addTop = 2 this.lookVisible = true this.$parent.mainShowAdd() - this.addBtn=true + this.addBtn = true }, async limitGetPlanMeasureInstrument() { let param = { @@ -418,7 +430,7 @@ this.getPlanAndInfoAndIns(id) this.lookVisible = true this.mymodelTop = 2 - this.selectInfoBtn=true + this.selectInfoBtn = true this.$parent.triggerMainBtnPlan() }, async getPlanAndInfoAndIns(id) { @@ -440,7 +452,7 @@ combackLookPlan() { this.lookVisible = false this.mymodelTop = -1000 - this.selectInfoBtn=false + this.selectInfoBtn = false }, blurSearch() { if (this.radioValue === 1) { @@ -495,6 +507,9 @@ search() { this.getStandingPageList() }, + searchPlan(){ + this.getPlanPageList() + }, reset(formName) { this.searchData.name = '' this.searchData.code = '' @@ -506,8 +521,9 @@ }, async getPlanPageList() { let param = { - currentPage: this.currentPage, pageSize: this.pageSize, - code: this.searchData.code, name: this.searchData.name, unit: this.searchData.measureunit + currentPage: this.currentPage, + pageSize: this.pageSize, + plannedOrderNumber: this.searchData.code } const res = await getPlanPageList(param) res.data.list.forEach(item => { diff --git a/src/views/laboratory/personnel/index.vue b/src/views/laboratory/personnel/index.vue index f4f4ee2..f469fa9 100644 --- a/src/views/laboratory/personnel/index.vue +++ b/src/views/laboratory/personnel/index.vue @@ -1,478 +1,393 @@ <template> - <div class="personnel-main"> - <div class="page-header-search"> - <div class="search-bar"> - <el-form ref="form" :inline="true"> - <el-form-item> - <el-input v-model="keyword" placeholder="璇疯緭鍏ヤ汉鍛樺悕绉�"> - <i slot="prefix" class="el-input__icon el-icon-search" /> - </el-input> - </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="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-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" /> - </el-form-item> - <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" /> - </el-form-item> - <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" - 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="width: 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()">{{ + <div class="personnel-main"> + <div class="page-header-search"> + <div class="search-bar"> + <el-form ref="form" :inline="true"> + <el-form-item> + <el-input v-model="keyword" placeholder="璇疯緭鍏ヤ汉鍛樺悕绉�"> + <i slot="prefix" class="el-input__icon el-icon-search" /> + </el-input> + </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="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-dialog :title="isUpdate == true ? '鏇存柊浜哄憳淇℃伅' : '鏂板浜哄憳'" :visible.sync="dialogFormVisible" width="30%"> + <el-form :model="form" ref="form" :rules="rules" style="padding-right: 50px;"> + <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" /> + </el-form-item> + <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" /> + </el-form-item> + <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" 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="width: 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()">{{ isUpdate == true ? "鏇� 鏂�" : "纭� 瀹�" }}</el-button> - </div> - </el-dialog> - </div> - </div> - <div class="content-main"> - <div class="personner-table"> - <el-table - ref="personnerlTable" - height="calc(100vh - 240px)" - border - :cell-style="{ textAlign: 'center' }" - :header-cell-style="{ + </div> + </el-dialog> + </div> + </div> + <div class="content-main"> + <div class="personner-table"> + <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"> - <template scope="scope"> - {{ + }" @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"> + <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"> - <template scope="scope"> - {{ + </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"> + <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"> - {{ + </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="[ + </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 - > - </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 - > - </template> - </el-table-column> - </el-table> - <div> - <!-- 鍒嗛〉鍣� --> - <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> - </div> + ]" 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> + </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> + </template> + </el-table-column> + </el-table> + <div> + <!-- 鍒嗛〉鍣� --> + <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> + </div> </template> <script> -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: "", - roleList: "", - personnerlTable: [], - filteredpersonnerlTable: [], - currentindex: 1, - currentPage: 1, // 褰撳墠椤电爜 - total: 0, // 鎬绘潯鏁� - pageSize: 100, // 姣忛〉鐨勬暟鎹潯鏁� - personData: [], // 鐢ㄦ潵瀛樻斁鎺ュ彛浼犺繃鏉ョ殑浜哄憳鍒楄〃鏁版嵁 - dialogFormVisible: false, - form: { - account: "", - age: "", - email: "", - name: "", - phone: "", - organizationId: "", - roleId: "", - }, - myProp: { - value: "id", - label: "department", - checkStrictly: true, //鍏佽閫夋嫨浠绘剰涓�鑺� - }, - formLabelWidth: "100px", - rules: { - account: [ - { - required: true, - message: "璇疯緭鍏ヨ处鍙�", - trigger: "blur", - }, - ], - name: [ - { - required: true, - message: "璇疯緭鍏ュ悕瀛�", - trigger: "blur", - }, - ], - phone: [ - // { required: true, message: '璇疯緭鍏�11浣嶇數璇濆彿鐮�', trigger: 'blur' }, - { - pattern: /^1[3456789]\d{9}$/, - message: "闈炴硶鎵嬫満鍙风爜", - trigger: ["blur", "change"], - }, - ], - email: [ - // { required: true, message: '璇疯緭鍏ラ偖绠卞湴鍧�', trigger: 'blur' }, - { - type: "email", - message: "闈炴硶閭鍦板潃", - trigger: ["blur", "change"], - }, - ], - organizationId: [ - { - required: true, - type: "array", - message: "璇烽�夋嫨閮ㄩ棬", - trigger: "change", - }, - ], - roleId: [ - { required: true, message: "璇疯緭鍏ユ潈闄�(0鎴�1)", trigger: "blur" }, - ], - }, - options: [], - status: "", - isUpdate: false, - }; - }, - mounted() { - this.getData(); - this.getTreeData(); - }, - methods: { - // 姣忛〉鏉℃暟鏀瑰彉鏃惰Е鍙� 閫夋嫨涓�椤垫樉绀哄灏戣 - handleSizeChange(val) { - console.log(`姣忛〉 ${val} 鏉); - this.currentPage = 1; - this.pageSize = val; - }, - filterTag(value) { - this.status = ""; - this.status = value; - return true; - }, - // 褰撳墠椤垫敼鍙樻椂瑙﹀彂 璺宠浆鍏朵粬椤� - handleCurrentChange(val) { - console.log(`褰撳墠椤�: ${val}`); - this.currentPage = val; - }, - async getData() { - let data = { - pageNo: 0, - 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; - }, - searchData() { - this.filteredpersonnerlTable = this.personnerlTable.filter((item) => { - return item.username === this.keyword; - }); - this.personnerlTable = this.filteredpersonnerlTable; - }, - resetData() { - this.personnerlTable = this.personData; - this.keyword = ""; - this.status = ""; - this.getData(); - }, - // 鎻愪氦鏂板浜哄憳琛ㄥ崟 - submitForm() { - this.$refs.form.validate((valid) => { - if (valid) { - 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; - } - }); - }, - // 娓呯┖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; - } - } - } - }, + 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: "", + roleList: "", + personnerlTable: [], + filteredpersonnerlTable: [], + currentindex: 1, + currentPage: 1, // 褰撳墠椤电爜 + total: 0, // 鎬绘潯鏁� + pageSize: 100, // 姣忛〉鐨勬暟鎹潯鏁� + personData: [], // 鐢ㄦ潵瀛樻斁鎺ュ彛浼犺繃鏉ョ殑浜哄憳鍒楄〃鏁版嵁 + dialogFormVisible: false, + form: { + account: "", + age: "", + email: "", + name: "", + phone: "", + organizationId: "", + roleId: "", + }, + myProp: { + value: "id", + label: "department", + checkStrictly: true, //鍏佽閫夋嫨浠绘剰涓�鑺� + }, + formLabelWidth: "100px", + rules: { + account: [{ + required: true, + message: "璇疯緭鍏ヨ处鍙�", + trigger: "blur", + }, ], + name: [{ + required: true, + message: "璇疯緭鍏ュ悕瀛�", + trigger: "blur", + }, ], + phone: [ + // { required: true, message: '璇疯緭鍏�11浣嶇數璇濆彿鐮�', trigger: 'blur' }, + { + pattern: /^1[3456789]\d{9}$/, + message: "闈炴硶鎵嬫満鍙风爜", + trigger: ["blur", "change"], + }, + ], + email: [ + // { required: true, message: '璇疯緭鍏ラ偖绠卞湴鍧�', trigger: 'blur' }, + { + type: "email", + message: "闈炴硶閭鍦板潃", + trigger: ["blur", "change"], + }, + ], + organizationId: [{ + required: true, + type: "array", + message: "璇烽�夋嫨閮ㄩ棬", + trigger: "change", + }, ], + roleId: [{ + required: true, + message: "璇疯緭鍏ユ潈闄�(0鎴�1)", + trigger: "blur" + }, ], + }, + options: [], + status: "", + isUpdate: false, + }; + }, + mounted() { + this.getData(); + this.getTreeData(); + }, + methods: { + // 姣忛〉鏉℃暟鏀瑰彉鏃惰Е鍙� 閫夋嫨涓�椤垫樉绀哄灏戣 + handleSizeChange(val) { + this.currentPage = 1; + this.pageSize = val; + }, + filterTag(value) { + this.status = ""; + this.status = value; + return true; + }, + // 褰撳墠椤垫敼鍙樻椂瑙﹀彂 璺宠浆鍏朵粬椤� + handleCurrentChange(val) { + this.currentPage = val; + }, + async getData() { + let data = { + pageNo: 0, + 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; + }, + searchData() { + this.filteredpersonnerlTable = this.personnerlTable.filter((item) => { + return item.username === this.keyword; + }); + this.personnerlTable = this.filteredpersonnerlTable; + }, + resetData() { + this.personnerlTable = this.personData; + this.keyword = ""; + this.status = ""; + this.getData(); + }, + // 鎻愪氦鏂板浜哄憳琛ㄥ崟 + submitForm() { + this.$refs.form.validate((valid) => { + if (valid) { + 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 { + 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(); - } - }, - }, - }, -}; + 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) => { + 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 { - background: #fff; - display: flex; - justify-content: space-between; - padding: 0 24px 12px 24px; + .personnel-main { - .search-bar { - .el-form { - .el-form-item { - margin-bottom: 0px !important; + // width: 100%; + // height: 100%; + .page-header-search { + background: #fff; + display: flex; + justify-content: space-between; + padding: 20px 24px 12px 24px; - .el-input { - width: 360px; - } - } - } - } - } + .search-bar { + .el-form { + .el-form-item { + margin-bottom: 0px !important; - .personner-table { - background: #fff; - padding: 20px 20px 10px 20px; + .el-input { + width: 360px; + } + } + } + } + } - > div:nth-child(2) { - display: flex; - justify-content: end; - margin: 10px 0; - } - } -} -</style> + .personner-table { + background: #fff; + padding: 20px 20px 10px 20px; + + >div:nth-child(2) { + display: flex; + justify-content: end; + margin: 10px 0; + } + } + } +</style> \ No newline at end of file -- Gitblit v1.9.3