From c7e7d101d901ae10b9c32ea02f87abef54e280a7 Mon Sep 17 00:00:00 2001
From: 晏有为 <13214124+yan-youwei@user.noreply.gitee.com>
Date: 星期三, 15 五月 2024 10:14:48 +0800
Subject: [PATCH] Merge remote-tracking branch 'origin/master'

---
 src/components/view/b3-work-time-management.vue                    |    2 
 src/components/do/b1-ins-order/add.vue                             |   28 +
 src/components/tool/value-table.vue                                |    6 
 src/components/view/a6-device-overview.vue                         |   17 
 src/components/do/b3-work-time-management/work-time-config.vue     |    6 
 src/components/view/b1-inspect-order-plan.vue                      |    9 
 src/components/view/b3-classes.vue                                 |   95 +++++
 src/components/view/a7-standard-method.vue                         |    4 
 src/view/index.vue                                                 |    6 
 src/assets/api/controller.js                                       |    1 
 src/components/view/notice-detail.vue                              |   20 
 src/components/view/b2-standard.vue                                |  110 +++++--
 src/components/tool/scroll-paging.vue                              |   21 +
 src/view/notice.vue                                                |   57 +--
 src/main.js                                                        |    4 
 src/components/do/b1-inspect-order-plan/Inspection.vue             |   53 +++
 src/components/do/b3-work-time-management/work-time-management.vue |   10 
 src/components/do/b3-work-time-management/work-time-statistics.vue |  233 +++++++++++++++
 src/components/view/a5-laboratory-management.vue                   |    4 
 src/components/view/a6-device-management.vue                       |   88 ++++-
 src/components/view/a6-personnel-overview.vue                      |   17 
 src/components/view/b1-inspection-order.vue                        |   16 
 src/components/view/b1-expenses.vue                                |    6 
 src/components/view/index-index.vue                                |   73 ++++
 24 files changed, 707 insertions(+), 179 deletions(-)

diff --git a/src/assets/api/controller.js b/src/assets/api/controller.js
index 7c20039..4ac4421 100644
--- a/src/assets/api/controller.js
+++ b/src/assets/api/controller.js
@@ -264,6 +264,7 @@
   page:"/performanceShift/page",//缁╂晥绠$悊-鐝-鍒嗛〉鏌ヨ
   update:"/performanceShift/update",//缁╂晥绠$悊-鐝-鐝鐘舵�佷慨鏀�
   pageYear:"/performanceShift/pageYear",//缁╂晥绠$悊-鐝-骞翠唤鍒嗛〉鏌ヨ
+  export:"/performanceShift/export",//缁╂晥绠$悊-鐝-瀵煎嚭
 }
 
 const auxiliaryWorkingHours = {
diff --git a/src/components/do/b1-ins-order/add.vue b/src/components/do/b1-ins-order/add.vue
index ce7f27f..6cd0389 100644
--- a/src/components/do/b1-ins-order/add.vue
+++ b/src/components/do/b1-ins-order/add.vue
@@ -197,7 +197,9 @@
         <el-col class="search_thing" :span="6">
           <div class="search_label"><span class="required-span">* </span>鏉ユ牱鏂瑰紡锛�</div>
           <div class="search_input">
-            <el-input size="small" clearable v-model="addObj.formType" :readonly="active>1"></el-input>
+            <el-select v-model="addObj.formType" size="small" :disabled="active>1" style="width: 100%;">
+              <el-option v-for="(a,ai) in formType" :key="ai" :label="a.label" :value="a.value"></el-option>
+            </el-select>
           </div>
         </el-col>
         <el-col class="search_thing" :span="6">
@@ -287,7 +289,7 @@
           <template slot-scope="scope">
             <el-select v-model="scope.row.standardMethodListId" :disabled="scope.row.model==null||active>1"
               placeholder="妫�楠屾爣鍑�" size="small" :loading="methodLoad" @change="(value)=>methodChange(value, scope.row)"
-              @focus="methodFocus" :readonly="active>1">
+              @focus="methodFocus" :readonly="active>1" style="width: 100%;">
               <el-option v-for="item in methods" :key="item.id" :label="item.code" :value="item.id">
               </el-option>
             </el-select>
@@ -634,7 +636,8 @@
         tell: '',
         noLoading: false,
         orderType: [],
-        filters: []
+        filters: [],
+        formType: []
       }
     },
     watch: {
@@ -653,6 +656,7 @@
       this.selectStandardMethods()
       this.selectEnumByCategoryForOrderType()
       this.selectEnumByCategoryForSonLaboratory()
+      this.selectEnumByCategoryForSampleForm()
       if (this.active != 1) {
         // 鏌ョ湅/瀹℃牳娴佺▼
         // 璇锋眰鎺ュ彛锛屽洖鏄炬暟鎹�
@@ -667,6 +671,10 @@
           this.addObj.sampleNum = this.sampleList.length
           this.$nextTick(() => {
             this.$refs.sampleTable.doLayout()
+            if(this.addObj.sampleNum>0){
+              this.$refs.sampleTable.setCurrentRow(this.sampleList[0],true)
+              this.rowClick(this.sampleList[0])
+            }
           })
         })
       }
@@ -868,8 +876,8 @@
       },
       activeStandardTree() {
         let trees = this.selectTree.split(" - ")
-        if (trees.length < 4) {
-          this.$message.error('鏈�夋嫨鏍峰搧')
+        if (trees.length < 5) {
+          this.$message.error('鏈�夋嫨鍨嬪彿')
           return
         }
         this.addObj.factory = trees[0]
@@ -1122,6 +1130,16 @@
           }
         })
       },
+      selectEnumByCategoryForSampleForm() {
+        this.$axios.post(this.$api.enums.selectEnumByCategory, {
+          category: "鏉ユ牱鏂瑰紡"
+        }).then(res => {
+          this.formType = res.data
+          if(this.formType.length > 0){
+            this.addObj.formType = this.formType[0].value
+          }
+        })
+      },
       methodChange(val, row) {
         if(val===null||val==='')return
         this.getProductLoad = true
diff --git a/src/components/do/b1-inspect-order-plan/Inspection.vue b/src/components/do/b1-inspect-order-plan/Inspection.vue
index e0ff6ed..ca447d2 100644
--- a/src/components/do/b1-inspect-order-plan/Inspection.vue
+++ b/src/components/do/b1-inspect-order-plan/Inspection.vue
@@ -41,8 +41,13 @@
     flex-direction: column;
     flex-wrap: wrap;
     width: 100%;
-    /* overflow-x: hidden; */
-    overflow-x: scroll;
+    overflow-x: hidden;
+    /* overflow-x: scroll; */
+    cursor: grab;
+  }
+
+  .center-box:active{
+    cursor: grabbing;
   }
 
   .tables {
@@ -65,6 +70,10 @@
     padding: 5px;
     box-sizing: border-box;
     overflow: hidden;
+    user-select: none;
+  }
+
+  .content *{
     user-select: none;
   }
 
@@ -212,7 +221,7 @@
             size="small">{{ item.templateName }}</el-radio-button>
         </el-radio-group>
       </div>
-      <div class="center-box">
+      <div class="center-box" id="nav">
         <table border="1" class="tables" cellpadding="10" v-for="(item,index) in tableList" :key="index">
           <tbody>
             <tr v-for="(m,i) in item.arr" :key="i">
@@ -241,8 +250,8 @@
                       v-else-if="getInspectionValueType(n.i) == 4">/</span>
                   </template>
                   <template v-else-if="n.v.ps!=undefined && n.v.ps.value==='缁撹'">
-                    <el-select v-if="(getInspectionValueType(n.i) == 2 || getInspectionValueType(n.i) == 5) && state==1" class="table_input" v-model="n.v.v"
-                      @change="saveInsContext()">
+                    <el-select v-if="(getInspectionValueType(n.i) == 2 || getInspectionValueType(n.i) == 5) && state==1"
+                      class="table_input" v-model="n.v.v" @change="saveInsContext()">
                       <el-option label="鍚堟牸" :value="1"></el-option>
                       <el-option label="涓嶅悎鏍�" :value="0"></el-option>
                     </el-select>
@@ -310,7 +319,7 @@
     </el-drawer>
     <el-drawer title="浠诲姟鍒囨崲" :visible.sync="taskVisible" :size="500">
       <ValueTable class="value-table" ref="insOrderPlan" :url="$api.insOrderPlan.selectInsOrderPlanList"
-        :componentData="componentData" :key="upIndex" />
+        :componentData="componentData" :key="upIndex" style="max-height: 100%;height: inherit;"/>
     </el-drawer>
     <el-dialog title="妫�楠屽鏍�" :visible.sync="reviewDia" width="500px">
       <div class="body" style="display: flex;padding: 10px;" v-if="reviewDia">
@@ -426,6 +435,7 @@
       this.getInsStateDicts()
       this.getComparisonList()
       this.getAuthorizedPerson()
+      this.scrollInit()
     },
     watch: {
       id(val) {
@@ -542,7 +552,7 @@
       },
       selectEnumByCategoryOfSelect(val) {
         this.enumList = []
-        if(val===undefined||val===null){
+        if (val === undefined || val === null) {
           return
         }
         this.$axios.post(this.$api.enums.selectEnumByCategory, {
@@ -561,7 +571,7 @@
         const mySet1 = new Set();
         this.tableLists = this.currentSample.insProduct.filter(m => {
           let num0 = mySet1.size;
-          if (m.templateId != null) {
+          if (m.templateId != null&&m.template != null) {
             mySet1.add(JSON.stringify({
               template: m.template,
               templateId: m.templateId
@@ -1246,6 +1256,33 @@
           this.personList = data
         })
       },
+      scrollInit() {
+        // 鑾峰彇瑕佺粦瀹氫簨浠剁殑鍏冪礌
+        const nav = document.getElementById("nav")
+        var flag; // 榧犳爣鎸変笅
+        var downX; // 榧犳爣鐐瑰嚮鐨剎涓嬫爣
+        var scrollLeft; // 褰撳墠鍏冪礌婊氬姩鏉$殑鍋忕Щ閲�
+        nav.addEventListener("mousedown", function(event) {
+          flag = true;
+          downX = event.clientX; // 鑾峰彇鍒扮偣鍑荤殑x涓嬫爣
+          scrollLeft = this.scrollLeft; // 鑾峰彇褰撳墠鍏冪礌婊氬姩鏉$殑鍋忕Щ閲�
+        });
+        nav.addEventListener("mousemove", function(event) {
+          if (flag) { // 鍒ゆ柇鏄惁鏄紶鏍囨寜涓嬫粴鍔ㄥ厓绱犲尯鍩�
+            var moveX = event.clientX; // 鑾峰彇绉诲姩鐨剎杞�
+            var scrollX = moveX - downX; // 褰撳墠绉诲姩鐨剎杞翠笅鏍囧噺鍘诲垰鐐瑰嚮涓嬪幓鐨剎杞翠笅鏍囧緱鍒伴紶鏍囨粦鍔ㄨ窛绂�
+            this.scrollLeft = scrollLeft - scrollX // 榧犳爣鎸変笅鐨勬粴鍔ㄦ潯鍋忕Щ閲忓噺鍘诲綋鍓嶉紶鏍囩殑婊戝姩璺濈
+          }
+        });
+        // 榧犳爣鎶捣鍋滄鎷栧姩
+        nav.addEventListener("mouseup", function() {
+          flag = false;
+        });
+        // 榧犳爣绂诲紑鍏冪礌鍋滄鎷栧姩
+        nav.addEventListener("mouseleave", function(event) {
+          flag = false;
+        });
+      }
     }
   }
 </script>
diff --git a/src/components/do/b3-work-time-management/work-time-config.vue b/src/components/do/b3-work-time-management/work-time-config.vue
index ed06257..d26142d 100644
--- a/src/components/do/b3-work-time-management/work-time-config.vue
+++ b/src/components/do/b3-work-time-management/work-time-config.vue
@@ -8,7 +8,7 @@
 			</div>
 			<div class="search_thing">
 				<div class="search_label">瀹為獙瀹わ細</div>
-				<el-select v-model="componentData.entity.laboratory" placeholder="鍏ㄩ儴" size="small">
+				<el-select v-model="componentData.entity.laboratory" placeholder="鍏ㄩ儴" size="small" @change="refreshTable()">
 					<el-option v-for="item in laboratoryList" :key="item.value" :label="item.label" :value="item.value">
 					</el-option>
 				</el-select>
@@ -16,7 +16,7 @@
 			<div class="search_thing">
 				<div class="search_label">閮ㄩ棬锛�</div>
 				<div class="search_input">
-          <el-select v-model="componentData.entity.department" placeholder="鍏ㄩ儴" size="small">
+          <el-select v-model="componentData.entity.department" placeholder="鍏ㄩ儴" size="small" @change="refreshTable()">
 					  <el-option v-for="item in partList" :key="item.value" :label="item.label" :value="item.value">
             </el-option>
           </el-select>
@@ -200,7 +200,7 @@
 		margin-top: 10px;
 		background-color: #fff;
 		width: calc(100% - 40px);
-		height: calc(100% - 60px - 80px - 10px - 40px);
+		height: calc(100% - 60px - 80px - 10px - 24px);
 		padding: 20px;
 	}
 </style>
diff --git a/src/components/do/b3-work-time-management/work-time-management.vue b/src/components/do/b3-work-time-management/work-time-management.vue
index cb657d0..17c0b8a 100644
--- a/src/components/do/b3-work-time-management/work-time-management.vue
+++ b/src/components/do/b3-work-time-management/work-time-management.vue
@@ -13,13 +13,13 @@
 			</div>
 			<div class="search_thing" style="width: 200px;">
 				<div class="search_label">鏄熸湡锛�</div>
-				<el-select v-model="componentData.entity.laboratory" placeholder="鍏ㄩ儴" size="small">
+				<el-select v-model="componentData.entity.laboratory" placeholder="鍏ㄩ儴" size="small" @change="refreshTable()">
 					<el-option v-for="item in weekList" :key="item.value" :label="item.label" :value="item.value">
 					</el-option>
 				</el-select>
 			</div>
 			<div class="search_thing">
-				<div class="search_label">鏃堕棿鑼冨洿锛�</div>
+				<div class="search_label" style="width: 90px;">鏃堕棿鑼冨洿锛�</div>
 				<div class="search_input">
           <el-date-picker
             style="width: 100%;"
@@ -28,7 +28,7 @@
             type="daterange"
             range-separator="鑷�"
             start-placeholder="寮�濮嬫棩鏈�"
-            end-placeholder="缁撴潫鏃ユ湡">
+            end-placeholder="缁撴潫鏃ユ湡" @change="refreshTable()">
           </el-date-picker>
         </div>
 			</div>
@@ -36,11 +36,11 @@
       <div class="search_thing" style="width: 200px;">
 				<div class="search_label" >鍚嶅瓧锛�</div>
 				<el-input size="small" placeholder="璇疯緭鍏�" clearable
-						v-model="componentData.entity.number"></el-input>
+						v-model="componentData.entity.number" @keyup.enter.native="refreshTable()"></el-input>
 			</div>
       <div class="search_thing" style="width: 200px;">
 				<div class="search_label">鐘舵�侊細</div>
-				<el-select v-model="componentData.entity.laboratory" placeholder="鍏ㄩ儴" size="small">
+				<el-select v-model="componentData.entity.laboratory" placeholder="鍏ㄩ儴" size="small" @change="refreshTable()">
 					<el-option v-for="item in stateList" :key="item.value" :label="item.label" :value="item.value">
 					</el-option>
 				</el-select>
diff --git a/src/components/do/b3-work-time-management/work-time-statistics.vue b/src/components/do/b3-work-time-management/work-time-statistics.vue
index e624163..fd79c90 100644
--- a/src/components/do/b3-work-time-management/work-time-statistics.vue
+++ b/src/components/do/b3-work-time-management/work-time-statistics.vue
@@ -1,19 +1,246 @@
 <template>
   <div class="work-time-statistics">
-    宸ユ椂缁熻
+    <div class="search">
+      <div class="search_thing">
+				<div class="search_label">鏃ユ湡锛�</div>
+				<div class="search_input" style="display: flex;align-items: center;">
+          <el-date-picker
+            v-model="componentData.entity.laboratory"
+            type="month"
+            format="yyyy-MM-dd HH:mm:ss"
+            value-format="yyyy-MM-dd HH:mm:ss"
+            placeholder="閫夋嫨鏈�" size="small" style="width: 100%;">
+          </el-date-picker>
+        </div>
+			</div>
+			<div class="search_thing">
+				<div class="search_label">鍛樺伐锛�</div>
+				<el-select v-model="componentData.entity.laboratory" placeholder="鍏ㄩ儴" size="small" @change="refreshTable()">
+					<el-option v-for="item in personList" :key="item.id" :label="item.name" :value="item.id">
+					</el-option>
+				</el-select>
+			</div>
+			<div class="search_thing">
+				<div class="search_label">閮ㄩ棬锛�</div>
+				<div class="search_input">
+          <el-select v-model="componentData.entity.laboratory" placeholder="鍏ㄩ儴" size="small" @change="refreshTable()">
+					<el-option v-for="item in weekList" :key="item.value" :label="item.label" :value="item.value">
+					</el-option>
+				</el-select>
+        </div>
+			</div>
+			<div class="search_thing" style="padding-left: 30px;width: 100px;">
+				<el-button size="small" @click="refresh()">閲� 缃�</el-button>
+				<el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button>
+			</div>
+      <el-button size="small" type="primary" style="position: absolute;right: 50px;" @click="handleDown">瀵� 鍑�</el-button>
+      <el-button size="small" type="primary" style="position: absolute;right: 120px;" @click="handleUp" v-show="currentTable == 'value0'">瀵� 鍏�</el-button>
+		</div>
+    <el-radio-group v-model="currentTable" size="small" :key="'111'" style="margin-top: 10px;">
+      <el-radio-button label="value0">
+        鍘熷宸ユ椂
+      </el-radio-button>
+      <el-radio-button label="value1">
+        淇宸ユ椂
+      </el-radio-button>
+    </el-radio-group>
+    <div class="table">
+      <ValueTable ref="ValueTable0"
+        v-show="currentTable == 'value0'"
+				:url="$api.auxiliaryWorkingHours.selectAuxiliaryWorkingHours"
+				:componentData="componentData" :inputUrl="$api.auxiliaryWorkingHours.selectAuxiliaryWorkingHours" :downUrl="$api.auxiliaryWorkingHours.selectAuxiliaryWorkingHours" :key="upIndex" />
+      <ValueTable ref="ValueTable1"
+        v-show="currentTable == 'value1'"
+				:url="$api.auxiliaryWorkingHours.selectAuxiliaryWorkingHours"
+				:componentData="componentData0" :key="upIndex" />
+    </div>
   </div>
 </template>
 
 <script>
+import ValueTable from '../../tool/value-table.vue'
 export default {
+  components: {
+    ValueTable
+  },
   data () {
     return{
-
+      componentData: {
+					entity: {
+						number: null,
+						department: null,
+						laboratory: null,
+						orderBy: {
+							field: 'id',
+							order: 'desc'
+						}
+					},
+					isIndex: true,
+					showSelect: false,
+					select: false,
+					do: [],
+					tagField: {
+						deviceStatus: {
+							select: []
+						},
+						equipmentManager: {
+							select: []
+						},
+						authorizedPerson: {
+							select: []
+						},
+            insProductIds:{
+              select:[]
+            }
+					},
+					linkEvent: {
+						deviceName: {
+							method: 'selectAllByOne'
+						}
+					},
+					selectField: {
+						authorizedPerson: {
+							select: [],
+							choose: true
+						},
+						equipmentManager: {
+							select: []
+						},
+            insProductIds:{
+              select:[],
+              choose: true
+            }
+					},
+					requiredAdd: [],
+					requiredUp: []
+			},
+      componentData0: {
+					entity: {
+						number: null,
+						department: null,
+						laboratory: null,
+						orderBy: {
+							field: 'id',
+							order: 'desc'
+						}
+					},
+					isIndex: true,
+					showSelect: false,
+					select: false,
+					do: [],
+					tagField: {
+						deviceStatus: {
+							select: []
+						},
+						equipmentManager: {
+							select: []
+						},
+						authorizedPerson: {
+							select: []
+						},
+            insProductIds:{
+              select:[]
+            }
+					},
+					linkEvent: {
+						deviceName: {
+							method: 'selectAllByOne'
+						}
+					},
+					selectField: {
+						authorizedPerson: {
+							select: [],
+							choose: true
+						},
+						equipmentManager: {
+							select: []
+						},
+            insProductIds:{
+              select:[],
+              choose: true
+            }
+					},
+					requiredAdd: [],
+					requiredUp: []
+			},
+      upIndex:0,
+      weekList:[],
+      personList:[],
+      currentTable:'value0'
+    }
+  },
+  mounted(){
+    this.getUsers()
+  },
+  methods: {
+    refresh(){},
+    refreshTable(){},
+    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
+        })
+    },
+    handleDown(){
+      if(this.currentTable == 'value0'){
+        this.$refs.ValueTable0.downFile(false)
+      }else{
+        this.$refs.ValueTable1.downFile(false)
+      }
+    },
+    handleUp(){
+      this.$refs.ValueTable0.openUpload()
     }
   }
 }
 </script>
 
-<style>
+<style scoped>
+.work-time-statistics{
+  height: 100%;
+}
+.search {
+		background-color: #fff;
+		height: 80px;
+		display: flex;
+		align-items: center;
+	}
 
+	.search_thing {
+		width: 270px;
+		display: flex;
+		align-items: center;
+	}
+
+	.search_label {
+		width: 60px;
+		font-size: 14px;
+		text-align: right;
+	}
+
+	.search_input {
+		width: calc(100% - 60px);
+	}
+  .table {
+		margin-top: 10px;
+		background-color: #fff;
+		width: calc(100% - 40px);
+		height: calc(100% - 60px - 80px - 10px - 40px - 25px);
+		padding: 20px;
+	}
 </style>
diff --git a/src/components/tool/scroll-paging.vue b/src/components/tool/scroll-paging.vue
index 41b2e10..367409d 100644
--- a/src/components/tool/scroll-paging.vue
+++ b/src/components/tool/scroll-paging.vue
@@ -2,14 +2,14 @@
   <div class="scroll-pagination"  ref="content" @scroll="onScroll">
     <slot></slot>
     <el-button
-        v-if="isLoding"
+        v-show="isLoding"
         type="text"
         style="display: flex; margin: 0 auto; color: #909399"
         ><i class="el-icon-loading" style="font-size:20px"></i
       ></el-button>
     <el-button
       type="text"
-      v-if="finishLoding"
+      v-show="finishLoding"
       style="display: flex; margin: 0 auto; color: #909399"
       >宸茬粡娌℃湁鏇村鍟</el-button
     >
@@ -23,6 +23,18 @@
     finishLoding: {
       type:Boolean,
       default:false
+    },
+    list:{
+      type:Array,
+      default:()=>[]
+    }
+  },
+  watch: {
+    list:{
+      deep:true,
+      handler(){
+        this.isLoding = false
+      }
     }
   },
   data() {
@@ -32,7 +44,7 @@
   },
   created(){
     // 闃叉姈
-    this.onScroll = this.debounce(this.scrollFn,2000);
+    this.onScroll = this.debounce(this.scrollFn,500);
     // 鑺傛祦
     // this.onScroll = this.throttle(this.scrollFn,1000);
   },
@@ -55,8 +67,7 @@
       this.isLoding = true
       setTimeout(() => {
         this.$emit('load')
-        this.isLoding = false
-      }, 1000)
+      }, 500)
     },
     debounce(func, delay) {
       let timer = null;
diff --git a/src/components/tool/value-table.vue b/src/components/tool/value-table.vue
index 097a84d..20b9a47 100644
--- a/src/components/tool/value-table.vue
+++ b/src/components/tool/value-table.vue
@@ -95,6 +95,12 @@
     align-items: center;
     justify-content: center;
   }
+  .el-table__empty-text{
+    text-align: left;
+    width: 100%;
+    display: inline-block;
+    margin-left: 200px;
+  }
 </style>
 
 <template>
diff --git a/src/components/view/a5-laboratory-management.vue b/src/components/view/a5-laboratory-management.vue
index 82e8e6d..d3b1cb9 100644
--- a/src/components/view/a5-laboratory-management.vue
+++ b/src/components/view/a5-laboratory-management.vue
@@ -244,8 +244,8 @@
             children:[]
           },
           {
-            value:'棰濆绫诲瀷',
-            label:'棰濆绫诲瀷',
+            value:'鎶ュ憡绫诲瀷',
+            label:'鎶ュ憡绫诲瀷',
             children:null
           },
         ],
diff --git a/src/components/view/a6-device-management.vue b/src/components/view/a6-device-management.vue
index ad072e5..7fc51d6 100644
--- a/src/components/view/a6-device-management.vue
+++ b/src/components/view/a6-device-management.vue
@@ -107,14 +107,14 @@
 							</div>
 						</el-image>
 						<!-- 琛ㄥ崟 -->
-						<el-form :label-position="labelPosition" :model="formData" label-width="100px">
-							<el-form-item label="浠櫒鍚嶇О:">
+						<el-form :label-position="labelPosition" :model="formData" label-width="120px">
+							<el-form-item label="浠櫒鍚嶇О:" required>
 							<el-input :disabled="isUp" v-model="formData.deviceName" size="small"></el-input>
 										</el-form-item>
-							<el-form-item label="浠櫒鍚嶇ОEN:">
+							<el-form-item label="浠櫒鍚嶇ОEN:" required>
 								<el-input :disabled="isUp" v-model="formData.enDeviceName" size="small"></el-input>
 											</el-form-item>
-							<el-form-item label="瑙勬牸鍨嬪彿:">
+							<el-form-item label="瑙勬牸鍨嬪彿:" required>
 								<el-input :disabled="isUp" v-model="formData.specificationModel" size="small"></el-input>
 											</el-form-item>
 							<el-form-item label="鐢熶骇鍘傚:">
@@ -132,7 +132,7 @@
 							<el-form-item label="鍑哄巶缂栧彿:">
 							<el-input :disabled="isUp" v-model="formData.factoryNo" size="small"></el-input>
 							</el-form-item>
-							<el-form-item label="绠$悊缂栧彿:">
+							<el-form-item label="绠$悊缂栧彿:" required>
 							<el-input :disabled="isUp" v-model="formData.managementNumber" size="small"></el-input>
 							</el-form-item>
 							<el-form-item label="璐疆鏃ユ湡:">
@@ -140,7 +140,7 @@
 												format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" size="small" placeholder="閫夋嫨鏃ユ湡">
 											</el-date-picker>
 										</el-form-item>
-							<el-form-item label="鍚敤鏃ユ湡:">
+							<el-form-item label="鍚敤鏃ユ湡:" required>
 											<el-date-picker :disabled="isUp" style="width:100%" v-model="formData.activationDate" type="date"
 												format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" size="small" placeholder="閫夋嫨鏃ユ湡">
 											</el-date-picker>
@@ -205,13 +205,13 @@
             <el-form-item label="鍗曚环(涓囧厓):">
               <el-input :disabled="isUp" v-model="formData.unitPrice" size="small"></el-input>
             </el-form-item>
-            <el-form-item label="褰撳墠鐘舵��:">
+            <el-form-item label="褰撳墠鐘舵��:" required>
 							<el-select :disabled="isUp" v-model="formData.deviceStatus" placeholder="璇烽�夋嫨" size="small" style="width:100%">
 								<el-option v-for="item in deviceStatusList" :key="item.value" :label="item.label" :value="item.value">
 								</el-option>
 							</el-select>
 						</el-form-item>
-            <el-form-item label="鏍″噯鍛ㄦ湡锛堟湀锛�:">
+            <el-form-item label="鏍″噯鍛ㄦ湡锛堟湀锛�:" required>
               <el-input :disabled="isUp" v-model="formData.calibrationDate" size="small"></el-input>
             </el-form-item>
 						<el-form-item label="鍥剧墖:">
@@ -258,14 +258,14 @@
 							</div>
 						</el-image>
 						<!-- 琛ㄥ崟 -->
-						<el-form :label-position="labelPosition" :model="formData2" label-width="100px">
-							<el-form-item label="浠櫒鍚嶇О:">
+						<el-form :label-position="labelPosition" :model="formData2" label-width="120px">
+							<el-form-item label="浠櫒鍚嶇О:" required>
                 <el-input v-model="formData2.deviceName" size="small"></el-input>
 							</el-form-item>
-              <el-form-item label="浠櫒鍚嶇ОEN:">
+              <el-form-item label="浠櫒鍚嶇ОEN:" required>
                 <el-input v-model="formData2.enDeviceName" size="small"></el-input>
 							</el-form-item>
-              <el-form-item label="瑙勬牸鍨嬪彿:">
+              <el-form-item label="瑙勬牸鍨嬪彿:" required>
                 <el-input v-model="formData2.specificationModel" size="small"></el-input>
 							</el-form-item>
               <el-form-item label="鐢熶骇鍘傚:">
@@ -286,7 +286,7 @@
             <el-form-item label="鍑哄巶缂栧彿:">
               <el-input v-model="formData2.factoryNo" size="small"></el-input>
             </el-form-item>
-            <el-form-item label="绠$悊缂栧彿:">
+            <el-form-item label="绠$悊缂栧彿:" required>
               <el-input v-model="formData2.managementNumber" size="small"></el-input>
             </el-form-item>
             <el-form-item label="璐疆鏃ユ湡:">
@@ -294,7 +294,7 @@
 								format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" size="small" placeholder="閫夋嫨鏃ユ湡">
 							</el-date-picker>
 						</el-form-item>
-            <el-form-item label="鍚敤鏃ユ湡:">
+            <el-form-item label="鍚敤鏃ユ湡:" required>
 							<el-date-picker style="width:100%" v-model="formData2.activationDate" type="date"
 								format="yyyy-MM-dd" value-format="yyyy-MM-dd HH:mm:ss" size="small" placeholder="閫夋嫨鏃ユ湡">
 							</el-date-picker>
@@ -348,13 +348,13 @@
             <el-form-item label="鍗曚环(涓囧厓):">
               <el-input v-model="formData2.unitPrice" size="small"></el-input>
             </el-form-item>
-            <el-form-item label="褰撳墠鐘舵��:">
+            <el-form-item label="褰撳墠鐘舵��:" required>
 							<el-select v-model="formData2.deviceStatus" placeholder="璇烽�夋嫨" size="small" style="width:100%">
 								<el-option v-for="item in deviceStatusList" :key="item.id" :label="item.label" :value="item.value">
 								</el-option>
 							</el-select>
 						</el-form-item>
-            <el-form-item label="鏍″噯鍛ㄦ湡锛堟湀锛�:">
+            <el-form-item label="鏍″噯鍛ㄦ湡锛堟湀锛�:" required>
               <el-input v-model="formData2.calibrationDate" size="small"></el-input>
             </el-form-item>
 						<el-form-item label="鍥剧墖:">
@@ -667,6 +667,34 @@
 				}
 			},
 			submitForm() {
+        if(!this.formData.deviceName){
+          this.$message.error('鏈緭鍏ヤ华鍣ㄥ悕绉�')
+          return
+        }
+        if(!this.formData.enDeviceName){
+          this.$message.error('鏈緭鍏ヤ华鍣ㄥ悕绉癊N')
+          return
+        }
+        if(!this.formData.specificationModel){
+          this.$message.error('鏈緭鍏ヨ鏍煎瀷鍙�')
+          return
+        }
+        if(!this.formData.managementNumber){
+          this.$message.error('鏈緭鍏ョ鐞嗙紪鍙�')
+          return
+        }
+        if(!this.formData.activationDate){
+          this.$message.error('鏈緭鍏ュ惎鐢ㄦ棩鏈�')
+          return
+        }
+        if(!this.formData.deviceStatus){
+          this.$message.error('鏈�夋嫨褰撳墠鐘舵��')
+          return
+        }
+        if(!this.formData.calibrationDate){
+          this.$message.error('鏈緭鍏ユ牎鍑嗗懆鏈燂紙鏈堬級')
+          return
+        }
 				delete this.formData.createTime
 				delete this.formData.updateTime
 				delete this.formData.createUser
@@ -693,6 +721,34 @@
 				})
 			},
 			submitForm2() {
+        if(!this.formData2.deviceName){
+          this.$message.error('鏈緭鍏ヤ华鍣ㄥ悕绉�')
+          return
+        }
+        if(!this.formData2.enDeviceName){
+          this.$message.error('鏈緭鍏ヤ华鍣ㄥ悕绉癊N')
+          return
+        }
+        if(!this.formData2.specificationModel){
+          this.$message.error('鏈緭鍏ヨ鏍煎瀷鍙�')
+          return
+        }
+        if(!this.formData2.managementNumber){
+          this.$message.error('鏈緭鍏ョ鐞嗙紪鍙�')
+          return
+        }
+        if(!this.formData2.activationDate){
+          this.$message.error('鏈緭鍏ュ惎鐢ㄦ棩鏈�')
+          return
+        }
+        if(!this.formData2.deviceStatus){
+          this.$message.error('鏈�夋嫨褰撳墠鐘舵��')
+          return
+        }
+        if(!this.formData2.calibrationDate){
+          this.$message.error('杈撳叆鏍″噯鍛ㄦ湡锛堟湀锛�')
+          return
+        }
 				this.upLoad2 = true;
         this.formData2.insProductIds = this.formData2.insProductIds.join()
 				this.$axios.post(this.$api.deviceScope.addDeviceParameter, this.formData2, {
diff --git a/src/components/view/a6-device-overview.vue b/src/components/view/a6-device-overview.vue
index 196ea2e..1e8995e 100644
--- a/src/components/view/a6-device-overview.vue
+++ b/src/components/view/a6-device-overview.vue
@@ -148,11 +148,11 @@
 			</div>
 			<div class="search_thing" style="padding-left: 30px;">
 				<el-button size="small" @click="refresh()">閲� 缃�</el-button>
-				<el-button size="small" type="primary" @click="currentPage= 1,list=[],finishLoding = false,refreshTable()">鏌� 璇�</el-button>
+				<el-button size="small" type="primary" @click="currentPage= 1,keyMap = {},list=[],finishLoding = false,refreshTable()">鏌� 璇�</el-button>
 			</div>
 		</div>
 		<div class="table" v-loading="loading">
-      <scroll-pagination @load="refreshTable" :finishLoding="finishLoding">
+      <scroll-pagination @load="refreshTable" :finishLoding="finishLoding" :list="list">
         <ul class="card">
         <li v-for="(m,i) in list" :key="i">
           <el-image class="img" :src="javaApi+'/img/'+m.imageUpload">
@@ -218,17 +218,27 @@
         pageSize: 16, // 涓�椤�16鏉�
         total: '',
         loading: true, // 缁勪欢loading鐨勫睍绀�,榛樿涓簍rue
-        finishLoding: false // 鍔犺浇瀹屾垚锛屾樉绀哄凡缁忔病鏈夋洿澶氫簡
+        finishLoding: false, // 鍔犺浇瀹屾垚锛屾樉绀哄凡缁忔病鏈夋洿澶氫簡
+        keyMap: {}
 			}
 		},
     created() {
       this.selectEnumByCategory()
+      this.keyMap = {};
       this.currentPage = 1;
       this.list = [];
       this.refreshTable();
     },
 		methods: {
 			refreshTable() {
+        const key = `_${this.currentPage}`
+        const value = this.keyMap[key]
+        // 濡傛灉value瀛樺湪锛岃〃绀虹紦瀛樻湁鍊硷紝閭d箞闃绘璇锋眰
+        if(value) {
+          return
+        }
+        // value涓嶅瓨鍦紝琛ㄧず绗竴娆¤姹�,璁剧疆鍗犱綅
+        this.keyMap[key] = 'temp'
         if(this.currentPage==1){
           this.loading = true
         }
@@ -284,6 +294,7 @@
 				})
 			},
 			refresh() {
+        this.keyMap = {};
         this.currentPage= 1;
         this.list=[];
         this.finishLoding = false;
diff --git a/src/components/view/a6-personnel-overview.vue b/src/components/view/a6-personnel-overview.vue
index 52b9a24..48f969c 100644
--- a/src/components/view/a6-personnel-overview.vue
+++ b/src/components/view/a6-personnel-overview.vue
@@ -87,11 +87,11 @@
 			</div>
 			<div class="search_thing" style="padding-left: 30px;">
 				<el-button size="small" @click="refresh()">閲� 缃�</el-button>
-				<el-button size="small" type="primary" @click="currentPage= 1,list=[],finishLoding = false,refreshTable()">鏌� 璇�</el-button>
+				<el-button size="small" type="primary" @click="currentPage= 1,list=[],finishLoding = false,keyMap = {},refreshTable()">鏌� 璇�</el-button>
 			</div>
 		</div>
 		<div class="table" v-loading="loading">
-      <scroll-pagination @load="refreshTable" :finishLoding="finishLoding">
+      <scroll-pagination @load="refreshTable" :finishLoding="finishLoding" :list="list">
         <ul class="card" style="margin-top: 10px;">
         <li v-for="(m,i) in list" :key="i">
           <el-image style="width: 80px;
@@ -143,16 +143,26 @@
         pageSize: 16, // 涓�椤�16鏉�
         total: '',
         loading: true, // 缁勪欢loading鐨勫睍绀�,榛樿涓簍rue
-        finishLoding: false // 鍔犺浇瀹屾垚锛屾樉绀哄凡缁忔病鏈夋洿澶氫簡
+        finishLoding: false, // 鍔犺浇瀹屾垚锛屾樉绀哄凡缁忔病鏈夋洿澶氫簡
+        keyMap: {}
 			}
 		},
     created() {
+      this.keyMap = {};
       this.currentPage = 1;
       this.list = [];
       this.refreshTable();
     },
 		methods: {
 			refreshTable() {
+        const key = `_${this.currentPage}`
+        const value = this.keyMap[key]
+        // 濡傛灉value瀛樺湪锛岃〃绀虹紦瀛樻湁鍊硷紝閭d箞闃绘璇锋眰
+        if(value) {
+          return
+        }
+        // value涓嶅瓨鍦紝琛ㄧず绗竴娆¤姹�,璁剧疆鍗犱綅
+        this.keyMap[key] = 'temp'
         if(this.currentPage==1){
           this.loading = true
         }
@@ -187,6 +197,7 @@
 				})
 			},
 			refresh() {
+        this.keyMap = {};
         this.currentPage= 1;
         this.list=[];
         this.finishLoding = false;
diff --git a/src/components/view/a7-standard-method.vue b/src/components/view/a7-standard-method.vue
index b210005..e291006 100644
--- a/src/components/view/a7-standard-method.vue
+++ b/src/components/view/a7-standard-method.vue
@@ -164,8 +164,8 @@
               multiple: true
             },
           },
-          requiredAdd: ['code', 'name', 'structureTestObjectId', 'isProduct', 'isUse', 'nameEn'],
-          requiredUp: ['code', 'name', 'structureTestObjectId', 'isProduct', 'isUse', 'nameEn']
+          requiredAdd: ['code', 'name', 'isProduct', 'isUse', 'nameEn'],
+          requiredUp: ['code', 'name', 'isProduct', 'isUse', 'nameEn']
         },
         entityCopy: {},
         upIndex: 0,
diff --git a/src/components/view/b1-expenses.vue b/src/components/view/b1-expenses.vue
index be06f02..cd5ee69 100644
--- a/src/components/view/b1-expenses.vue
+++ b/src/components/view/b1-expenses.vue
@@ -66,9 +66,9 @@
           </div>
         </div>
         <div class="search_thing">
-          <div class="search_label">濮旀墭浜猴細</div>
+          <div class="search_label">濮旀墭鍗曚綅锛�</div>
           <div class="search_input"><el-input size="small" placeholder="璇疯緭鍏�" clearable
-              v-model="componentData.entity.name" @keyup.enter.native="refreshTable()"></el-input></div>
+              v-model="componentData.entity.company" @keyup.enter.native="refreshTable()"></el-input></div>
         </div>
         <div class="search_thing" style="padding-left: 30px;">
           <el-button size="small" @click="refresh()">閲� 缃�</el-button>
@@ -102,7 +102,7 @@
       return {
         componentData: {
           entity: {
-            name: null,
+            company: null,
             dates: null,
             orderBy: {
               field: 'id,ins_sample_id',
diff --git a/src/components/view/b1-inspect-order-plan.vue b/src/components/view/b1-inspect-order-plan.vue
index 895743d..6ae4714 100644
--- a/src/components/view/b1-inspect-order-plan.vue
+++ b/src/components/view/b1-inspect-order-plan.vue
@@ -102,6 +102,11 @@
 	.ins-order-plan-main .el-form-item__label{
 		color: #000;
 	}
+
+  .ins-order-plan-main .el-table th.el-table__cell>.cell{
+    height: 46px;
+    line-height: 30px;
+  }
 </style>
 <template>
 	<div class="ins-order-plan-main">
@@ -245,9 +250,9 @@
 							font: '澶嶆牳',
 							type: 'text',
 							method: 'handleReview',
-							/* disabFun: (row, index) => {
+							disabFun: (row, index) => {
 								return row.userId == null || row.insState != 3 || row.verifyUser != 1
-							} */
+							}
 						}, {
 							id: '',
 							font: '璁ら',
diff --git a/src/components/view/b1-inspection-order.vue b/src/components/view/b1-inspection-order.vue
index 7ccb0ea..a5f0a23 100644
--- a/src/components/view/b1-inspection-order.vue
+++ b/src/components/view/b1-inspection-order.vue
@@ -509,13 +509,15 @@
 			},
 			// 涓嬭浇鎶ュ憡
 			download(row) {
-        // console.log(row);
-        let url = row.url;
-        const link = document.createElement('a');
-        link.href = this.javaApi + url;
-        link.target = '_blank';
-        document.body.appendChild(link);
-        link.click();
+        let url = row.urlS?row.urlS:row.url;
+        if(url){
+          url = url.split('.')[0]+'.pdf'
+          const link = document.createElement('a');
+          link.href = this.javaApi + url;
+          link.target = '_blank';
+          document.body.appendChild(link);
+          link.click();
+        }
       },
 			// 瀹℃牳
 			handleVerify(row) {
diff --git a/src/components/view/b2-standard.vue b/src/components/view/b2-standard.vue
index d75d7ca..986d535 100644
--- a/src/components/view/b2-standard.vue
+++ b/src/components/view/b2-standard.vue
@@ -1,12 +1,12 @@
 <style scoped>
   .standard {
-    padding: 20px 0;
+    padding: 10px 0;
     display: flex;
   }
 
   .left {
     width: 270px;
-    height: calc(100% - 40px - 30px);
+    height: calc(100% - 40px - 10px);
     background-color: white;
     padding: 15px;
   }
@@ -38,8 +38,8 @@
   }
 
   .right .title {
-    height: 50px;
-    line-height: 50px;
+    height: 34px;
+    line-height: 34px;
     padding: 0 10px;
     background-color: white;
   }
@@ -51,19 +51,33 @@
 
   .product_table {
     border-top: 1px solid #ebeef5;
-    height: calc(100% - 275px);
+    height: calc(100% - 235px);
     margin-top: 5px;
     background-color: white;
     user-select: none;
   }
 
   .product_table .el-table {
-    height: 100%;
+    height: calc(100% - 35px) !important;
   }
 
   .sort {
     width: 80% !important;
     overflow: hidden;
+  }
+  >>>.el-table__body-wrapper{
+    height: calc(100% - 46px) !important;
+  }
+  >>>.header-class{
+    height: 40px !important;
+  }
+  >>>.header-class th.el-table__cell>.cell{
+    line-height: 20px !important;
+    padding-top: 0 !important;
+    padding-bottom: 0 !important;
+  }
+  >>>.el-table__row{
+    height: 35px !important;
   }
 </style>
 <style>
@@ -131,19 +145,10 @@
     <div class="right">
       <el-row class="title">
         <el-col :span="24" style="font-size: 14px;color: #999;">{{selectTree}}</el-col>
-        <!-- <el-col :span="selectTree==''?24:14" style="text-align: right;" v-if="selectTree!=''"> -->
-        <!-- <el-button size="small" type="primary" @click="addStandardDia = true"
-						v-if="addStandardMethod">鏂板鏍囧噯</el-button>
-					<el-button size="small" type="primary" @click="addProductDia = true" v-if="addStandardProduct">鏂板椤圭洰</el-button>
-					<el-button size="small" @click="delStandardProductByIds" v-if="delStandardProduct">
-						<i class="el-icon-delete" style="color: #3A7BFA;"></i>
-						<span style="color: #3A7BFA;">鍒犻櫎</span>
-					</el-button> -->
-        <!-- </el-col> -->
       </el-row>
       <el-row class="standard_table" v-loading="tableLoad">
-        <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 class="el-table" :data="standardList" style="width: 100%;height: 220px !important;" height="220" tooltip-effect="dark"
+          highlight-current-row @row-click="rowClick" ref="standard" header-row-class-name="header-class">
           <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>
@@ -162,11 +167,15 @@
       </el-row>
       <el-row class="product_table" v-loading="tableLoad2">
         <el-table :data="productList" ref="productTable" style="width: 100%;" height="100%" tooltip-effect="dark" stripe
-          :fit="true" border @selection-change="handleSelectionChange" :row-class-name="tableRowClassName"
-          @select="upProductSelect" @select-all="handleAll">
-          <el-table-column type="selection" width="65">
+          :fit="true" border
+          @selection-change="handleSelectionChange" :row-class-name="tableRowClassName"
+          @select="upProductSelect"
+          @select-all="handleAll"
+          class="productTable"
+          header-row-class-name="header-class">
+          <el-table-column type="selection" width="50" >
           </el-table-column>
-          <el-table-column prop="model" label="鍨嬪彿" min-width="120" show-overflow-tooltip></el-table-column>
+          <el-table-column prop="model" label="鍨嬪彿" min-width="100" 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"
@@ -218,7 +227,8 @@
           <el-table-column prop="manHourGroup" label="宸ユ椂鍒嗙粍" width="100" show-overflow-tooltip></el-table-column>
           <el-table-column prop="templateId" label="妯℃澘" width="200">
             <template slot-scope="scope">
-              <el-select v-model="scope.row.templateId" size="small" @change="(value)=>upStandardProductListOfTemplate(value,scope.row.id)">
+              <el-select v-model="scope.row.templateId" size="small" filterable
+               @change="(value)=>upStandardProductListOfTemplate(value,scope.row.id)">
                 <el-option v-for="(a, ai) in templateList" :key="ai" :label="a.name" :value="a.id"></el-option>
               </el-select>
             </template>
@@ -230,6 +240,14 @@
             </template>
           </el-table-column>
         </el-table>
+        <el-pagination
+        style="position: absolute;right: 16px;bottom: 1px;"
+          @current-change="handleCurrentChange"
+          :current-page="currentPage"
+          :page-size="pageSize"
+          layout="total, prev, pager, next, jumper"
+          :total="total">
+        </el-pagination>
       </el-row>
     </div>
     <el-dialog title="鍒嗙被娣诲姞" :visible.sync="addDia" width="400px">
@@ -272,7 +290,7 @@
         <el-button type="primary" @click="addStandardTree" :loading="addLoad">纭� 瀹�</el-button>
       </span>
     </el-dialog>
-    <el-dialog title="鏂板鏍囧噯" :visible.sync="addStandardDia" width="400px">
+    <!-- <el-dialog title="鏂板鏍囧噯" :visible.sync="addStandardDia" width="400px">
       <div class="body">
         <el-row style="line-height: 50px;">
           <el-col :span="6" style="text-align: right;">
@@ -289,8 +307,8 @@
         <el-button @click="addStandardDia = false">鍙� 娑�</el-button>
         <el-button type="primary" @click="addStandardMethodList" :loading="addLoad2">纭� 瀹�</el-button>
       </span>
-    </el-dialog>
-    <el-dialog title="鏂板椤圭洰" :visible.sync="addProductDia" width="70%">
+    </el-dialog> -->
+    <!-- <el-dialog title="鏂板椤圭洰" :visible.sync="addProductDia" width="70%">
       <div class="body" style="height: 60vh;" v-if="addProductDia">
         <ValueTable ref="ValueTable" :url="$api.capacityScope.selectItemParameterList" :componentData="componentData" />
       </div>
@@ -298,7 +316,7 @@
         <el-button @click="addProductDia = false">鍙� 娑�</el-button>
         <el-button type="primary" @click="addStandardProductDo" :loading="addLoad3">纭� 瀹�</el-button>
       </span>
-    </el-dialog>
+    </el-dialog> -->
     <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">
@@ -427,7 +445,11 @@
         sectionLoad: false,
         sectionRow: null,
         sectionList: [],
-        templateList: []
+        templateList: [],
+        total:0,
+        pageSize:100,
+        currentPage:1,
+        standardId: 0
       }
     },
     mounted() {
@@ -906,16 +928,19 @@
       },
       rowClick(row, column, event) {
         this.tableLoad2 = true
+        this.standardId = row.id
         this.$axios.post(this.$api.standardTree.selectStandardProductListByMethodId, {
           id: row.id,
-          tree: this.selectTree
+          tree: this.selectTree,
+          page: this.currentPage
         }).then(res => {
-          this.productList = res.data
+          this.productList = res.data.productList
+          this.total = res.data.total
           setTimeout(() => {
             this.productList.forEach(a => {
               if (a.state == 1) this.toggleSelection(a)
             })
-          }, 300)
+          }, 200)
           this.tableLoad2 = false
         })
       },
@@ -932,7 +957,7 @@
         return '';
       },
       upProductSelect(selection, row) {
-        row.state = row.state == 1 ? 0 : 1
+        row.state = (row.state == 1 ? 0 : 1)
         this.$axios.post(this.$api.standardTree.upStandardProductList, {
           id: row.id,
           state: row.state
@@ -954,12 +979,14 @@
       },
       handleAll(e) {
         if (e.length > 0) {
-          this.productList.map(m => {
+          this.productList = this.productList.map(m => {
+            m.state = 0
             this.upProductSelect(null, m)
             return m
           })
         } else {
-          this.productList.map(m => {
+          this.productList = this.productList.map(m => {
+            m.state = 1
             this.upProductSelect(null, m)
             return m
           })
@@ -1036,6 +1063,23 @@
           this.templateList = res.data
         })
       },
+      handleCurrentChange(val) {
+        this.currentPage = val;
+        this.tableLoad2 = true
+        this.$axios.post(this.$api.standardTree.selectStandardProductListByMethodId, {
+          id: this.standardId,
+          tree: this.selectTree,
+          page: val
+        }).then(res => {
+          this.productList = res.data.productList
+          setTimeout(() => {
+            this.productList.forEach(a => {
+              if (a.state == 1) this.toggleSelection(a)
+            })
+          }, 200)
+          this.tableLoad2 = false
+        })
+      },
     }
   }
 </script>
diff --git a/src/components/view/b3-classes.vue b/src/components/view/b3-classes.vue
index 2d9ffd5..684829a 100644
--- a/src/components/view/b3-classes.vue
+++ b/src/components/view/b3-classes.vue
@@ -44,12 +44,12 @@
       <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" v-if="downPower">瀵� 鍑�</el-button>
+      <el-button size="small" type="primary" v-if="downPower" @click="handleDown" :loading="downLoading">瀵� 鍑�</el-button>
       <el-button size="small" type="primary" @click="schedulingVisible = true" v-if="addPower">鎺� 鐝�</el-button>
     </div>
   </div>
   <div class="center" v-loading="pageLoading">
-    <scroll-pagination @load="init" :finishLoding="finishLoding" v-show="query.month&&list.length>0" style="height: 100%;" :key="'123'">
+    <scroll-pagination @load="init" :finishLoding="finishLoding" v-show="query.month&&list.length>0" style="height: 100%;" :key="'123'" :list="list">
       <div class="clearfix">
         <div class="fixed-left">
           <div class="content-title" style="padding-left: 16px;box-sizing: border-box;">
@@ -60,7 +60,7 @@
             <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="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 }},宸�:{{ item.day6 }}</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;">{{ query.month?item.monthlyAttendance
 .totalAttendance:item.sidebarAnnualAttendance
@@ -75,7 +75,7 @@
                 <span class="month" style="position: absolute;top: 4px;" v-if="item.week=='鍛ㄦ棩'">{{ item.weekNum }}鍛�</span>
                 <p style="height: 26px;position: absolute;bottom: 12px;">
                   <span class="day">{{ item.day }}</span>
-                  <span class="week">{{ item.week }}</span>
+                  <span class="week">{{ item.week.charAt(1) }}</span>
                 </p>
               </div>
             </div>
@@ -83,13 +83,13 @@
             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" :class="{type0:m.shift==='0',type1:m.shift==='1',type2:m.shift==='2',type3:m.shift==='3',type4:m.shift==='4',type5:m.shift==='5',type6:m.shift==='6'}">
                   <!-- <div class="work-box-left">
                     <span>{{ getShiftByDic(m.shift) }}</span>
                   </div> -->
                   <el-dropdown trigger="click" placement="bottom" @command="e=>handleCommand(e,m)" :disabled="!downPower">
                     <!-- <i class="el-icon-arrow-down el-icon--right" style="font-size: 20px;color: #fff;cursor: pointer;"></i> -->
-                    <span style="cursor: pointer;">{{ getShiftByDic(m.shift) }}</span>
+                    <span style="cursor: pointer;" :style="`opacity: ${getShiftByDic(m.shift)=='鏃�'?0:1};`">{{ getShiftByDic(m.shift) }}</span>
                     <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>
@@ -101,7 +101,7 @@
         </div>
       </div>
     </scroll-pagination>
-    <scroll-pagination @load="initYear" :finishLoding="finishLoding" v-show="!query.month&&yearList.length>0" style="width: 100%;" :key="'111'">
+    <scroll-pagination @load="initYear" :finishLoding="finishLoding" v-show="!query.month&&yearList.length>0" style="width: 100%;" :key="'111'" :list="yearList">
       <div class="clearfix year-table">
       <div class="fixed-left">
         <div class="content-title" style="padding-left: 16px;box-sizing: border-box;">
@@ -112,7 +112,7 @@
             <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="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 }},宸�:{{ item.day6 }}</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.work_time }}澶�</span></p>
             </div>
@@ -139,7 +139,7 @@
               <div class="content-body-item" v-for="(m,i) in item.monthList" :key="'d'+i" :class="{hoverType:currentUserIndex==index}">
                 <p style="color:rgb(153, 153, 153);font-size: 12px;">鍚堣鍑哄嫟锛�<span style="font-size: 14px;color:#000">{{ m.totalMonthAttendance }}</span></p>
                 <p style="color:rgb(153, 153, 153);font-size: 12px;">
-                  鏃�: {{ m.day0 }}, 涓�:  {{ m.day1 }}, 澶�:  {{ m.day2 }}, 浼�:  {{ m.day3 }}, 鍋�:  {{ m.day4 }}
+                  鏃�:{{ m.day0 }},涓�:{{ m.day1 }},澶�:{{ m.day2 }},浼�:{{ m.day3 }},鍋�:{{ m.day4 }},宸�:{{ m.day6 }}
                 </p>
               </div>
             </div>
@@ -286,7 +286,9 @@
       pageLoading: false, // 缁勪欢loading鐨勫睍绀�,榛樿涓簍rue
       finishLoding: false, // 鍔犺浇瀹屾垚锛屾樉绀哄凡缁忔病鏈夋洿澶氫簡
       monthList:[],
-      yearList:[]
+      yearList:[],
+      downLoading:false,
+      keyMap:{},
     }
   },
   watch: {
@@ -331,6 +333,7 @@
     refresh(){
       this.list = [];
       this.yearList = []
+      this.keyMap = {};
       this.currentPage = 1
       this.query = {
         userName:'',
@@ -345,6 +348,7 @@
       }
     },
     refreshTable(){
+      this.keyMap = {};
       this.currentPage = 1
       if(this.query.month){
         this.list = [];
@@ -355,6 +359,14 @@
       }
     },
     init(){
+      const key = `_${this.currentPage}`
+      const value = this.keyMap[key]
+      // 濡傛灉value瀛樺湪锛岃〃绀虹紦瀛樻湁鍊硷紝閭d箞闃绘璇锋眰
+      if(value) {
+        return
+      }
+      // value涓嶅瓨鍦紝琛ㄧず绗竴娆¤姹�,璁剧疆鍗犱綅
+      this.keyMap[key] = 'temp'
       if(this.currentPage==1){
         this.pageLoading = true
       }
@@ -405,6 +417,14 @@
         })
     },
     initYear(){
+      const key = `_${this.currentPage}`
+      const value = this.keyMap[key]
+      // 濡傛灉value瀛樺湪锛岃〃绀虹紦瀛樻湁鍊硷紝閭d箞闃绘璇锋眰
+      if(value) {
+        return
+      }
+      // value涓嶅瓨鍦紝琛ㄧず绗竴娆¤姹�,璁剧疆鍗犱綅
+      this.keyMap[key] = 'temp'
       // pageYear
       if(this.currentPage==1){
         this.pageLoading = true
@@ -516,6 +536,40 @@
         this.refresh()
       })
     },
+    handleDown(){
+      let year = this.query.year.getFullYear()
+      let time = '';
+      if(this.query.month){
+        let month = this.query.month>9?this.query.month:'0'+this.query.month
+        time = year+'-'+month+'-01 00:00:00'
+      }else{
+        time = year+'-01-01 00:00:00'
+      }
+      this.downLoading = true
+      this.$axios.get(this.$api.performanceShift.export+`?time=${time}&userName=${this.query.userName}&laboratory=${this.query.laboratory}&isMonth=${this.query.month?true:false}`,{responseType: 'blob'}).then(res => {
+        this.$message.success('涓嬭浇鎴愬姛')
+        this.downLoading = false
+        const blob = new Blob([res], {
+          type: 'application/force-download'
+        })
+        let fileName="";
+        if(this.query.month){
+          fileName = year +'-'+this.query.month+' 鐝淇℃伅'
+        }else{
+          fileName = year+' 鐝姹囨��'
+        }
+        const filename = decodeURI(fileName+'.xlsx')
+        // 鍒涘缓涓�涓秴閾炬帴锛屽皢鏂囦欢娴佽祴杩涘幓锛岀劧鍚庡疄鐜拌繖涓秴閾炬帴鐨勫崟鍑讳簨浠�
+        const elink = document.createElement('a')
+        elink.download = filename
+        elink.style.display = 'none'
+        elink.href = URL.createObjectURL(blob)
+        document.body.appendChild(elink)
+        elink.click()
+        URL.revokeObjectURL(elink.href) // 閲婃斁URL 瀵硅薄
+        document.body.removeChild(elink)
+      })
+    },
     selectEnumByCategory() {
       this.$axios.post(this.$api.enums.selectEnumByCategory, {
         category: "鐝绫诲瀷"
@@ -583,7 +637,7 @@
       if(obj){
         return obj.label
       }
-      return '鏈帓鐝�'
+      return '鏃�'
     }
   }
 }
@@ -664,7 +718,7 @@
 }
 .content-title-item{
   height: 100%;
-  width: 60px;
+  width: 50px;
   flex-shrink: 0;
   border-bottom: 1px solid #EEEEEE;
   box-sizing: border-box;
@@ -699,8 +753,9 @@
 }
 .content-body-item{
   height: 70px;
-  width: 60px;
+  width: 50px;
   flex-shrink: 0;
+  font-size: 12px;
   box-sizing: border-box;
   padding: 4px;
   border-right: 1px solid #EEEEEE;
@@ -752,6 +807,20 @@
 .work-box.type4 span{
   color: #F56C6C !important;
 }
+.work-box.type5{
+  background: #ff46c145;
+  color: #ff46c0 !important;
+}
+.work-box.type5 span{
+  color: #ff46c0 !important;
+}
+.work-box.type6{
+  background: #00036418;
+  color: #000464 !important;
+}
+.work-box.type6 span{
+  color: #000464 !important;
+}
 /* .el-icon-arrow-down::before{
   color: #c6c4c4;
 } */
diff --git a/src/components/view/b3-work-time-management.vue b/src/components/view/b3-work-time-management.vue
index 9a90bfc..66d77a4 100644
--- a/src/components/view/b3-work-time-management.vue
+++ b/src/components/view/b3-work-time-management.vue
@@ -27,7 +27,7 @@
   },
   data() {
     return{
-      currentComponent:'workTimeConfig'
+      currentComponent:'workTimeStatistics'
     }
   }
 }
diff --git a/src/components/view/index-index.vue b/src/components/view/index-index.vue
index d74400e..7c0fc28 100644
--- a/src/components/view/index-index.vue
+++ b/src/components/view/index-index.vue
@@ -241,7 +241,31 @@
 		text-align: left;
     margin-bottom: 10px;
 	}
-
+  >>>.el-calendar-day span{
+    display: inline-block;
+    width: 30px;
+    height: 30px;
+    line-height: 30px;
+    text-align: center;
+    border-radius: 4px;
+  }
+  >>>.is-selected{
+    background: transparent !important;
+  }
+  >>>.is-selected .el-calendar-day{
+    background: transparent !important;
+  }
+  >>>.is-selected .el-calendar-day span{
+    background: #3A7BFA !important;
+    color: #fff !important;
+  }
+  >>>.el-calendar-day:hover{
+    background: transparent;
+  }
+  >>>.el-calendar-day span:hover{
+    background: #3A7BFA !important;
+    color: #fff !important;
+  }
 </style>
 
 <template>
@@ -280,7 +304,7 @@
               <img src="../../../static/img/index-0.svg" alt="">
             </div>
             <div class="mun">
-              <p style="font-size: 20px;">254</p>
+              <p style="font-size: 20px;">0</p>
               <p style="font-size: 14px;margin-bottom: 10px;">鎴戠殑寰呭姙</p>
             </div>
           </div>
@@ -289,7 +313,7 @@
               <img src="../../../static/img/index-1.svg" alt="">
             </div>
             <div class="mun">
-              <p style="font-size: 20px;">254</p>
+              <p style="font-size: 20px;">0</p>
               <p style="font-size: 14px;margin-bottom: 10px;">宸插姙浜嬪疁</p>
             </div>
           </div>
@@ -298,7 +322,7 @@
               <img src="../../../static/img/index-2.svg" alt="">
             </div>
             <div class="mun">
-              <p style="font-size: 20px;">254</p>
+              <p style="font-size: 20px;">0</p>
               <p style="font-size: 14px;margin-bottom: 10px;">鍓╀綑寰呭姙</p>
             </div>
           </div>
@@ -307,7 +331,7 @@
               <img src="../../../static/img/index-3.svg" alt="">
             </div>
             <div class="mun">
-              <p style="font-size: 20px;">254</p>
+              <p style="font-size: 20px;">0</p>
               <p style="font-size: 14px;margin-bottom: 10px;">杩戞湡浜嬪疁</p>
             </div>
           </div>
@@ -332,8 +356,8 @@
                         <span>
                             {{ data.day.split('-').slice(2)+'' }}
                         </span>
-                    <el-badge v-if="data.isSelected" is-dot class="item">
-                    </el-badge>
+                    <!-- <el-badge v-if="data.isSelected" is-dot class="item">
+                    </el-badge> -->
                 </template>
               </el-calendar>
             </div>
@@ -354,7 +378,7 @@
             <div class="tab-item" style="cursor: pointer;" :class="{active:currentIndex==5}" @click="currentIndex=5">閫氱煡閫氬憡</div>
           </div>
           <div class="right-3-list" v-loading="listLoading">
-            <scroll-pagination @load="getList" :finishLoding="finishLoding">
+            <scroll-pagination @load="getList" :finishLoding="finishLoding" :list="list">
               <div class="list3-item" v-for="(m,i) in list" :key="i">
               <div class="list3-item-title">
                 <img src="../../../static/img/index-tip.svg" alt="">
@@ -439,7 +463,9 @@
         pageSize: 8, // 涓�椤�7鏉�
         total: null,
         listLoading: true, // 缁勪欢loading鐨勫睍绀�,榛樿涓簍rue
-        finishLoding: false // 鍔犺浇瀹屾垚锛屾樉绀哄凡缁忔病鏈夋洿澶氫簡
+        finishLoding: false, // 鍔犺浇瀹屾垚锛屾樉绀哄凡缁忔病鏈夋洿澶氫簡
+        timer:null,
+        keyMap:{},
 			}
 		},
     watch:{
@@ -447,6 +473,7 @@
         this.getScheduleByMe()
       },
       currentIndex(){
+        this.keyMap = {}
         this.currentPage = 1;
         this.list = [];
         this.getList();
@@ -458,15 +485,33 @@
 			setInterval(() => {
 				this.nowTime()
 			}, 1000)
-      this.init();
       this.weekdays = this.getWeekdaysForNextWeek()
-      this.getScheduleByMe()
+      this.init();
       this.currentPage = 1;
+      this.keyMap = {}
       this.list = [];
       this.getList();
+      this.getScheduleByMe()
+      this.timer&&clearInterval(this.timer)
+      this.timer = setInterval(() => {
+        this.init();
+        this.currentPage = 1;
+        this.keyMap = {}
+        this.list = [];
+        this.getList();
+        this.getScheduleByMe()
+      },1000*60*10)
 		},
 		methods: {
       getList(){
+        const key = `_${this.currentPage}`
+        const value = this.keyMap[key]
+        // 濡傛灉value瀛樺湪锛岃〃绀虹紦瀛樻湁鍊硷紝閭d箞闃绘璇锋眰
+        if(value) {
+          return
+        }
+        // value涓嶅瓨鍦紝琛ㄧず绗竴娆¤姹�,璁剧疆鍗犱綅
+        this.keyMap[key] = 'temp'
         if(this.currentPage==1){
           this.listLoading = true
         }
@@ -623,10 +668,11 @@
         let weekdays = [];
         for (let i = 0; i < 7; i++) {
           let date = new Date();
-          date.setDate(date.getDate() + i); // 浠婂ぉ涔嬪悗鐨勬棩瀛�
+          date.setDate(date.getDate() - i); // 浠婂ぉ涔嬪悗鐨勬棩瀛�
           let day = date.getDay(); // 0-6 浠h〃鏄熸湡鏃ュ埌鏄熸湡鍏�
           weekdays.push(day);
         }
+        weekdays.reverse()
         weekdays = weekdays.map(m=>{
           let day =''
           switch (m) {
@@ -691,5 +737,8 @@
       })
     },
 		},
+    deactivated(){
+      this.timer&&clearInterval(this.timer)
+    }
 	}
 </script>
diff --git a/src/components/view/notice-detail.vue b/src/components/view/notice-detail.vue
index 0c67cb0..b1fd617 100644
--- a/src/components/view/notice-detail.vue
+++ b/src/components/view/notice-detail.vue
@@ -1,7 +1,7 @@
 <template>
   <div class="notice-detail-page">
     <div class="notice-detail-head">
-      <h4 style="margin-bottom: 16px;">{{ noticeInfo.theme }} <el-tag style="margin-left: 10px;" :type="options.find(m=>m.value==noticeInfo.messageType).type" v-if="options.find(m=>m.value==noticeInfo.messageType)">{{ options.find(m=>m.value==noticeInfo.messageType).label }}</el-tag></h4>
+      <h4 style="margin-bottom: 16px;" v-if="noticeInfo.theme">{{ noticeInfo.theme }} <el-tag style="margin-left: 10px;" :type="options.find(m=>m.value==noticeInfo.messageType).type" v-if="options.find(m=>m.value==noticeInfo.messageType)">{{ options.find(m=>m.value==noticeInfo.messageType).label }}</el-tag></h4>
       <p style="font-size: 12px;color: #999;margin-bottom: 20px;">
         <!-- <span>娑堟伅绫诲瀷锛氬鎵�&nbsp; </span> -->
         <span>鍙戦�佷汉锛歿{ noticeInfo.createUser }} </span>
@@ -41,15 +41,11 @@
       options:[]
     }
   },
-  created(){
-    this.noticeInfo = JSON.parse(sessionStorage.getItem("noticeInfo"));
-  },
   mounted(){
-    this.noticeInfo = JSON.parse(sessionStorage.getItem("noticeInfo"));
+    this.noticeInfo = JSON.parse(localStorage.getItem("noticeInfo"));
     this.$bus.$on("change", (msg) => {
       this.noticeInfo = JSON.parse(msg);
-      console.log(this.noticeInfo);
-      sessionStorage.setItem("noticeInfo", msg);
+      localStorage.setItem("noticeInfo", msg);
     });
     this.getTypeDicts()
   },
@@ -69,7 +65,11 @@
 <style scoped>
 .notice-detail-page{
   height: calc(100% - 30px);
+  overflow-y: auto;
   padding: 16px 0;
+}
+.notice-detail-page::-webkit-scrollbar {
+  width: 0;
 }
 .notice-detail-head{
   background: #fff;
@@ -83,9 +83,9 @@
   box-sizing: border-box;
   padding: 8px 20px 20px;
   background: rgba(0,0,0, 0.03);
-  box-shadow: 0 0 10px 10px #fff;
+  /* box-shadow: 0 0 10px 10px #fff; */
   border-radius: 4px;
-  height: calc(100% - 192px - 22px);
+  min-height: calc(100% - 192px - 22px);
 }
 .notice-detail-head-content div{
   border-radius: 8px;
@@ -98,6 +98,6 @@
 }
 
 .notice-content{
-  height: 100%;
+  height: 600px;
 }
 </style>
diff --git a/src/main.js b/src/main.js
index f149db9..24fdc91 100644
--- a/src/main.js
+++ b/src/main.js
@@ -13,8 +13,8 @@
 
 //鏈湴
 Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80";
-// const javaApi = 'http://192.168.11.200:8001';//鏉�
-const javaApi = 'http://10.20.102.168:8001';//寮�
+const javaApi = 'http://192.168.11.200:8001';//鏉�
+// const javaApi = 'http://10.20.102.168: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';//娴嬭瘯鏈�
diff --git a/src/view/index.vue b/src/view/index.vue
index 60b94d2..b9ff928 100644
--- a/src/view/index.vue
+++ b/src/view/index.vue
@@ -225,8 +225,8 @@
 
 	.component_view {
 		height: calc(100vh - 84px);
-		width: calc(100% - 52px);
-		padding: 0 26px;
+		width: calc(100% - 40px);
+		padding: 0 20px;
 		background: rgb(245, 247, 251);
 	}
 
@@ -393,7 +393,7 @@
         <el-button type="primary" @click="handleEdit">纭� 瀹�</el-button>
       </span>
     </el-dialog>
-    <notice ref="notice" />
+    <notice ref="notice" @goNoticeDetail="checkForUnreadData()" />
 	</div>
 </template>
 
diff --git a/src/view/notice.vue b/src/view/notice.vue
index 4a10fef..be68420 100644
--- a/src/view/notice.vue
+++ b/src/view/notice.vue
@@ -34,10 +34,11 @@
       </el-dropdown>
     </div>
     <div class="notice-content" v-loading="loading">
-      <scroll-pagination @load="refresh" :finishLoding="finishLoding">
+      <scroll-pagination @load="refresh" :finishLoding="finishLoding" :list="list">
         <div class="notice-content-item" v-for="(m,i) in list" :key="i">
           <div class="btns" v-if="m">
-            <el-dropdown style="margin-right: 20px;" trigger="click" @command="e=>handleDropdown(e,m)" v-if="m.messageType==2||m.messageType==3">
+            <!-- v-if="m.messageType==2||m.messageType==3" -->
+            <el-dropdown style="margin-right: 20px;" trigger="click" @command="e=>handleDropdown(e,m)" v-if="false">
               <span class="el-dropdown-link">
                 <span class="more" style="line-height: 26px;display: inline-block;">&middot;&middot;&middot;</span>
               </span>
@@ -124,17 +125,27 @@
       pageSize: 8, // 涓�椤�7鏉�
       total: null,
       loading: true, // 缁勪欢loading鐨勫睍绀�,榛樿涓簍rue
-      finishLoding: false // 鍔犺浇瀹屾垚锛屾樉绀哄凡缁忔病鏈夋洿澶氫簡
+      finishLoding: false, // 鍔犺浇瀹屾垚锛屾樉绀哄凡缁忔病鏈夋洿澶氫簡
+      keyMap:{}
     }
   },
   mounted(){
     this.getTypeDicts();
     this.currentPage = 1;
+    this.keyMap = {};
     this.list = [];
     this.refresh();
   },
   methods:{
     refresh(){
+      const key = `_${this.currentPage}`
+      const value = this.keyMap[key]
+      // 濡傛灉value瀛樺湪锛岃〃绀虹紦瀛樻湁鍊硷紝閭d箞闃绘璇锋眰
+      if(value) {
+        return
+      }
+      // value涓嶅瓨鍦紝琛ㄧず绗竴娆¤姹�,璁剧疆鍗犱綅
+      this.keyMap[key] = 'temp'
       if(this.currentPage==1){
         this.loading = true
       }
@@ -190,8 +201,10 @@
           p: "abcd"
         },29);
         this.list = [];
+        this.keyMap = {};
         this.currentPage = 1;
         this.refresh();
+        this.$emit('goNoticeDetail')
       })
     },
     handleDropdown(e,row){
@@ -215,6 +228,7 @@
           }
           this.$message.success('鍒犻櫎鎴愬姛')
           this.list = [];
+          this.keyMap = {};
           this.currentPage = 1;
           this.refresh()
         }).catch(e => {
@@ -222,40 +236,9 @@
         })
       }).catch(() => {})
     },
-    // 婊氬姩瑙﹀簳鍔犺浇
-    scrollFn() {
-      let clientHeight = document.documentElement.clientHeight - 18; //鍙鍖哄煙
-      let scrollHeight = document.body.scrollHeight; // 婊氬姩鏂囨。楂樺害
-      let scrollTop = parseInt(document.documentElement.scrollTop); // 宸叉粴鍔ㄧ殑楂樺害
-      let height = 300;
-      if (
-        scrollTop + clientHeight >= scrollHeight - height &&
-        scrollHeight != 0
-      ) {
-        if (!this.finishLoding&&this.currentPage*this.pageSize<this.total) {
-          this.currentPage = this.currentPage + 1;
-          this.refresh();
-        }
-      } else {
-        return false;
-      }
-    },
-    throttle(fn, wait) {
-      // 灏佽鍑芥暟杩涜鑺傛祦
-      var timer = null;
-      return function () {
-        var context = this;
-        var args = arguments;
-        if (!timer) {
-          timer = setTimeout(function () {
-            fn.apply(context, args);
-            timer = null;
-          }, wait);
-        }
-      };
-    },
     handleType(){
       this.list = [];
+      this.keyMap = {};
       this.currentPage = 1;
       this.refresh();
     },
@@ -270,13 +253,11 @@
         }
         this.$message.success('鎿嶄綔鎴愬姛')
         this.list = [];
+        this.keyMap = {};
         this.currentPage = 1;
         this.refresh();
       })
     }
-  },
-  destroyed() {
-    window.removeEventListener("scroll", this.throttle(), false);
   },
 }
 </script>

--
Gitblit v1.9.3