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/view/index-index.vue |  188 ++++++++++++++++++++++++++++++++++++-----------
 1 files changed, 144 insertions(+), 44 deletions(-)

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>

--
Gitblit v1.9.3