| | |
| | | width: 100%; |
| | | height: calc(100% - 50px); |
| | | overflow-y: auto; |
| | | padding: 25px 0; |
| | | padding: 25px 0 10px; |
| | | } |
| | | |
| | | .left-1 { |
| | |
| | | } |
| | | |
| | | .right-1{ |
| | | padding: 14px 10px 4px; |
| | | padding: 10px 10px 4px; |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: space-between; |
| | |
| | | } |
| | | |
| | | .right-2{ |
| | | padding: 13px 20px; |
| | | padding: 13px 14px 8px; |
| | | margin-bottom: 16px; |
| | | } |
| | | |
| | |
| | | .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; |
| | |
| | | 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; |
| | |
| | | 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){ |
| | |
| | | .left-item-body{ |
| | | box-sizing: border-box; |
| | | padding: 5px; |
| | | max-height: 711px; |
| | | height: 693px; |
| | | overflow-y: auto; |
| | | } |
| | | .body-item{ |
| | |
| | | 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); |
| | |
| | | </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> |
| | |
| | | </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> |
| | |
| | | <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> |
| | |
| | | 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> |
| | |
| | | </template> |
| | | |
| | | <script> |
| | | import { |
| | | getYearAndMonthAndDays |
| | | } from '../../util/date' |
| | | export default { |
| | | data() { |
| | | return { |
| | |
| | | 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() { |
| | |
| | | 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();// 当前年份 |
| | |
| | | this.dialogVisible = false; |
| | | this.query = { |
| | | time:'', |
| | | content:'' |
| | | text:'' |
| | | } |
| | | }, |
| | | submit(){ |
| | |
| | | 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 代表星期日到星期六 |
| | | 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> |