From caba724b7025dd8801ed590bed3d8d56579d6a8c Mon Sep 17 00:00:00 2001
From: licp <lichunping@guanfang.com.cn>
Date: 星期四, 18 四月 2024 17:14:45 +0800
Subject: [PATCH] 完成实验室资质页面编写

---
 src/components/tool/echart.vue                        |    6 
 src/components/tool/value-table.vue                   |   27 +
 src/components/view/b4-daily-business-statistics.vue  |   42 +-
 src/components/view/a5-laboratory-qualifications.vue  |  573 +++++++++++++++++++++++++++++++++++
 static/js/menu.js                                     |    2 
 src/util/date.js                                      |    3 
 src/components/view/a6-device-management.vue          |    2 
 src/util/echarts.js                                   |   20 
 src/components/view/b4-inspection-item-statistics.vue |   46 +-
 src/assets/api/controller.js                          |   12 
 src/components/view/index-index.vue                   |  188 +++++++++--
 11 files changed, 820 insertions(+), 101 deletions(-)

diff --git a/src/assets/api/controller.js b/src/assets/api/controller.js
index 299a7d9..14fc76e 100644
--- a/src/assets/api/controller.js
+++ b/src/assets/api/controller.js
@@ -19,6 +19,7 @@
     warehouse,
     department,
     report,
+    certification,
 	}
 }
 
@@ -218,4 +219,15 @@
 
 const report = {
   businessStatisticsByDay: "/report/businessStatisticsByDay", //姣忔棩涓氬姟缁熻
+  calendarWorkByWeek: "/report/calendarWorkByWeek", //棣栭〉-->鏃ュ巻浠诲姟鍥�
+  addSchedule: "/report/addSchedule", //棣栭〉-->娣诲姞鏃ョ▼
+  ScheduleByMe: "/report/ScheduleByMe", //棣栭〉-->鎴戠殑鏃ョ▼
 }
+const certification = {
+  getCertificationDetail:"/certification/getCertificationDetail",//鏌ヨ璧勮川鏄庣粏鍒楄〃
+  addCertificationDetail:"/certification/addCertificationDetail",//娣诲姞璧勮川鏄庣粏鍒楄〃
+  delCertificationDetail:"certification/delCertificationDetail",//鍒犻櫎璧勮川鏄庣粏鍒楄〃
+}
+
+
+
diff --git a/src/components/tool/echart.vue b/src/components/tool/echart.vue
index f9b5300..a9bbaf8 100644
--- a/src/components/tool/echart.vue
+++ b/src/components/tool/echart.vue
@@ -34,7 +34,9 @@
       deep: true,
       // immediate: true,
       handler(val) {
-        this.init();
+        this.$nextTick(() => {
+          this.init();
+        })
       },
     },
   },
@@ -107,6 +109,6 @@
 <style scoped>
 .echart_size{
   width: 100%;
-  height: 500px;
+  height: 100%;
 }
 </style>
diff --git a/src/components/tool/value-table.vue b/src/components/tool/value-table.vue
index 418d4e2..8448999 100644
--- a/src/components/tool/value-table.vue
+++ b/src/components/tool/value-table.vue
@@ -1063,7 +1063,32 @@
       },
       handleCascader(e,label){
         this.upData[label] = e;
-      }
+      },
+      // 鎵归噺鍒犻櫎
+      batchDelete(){
+        if(this.multipleSelection&&this.multipleSelection.length>0){
+          // this.delUrl
+          this.$confirm('鏄惁鍒犻櫎閫変腑鐨勬暟鎹�?', "璀﹀憡", {
+							confirmButtonText: "纭畾",
+							cancelButtonText: "鍙栨秷",
+							type: "warning"
+						}).then(() => {
+							this.$axios.post(this.delUrl, {
+								id: this.multipleSelection.map(item => item.id).join(',')
+							}).then(res => {
+								if (res.code === 201) {
+									return
+								}
+								this.$message.success('鍒犻櫎鎴愬姛')
+								this.selectList()
+							}).catch(e => {
+								this.$message.error('鍒犻櫎澶辫触')
+							})
+						}).catch(() => {})
+        }else{
+          this.$message.error('璇烽�夋嫨瑕佸垹闄ょ殑鏁版嵁')
+        }
+      },
 		}
 	}
 </script>
diff --git a/src/components/view/a5-laboratory-qualifications.vue b/src/components/view/a5-laboratory-qualifications.vue
new file mode 100644
index 0000000..9e3d802
--- /dev/null
+++ b/src/components/view/a5-laboratory-qualifications.vue
@@ -0,0 +1,573 @@
+<style scoped>
+	.title {
+		height: 60px;
+		line-height: 60px;
+	}
+
+	.bodys {
+		height: 100%;
+	}
+
+	.search {
+		background-color: #fff;
+		height: 80px;
+		display: flex;
+		align-items: center;
+	}
+
+	.search_thing {
+		width: 350px;
+		display: flex;
+		align-items: center;
+	}
+
+	.search_label {
+		width: 110px;
+		font-size: 14px;
+		text-align: right;
+	}
+
+	.search_input {
+		width: calc(100% - 110px);
+	}
+
+	.table {
+		margin-top: 10px;
+		background-color: #fff;
+		width: calc(100% - 40px);
+		height: calc(100% - 60px - 80px - 10px - 40px);
+		padding: 20px;
+	}
+  .table-item{
+    border-radius: 8px 8px 8px 8px;
+    box-shadow: 4px 4px 8px 0px rgba(51,51,51,0.04);
+    border: 1px solid #EEEEEE;
+    box-sizing: border-box;
+    padding: 14px 12px;
+    display: flex;
+    align-items: center;
+    justify-content: space-between;
+  }
+</style>
+
+<template>
+	<div class="capacity-scope">
+		<div>
+			<el-row class="title">
+				<el-col :span="12">
+					<el-radio-group v-model="radio" @input="selectorSwitch" size="medium" fill="#3A7BFA">
+						<el-radio-button label="0">璧勮川鏄庣粏</el-radio-button>
+						<el-radio-button label="1">璧勮川鎬昏</el-radio-button>
+					</el-radio-group>
+				</el-col>
+				<el-col :span="12" style="text-align: right;" v-if="radio==0">
+					<el-button size="medium" type="primary" @click="openAdd" v-if="addPower">鏂板</el-button>
+					<el-button size="medium" icon="el-icon-delete" @click="handleDel" v-if="delPower">鍒犻櫎</el-button>
+				</el-col>
+			</el-row>
+		</div>
+		<div v-if="radio==0" class="bodys">
+			<div class="search">
+				<div class="search_thing">
+					<div class="search_label">璧勮川鍚嶇О锛�</div>
+					<div class="search_input">
+            <el-select v-model="itemParameterData.entity.name" placeholder="閫夋嫨璧勮川鍚嶇О" size="small" @change="refreshTable()">
+              <el-option v-for="item in qualificationsList" :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>
+			<div class="table">
+				<ValueTable ref="itemParameterTable" :url="$api.certification.getCertificationDetail"
+					:componentData="itemParameterData" :delUrl="$api.certification.delCertificationDetail" :key="upIndex" />
+			</div>
+		</div>
+		<div class="bodys">
+			<div class="search" v-if="radio==1">
+				<div class="search_thing">
+					<div class="search_label">璧勮川鍚嶇О锛�</div>
+					<div class="search_input">
+            <el-select v-model="entity.name" placeholder="閫夋嫨璧勮川鍚嶇О" size="small">
+              <el-option v-for="item in qualificationsList" :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>
+			<div class="table" v-if="radio==1" v-loading="pageLoading" @scroll="scrollFn">
+        <el-row :gutter="16">
+          <el-col :span="6" v-for="(m,i) in list" :key="i" :xs="24" :sm="12" :md="8" :lg="6" :xl="6" style="margin-bottom: 16px;">
+            <div class="table-item">
+              <el-image style="width: 102px;height: 102px;margin-right: 20px;border-radius: 16px;" :src="javaApi+'/img/'+m.imageUrl">
+                <div slot="error" class="image-error" style="width: 100px;
+                height: 100px;
+                border-radius: 16px;
+                display: flex;
+                align-items: center;
+                justify-content: center;
+                border: 1px solid #EEEEEE;">
+                  <i class="el-icon-picture-outline" style="font-size:30px;color:#666666;"></i>
+                </div>
+              </el-image>
+              <div class="table-item-right" style="flex: 1;font-size: 12px;color: #666666;">
+                <p style="line-height: 30px;">璧勮川鍚嶇О锛�<span style="color: #3A7BFA;">{{ m.name }}</span></p>
+                <p style="line-height: 30px;">鏈夋晥鏃堕棿锛歿{m.expireTime}}</p>
+                <p>
+                  <span>鐘舵�侊細</span>
+                  <el-tag :type="m.state==0?'danger':'success'" size="small">{{ m.state==0?'澶辨晥':'鏈夋晥' }}</el-tag>
+                </p>
+              </div>
+            </div>
+          </el-col>
+        </el-row>
+        <div v-if="list.length<1&&!pageLoading&&!isLoding" style="color:#909399;font-size:14px;text-align: center;margin-top:200px" >鏆傛棤鏁版嵁</div>
+        <div v-if="list.length>0">
+          <el-button
+            v-if="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"
+            style="display: flex; margin: 0 auto; color: #909399"
+            >宸茬粡娌℃湁鏇村鍟</el-button
+          >
+        </div>
+			</div>
+		</div>
+    <el-dialog title="璧勮川鏇存柊" :visible.sync="qualificationsConnectVisible" width="400px">
+			<div class="search_thing" style="margin-bottom: 16px;">
+        <div class="search_label" style="width:120px">璧勮川鍚嶇О锛�</div>
+        <div class="search_input">
+          <el-select v-model="formData.name" placeholder="璇烽�夋嫨" style="width: 100%;" size="small" clearable>
+            <el-option
+              v-for="item in qualificationsList"
+              :key="item.value"
+              :label="item.label"
+              :value="item.value">
+            </el-option>
+          </el-select>
+        </div>
+      </div>
+      <div class="search_thing" style="margin-bottom: 16px;">
+        <div class="search_label" style="width:120px">璧勮川缂栫爜锛�</div>
+        <div class="search_input">
+          <el-input
+          size="small"
+          placeholder="璇疯緭鍏�"
+          clearable
+					v-model="formData.code"></el-input>
+        </div>
+      </div>
+      <div class="search_thing" style="margin-bottom: 16px;">
+        <div class="search_label" style="width:120px">棰佸彂鏈烘瀯锛�</div>
+        <div class="search_input">
+          <el-input
+          size="small"
+          placeholder="璇疯緭鍏�"
+          clearable
+					v-model="formData.organization"></el-input>
+        </div>
+      </div>
+      <div class="search_thing" style="margin-bottom: 16px;">
+        <div class="search_label" style="width:120px">璧勮川璇存槑锛�</div>
+        <div class="search_input">
+          <el-input
+          size="small"
+          placeholder="璇疯緭鍏�"
+          clearable
+					v-model="formData.explanation"></el-input>
+        </div>
+      </div>
+      <div class="search_thing" style="margin-bottom: 16px;">
+        <div class="search_label" style="width:120px">棣栨棰佸彂鏃堕棿锛�</div>
+        <div class="search_input">
+          <el-date-picker style="width:100%" v-model="formData.firstTime"
+          type="datetime"
+					size="small"
+          format="yyyy-MM-dd HH:mm:ss"
+          value-format="yyyy-MM-dd HH:mm:ss"
+          clearable
+          placeholder="閫夋嫨鏃ユ湡">
+					</el-date-picker>
+        </div>
+      </div>
+      <div class="search_thing" style="margin-bottom: 16px;">
+        <div class="search_label" style="width:120px">鏈�杩戦鍙戞椂闂达細</div>
+        <div class="search_input">
+          <el-date-picker style="width:100%" v-model="formData.recentlyTime"
+          type="datetime"
+					size="small"
+          format="yyyy-MM-dd HH:mm:ss"
+          value-format="yyyy-MM-dd HH:mm:ss"
+          clearable
+          placeholder="閫夋嫨鏃ユ湡">
+					</el-date-picker>
+        </div>
+      </div>
+      <div class="search_thing" style="margin-bottom: 16px;">
+        <div class="search_label" style="width:120px">鍒版湡棰佸彂鏃堕棿锛�</div>
+        <div class="search_input">
+          <el-date-picker style="width:100%" v-model="formData.expireTime"
+          type="datetime"
+					size="small"
+          format="yyyy-MM-dd HH:mm:ss"
+          value-format="yyyy-MM-dd HH:mm:ss"
+          clearable
+          placeholder="閫夋嫨鏃ユ湡">
+					</el-date-picker>
+        </div>
+      </div>
+      <div class="search_thing" style="margin-bottom: 16px;">
+        <div class="search_label" style="width:120px">璧勮川鍥剧墖锛�</div>
+        <div class="search_input">
+          <el-upload
+            ref="upload"
+            :action="action"
+            :on-success="m=>handleSuccessUpImg(m,'imageUrl')"
+            accept='image/jpg,image/jpeg,image/png'
+            :multiple="false"
+            :limit="1"
+            :headers="headers" :on-change="beforeUpload"
+						:on-error="onError">
+            <el-button slot="trigger" size="small" type="primary">閫夊彇鍥剧墖</el-button>
+          </el-upload>
+        </div>
+      </div>
+      <div class="search_thing" style="margin-bottom: 16px;">
+        <div class="search_label" style="width:120px">璧勮川闄勪欢锛�</div>
+        <div class="search_input">
+          <el-upload
+            ref="upload1"
+            :action="action"
+            :on-success="m=>handleSuccessUpImg(m,'fileUrl')"
+            accept='image/jpg,image/jpeg,image/png,application/pdf,.doc,.docx' :headers="headers" :multiple="false" :limit="1" :on-change="beforeUpload1"
+						:on-error="onError1">
+            <el-button slot="trigger" size="small" type="primary">閫夊彇鏂囦欢</el-button>
+          </el-upload>
+        </div>
+      </div>
+			<span slot="footer" class="dialog-footer">
+				<el-button @click="qualificationsConnectVisible = false">鍙� 娑�</el-button>
+				<el-button type="primary" @click="confirmQualifications" :loading="loading">纭� 瀹�</el-button>
+			</span>
+		</el-dialog>
+	</div>
+</template>
+
+<script>
+	import ValueTable from '../tool/value-table.vue'
+	export default {
+		components: {
+			ValueTable
+		},
+		data() {
+			return {
+				radio: '0',
+				itemParameterData: {
+					entity: {
+						name: null,
+						orderBy: {
+							field: 'id',
+							order: 'asc'
+						}
+					},
+					isIndex: false,
+					showSelect: true,
+					select: true,
+					row: 2,
+					do: [{
+						id: '',
+						font: '闄勪欢涓嬭浇',
+						type: 'text',
+						method: 'handleDownLoad',
+						field: []
+					}],
+					tagField: {
+						state: {
+							select: [
+              {
+								value: 0,
+								label: '澶辨晥',
+								type: 'danger'
+							},{
+								value: 1,
+								label: '鏈夋晥',
+								type: 'success'
+							}
+              ]
+						},
+					},
+					selectField: {
+						inspectionItemType: {
+							select: []
+						},
+					},
+					requiredAdd: [],
+					requiredUp: []
+				},
+				itemParameterEntityCopy: {},
+				upIndex: 0,
+				addPower: true,
+        delPower:true,
+				select: 0,
+        qualificationsList:[],
+        qualificationsConnectVisible:false,
+        formData:{},
+        loading:false,
+        pageLoading:false,
+        isLoding: false, // 鍔犺浇涓紝loading鍥炬爣,榛樿涓簍rue
+        finishLoding: false, // 鍔犺浇瀹屾垚锛屾樉绀哄凡缁忔病鏈夋洿澶氫簡
+        entity:{
+          name: null,
+          orderBy: {field: "id", order: "asc"}
+        },
+        currentPage: 1, // 褰撳墠椤�
+        pageSize: 16, // 涓�椤�16鏉�
+        total: '',
+        list:[],
+			}
+		},
+    computed: {
+			headers() {
+				return {
+					'token': sessionStorage.getItem('token')
+				}
+			},
+			action() {
+				return this.javaApi + this.$api.deviceScope.uploadFile
+			}
+		},
+		mounted() {
+			this.itemParameterEntityCopy = this.HaveJson(this.itemParameterData.entity)
+			this.selectEnumByCategory()
+			this.getPower('0')
+		},
+		methods: {
+			selectorSwitch(radio) {
+        if(radio === '1'){
+          this.list = [];
+          this.refreshTable();
+        }
+			},
+			refreshTable() {
+				if (this.radio === '0') {
+					this.$refs['itemParameterTable'].selectList()
+				} else {
+          if(this.currentPage>1){
+            this.isLoding = true
+          }else{
+            this.pageLoading = true
+          }
+          if(this.list.length==0){
+            window.addEventListener("scroll", this.throttle(this.scrollFn, 20000));
+          }
+          this.$axios.post(this.$api.certification.getCertificationDetail,{
+            page: {
+              current: this.currentPage,
+              size: this.pageSize
+            },
+            entity: this.entity
+          }, {
+            headers: {
+              'Content-Type': 'application/json'
+            }
+          }).then(res => {
+            if(res.code==200){
+              this.total = res.data.body.total
+              let list = res.data.body.records;
+              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.pageLoading = false
+            this.isLoding = false;
+          })
+				}
+			},
+			refresh() {
+        if(this.radio === '0'){
+          this.itemParameterData.entity = this.HaveJson(this.itemParameterEntityCopy)
+				  this.upIndex++
+        }else{
+          this.finishLoding = false;
+          this.currentPage= 1;
+          this.list=[];
+          this.entity={
+            name: null,
+            orderBy: {field: "id", order: "asc"}
+          };
+          this.refreshTable()
+        }
+			},
+			openAdd() {
+				// this.$refs.itemParameterTable.openAddDia(this.$api.certification.addCertificationDetail);
+        this.qualificationsConnectVisible = true;
+        this.$nextTick(()=>{
+          this.$refs.upload.clearFiles()
+          this.$refs.upload1.clearFiles()
+        })
+        this.formData = {};
+			},
+			selectEnumByCategory() {
+				this.$axios.post(this.$api.enums.selectEnumByCategory, {
+					category: "璧勮川鍚嶇О"
+				}).then(res => {
+					// this.itemParameterData.selectField.inspectionItemType.select = res.data
+          this.qualificationsList = res.data
+				})
+			},
+      handleDel(){
+        this.$refs.itemParameterTable.batchDelete();
+      },
+      handleDownLoad(row){
+        let url = row.fileUrl;
+        const link = document.createElement('a');
+        link.href = this.javaApi + '/img/'+ url;
+        document.body.appendChild(link);
+        link.click();
+      },
+      handleSuccessUpImg(response,name) {
+				if (response.code == 200) {
+					this.formData[name] = response.data.url;
+				}
+			},
+      beforeUpload(file) {
+				if (file.size > 1024 * 1024 * 10) {
+					this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M');
+					this.$refs.upload.clearFiles()
+					return false;
+				} else {
+					return true;
+				}
+			},
+			onError(err, file, fileList) {
+				this.$message.error('涓婁紶澶辫触')
+				this.$refs.upload.clearFiles()
+			},
+      beforeUpload1(file) {
+				if (file.size > 1024 * 1024 * 10) {
+					this.$message.error('涓婁紶鏂囦欢涓嶈秴杩�10M');
+					this.$refs.upload1.clearFiles()
+					return false;
+				} else {
+					return true;
+				}
+			},
+			onError1(err, file, fileList) {
+				this.$message.error('涓婁紶澶辫触')
+				this.$refs.upload1.clearFiles()
+			},
+      confirmQualifications(){
+        if(!this.formData.name){
+          this.$message.error('鏈~鍐欒祫璐ㄥ悕绉�');
+          return
+        }
+        if(!this.formData.code){
+          this.$message.error('鏈~鍐欒祫璐ㄧ紪鐮�');
+          return
+        }
+        if(!this.formData.organization){
+          this.$message.error('鏈~鍐欓鍙戞満鏋�');
+          return
+        }
+        if(!this.formData.expireTime){
+          this.$message.error('鏈~鍐欏埌鏈熼鍙戞椂闂�');
+          return
+        }
+        if(!this.formData.imageUrl){
+          this.$message.error('鏈笂浼犺祫璐ㄥ浘鐗�');
+          return
+        }
+        if(!this.formData.fileUrl){
+          this.$message.error('鏈笂浼犺祫璐ㄩ檮浠�');
+          return
+        }
+        this.loading = true;
+        this.$axios.post(this.$api.certification.addCertificationDetail, {
+						...this.formData
+					}, {
+						headers: {
+							'Content-Type': 'application/json'
+						}
+					}).then(res => {
+						this.loading = false
+						if (res.code == 201) return
+						this.$message.success('宸叉彁浜�')
+						this.refreshTable()
+            this.qualificationsConnectVisible = false
+					})
+      },
+			// 鏉冮檺鍒嗛厤
+			getPower(radio) {
+				let power = JSON.parse(sessionStorage.getItem('power'))
+				let add = false
+				let del = false
+				for (var i = 0; i < power.length; i++) {
+					if (power[i].menuMethod == 'delCertificationDetail') {
+						del = true
+          }
+          if (power[i].menuMethod == 'addCertificationDetail') {
+            add = true
+          }
+				}
+				this.addPower = add
+        this.delPower = del
+			},
+      // 婊氬姩瑙﹀簳鍔犺浇
+      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.refreshTable();
+          }
+        } 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);
+          }
+        };
+      },
+		},
+    destroyed() {
+      window.removeEventListener("scroll", this.throttle(), false);
+    },
+	}
+</script>
diff --git a/src/components/view/a6-device-management.vue b/src/components/view/a6-device-management.vue
index 5c3d15d..9c54d17 100644
--- a/src/components/view/a6-device-management.vue
+++ b/src/components/view/a6-device-management.vue
@@ -386,7 +386,7 @@
 								<el-upload :action="action" :on-success="handleSuccessUpImg2" :show-file-list="false"
 									accept='image/jpg,image/jpeg,image/png' :headers="headers" :on-change="beforeUpload"
 									:on-error="onError" ref='upload'>
-									<el-button type="text" style="height:30px;paddingTop:8px">涓婁紶</el-button>
+									<el-button type="text" style="height:30px;padding-top:8px">涓婁紶</el-button>
 								</el-upload>
 							</div>
 						</el-form-item>
diff --git a/src/components/view/b4-daily-business-statistics.vue b/src/components/view/b4-daily-business-statistics.vue
index 743edf6..01a9951 100644
--- a/src/components/view/b4-daily-business-statistics.vue
+++ b/src/components/view/b4-daily-business-statistics.vue
@@ -1,9 +1,9 @@
 <template>
 <div class="daily-main" v-loading="loading">
   <div class="daily-content" style="height:100%">
-    <p style="font-size: 16px;padding:19.5px 0px">姣忔棩涓氬姟缁熻</p>
+    <!-- <p style="font-size: 16px;padding:19.5px 0px">姣忔棩涓氬姟缁熻</p> -->
     <el-row :gutter="20">
-      <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 30px;">
+      <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 16px;">
         <div class="daily-card daily-head">
           <div class="daily-head-left">
             <h4>浠婃棩浠诲姟鎺ユ敹</h4>
@@ -17,7 +17,7 @@
           <img src="../../../static/img/daliy-0.svg" alt="" srcset="">
         </div>
       </el-col>
-      <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 30px;">
+      <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 16px;">
         <div class="daily-card daily-head">
           <div class="daily-head-left">
             <h4>浠婃棩浠诲姟瀹屾垚</h4>
@@ -31,7 +31,7 @@
           <img src="../../../static/img/daliy-1.svg" alt="" srcset="">
         </div>
       </el-col>
-      <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 30px;">
+      <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 16px;">
         <div class="daily-card daily-head">
           <div class="daily-head-left">
             <h4>浠婃棩浠诲姟鍓╀綑</h4>
@@ -45,7 +45,7 @@
           <img src="../../../static/img/daliy-2.svg" alt="" srcset="">
         </div>
       </el-col>
-      <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 30px;">
+      <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 16px;">
         <div class="daily-card daily-head">
           <div class="daily-head-left">
             <h4>浠婃棩妫�娴嬭垂鐢�</h4>
@@ -59,7 +59,7 @@
           <img src="../../../static/img/daliy-3.svg" alt="" srcset="">
         </div>
       </el-col>
-      <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 30px;">
+      <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 16px;">
         <div class="daily-card daily-head">
           <div class="daily-head-left">
             <h4>浠婃棩妫�娴嬪伐鏃�</h4>
@@ -73,7 +73,7 @@
           <img src="../../../static/img/daliy-4.svg" alt="" srcset="">
         </div>
       </el-col>
-      <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 30px;">
+      <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 16px;">
         <div class="daily-card daily-head">
           <div class="daily-head-left">
             <h4>浠婃棩妫�娴嬩汉鍛�</h4>
@@ -88,17 +88,17 @@
         </div>
       </el-col>
     </el-row>
-    <el-row :gutter="20">
-      <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" style="margin-bottom: 30px;">
-        <div class="daily-card chart-box">
+    <el-row :gutter="20" style="height: calc(100% - 170px);">
+      <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" style="margin-bottom: 16px;height: 100%;">
+        <div class="daily-card chart-box" style="height: 100%;">
           <h4>杩�10鏃ヤ换鍔℃帴鏀堕噺</h4>
-          <echart-module :id="'daily-left'" :config="chartConfig0" :datas="chartData0"></echart-module>
+          <echart-module :id="'daily-left'" :config="chartConfig0" :datas="chartData0" style="height: calc(100% - 32px);"></echart-module>
         </div>
       </el-col>
-      <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" style="margin-bottom: 30px;">
-        <div class="daily-card chart-box">
+      <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" style="margin-bottom: 16px;height: 100%;">
+        <div class="daily-card chart-box" style="height: 100%;">
           <h4>杩�10鏃ュ疄闄呭畬鎴愪换鍔′笌鎺ユ敹浠诲姟瀵规瘮</h4>
-          <echart-module :id="'daily-right'" :config="chartConfig1" :datas="chartData1"></echart-module>
+          <echart-module :id="'daily-right'" :config="chartConfig1" :datas="chartData1" style="height: calc(100% - 32px);"></echart-module>
         </div>
       </el-col>
     </el-row>
@@ -114,7 +114,7 @@
   data(){
     return{
       chartConfig0:{
-        height: '435px',
+        height: '',
         isLoading:false,
         type:'line'
       },
@@ -128,7 +128,7 @@
         ]
       },
       chartConfig1:{
-        height: '435px',
+        height: '',
         isLoading:false,
         type:'bar'
       },
@@ -190,6 +190,10 @@
   overflow-y: auto;
   overflow-x: hidden;
 }
+.daily-content{
+  padding: 20px 0;
+  box-sizing: border-box;
+}
 .daily-card{
   width: 100%;
   background: #FFFFFF;
@@ -209,7 +213,7 @@
   color: #202224;
   font-size: 16px;
   font-weight: 400;
-  margin-bottom: 20px;
+  margin-bottom: 16px;
   opacity: 0.8;
 }
 
@@ -218,7 +222,7 @@
   font-weight: bold;
   font-size: 28px;
   display: inline-block;
-  margin-bottom: 30px;
+  margin-bottom: 16px;
 }
 
 .daily-head-left .daily-head-left-info{
@@ -236,7 +240,7 @@
 }
 
 .chart-box{
-  padding: 30px 24px;
+  padding: 16px 24px;
   box-sizing: border-box;
 }
 
diff --git a/src/components/view/b4-inspection-item-statistics.vue b/src/components/view/b4-inspection-item-statistics.vue
index 6eb1a49..53f6155 100644
--- a/src/components/view/b4-inspection-item-statistics.vue
+++ b/src/components/view/b4-inspection-item-statistics.vue
@@ -1,9 +1,9 @@
 <template>
   <div class="inspection-main">
     <div class="inspection-content" style="height:100%">
-      <p style="font-size: 16px;padding:19.5px 0px">妫�娴嬮」鐩粺璁�</p>
+      <!-- <p style="font-size: 16px;padding:19.5px 0px">妫�娴嬮」鐩粺璁�</p> -->
       <el-row :gutter="20">
-        <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 30px;">
+        <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 16px;">
           <div class="inspection-card inspection-head">
             <div class="inspection-head-left">
               <h4>浠婃棩椤圭洰鎺ユ敹</h4>
@@ -17,7 +17,7 @@
             <img src="../../../static/img/daliy-0.svg" alt="" srcset="">
           </div>
         </el-col>
-        <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 30px;">
+        <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 16px;">
           <div class="inspection-card inspection-head">
             <div class="inspection-head-left">
               <h4>浠婃棩椤圭洰瀹屾垚</h4>
@@ -31,7 +31,7 @@
             <img src="../../../static/img/daliy-1.svg" alt="" srcset="">
           </div>
         </el-col>
-        <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 30px;">
+        <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 16px;">
           <div class="inspection-card inspection-head">
             <div class="inspection-head-left">
               <h4>浠婃棩椤圭洰鍓╀綑</h4>
@@ -45,36 +45,36 @@
             <img src="../../../static/img/daliy-2.svg" alt="" srcset="">
           </div>
         </el-col>
-        <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 30px;">
+        <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 16px;">
           <div class="inspection-card inspection-head" style="flex-direction: column;padding-bottom: 5px;">
             <h4 style="margin-bottom: 5px;">浠婃棩椤圭洰鍚堟牸鐜�</h4>
             <echart-module :id="'inspection-qualified'" :config="chartConfig2" :datas="chartData2" style="align-self: center;"></echart-module>
           </div>
         </el-col>
-        <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 30px;">
+        <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 16px;">
           <div class="inspection-card inspection-head" style="flex-direction: column;padding-bottom: 5px;">
             <h4 style="margin-bottom: 5px;">浠婃棩椤圭洰瀹屾垚鐜�</h4>
             <echart-module :id="'inspection-complete'" :config="chartConfig3" :datas="chartData3" style="align-self: center;"></echart-module>
           </div>
         </el-col>
-        <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 30px;">
+        <el-col :xs="12" :sm="8" :md="6" :lg="4" :xl="4" style="margin-bottom: 16px;">
           <div class="inspection-card inspection-head" style="flex-direction: column;padding-bottom: 5px;">
             <h4 style="margin-bottom: 5px;">浠婃棩椤圭洰寤舵湡鐜�</h4>
             <echart-module :id="'inspection-extension'" :config="chartConfig4" :datas="chartData4" style="align-self: center;"></echart-module>
           </div>
         </el-col>
       </el-row>
-      <el-row :gutter="20">
-        <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" style="margin-bottom: 30px;">
-          <div class="inspection-card chart-box">
+      <el-row :gutter="20" style="height: calc(100% - 170px);">
+        <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" style="margin-bottom: 16px; height: 100%;">
+          <div class="inspection-card chart-box" style="height: 100%;">
             <h4>杩�10鏃ラ」鐩帴鏀堕噺</h4>
-            <echart-module :id="'inspection-left'" :config="chartConfig0" :datas="chartData0"></echart-module>
+            <echart-module :id="'inspection-left'" :config="chartConfig0" :datas="chartData0" style="height: calc(100% - 32px);"></echart-module>
           </div>
         </el-col>
-        <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" style="margin-bottom: 30px;">
-          <div class="inspection-card chart-box">
+        <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12" style="margin-bottom: 16px;height: 100%;">
+          <div class="inspection-card chart-box" style="height: 100%;">
             <h4>杩�10鏃ュ疄闄呭畬鎴愰」鐩笌鎺ユ敹椤圭洰瀵规瘮</h4>
-            <echart-module :id="'inspection-right'" :config="chartConfig1" :datas="chartData1"></echart-module>
+            <echart-module :id="'inspection-right'" :config="chartConfig1" :datas="chartData1" style="height: calc(100% - 32px);"></echart-module>
           </div>
         </el-col>
       </el-row>
@@ -90,7 +90,7 @@
     data(){
       return{
         chartConfig0:{
-          height: '435px',
+          height: '',
           isLoading:true,
           type:'line'
         },
@@ -104,7 +104,7 @@
           ]
         },
         chartConfig1:{
-          height: '435px',
+          height: '',
           isLoading:true,
           type:'bar'
         },
@@ -122,7 +122,7 @@
           ]
         },
         chartConfig2:{
-          height: '118px',
+          height: '103px',
           width:'140px',
           isLoading:true,
           type:'pie'
@@ -143,7 +143,7 @@
           ]
         },
         chartConfig3:{
-          height: '118px',
+          height: '103px',
           width:'140px',
           isLoading:true,
           type:'pie'
@@ -164,7 +164,7 @@
           ]
         },
         chartConfig4:{
-          height: '118px',
+          height: '103px',
           width:'140px',
           isLoading:true,
           type:'pie'
@@ -195,6 +195,10 @@
     overflow-y: auto;
     overflow-x: hidden;
   }
+  .inspection-content{
+    padding: 20px 0;
+    box-sizing: border-box;
+  }
   .inspection-card{
     width: 100%;
     background: #FFFFFF;
@@ -223,7 +227,7 @@
     font-weight: bold;
     font-size: 28px;
     display: inline-block;
-    margin-bottom: 30px;
+    margin-bottom: 16px;
   }
 
   .inspection-head-left .inspection-head-left-info{
@@ -242,7 +246,7 @@
   }
 
   .chart-box{
-    padding: 30px 24px;
+    padding: 16px 24px;
     box-sizing: border-box;
   }
 
diff --git a/src/components/view/index-index.vue b/src/components/view/index-index.vue
index 4743c4e..63d5312 100644
--- a/src/components/view/index-index.vue
+++ b/src/components/view/index-index.vue
@@ -3,7 +3,7 @@
 		width: 100%;
 		height: calc(100% - 50px);
 		overflow-y: auto;
-		padding: 25px 0;
+		padding: 25px 0 10px;
 	}
 
 	.left-1 {
@@ -52,7 +52,7 @@
   }
 
   .right-1{
-    padding: 14px 10px 4px;
+    padding: 10px 10px 4px;
     display: flex;
     align-items: center;
     justify-content: space-between;
@@ -72,7 +72,7 @@
   }
 
   .right-2{
-    padding: 13px 20px;
+    padding: 13px 14px 8px;
     margin-bottom: 16px;
   }
 
@@ -129,21 +129,19 @@
   .list2-item{
     line-height: 22px;
     display: flex;
-    margin-bottom: 13px;
+    margin-bottom: 12px;
     font-size: 14px;
-  }
-  .right-3{
   }
   .right-3-tab{
     display: flex;
     align-items: center;
-    margin-bottom: 16px;
+    margin-bottom: 12px;
   }
   .tab-item{
     width: 50%;
     box-sizing: border-box;
     text-align: center;
-    padding: 16px 0;
+    padding: 14px 0;
     font-size: 20px;
     background: #F5F7FB;
     color: #333333;
@@ -153,7 +151,10 @@
     color: #FF3838;
   }
   .right-3-list{
-    padding: 0 12px 16px;
+    padding: 0 12px 8px;
+    box-sizing: border-box;
+    height: 390px;
+    overflow-y: auto;
   }
   .list3-item{
     padding: 6px 4px;
@@ -175,12 +176,11 @@
     font-size: 14px;
   }
   .left-2{
-    display: flex;
-    align-items: flex-start;
-    margin-bottom: 16px;
+    display: grid;
+    grid-template-columns: repeat(7, 1fr);
+    height: 777px;
   }
   .left-2-item{
-    width: 14.1%;
     border-right: 1px solid #F1F1F1;
   }
   .left-2-item:nth-last-child(1){
@@ -203,7 +203,7 @@
   .left-item-body{
     box-sizing: border-box;
     padding: 5px;
-    max-height: 711px;
+    height: 693px;
     overflow-y: auto;
   }
   .body-item{
@@ -211,6 +211,15 @@
     border-radius: 16px;
     overflow: hidden;
     margin-bottom: 8px;
+  }
+  .body-item.color0{
+    background: #70A090;
+  }
+  .body-item.color1{
+    background: #EBD476;
+  }
+  .body-item.color2{
+    background: #FF3838;
   }
   .body-item>div{
     height: calc(100% - 16px);
@@ -246,21 +255,17 @@
 						</div>
 					</div>
 				</div>
-        <div class="left-2 card">
-          <div class="left-2-item" v-for="(item,index) in 7" :key="index">
+        <div class="left-2 card" v-loading="workLoading">
+          <div class="left-2-item" v-for="(item,index) in workDay" :key="index">
             <div class="left-item-title">
-              <span style="font-size: 18px;">25</span>
-              <span style="font-size: 14px;color: #999999;">鏄熸湡鍥�</span>
+              <span style="font-size: 18px;">{{ item }}</span>
+              <span style="font-size: 14px;color: #999999;">{{ weekdays[index] }}</span>
             </div>
             <div class="left-item-body">
-              <div class="body-item" v-for="(m,i) in 8" :key="i">
+              <div class="body-item" v-for="(m,i) in workList[index]" :key="i" :class="{color0:m.type==0,color1:m.type==1,color2:m.type==2}">
                 <div>
-                  <span style="font-size: 12px;margin-bottom: 17px;">濮旀墭璁㈠崟WT20230101 -001妫�娴�</span>
-                  <el-image style="height: 24px;width: 24px;border-radius: 50%;">
-                    <div slot="error" class="image-slot">
-                      <i class="el-icon-picture-outline"></i>
-                    </div>
-                  </el-image>
+                  <span style="font-size: 12px;margin-bottom: 17px;">{{ m.text }}</span>
+                  <span style="display: inline-block;height: 24px;width: 24px;border-radius: 50%;line-height: 24px;text-align: center;background: #C0C4CC;color: #fff;">{{ m.name.charAt(0) }}</span>
                 </div>
               </div>
             </div>
@@ -331,13 +336,14 @@
                 </template>
               </el-calendar>
             </div>
-            <div class="right-2-list" style="width: 49%;">
-              <div class="list2-item" v-for="(m,i) in 5" :key="i">
-                <span>14:00</span>
-                <el-tooltip style="margin-left: 10px;" effect="dark" content="鍙傚姞LIMS绯荤粺鍩硅浼氳锛屽苟绛句笂绾夸笂绾夸笂绾夸笂绾夸笂绾夸笂绾�" placement="top">
-                  <p class="ellipsis-multiline" >鍙傚姞LIMS绯荤粺鍩硅浼氳锛屽苟绛句笂绾夸笂绾夸笂绾夸笂绾夸笂绾夸笂绾�</p>
+            <div class="right-2-list" style="width: 49%;height: 286px;" v-loading="scheduleLoading">
+              <div class="list2-item" v-for="(m,i) in listScheduleByMe" :key="i">
+                <span>{{ m.scheduleTimes }}</span>
+                <el-tooltip style="margin-left: 10px;" effect="dark" :content="m.text" placement="top">
+                  <p class="ellipsis-multiline" >{{ m.text }}</p>
                 </el-tooltip>
               </div>
+              <span style="color:rgb(153, 153, 153);font-size: 12px;text-align: center;margin: 120px 0;display: inline-block;width: 100%;" v-if="listScheduleByMe.length==0">鏆傛棤</span>
             </div>
           </div>
         </div>
@@ -353,7 +359,7 @@
                 <p>璁惧鍒版湡鎻愰啋</p>
               </div>
               <div class="list3-item-info">
-                <p>缂栧彿<span style="color:#3A7BFA;"> SB20240101-001 </span>鐨勮澶囧皢浜�2023-09-09 11:11:11杩囨湡</p>
+                <p style="width: 73%;-webkit-line-clamp: 1;" class="ellipsis-multiline">缂栧彿<span style="color:#3A7BFA;"> SB20240101-001 </span>鐨勮澶囧皢浜�2023-09-09 11:11:11杩囨湡</p>
                 <p>2023-09-09 09:09:09</p>
               </div>
             </div>
@@ -372,14 +378,14 @@
                 type="datetime"
                 placeholder="閫夋嫨鏃ユ湡鏃堕棿"
                 size="small"
-                style="width:100%">
+                value-format="yyyy-MM-dd HH:mm:ss" style="width: 100%;" format="yyyy-MM-dd HH:mm:ss">
               </el-date-picker>
 						</div>
 					</el-col>
           <el-col class="search_thing" :span="22">
 						<div class="search_label">鍐呭锛�</div>
 						<div class="search_input">
-							<el-input v-model="query.content" size="small" placeholder="璇疯緭鍏ュ唴瀹�"></el-input>
+							<el-input v-model="query.text" size="small" placeholder="璇疯緭鍏ュ唴瀹�"></el-input>
 						</div>
 					</el-col>
 				</el-row>
@@ -395,6 +401,9 @@
 </template>
 
 <script>
+  import {
+		getYearAndMonthAndDays
+	} from '../../util/date'
 	export default {
 		data() {
 			return {
@@ -405,18 +414,31 @@
         dialogVisible:false,
         query:{
           time:'',
-          content:''
+          text:''
         },
-        loading:false
+        loading:false,
+        workLoading:false,
+        workList:[],
+        workDay:[],
+        weekdays:[],
+        listScheduleByMe:[],
+        scheduleLoading:false,
 			}
 		},
+    watch:{
+      calendarValue(val){
+        this.getScheduleByMe()
+      }
+    },
 		mounted() {
 			this.user = JSON.parse(localStorage.getItem('user'))
 			this.nowTime()
-			// this.getDataList()
 			setInterval(() => {
 				this.nowTime()
 			}, 1000)
+      this.init();
+      this.weekdays = this.getWeekdaysForNextWeek()
+      this.getScheduleByMe()
 		},
 		methods: {
 			nowTime() {
@@ -444,11 +466,6 @@
 					m = "0" + m;
 				}
 				this.now = y + "-" + m + "-" + d + "  " + h + ":" + min + ":" + s;
-			},
-			getDataList() {
-				this.$axios.get(this.$api.dataReporting.getDataList).then(res => {
-					this.data = res.data
-				})
 			},
       nextMonth(value) {
         let year = this.calendarValue.getFullYear();// 褰撳墠骞翠唤
@@ -510,7 +527,7 @@
         this.dialogVisible = false;
         this.query = {
           time:'',
-          content:''
+          text:''
         }
       },
       submit(){
@@ -518,11 +535,94 @@
           this.$message.error('鏃堕棿鏈~鍐�')
           return
         }
-        if(!this.query.content){
+        if(!this.query.text){
           this.$message.error('鍐呭鏈~鍐�')
           return
         }
-      }
+        this.loading = true;
+        this.$axios.post(this.$api.report.addSchedule, this.query).then(res => {
+          this.loading = false;
+          if (res.code == 201) {
+            this.$message.error('鎿嶄綔澶辫触')
+            return
+          }
+          this.$message.success('淇濆瓨鎴愬姛')
+          this.handleCancel()
+          this.getScheduleByMe()
+        })
+      },
+      init(){
+        this.workLoading = true;
+        this.$axios.get(this.$api.report.calendarWorkByWeek).then(res => {
+          if (res.code == 201) return
+          this.workLoading = false;
+          this.workList = [];
+          for(let i=0;i<7;i++){
+            this.workList.push(res.data[`work${i}`])
+          }
+          this.workDay = res.data.weekDays.map(m=>{
+            return m[2]
+          })
+        })
+      },
+      getWeekdaysForNextWeek() {
+        let weekdays = [];
+        for (let i = 0; i < 7; i++) {
+          let date = new Date();
+          date.setDate(date.getDate() + i); // 浠婂ぉ涔嬪悗鐨勬棩瀛�
+          let day = date.getDay(); // 0-6 浠h〃鏄熸湡鏃ュ埌鏄熸湡鍏�
+          weekdays.push(day);
+        }
+        weekdays = weekdays.map(m=>{
+          let day =''
+          switch (m) {
+            case 0:
+              day = '鏄熸湡澶�'
+              break;
+            case 1:
+              day = '鏄熸湡涓�'
+              break;
+            case 2:
+              day = '鏄熸湡浜�'
+              break;
+            case 3:
+              day = '鏄熸湡涓�'
+              break;
+            case 4:
+              day = '鏄熸湡鍥�'
+              break;
+            case 5:
+              day = '鏄熸湡浜�'
+              break;
+            case 6:
+              day = '鏄熸湡鍏�'
+              break;
+          }
+          return day
+        })
+        return weekdays;
+      },
+      getScheduleByMe(){
+        this.scheduleLoading = true;
+        this.$axios.post(this.$api.report.ScheduleByMe, {
+          date:getYearAndMonthAndDays(this.calendarValue)
+        }).then(res => {
+          this.loading = false;
+          this.scheduleLoading = false;
+          if (res.code == 201) {
+            return
+          }
+          this.listScheduleByMe = res.data.map(m=>{
+            if(m.scheduleTime){
+              let time = m.scheduleTime.split(' ')[1].split(':')
+              m.scheduleTimes = time[0] + ':' + time[1]
+            }else{
+              m.scheduleTimes = ''
+            }
+            return m
+          })
+        })
+      },
 		}
 	}
 </script>
diff --git a/src/util/date.js b/src/util/date.js
index 427486b..03629d0 100644
--- a/src/util/date.js
+++ b/src/util/date.js
@@ -1,8 +1,7 @@
 /**
  * 鑾峰彇骞存湀鏃�
  */
-export function getYearAndMonthAndDays() {
-  const date = new Date()
+export function getYearAndMonthAndDays(date=new Date()) {
   let year = date.getFullYear()
   let month = date.getMonth() + 1
   if (month < 10) {
diff --git a/src/util/echarts.js b/src/util/echarts.js
index b653849..e2ce7bd 100644
--- a/src/util/echarts.js
+++ b/src/util/echarts.js
@@ -30,16 +30,16 @@
         },
       },
       grid: {
-        top: '5%',
-        left: '7%',
+        top: '25px',
+        left: '40px',
         right: '3%',
-        bottom: '7%',
+        bottom: '40px',
         // containLabel: true
       },
       legend: {
           show: true,
           orient: 'horizontal',
-          y:-5,
+          y:-2,
           right:15,
           itemWidth: 12,
           itemHeight: 12,
@@ -84,7 +84,7 @@
           },
           axisLabel: {
             color: 'rgba(43,48,52, 0.4)',
-            margin: 30,
+            margin: 20,
           },
           axisTick: {
               show: false,
@@ -139,10 +139,10 @@
           },
       },
       grid: {
-          top: '5%',
-          left: '7%',
-          right: '2%',
-          bottom: '7%',
+        top: '25px',
+        left: '40px',
+        right: '3%',
+        bottom: '40px',
           // containLabel: true
       },
       xAxis: [{
@@ -180,7 +180,7 @@
           },
           axisLabel: {
             color: 'rgba(43,48,52, 0.4)',
-            margin: 30,
+            margin: 20,
           },
           axisTick: {
               show: false,
diff --git a/static/js/menu.js b/static/js/menu.js
index d34f6ff..4f17007 100644
--- a/static/js/menu.js
+++ b/static/js/menu.js
@@ -232,7 +232,7 @@
 		}, {
 			v: "瀹為獙瀹よ祫璐�",
 			i: "font icon-erjidaohang",
-			u: "",
+			u: "a5-laboratory-qualifications",
 			g: "C鑳藉姏鑼冨洿鍜岃祫璐�",
 			p: ""
 		}, {

--
Gitblit v1.9.3