From 1e9c7a02ec2b8caf7dda6000d7f0f79849df6b45 Mon Sep 17 00:00:00 2001
From: 朱佳吉 <1527963051@qq.com>
Date: 星期四, 09 五月 2024 14:15:25 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/components/do/b1-ins-order/add.vue                 |   26 
 src/components/view/b4-daily-business-statistics.vue   |    7 
 src/components/view/b1-inspect-order-plan.vue          |    6 
 src/components/view/b1-sample.vue                      |  559 ++-------------------
 static/js/menu.js                                      |    2 
 src/components/view/b3-classes.vue                     |  735 ++++++++++++++++++++++++++++
 src/assets/api/controller.js                           |    7 
 src/components/view/b2-standard.vue                    |  135 ++++
 src/components/do/b1-sample/detail.vue                 |   12 
 src/components/view/a5-capacity-scope.vue              |    8 
 src/main.js                                            |    7 
 src/components/do/b1-inspect-order-plan/Inspection.vue |   16 
 src/components/view/a6-device-management.vue           |    7 
 src/components/view/b4-inspection-item-statistics.vue  |   26 
 14 files changed, 1,001 insertions(+), 552 deletions(-)

diff --git a/src/assets/api/controller.js b/src/assets/api/controller.js
index 3709cb8..068184a 100644
--- a/src/assets/api/controller.js
+++ b/src/assets/api/controller.js
@@ -22,6 +22,7 @@
     certification,
     sealScope,
     informationNotification,
+    performanceShift,
 	unPass,
 	}
 }
@@ -257,6 +258,12 @@
   triggerModificationStatusToRead:"/informationNotification/triggerModificationStatusToRead",//鐐瑰嚮璇︽儏瑙﹀彂淇敼鐘舵�佷负宸茶
 }
 
+const performanceShift = {
+  add:"/performanceShift/add",//缁╂晥绠$悊-鐝-鎺掔彮
+  page:"/performanceShift/page",//缁╂晥绠$悊-鐝-鍒嗛〉鏌ヨ
+  update:"/performanceShift/update/",//缁╂晥绠$悊-鐝-鐝鐘舵�佷慨鏀�
+}
+
 const unPass = {
 	pageInsUnPass:"/unPass/pageInsUnPass", // 鏌ヨ涓嶅悎鏍兼牱鍝佹暟鎹�
 }
diff --git a/src/components/do/b1-ins-order/add.vue b/src/components/do/b1-ins-order/add.vue
index 6aa10a5..f5b4a48 100644
--- a/src/components/do/b1-ins-order/add.vue
+++ b/src/components/do/b1-ins-order/add.vue
@@ -270,10 +270,17 @@
         <el-table-column prop="model" label="鏍峰搧鍨嬪彿" align="center" min-width="100">
           <template slot-scope="scope">
             <el-select v-model="scope.row.model" filterable allow-create default-first-option placeholder="鏍峰搧鍨嬪彿"
-              size="small" @change="handleChangeModel" :disabled="active>1">
+              size="small" @change="handleChangeModel" :disabled="active>1" style="width: 100%;" disabled>
               <el-option v-for="item in models" :key="item.value" :label="item.label" :value="item.value">
               </el-option>
             </el-select>
+          </template>
+        </el-table-column>
+        <el-table-column prop="modelNum" label="鍨嬪彿鍙傛暟" width="130" align="center" v-if="!(active>1)">
+          <template slot-scope="scope">
+            <el-input size="small" v-model="scope.row.modelNum" clearable placeholder="闈炲繀濉�"
+              @keyup.enter.native="methodChange(scope.row.standardMethodListId, scope.row)"
+              @clear="methodChange(scope.row.standardMethodListId, scope.row)"></el-input>
           </template>
         </el-table-column>
         <el-table-column prop="standardMethodListId" label="妫�楠屾爣鍑�" align="center" min-width="100">
@@ -334,7 +341,7 @@
         <el-table-column prop="unit" label="璁¢噺鍗曚綅" width="100" show-overflow-tooltip></el-table-column>
         <el-table-column prop="price" label="鍗曚环" width="100" show-overflow-tooltip></el-table-column>
         <el-table-column prop="manDay" label="棰勮鏃堕棿(澶�)" width="120" show-overflow-tooltip></el-table-column>
-        <el-table-column prop="manHourGroup" label="宸ユ椂鍒嗙粍" width="100" show-overflow-tooltip></el-table-column>
+        <el-table-column prop="manHour" label="宸ユ椂绯绘暟" width="100" show-overflow-tooltip></el-table-column>
         <!-- <el-table-column prop="deviceGroup" label="璁惧缁�" width="120" show-overflow-tooltip></el-table-column> -->
         <el-table-column prop="section" label="鍖洪棿" width="120" show-overflow-tooltip></el-table-column>
         <el-table-column prop="ask" label="瑕佹眰鍊�" min-width="220px">
@@ -370,7 +377,7 @@
             <el-row>
               <el-col :span="24">
                 <span><i
-                    :class="`node_i ${data.children != undefined ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></i>
+                    :class="`node_i ${data.children != undefined ? (data.code==='[1]'?'el-icon-folder-opened':'el-icon-folder') : 'el-icon-tickets'}`"></i>
                   {{ data.code }} {{ data.label }}</span>
               </el-col>
             </el-row>
@@ -562,6 +569,7 @@
           sampleType: null,
           sample: null,
           model: null,
+          modelNum: null,
           sampleNum: 1,
           isLeave: 0,
           unit: null
@@ -722,7 +730,10 @@
           this.saveLoad = true
           this.$axios.post(this.$api.insOrder.addInsOrder, {
             insOrder: this.addObj,
-            list: JSON.stringify(this.sampleList)
+            list: JSON.stringify(this.sampleList.map(a=>{
+              a.model = a.model + ((a.modelNum==null||a.modelNum==''||a.modelNum=='null')?'':('-'+a.modelNum))
+              return a
+            }))
           }, {
             headers: {
               'Content-Type': 'application/json'
@@ -847,9 +858,7 @@
         this.$axios.get(this.$api.standardTree.selectStandardTreeList).then(res => {
           this.list = res.data
           this.list.forEach(a => {
-            a.children.forEach(b => {
-              this.expandedKeys.push(b.label)
-            })
+            this.expandedKeys.push(a.label)
           })
         })
       },
@@ -1114,9 +1123,10 @@
         })
       },
       methodChange(val, row) {
+        if(val===null||val==='')return
         this.getProductLoad = true
         this.$axios.post(this.$api.standardTree.selectStandardProductList, {
-          model: this.addObj.model,
+          model: this.addObj.model + '-' + row.modelNum,
           standardMethodListId: val
         }, {
           headers: {
diff --git a/src/components/do/b1-inspect-order-plan/Inspection.vue b/src/components/do/b1-inspect-order-plan/Inspection.vue
index 1858949..dee79ce 100644
--- a/src/components/do/b1-inspect-order-plan/Inspection.vue
+++ b/src/components/do/b1-inspect-order-plan/Inspection.vue
@@ -674,13 +674,15 @@
               }
             }
             if (b.v.ps != undefined && b.v.ps.value === '缁撹') {
-              this.param[b.i].insResult = b
-              conclusionList.forEach((n, i) => {
-                if (n.r == b.r && n.c == b.c) {
-                  b.v.f =
-                    `(${this.comparisonList.find(j=>j.value==(finalList[i].c)).label}${finalList[i].r+1})`
-                }
-              })
+              if(b.i!==undefined){
+                this.param[b.i].insResult = b
+                conclusionList.forEach((n, i) => {
+                  if (n.r == b.r && n.c == b.c) {
+                    b.v.f =
+                      `(${this.comparisonList.find(j=>j.value==(finalList[i].c)).label}${finalList[i].r+1})`
+                  }
+                })
+              }
             }
             set.add(b.r)
             if (b.v.f) {
diff --git a/src/components/do/b1-sample/detail.vue b/src/components/do/b1-sample/detail.vue
index 5a07876..cd913d4 100644
--- a/src/components/do/b1-sample/detail.vue
+++ b/src/components/do/b1-sample/detail.vue
@@ -69,7 +69,11 @@
 				<el-table-column prop="inspectionItemSubclass" label="妫�楠岄」鍒嗙被" min-width="100" show-overflow-tooltip></el-table-column>
 				<el-table-column prop="laboratory" label="瀹為獙瀹�" min-min-width="100" show-overflow-tooltip></el-table-column>
 				<el-table-column prop="unit" label="鍗曚綅" min-width="100" show-overflow-tooltip></el-table-column>
-				<el-table-column prop="equipValue" label="璁惧" min-width="100" show-overflow-tooltip></el-table-column>
+				<el-table-column prop="equipName" label="璁惧" min-width="100" show-overflow-tooltip>
+          <template slot-scope="scope">
+            {{handleData(scope.row.equipName)}}
+          </template>
+        </el-table-column>
 				<el-table-column prop="entrustCode" label="濮旀墭缂栧彿" min-width="100" show-overflow-tooltip></el-table-column>
 				<el-table-column prop="updateUserName" label="妫�楠屼汉" min-width="100" show-overflow-tooltip></el-table-column>
 				<el-table-column prop="updateTime" label="妫�楠屾椂闂�" min-width="100" show-overflow-tooltip></el-table-column>
@@ -129,6 +133,12 @@
         this.histories = histories;
         this.products = products;
       })
+    },
+    handleData(e){
+      let info = JSON.parse(e).map(item => {
+        return item.v;
+      }).join(',')
+      return info
     }
   }
 }
diff --git a/src/components/view/a5-capacity-scope.vue b/src/components/view/a5-capacity-scope.vue
index 779a102..bf1c8c9 100644
--- a/src/components/view/a5-capacity-scope.vue
+++ b/src/components/view/a5-capacity-scope.vue
@@ -228,11 +228,11 @@
               multiple: true
             }
           },
-          requiredAdd: ['sonLaboratory', 'inspectionItem', 'manHour', 'inspectionItemType', 'inspectionValueType',
-            'unit', 'method', 'price', 'manDay', 'templateId'
+          requiredAdd: ['sonLaboratory', 'inspectionItem', 'inspectionItemType', 'inspectionValueType',
+            'unit', 'method', 'manDay', 'templateId'
           ],
-          requiredUp: ['sonLaboratory', 'inspectionItem', 'manHour', 'inspectionItemType', 'inspectionValueType',
-            'unit', 'method', 'price', 'manDay', 'templateId'
+          requiredUp: ['sonLaboratory', 'inspectionItem', 'inspectionItemType', 'inspectionValueType',
+            'unit', 'method', 'manDay', 'templateId'
           ]
         },
         testObjectData: {
diff --git a/src/components/view/a6-device-management.vue b/src/components/view/a6-device-management.vue
index 813729c..ad072e5 100644
--- a/src/components/view/a6-device-management.vue
+++ b/src/components/view/a6-device-management.vue
@@ -633,6 +633,9 @@
 				//row = 鐐瑰嚮瀵瑰簲琛屽�间竴琛屽��
 				//澶嶅埗缁檉ormData
 				this.formData = this.HaveJson(row);
+        if(typeof(row.insProductIds)==='number'){
+          row.insProductIds = row.insProductIds+''
+        }
 				this.formData.insProductIds = row.insProductIds ? row.insProductIds.split(',') : [];
 			},
 			beforeUpload(file) {
@@ -664,12 +667,12 @@
 				}
 			},
 			submitForm() {
-				this.upLoad = true;
 				delete this.formData.createTime
 				delete this.formData.updateTime
 				delete this.formData.createUser
 				delete this.formData.updateUser
         this.formData.insProductIds = this.formData.insProductIds.join()
+        this.upLoad = true;
 				this.$axios.post(this.$api.deviceScope.upDeviceParameter, this.formData, {
 					headers: {
 						'Content-Type': 'application/json'
@@ -691,7 +694,7 @@
 			},
 			submitForm2() {
 				this.upLoad2 = true;
-        this.formData.insProductIds = this.formData.insProductIds.join()
+        this.formData2.insProductIds = this.formData2.insProductIds.join()
 				this.$axios.post(this.$api.deviceScope.addDeviceParameter, this.formData2, {
 					headers: {
 						'Content-Type': 'application/json'
diff --git a/src/components/view/b1-inspect-order-plan.vue b/src/components/view/b1-inspect-order-plan.vue
index 0acd9f2..307d332 100644
--- a/src/components/view/b1-inspect-order-plan.vue
+++ b/src/components/view/b1-inspect-order-plan.vue
@@ -132,7 +132,7 @@
 						<el-col :span="21">
 							<div style="display: flex;align-items: center;margin-bottom: 10px;">
 								<ul class="tab">
-									<li v-for="(m,i) in tabList" :key="i" :class="{active:i==tabIndex}" @click="handleTab(m,i)">{{m.label}}
+									<li v-for="(m,i) in tabList" :key="i" :class="{active:i==tabIndex}" @click="handleTab(m,i)">{{m.label.replace('璇曢獙瀹�','')}}
 									</li>
 								</ul>
 								<div>
@@ -245,9 +245,9 @@
 							font: '澶嶆牳',
 							type: 'text',
 							method: 'handleReview',
-							disabFun: (row, index) => {
+							/* disabFun: (row, index) => {
 								return row.userId == null || row.insState != 3
-							}
+							} */
 						}, {
 							id: '',
 							font: '璁ら',
diff --git a/src/components/view/b1-sample.vue b/src/components/view/b1-sample.vue
index f87b81d..4e4bf7e 100644
--- a/src/components/view/b1-sample.vue
+++ b/src/components/view/b1-sample.vue
@@ -156,6 +156,9 @@
   .custom-tree-node:hover .el-button {
     opacity: 1;
   }
+  >>>.el-loading-mask {
+    z-index: 10;
+  }
 </style>
 
 <template>
@@ -209,7 +212,7 @@
         </div>
       </div>
       <div class="table" v-loading="tableLoading">
-        <table border="1" class="tables" cellpadding="10" style="table-layout:fixed;">
+        <table border="1" class="tables" cellpadding="10" style="table-layout:fixed;" v-if="tableList.length>0">
           <tbody>
             <tr v-for="(item,index) in tableList" :key="index">
               <td v-for="(m,i) in item" :key="i" class="content">
@@ -239,14 +242,15 @@
             </tr>
           </tbody>
         </table>
+        <span v-else style="color: rgb(144, 147, 153);display: inline-block;position: absolute;top: 60%;left: 50%;transform: translate(-50%,-50%);">鏆傛棤鏁版嵁</span>
       </div>
     </div>
     <Detail v-else @hanldeBack="isDetail=false" :id="currentId" />
     <el-dialog title="鏍峰搧鍏ュ簱" :visible.sync="storageVisible" width="350px">
-      <div class="shaoma">
+      <!-- <div class="shaoma">
         <img src="../../../static/img/鎵爜.svg" alt="" style="margin-right: 5px;">
         <span>鎵爜鍏ュ簱</span>
-      </div>
+      </div> -->
       <el-row>
         <el-col class="search_thing" :span="24">
           <div class="search_label"><span class="required-span">* </span>鏍峰搧缂栧彿锛�</div>
@@ -275,10 +279,10 @@
       </span>
     </el-dialog>
     <el-dialog title="鏍峰搧鍑哄簱" :visible.sync="exportVisible" width="350px">
-      <div class="shaoma">
+      <!-- <div class="shaoma">
         <img src="../../../static/img/鎵爜.svg" alt="" style="margin-right: 5px;">
         <span>鎵爜鍑哄簱</span>
-      </div>
+      </div> -->
       <el-row>
         <el-col class="search_thing" :span="24">
           <div class="search_label"><span class="required-span">* </span>鏍峰搧缂栧彿锛�</div>
@@ -292,7 +296,7 @@
         <el-button type="primary" @click="confirmExport" :loading="upLoadExport">纭� 瀹�</el-button>
       </span>
     </el-dialog>
-    <el-dialog title="搴撲綅缁存姢" :visible.sync="keepVisible" width="350px">
+    <el-dialog title="搴撲綅缁存姢" :visible.sync="keepVisible" width="350px" :append-to-body="true">
       <el-tree :data="warehouse" ref="tree" :props="{ children: 'warehouseShelfList', label: 'name' }" node-key="id"
         :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current @node-expand="nodeOpen"
         @node-collapse="nodeClose" :default-expanded-keys="expandedKeys" v-if="keepVisible"
@@ -302,7 +306,7 @@
             <el-col :span="20">
               <span><i
                   :class="`node_i ${node.level<2 ? 'el-icon-folder-opened': 'el-icon-tickets'}`"></i>
-                {{ data.name }}{{ node.level }}</span>
+                {{ data.name }}</span>
             </el-col>
             <el-col :span="4" v-if="node.level<3">
               <el-button type="text" size="mini" icon="el-icon-edit" @click.stop="handleEdit(data,node.level)">
@@ -315,7 +319,7 @@
       </el-tree>
       <span slot="footer" class="dialog-footer">
         <el-button @click="keepVisible = false">鍙� 娑�</el-button>
-        <el-button type="primary" @click="confirmKeep" :loading="upLoadKeep">纭� 瀹�</el-button>
+        <el-button type="primary" @click="keepVisible = false" >纭� 瀹�</el-button>
       </span>
     </el-dialog>
     <el-dialog :title="isEdit?'浠撳簱淇敼':'浠撳簱鏂板'" :visible.sync="warehouseVisible" width="350px">
@@ -387,463 +391,9 @@
         shelvesVisible: false,
         upLoadStorage: false,
         upLoadExport: false,
-        upLoadKeep: false,
         upLoadWarehouse: false,
         upLoadShelves: false,
-        tableList: [
-          [{
-              title: '1-1-4',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-            {
-              title: '1-2-4',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-            {
-              title: '1-3-4',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-            {
-              title: '1-4-4',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-            {
-              title: '1-5-4',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-            {
-              title: '1-6-4',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-            {
-              title: '1-7-4',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-          ],
-          [{
-              title: '1-1-3',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-            {
-              title: '1-2-3',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-            {
-              title: '1-3-3',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-            {
-              title: '1-4-3',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-            {
-              title: '1-5-3',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-            {
-              title: '1-6-3',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-            {
-              title: '1-7-3',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-          ],
-          [{
-              title: '1-1-2',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-            {
-              title: '1-2-2',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-            {
-              title: '1-3-2',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-            {
-              title: '1-4-2',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-            {
-              title: '1-5-2',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-            {
-              title: '1-6-2',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-            {
-              title: '1-7-2',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-          ],
-          [{
-              title: '1-1-1',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-            {
-              title: '1-2-1',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-            {
-              title: '1-3-1',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-            {
-              title: '1-4-1',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-            {
-              title: '1-5-1',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-            {
-              title: '1-6-1',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-            {
-              title: '1-7-1',
-              list: [{
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸1',
-                  num: 20,
-                  type: 0,
-                },
-                {
-                  name: '鍘熸潗鏂�',
-                  specs: '瑙勬牸2',
-                  num: 20,
-                  type: 1,
-                },
-              ]
-            },
-          ]
-        ],
+        tableList: [],
         rowList: [],
         value: '',
         name:'',
@@ -853,7 +403,7 @@
         isEdit: false, //寮规--鏄惁鏄慨鏀�,榛樿涓篺alse
         isDetail: false, //璇︽儏--鏄惁灞曠ず涓鸿鎯呴〉闈紝榛樿涓篺alse
         currentEdit:null,//褰撳墠瑕佺淮鎶ょ殑淇℃伅
-        tableLoading:true,
+        tableLoading:false,
         sampleCode:'',
         currentId:null,
         searchSampleCode:''
@@ -866,6 +416,11 @@
       selectList() {
         this.$axios.get(this.$api.warehouse.selectWarehouse).then(res => {
           this.warehouse = res.data
+          if(res.data.length==0){
+            this.entity.warehouseId = '';
+            this.entity.shelfId = '';
+            this.tableList = []
+          }
           this.storageList = this.HaveJson(res.data).map(item=>{
             item.warehouseShelfList&&item.warehouseShelfList.length>0&&item.warehouseShelfList.map(m=>{
               let warehouseShelfList = [];
@@ -894,6 +449,16 @@
             if(this.shelf.length>0){
               this.entity.shelfId = this.shelf[0].id
               this.handleShelf(this.entity.shelfId)
+            }else{
+              this.tableList = []
+            }
+          }else if(this.warehouse.length>0){
+            this.warehouseChange(this.entity.warehouseId)
+            if(this.shelf.length>0){
+              this.entity.shelfId = this.shelf[0].id
+              this.handleShelf(this.entity.shelfId)
+            }else{
+              this.tableList = []
             }
           }
         })
@@ -956,10 +521,6 @@
             this.handleShelf(this.entity.shelfId)
           })
       },
-      // 缁存姢
-      confirmKeep() {
-        this.upLoadKeep = true;
-      },
       // 娣诲姞/淇敼浠撳簱
       confirmWarehouse() {
         if (!this.name) {
@@ -979,6 +540,7 @@
 				}).then(res => {
             this.upLoadWarehouse = false;
             this.warehouseVisible = false
+            // this.keepVisible = false
             this.currentEdit = null;
             if (res.code == 201) {
               this.$message.error('淇敼澶辫触')
@@ -986,6 +548,8 @@
             }
             this.$message.success('淇敼鎴愬姛')
             this.selectList()
+            this.name = ''
+            this.warehouseChange(this.entity.warehouseId)
           })
         }else{
           // 鏂板浠撳簱
@@ -1000,10 +564,10 @@
             }
             this.$message.success('娣诲姞鎴愬姛')
             this.selectList()
+            this.name = ''
+            this.warehouseChange(this.entity.warehouseId)
           })
         }
-        this.name = ''
-        this.warehouseChange(this.entity.warehouseId)
       },
       // 娣诲姞/淇敼璐ф灦
       confirmShelves() {
@@ -1031,11 +595,12 @@
 				}).then(res => {
             this.upLoadShelves = false;
             this.shelvesVisible = false
+            // this.keepVisible = false
             if (res.code == 201) {
-              this.$message.error('娣诲姞澶辫触')
+              this.$message.error('淇敼澶辫触')
               return
             }
-            this.$message.success('娣诲姞鎴愬姛')
+            this.$message.success('淇敼鎴愬姛')
             this.selectList()
             this.currentEdit ={};
           })
@@ -1070,6 +635,7 @@
       },
       nodeOpen(data, node, el) {
         $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder-opened')
+        this.selectTree[node.level-1] = data.id;
       },
       nodeClose(data, node, el) {
         $($(el.$el).find('.node_i')[0]).attr('class', 'node_i el-icon-folder')
@@ -1134,6 +700,7 @@
         this.isDetail = true;
       },
       warehouseChange(val) {
+        this.tableList = []
         let map = this.warehouse.find(a => {
           return a.id === val ? a : null
         })
@@ -1141,33 +708,37 @@
         this.entity.shelfId = '';
       },
       handleShelf(e){
-        this.tableLoading = true;
-        this.$axios.get(this.$api.warehouse.getWarehouse+'?shelfId='+e).then(res => {
-          let data = res.data;
-          let set =new Set()
-          this.tableList = [];
-          let arr = []
-          data.forEach(m=>{
-            set.add(m.col)
-            if(arr.length>0){
-              if(arr.find(n=>n.row==m.row)){
-                arr.push(m)
+        if(e){
+          this.tableLoading = true;
+          this.$axios.get(this.$api.warehouse.getWarehouse+'?shelfId='+e).then(res => {
+            this.tableLoading = false;
+            let data = res.data;
+            let set =new Set()
+            this.tableList = [];
+            let arr = []
+            data.forEach(m=>{
+              set.add(m.col)
+              if(arr.length>0){
+                if(arr.find(n=>n.row==m.row)){
+                  arr.push(m)
+                }else{
+                  this.tableList.push(arr)
+                  arr = []
+                  arr.push(m)
+                }
               }else{
-                this.tableList.push(arr)
-                arr = []
                 arr.push(m)
               }
-            }else{
-              arr.push(m)
+            })
+            this.tableList.push(arr)
+            this.rowList = [];
+            for(let i=0;i<set.size;i++){
+              this.rowList.push(`${i+1} 鍒梎)
             }
+          }).catch(e=>{
+            this.tableLoading = false;
           })
-          this.tableList.push(arr)
-          this.rowList = [];
-          for(let i=0;i<set.size;i++){
-            this.rowList.push(`${i+1} 鍒梎)
-          }
-          this.tableLoading = false;
-        })
+        }
       },
       handleSearch(){
         if(!this.searchSampleCode){
diff --git a/src/components/view/b2-standard.vue b/src/components/view/b2-standard.vue
index 9a40c74..755a9c9 100644
--- a/src/components/view/b2-standard.vue
+++ b/src/components/view/b2-standard.vue
@@ -78,7 +78,7 @@
   }
 
   .standard .has-gutter .el-table__cell .cell {
-    line-height: 38px;
+    line-height: 34px;
     background-color: #f8f8f8;
   }
 
@@ -114,9 +114,9 @@
         style="height:calc(100% - 30px);overflow-y: scroll;scrollbar-width: none;">
         <div class="custom-tree-node" slot-scope="{ node, data }">
           <el-row style="width: 100%;">
-            <el-col :span="21" :class="{sort:node.level>3}">
+            <el-col :span="21" :class="{sort:node.level>3}" :title="data.label">
               <span><i
-                  :class="`node_i ${data.children != undefined ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></i>
+                  :class="`node_i ${data.children != undefined ? (data.code==='[1]'?'el-icon-folder-opened':'el-icon-folder') : 'el-icon-tickets'}`"></i>
                 {{ data.code }} {{ data.label }}</span>
             </el-col>
             <el-col :span="2" style="text-align: right;" v-if="delStandardTree">
@@ -142,9 +142,9 @@
         <!-- </el-col> -->
       </el-row>
       <el-row class="standard_table" v-loading="tableLoad">
-        <el-table class="el-table" :data="standardList" style="width: 100%;height: 220px !important;overflow-y: auto;"
-          tooltip-effect="dark" highlight-current-row @row-click="rowClick" ref="standard">
-          <el-table-column prop="code" label="鏍囧噯缂栧彿" show-overflow-tooltip width="180">
+        <el-table class="el-table" :data="standardList" style="width: 100%;" height="220" tooltip-effect="dark"
+          highlight-current-row @row-click="rowClick" ref="standard">
+          <el-table-column prop="code" label="鏍囧噯缂栧彿" show-overflow-tooltip width="200">
             <template slot-scope="scope">
               <span style="color: red;font-size: 14px;">{{scope.row['code']}}</span>
             </template>
@@ -166,6 +166,7 @@
           @select="upProductSelect" @select-all="handleAll">
           <el-table-column type="selection" width="65">
           </el-table-column>
+          <el-table-column prop="model" label="鍨嬪彿" min-width="120" show-overflow-tooltip></el-table-column>
           <el-table-column prop="inspectionItem" label="妫�楠岄」" min-width="140" show-overflow-tooltip></el-table-column>
           <!-- <el-table-column prop="inspectionItemClassify" label="妫�楠岄」绫诲瀷" width="120" show-overflow-tooltip></el-table-column> -->
           <el-table-column prop="inspectionItemSubclass" label="妫�楠岄」瀛愰」" min-width="140"
@@ -198,8 +199,22 @@
             </template>
           </el-table-column>
           <el-table-column prop="unit" label="璁¢噺鍗曚綅" width="100" show-overflow-tooltip></el-table-column>
-          <el-table-column prop="price" label="鍗曚环(鍏�)" width="90" show-overflow-tooltip></el-table-column>
-          <el-table-column prop="manHour" label="宸ユ椂(H)" width="90" show-overflow-tooltip></el-table-column>
+          <el-table-column prop="price" label="鍗曚环(鍏�)" width="120">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.price" size="small" placeholder="鍗曚环(鍏�)"
+                @change="(value)=>upStandardProductListOfPrice(value,scope.row.id)" v-if="upStandardProduct">
+              </el-input>
+              <span v-else>{{scope.row.price}}</span>
+            </template>
+          </el-table-column>
+          <el-table-column prop="manHour" label="宸ユ椂绯绘暟" width="120">
+            <template slot-scope="scope">
+              <el-input v-model="scope.row.manHour" size="small" placeholder="鍗曚环(鍏�)"
+                @change="(value)=>upStandardProductListOfManHour(value,scope.row.id)" v-if="upStandardProduct">
+              </el-input>
+              <span v-else>{{scope.row.manHour}}</span>
+            </template>
+          </el-table-column>
           <el-table-column prop="manHourGroup" label="宸ユ椂鍒嗙粍" width="100" show-overflow-tooltip></el-table-column>
           <el-table-column prop="section" label="鍖洪棿" width="120" show-overflow-tooltip></el-table-column>
           <el-table-column prop="section" label="鎿嶄綔" width="120">
@@ -277,19 +292,41 @@
         <el-button type="primary" @click="addStandardProductDo" :loading="addLoad3">纭� 瀹�</el-button>
       </span>
     </el-dialog>
-    <el-dialog title="鍖洪棿璁剧疆" :visible.sync="sectionUpDia" width="500px">
+    <el-dialog title="鍖洪棿璁剧疆" :visible.sync="sectionUpDia" width="70%">
       <div class="body" style="padding: 5px 0;">
         <el-table :data="sectionList" border style="width: 100%" height="350px">
           <el-table-column type="index" label="搴忓彿" width="70" align="center">
           </el-table-column>
           <el-table-column label="鍖洪棿" align="center">
             <template slot-scope="scope">
-              <el-input size="small" v-model="scope.row.thing" clearable></el-input>
+              <el-input size="small" v-model="scope.row.thing" clearable placeholder="鍖洪棿"></el-input>
+            </template>
+          </el-table-column>
+          <el-table-column label="瑕佹眰鍊�" align="center">
+            <template slot-scope="scope">
+              <el-input size="small" v-model="scope.row.ask" clearable placeholder="瑕佹眰鍊�"></el-input>
+            </template>
+          </el-table-column>
+          <el-table-column label="瑕佹眰鎻忚堪" align="center">
+            <template slot-scope="scope">
+              <el-input size="small" placeholder="瑕佹眰鎻忚堪" v-model="scope.row.tell" clearable type="textarea"
+                :autosize="{ minRows: 1, maxRows: 2}"></el-input>
+            </template>
+          </el-table-column>
+          <el-table-column label="鍗曚环" align="center" width="120">
+            <template slot-scope="scope">
+              <el-input size="small" v-model="scope.row.price" clearable placeholder="鍗曚环"></el-input>
+            </template>
+          </el-table-column>
+          <el-table-column label="宸ユ椂绯绘暟" align="center" width="120">
+            <template slot-scope="scope">
+              <el-input size="small" v-model="scope.row.manHour" clearable placeholder="宸ユ椂绯绘暟"></el-input>
             </template>
           </el-table-column>
           <el-table-column label="鎿嶄綔" width="70" align="center">
             <template slot-scope="scope">
-              <el-button size="mini" type="danger" icon="el-icon-minus" circle @click="sectionList.splice(scope.$index, 1)"></el-button>
+              <el-button size="mini" type="danger" icon="el-icon-minus" circle
+                @click="sectionList.splice(scope.$index, 1)"></el-button>
             </template>
           </el-table-column>
         </el-table>
@@ -738,7 +775,39 @@
             this.$message.error('鏈繚瀛�')
             return
           }
-          this.$message.success('宸蹭繚瀛�')
+          // this.$message.success('宸蹭繚瀛�')
+        })
+      },
+      upStandardProductListOfPrice(value, index) {
+        this.$axios.post(this.$api.standardTree.upStandardProductList, {
+          id: index,
+          price: value
+        }, {
+          headers: {
+            'Content-Type': 'application/json'
+          }
+        }).then(res => {
+          if (res.code == 201) {
+            this.$message.error('鏈繚瀛�')
+            return
+          }
+          // this.$message.success('宸蹭繚瀛�')
+        })
+      },
+      upStandardProductListOfManHour(value, index) {
+        this.$axios.post(this.$api.standardTree.upStandardProductList, {
+          id: index,
+          manHour: value
+        }, {
+          headers: {
+            'Content-Type': 'application/json'
+          }
+        }).then(res => {
+          if (res.code == 201) {
+            this.$message.error('鏈繚瀛�')
+            return
+          }
+          // this.$message.success('宸蹭繚瀛�')
         })
       },
       delStandardMethodByFLSSM(id) {
@@ -875,26 +944,54 @@
         this.sectionRow = row
         this.sectionUpDia = true
         this.sectionList = []
-        if(this.sectionRow.section!==null){
-          JSON.parse(this.sectionRow.section).forEach(a=>{
+        if (this.sectionRow.section != null && this.sectionRow.section != '') {
+          JSON.parse(this.sectionRow.section).forEach((a, ai) => {
             this.sectionList.push({
-              thing: a
+              thing: a,
+              ask: JSON.parse(this.sectionRow.ask)[ai],
+              tell: JSON.parse(this.sectionRow.tell)[ai],
+              price: JSON.parse(this.sectionRow.price)[ai],
+              manHour: JSON.parse(this.sectionRow.manHour)[ai]
             })
           })
         }
       },
       sectionLoadAdd() {
         let sectionList = []
-        this.sectionList.forEach(a=>{
-          if(a.thing!==''){
+        let askList = []
+        let tellList = []
+        let priceList = []
+        let manHourList = []
+        this.sectionList.forEach(a => {
+          if (a.thing !== '') {
             sectionList.push(a.thing)
+            askList.push(a.ask)
+            tellList.push(a.tell)
+            priceList.push(a.price)
+            manHourList.push(a.manHour)
           }
         })
-        this.sectionRow.section = JSON.stringify(sectionList)
+        if (sectionList.length === 0) {
+          this.sectionRow.section = null
+          this.sectionRow.ask = null
+          this.sectionRow.tell = null
+          this.sectionRow.price = null
+          this.sectionRow.manHour = null
+        } else {
+          this.sectionRow.section = JSON.stringify(sectionList)
+          this.sectionRow.ask = JSON.stringify(askList)
+          this.sectionRow.tell = JSON.stringify(tellList)
+          this.sectionRow.price = JSON.stringify(priceList)
+          this.sectionRow.manHour = JSON.stringify(manHourList)
+        }
         this.sectionLoad = true
         this.$axios.post(this.$api.standardTree.upStandardProductList, {
           id: this.sectionRow.id,
-          section: this.sectionRow.section
+          section: this.sectionRow.section,
+          ask: this.sectionRow.ask,
+          tell: this.sectionRow.tell,
+          price: this.sectionRow.price,
+          manHour: this.sectionRow.manHour
         }, {
           headers: {
             'Content-Type': 'application/json'
diff --git a/src/components/view/b3-classes.vue b/src/components/view/b3-classes.vue
index e69de29..c931dfe 100644
--- a/src/components/view/b3-classes.vue
+++ b/src/components/view/b3-classes.vue
@@ -0,0 +1,735 @@
+<template>
+<div class="class-page">
+  <div class="search">
+    <div class="search_thing">
+      <div class="search_label">閫夋嫨鏃堕棿锛�</div>
+      <div class="search_input">
+        <el-date-picker
+          v-model="query.year"
+          type="year"
+          size="small"
+          placeholder="閫夋嫨骞�"
+          style="width: 140px;"
+          :clearable="false">
+        </el-date-picker>
+        <el-select
+        v-model="query.month"
+        clearable
+        placeholder="閫夋嫨鏈�"
+        style="width: 140px;margin-left: 16px;"
+        size="small">
+          <el-option
+            v-for="item in monthOptions"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value">
+          </el-option>
+        </el-select>
+        <el-input v-model="query.userName" placeholder="璇疯緭鍏ヤ汉鍛樺悕绉�" size="small" style="width: 140px;margin: 0 16px;" clearable ></el-input>
+        <el-select v-model="query.laboratory" placeholder="璇烽�夋嫨瀹為獙瀹�" style="width: 140px;" size="small" clearable >
+          <el-option
+            v-for="item in laboratory"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value">
+          </el-option>
+        </el-select>
+      </div>
+    </div>
+    <div class="search_thing" style="padding-left: 30px;">
+      <el-button size="small" @click="refresh()">閲� 缃�</el-button>
+      <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button>
+    </div>
+    <div class="search_thing btns" style="padding-left: 30px;">
+      <el-button size="small" type="primary">瀵� 鍑�</el-button>
+      <el-button size="small" type="primary" @click="schedulingVisible = true">鎺� 鐝�</el-button>
+    </div>
+  </div>
+  <div class="center" v-loading="pageLoading">
+    <scroll-pagination @load="init" :finishLoding="finishLoding">
+      <div class="clearfix">
+        <div class="fixed-left">
+          <div class="content-title" style="padding-left: 16px;box-sizing: border-box;">
+            浜哄憳鍚嶇О
+          </div>
+          <div class="content-user" :class="{hoverType:currentUserIndex==index}" v-for="(item,index) in list" :key="'e'+index" v-on:mouseenter="onMouseEnter(index)"
+          v-on:mouseleave="currentUserIndex=null">
+            <div class="user-pic">{{ item.name.charAt(0) }}</div>
+            <div class="user-info">
+              <p style="font-size: 14px;color: #3A7BFA;line-height: 24px;">{{ item.name }}</p>
+              <p style="color: #999999;font-size: 12px;transform: scale(0.8) translateX(-20px);white-space: nowrap;width: 150px;overflow-x: show;">鏃�: {{ item.day0 }}, 涓�: {{ item.day1 }}, 澶�: {{ item.day2 }}, 浼�: {{ item.day3 }}, 鍋�: {{ item.day4 }}</p>
+              <p style="margin-top: 4px;"><span style="color: #999999;font-size: 12px;display: inline-block;transform: scale(0.8) translateX(-10px);">鍚堣鍑哄嫟: </span><span style="font-size: 16px;
+    color: #FF4902;">{{ item.totalAttendance }}澶�</span></p>
+            </div>
+          </div>
+        </div>
+        <div class="scroll-right">
+          <div class="content">
+            <div class="content-title content-title-right" style="border-bottom: 0;">
+              <div class="content-title-item" v-for="(item,index) in weeks" :key="'b'+index">
+                <span class="month">{{ item.weekNum }}鍛�</span>
+                <span class="day">{{ item.day }}</span>
+                <span class="week">{{ item.week }}</span>
+              </div>
+            </div>
+            <div class="content-body" v-for="(item,index) in list" :key="'c'+index"
+            v-on:mouseenter="onMouseEnter(index)"
+          v-on:mouseleave="currentUserIndex=null">
+              <div class="content-body-item" v-for="(m,i) in item.list" :key="'d'+i" :class="{hoverType:currentUserIndex==index}">
+                <div class="work-box" :class="{type0:m.shift==='0',type1:m.shift==='1',type2:m.shift==='2',type3:m.shift==='3',type4:m.shift==='4',}">
+                  <div class="work-box-left">
+                    <span>{{ getShiftByDic(m.shift) }}</span>
+                  </div>
+                  <el-dropdown trigger="click" placement="bottom" @command="e=>handleCommand(e,m)">
+                    <i class="el-icon-arrow-down el-icon--right" style="font-size: 20px;color: #fff;cursor: pointer;"></i>
+                    <el-dropdown-menu slot="dropdown">
+                      <el-dropdown-item v-for="(n,j) in classType" :key="'h'+j" :command="n.value">{{ n.label }}</el-dropdown-item>
+                    </el-dropdown-menu>
+                  </el-dropdown>
+                </div>
+              </div>
+            </div>
+          </div>
+        </div>
+      </div>
+    </scroll-pagination>
+  </div>
+  <el-dialog title="鎺掔彮" :visible.sync="schedulingVisible" width="400px">
+    <div class="search_thing">
+      <div class="search_label" style="width:90px">鍛ㄦ锛�</div>
+      <div class="search_input">
+        <el-date-picker
+          v-model="schedulingQuery.week"
+          type="week"
+          format="yyyy 绗� WW 鍛�"
+          placeholder="閫夋嫨鍛ㄦ" style="width: 203px;">
+        </el-date-picker>
+      </div>
+    </div>
+    <div class="search_thing">
+      <div class="search_label" style="width:90px">浜哄憳鍚嶇О锛�</div>
+      <div class="search_input">
+        <el-select v-model="schedulingQuery.userId" placeholder="璇烽�夋嫨" style="width: 100%;" multiple clearable collapse-tags >
+          <el-option
+            v-for="item in personList"
+            :key="item.id"
+            :label="item.name"
+            :value="item.id">
+          </el-option>
+        </el-select>
+      </div>
+    </div>
+    <div class="search_thing">
+      <div class="search_label" style="width:90px">鐝锛�</div>
+      <div class="search_input">
+        <el-select v-model="schedulingQuery.shift" placeholder="璇烽�夋嫨" style="width: 100%;">
+          <el-option
+            v-for="item in classType"
+            :key="item.value"
+            :label="item.label"
+            :value="item.value">
+          </el-option>
+        </el-select>
+      </div>
+    </div>
+    <span slot="footer" class="dialog-footer">
+      <el-button @click="schedulingVisible = false">鍙� 娑�</el-button>
+      <el-button type="primary" @click="confirmScheduling" :loading="loading">纭� 瀹�</el-button>
+    </span>
+  </el-dialog>
+</div>
+</template>
+
+<script>
+import {
+		getYearAndMonthAndDays
+	} from '../../util/date'
+  import ScrollPagination from '../tool/scroll-paging.vue'
+export default {
+  components: {
+    ScrollPagination
+  },
+  data () {
+    return{
+      currentYear:new Date().getFullYear(),
+      currentMonth:new Date().getMonth()+1,
+      query:{
+        userName:'',
+        laboratory:'',
+        year:'',
+        month:''
+      },
+      monthOptions:[
+        {
+          value:'1',
+          label:'1鏈�'
+        },
+        {
+          value:'2',
+          label:'2鏈�'
+        },
+        {
+          value:'3',
+          label:'3鏈�'
+        },
+        {
+          value:'4',
+          label:'4鏈�'
+        },
+        {
+          value:'5',
+          label:'5鏈�'
+        },
+        {
+          value:'6',
+          label:'6鏈�'
+        },
+        {
+          value:'7',
+          label:'7鏈�'
+        },
+        {
+          value:'8',
+          label:'8鏈�'
+        },
+        {
+          value:'9',
+          label:'9鏈�'
+        },
+        {
+          value:'10',
+          label:'10鏈�'
+        },
+        {
+          value:'11',
+          label:'11鏈�'
+        },
+        {
+          value:'12',
+          label:'12鏈�'
+        },
+      ],
+      laboratory:[],
+      weeks:[],
+      workList:[
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'涓彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'澶滅彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+        {
+          type:'鏃╃彮',
+          time:'8:00-16:00',
+        },
+      ],
+      classType:[],
+      currentUserIndex:null,
+      schedulingVisible:false,
+      personList:[],
+      loading:false,
+      schedulingQuery:{
+        week:'',
+        userId:null,
+        shift:''
+      },
+      list:[],
+      currentPage: 1, // 褰撳墠椤�
+      pageSize: 10, // 涓�椤�10鏉�
+      total: '',
+      pageLoading: true, // 缁勪欢loading鐨勫睍绀�,榛樿涓簍rue
+      finishLoding: false // 鍔犺浇瀹屾垚锛屾樉绀哄凡缁忔病鏈夋洿澶氫簡
+    }
+  },
+  mounted(){
+    this.selectEnumByCategory()
+    this.obtainItemParameterList()
+    this.getUsers()
+    this.init()
+  },
+  methods: {
+    refresh(){
+      this.list = [];
+      this.currentPage = 1
+      this.query = {
+        userName:'',
+        laboratory:'',
+        year:'',
+        month:''
+      }
+      this.init()
+    },
+    refreshTable(){
+      this.list = [];
+      this.currentPage = 1
+      this.init()
+    },
+    init(){
+      if(this.currentPage==1){
+        this.pageLoading = true
+      }
+      this.$axios.post(this.$api.performanceShift.page, {
+        size:this.pageSize,
+        current:this.currentPage,
+        time:this.query.month?this.query.year+'-'+this.query.month:this.query.year,
+        userName:this.query.userName,
+        laboratory:this.query.laboratory,
+        }).then(res => {
+          this.pageLoading = false
+          if (res.code == 201) return
+          this.total = res.data.total
+          let list = res.data.records.map(item=>{
+            for (let key in item) {
+              let type = this.getDayByDic(key)
+              if(type!=undefined||type!=null){
+                item[`day${type}`] = item[key]
+              }
+            }
+            return item
+          });
+          // 鍙充晶鏃ユ湡鑾峰彇
+          if(this.currentPage==1){
+            if(list&&list.length>0){
+              this.weeks = [];
+              list[0].list&&list[0].list.forEach(item=>{
+                let obj = {
+                  weekNum:item.weekly,
+                  week:item.headerTime.split(' ')[1],
+                  day:item.headerTime.split(' ')[0]
+                }
+                this.weeks.push(obj)
+              })
+            }
+          }
+          if(list.length==0){
+            this.finishLoding = true;
+          }else{
+            if(list.length<this.pageSize){
+              this.finishLoding = true;
+            }
+            this.list = this.list.concat(list)
+            if(this.total==this.list.length){
+              this.finishLoding = true;
+            }
+            this.currentPage++;
+          }
+        })
+    },
+    onMouseEnter(index){
+      this.currentUserIndex = index
+    },
+    confirmScheduling(){
+      if(!this.schedulingQuery.week){
+        this.$message.error('璇烽�夋嫨鍛ㄦ')
+        return
+      }
+      let time = this.schedulingQuery.week.getTime()
+      let startWeek  =getYearAndMonthAndDays(new Date(time - 24 * 60 * 60 * 1000)) + ' 00:00:00'
+      let endWeek = getYearAndMonthAndDays(new Date(time + 24 * 60 * 60 * 1000 * 5))+ ' 00:00:00'
+      if(!this.schedulingQuery.userId||this.schedulingQuery.userId.length==0){
+        this.$message.error('璇烽�夋嫨浜哄憳')
+        return
+      }
+      if(!this.schedulingQuery.shift){
+        this.$message.error('璇烽�夋嫨鐝')
+        return
+      }
+      this.loading = true
+      this.$axios.post(this.$api.performanceShift.add, {
+            startWeek,
+            endWeek,
+            userId:this.schedulingQuery.userId.join(','),
+            shift:this.schedulingQuery.shift}, {
+        headers: {
+          'Content-Type': 'application/json'
+        }
+      }).then(res => {
+        this.loading = false
+        if (res.code == 201) return
+        this.$message.success('鎿嶄綔鎴愬姛')
+        this.schedulingVisible = false
+        this.schedulingQuery = {
+          week:'',
+          userId:null,
+          shift:''
+        }
+        this.refresh()
+      })
+    },
+    selectEnumByCategory() {
+      this.$axios.post(this.$api.enums.selectEnumByCategory, {
+        category: "鐝绫诲瀷"
+      }).then(res => {
+        this.classType = res.data
+      })
+    },
+    obtainItemParameterList() {
+      this.$axios.get(this.$api.laboratoryScope.obtainItemParameterList).then(res => {
+        let data = []
+        res.data.forEach(a => {
+          data.push({
+            label: a.laboratoryName,
+            value: a.id
+          })
+        })
+        this.laboratory = data
+      })
+    },
+    handleCommand(e,m){
+      if(e!=m.shift){
+        this.$axios.put(this.$api.performanceShift.update+m.id, {
+          id:m.id,
+          shift:e
+        }).then(res => {
+          if (res.code == 201) return
+          this.$message.success('鎿嶄綔鎴愬姛')
+          m.shift = e
+        })
+      }
+    },
+    getUsers(){
+      this.$axios.post(this.$api.user.selectUserList, {
+					page: {
+            current: -1,
+            size: -1,
+          },
+					entity: {
+            name: null,
+          }
+				}, {
+					headers: {
+						'Content-Type': 'application/json'
+					}
+				}).then(res => {
+					if (res.code === 201) {
+						return
+					}
+          let arr = res.data.body.records
+          this.personList = arr
+        })
+    },
+    getDayByDic(e){
+      let obj = this.classType.find(m=>m.label==e)
+      if(obj){
+        return obj.value
+      }
+    },
+    getShiftByDic(e){
+      let obj = this.classType.find(m=>m.value==e)
+      if(obj){
+        return obj.label
+      }
+      return '鏈帓鐝�'
+    }
+  }
+}
+</script>
+
+<style scoped>
+.search {
+  height: 50px;
+  display: flex;
+  align-items: center;
+  position: relative;
+}
+
+.search_thing {
+  display: flex;
+  align-items: center;
+  height: 50px;
+}
+
+.search_label {
+  width: 70px;
+  font-size: 14px;
+  text-align: right;
+}
+.search_input{
+  display: flex;
+  align-items: center;
+}
+.btns{
+  position: absolute;
+  right: 16px;
+  top: 50%;
+  transform: translate(0,-50%);
+}
+.center {
+  width: 100%;
+  height: calc(100% - 40px );
+  background-color: #fff;
+  overflow-y: auto;
+  display: flex;
+}
+>>>.scroll-pagination{
+  overflow-y: scroll;
+  scrollbar-width: none; /* 瀵逛簬 Firefox 鍜� IE 鐨勫吋瀹瑰啓娉� */
+}
+>>>.scroll-pagination::-webkit-scrollbar {
+  display: none; /* 瀵逛簬 Chrome, Safari 鍜� Opera 鐨勫啓娉� */
+}
+.fixed-left {
+  float: left;
+  width: 220px; /* 宸﹁竟鍖哄煙瀹藉害 */
+  background-color: #fff;
+  box-shadow: 2px -2px 5px rgba(51,51,51,0.12); /* 宸﹁竟闃村奖 */
+}
+.clearfix::after {
+  content: "";
+  display: table;
+  clear: both;
+}
+.scroll-right {
+  width: calc(100% - 220px); /* 鍑忓幓宸﹁竟鍖哄煙瀹藉害 */
+  min-height: calc(100% - 10px); /* 瑙嗗彛楂樺害 */
+  margin-left: 220px;
+  overflow-x: scroll;
+}
+
+.content {
+  min-height: calc(100% - 10px); /* 瑙嗗彛楂樺害 */
+}
+.content-title{
+  height: 52px;
+  line-height: 52px;
+  border-bottom: 1px solid #EEEEEE;
+}
+.content-title-right{
+  display: flex;
+  align-items: center;
+}
+.content-title-item{
+  height: 100%;
+  width: 100px;
+  flex-shrink: 0;
+  border-bottom: 1px solid #EEEEEE;
+  box-sizing: border-box;
+  display: flex;
+  align-items: center;
+  justify-content: center;
+}
+.content-title-item .month{
+  font-size: 12px;
+  color: #3A7BFA;
+  box-sizing: border-box;
+  padding: 0 4px;
+  border-radius: 50%;
+  background: #D6E4FF;
+  line-height: 30px;
+  text-align: center;
+  margin-right: 6px;
+}
+.content-title-item .day{
+  font-size: 16px;
+  color: #333333;
+  margin-right: 6px;
+}
+.content-title-item .week{
+  font-size: 14px;
+  color: #999999;
+}
+.content-body{
+  display: flex;
+  align-items: center;
+}
+.content-body-item{
+  height: 80px;
+  width: 100px;
+  flex-shrink: 0;
+  box-sizing: border-box;
+  padding: 4px;
+  border-right: 1px solid #EEEEEE;
+  border-bottom: 1px solid #EEEEEE;
+}
+.work-box{
+  width: 100%;
+  height: 100%;
+  display: flex;
+  align-items: center;
+  justify-content: space-around;
+  background: #F5F7FB;
+  border-radius: 8px 8px 8px 8px;
+  color: #999;
+  font-size: 14px;
+}
+.work-box.type0{
+  background: rgba(58,123,250,0.15);
+  color: #3A7BFA;
+}
+.work-box.type1{
+  background: #E3DCFE;
+  color: #635998;
+}
+.work-box.type2{
+  background: #FAE2CA;
+  color: #BC8D5E;
+}
+.work-box.type3{
+  background: #E1F3D8;
+  color: #67C23A;
+}
+.work-box.type4{
+  background: #FDE2E2;
+  color: #F56C6C;
+}
+.el-icon-arrow-down::before{
+  color: #c6c4c4;
+}
+.type0 .el-icon-arrow-down::before{
+  color: #fff;
+}
+.type1 .el-icon-arrow-down::before{
+  color: #fff;
+}
+.type2 .el-icon-arrow-down::before{
+  color: #fff;
+}
+.type3 .el-icon-arrow-down::before{
+  color: #fff;
+}
+.type4 .el-icon-arrow-down::before{
+  color: #fff;
+}
+.work-box-left{
+  display: flex;
+  justify-content: center;
+  flex-direction: column;
+  line-height: 24px;
+}
+.content-user{
+  width: 100%;
+  height: 80px;
+  box-sizing: border-box;
+  border-bottom: 1px solid #EEEEEE;
+  display: flex;
+  align-items: center;
+}
+.user-pic{
+  width: 50px;
+  height: 50px;
+  border-radius: 50%;
+  background: #C0C4CC;
+  color: #fff;
+  font-size: 20px;
+  text-align: center;
+  line-height: 50px;
+  margin-left: 10px;
+}
+.user-info{
+  flex: 1;
+  margin-left: 10px;
+}
+.hoverType{
+  background: rgba(58,123,250,0.05);
+}
+</style>
diff --git a/src/components/view/b4-daily-business-statistics.vue b/src/components/view/b4-daily-business-statistics.vue
index 594e47f..5ecb7e5 100644
--- a/src/components/view/b4-daily-business-statistics.vue
+++ b/src/components/view/b4-daily-business-statistics.vue
@@ -147,10 +147,12 @@
       },
       pageData:{},
       loading:false,
+      timers:null,
     }
   },
   mounted(){
-    this.init()
+    this.timers&&clearInterval(this.timers);
+    setInterval(this.init,1000*60*5)
   },
   methods:{
     init(){
@@ -181,6 +183,9 @@
         return '0'
       }
     }
+  },
+  deactivated(){
+    this.timers&&clearInterval(this.timers);
   }
 }
 </script>
diff --git a/src/components/view/b4-inspection-item-statistics.vue b/src/components/view/b4-inspection-item-statistics.vue
index 86e6156..293245b 100644
--- a/src/components/view/b4-inspection-item-statistics.vue
+++ b/src/components/view/b4-inspection-item-statistics.vue
@@ -129,7 +129,7 @@
         },
         chartData2:{
           title:'浠婃棩椤圭洰鍚堟牸鐜�',
-          percentage:'68%',
+          percentage:'0',
           color:['#1CCAB8','#E1E4E8'],
           data:[
             {
@@ -150,16 +150,16 @@
         },
         chartData3:{
           title:'浠婃棩椤圭洰瀹屾垚鐜�',
-          percentage:'68%',
+          percentage:'0',
           color:['#FBB647','#E1E4E8'],
           data:[
             {
               name:'瀹屾垚',
-              value:'68'
+              value:'0'
             },
             {
               name:'鏈畬鎴�',
-              value:'32'
+              value:'0'
             },
           ]
         },
@@ -171,25 +171,28 @@
         },
         chartData4:{
           title:'浠婃棩椤瑰欢鏈熺巼',
-          percentage:'68%',
+          percentage:'0',
           color:['#FF3838','#E1E4E8'],
           data:[
             {
               name:'寤舵湡',
-              value:'68'
+              value:'0'
             },
             {
               name:'鏈欢鏈�',
-              value:'32'
+              value:'0'
             },
           ]
         },
         loading:false,
-        pageData:{}
+        pageData:{},
+        timers:null
       }
     },
     mounted(){
-      this.init()
+      // this.init()
+      this.timers&&clearInterval(this.timers);
+      setInterval(this.init,1000*60*5)
     },
     methods:{
       init(){
@@ -227,7 +230,7 @@
         this.chartConfig3.isLoading = true
         this.chartConfig4.isLoading = true
       })
-    },
+      },
       handleData(val){
         if(val){
           return Math.abs(val)*100;
@@ -235,6 +238,9 @@
           return '0'
         }
       }
+    },
+    deactivated(){
+      this.timers&&clearInterval(this.timers);
     }
   }
   </script>
diff --git a/src/main.js b/src/main.js
index 78dd718..e0e4031 100644
--- a/src/main.js
+++ b/src/main.js
@@ -13,8 +13,11 @@
 
 //鏈湴
 Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80";
-// const javaApi = 'http://127.0.0.1:8001';//鏉�
-const javaApi = 'http://114.132.189.42:1234';//娴嬭瘯鏈�
+// const javaApi = 'http://192.168.11.200:8001';//鏉�
+// const javaApi = 'http://192.168.11.249:8001';//寮�
+const javaApi = 'http://172.20.10.3:8001';//濮�
+// const javaApi = 'http://192.168.11.2:8001';//鏌�
+// const javaApi = 'http://114.132.189.42:1234';//娴嬭瘯鏈�
 //鑳滀簯鏈嶅姟鍣�
 // Vue.prototype.LOCATIONVUE = "http://syxt.shxiao2.cn";
 // const javaApi = 'http://122.114.52.69:8001';
diff --git a/static/js/menu.js b/static/js/menu.js
index 8c941a9..65f08ed 100644
--- a/static/js/menu.js
+++ b/static/js/menu.js
@@ -100,7 +100,7 @@
 		}, {
 			v: "鐝",
 			i: "font icon-erjidaohang",
-			u: "",
+			u: "b3-classes",
 			p: ""
 		}]
 	},

--
Gitblit v1.9.3