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