| | |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <div v-loading="workLoading" class="left-2 card" style="overflow: hidden;"> |
| | | <div v-for="(item,index) in workDay" :key="index" class="left-2-item"> |
| | | <div class="left-2 card" v-loading="workLoading" style="overflow: hidden;"> |
| | | <div class="left-2-item" v-for="(item,index) in workDay" :key="index"> |
| | | <div class="left-item-title"> |
| | | <span style="font-size: 18px;">{{ item }}</span> |
| | | <span style="font-size: 14px;color: #999999;">{{ weekdays[index] }}</span> |
| | | <el-tag style="margin-top: 6px;" size="small">{{workList[index].length}} æ¡</el-tag> |
| | | </div> |
| | | <div class="left-item-body"> |
| | | <div v-for="(m,i) in workList[index]" :key="i" :class="{color0:m.type==0,color1:m.type==1,color2:m.type==2}" class="body-item"> |
| | | <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}" @click="goAddList(m)"> |
| | | <div> |
| | | <span style="font-size: 12px;margin-bottom: 17px;">{{ m.text }}</span> |
| | | <div style="display: flex"> |
| | | <span class="body-item-name">{{ m.name }}</span> |
| | | <span v-if="m.insState == 0" class="body-item-insState" style="background-color: #909399;font-size: 12px;">å¾
æ£éª</span> |
| | | <span v-if="m.insState == 1" class="body-item-insState" style="background-color: #E6A23C;font-size: 12px;">æ£éªä¸</span> |
| | | <span v-if="m.insState == 2" class="body-item-insState" style="background-color: #67C23A;font-size: 12px;">å·²æ£éª</span> |
| | | <span v-if="m.insState == 3" class="body-item-insState" style="background-color: #E6A23C;font-size: 12px;">å¾
夿 ¸</span> |
| | | <span v-if="m.insState == 4" class="body-item-insState" style="background-color: #F56C6C;font-size: 9px;">夿 ¸æªéè¿</span> |
| | | <span v-if="m.insState == 5" class="body-item-insState" style="background-color: #67C23A;font-size: 10px;">夿 ¸éè¿</span> |
| | | <span style="font-size: 12px;margin-bottom: 8px;">{{ m.text }}</span> |
| | | <div class="tags" style="display: flex;align-items: end;flex-wrap: wrap;margin-bottom: 8px;"> |
| | | <el-tooltip class="item" effect="dark" :content="item" placement="top" v-for="(item,index) in m.sample?m.sample.split(','):[]" |
| | | :key="index"> |
| | | <el-tag |
| | | :color="m.type==0?'#70A090':(m.type==1?'#EBD476':'#FF3838')" |
| | | effect="dark" size="mini" style="margin: 2px;" class="single-line-ellipsis"> |
| | | {{ item }} |
| | | </el-tag> |
| | | </el-tooltip> |
| | | </div> |
| | | <span style="display: inline-block;height: 22px;width: 70px;border-radius: 10px;line-height: 22px;text-align: center;background: #C0C4CC;color: #fff;font-size: 14px;">{{ m.name }}</span> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | <!-- <div v-loading="workLoading" class="left-2 card" style="overflow: hidden;">--> |
| | | <!-- <div v-for="(item,index) in workDay" :key="index" class="left-2-item">--> |
| | | <!-- <div class="left-item-title">--> |
| | | <!-- <span style="font-size: 18px;">{{ item }}</span>--> |
| | | <!-- <span style="font-size: 14px;color: #999999;">{{ weekdays[index] }}</span>--> |
| | | <!-- </div>--> |
| | | <!-- <div class="left-item-body">--> |
| | | <!-- <div v-for="(m,i) in workList[index]" :key="i" :class="{color0:m.type==0,color1:m.type==1,color2:m.type==2}" class="body-item">--> |
| | | <!-- <div>--> |
| | | <!-- <span style="font-size: 12px;margin-bottom: 17px;">{{ m.text }}</span>--> |
| | | <!-- <div style="display: flex">--> |
| | | <!-- <span class="body-item-name">{{ m.name }}</span>--> |
| | | <!-- <span v-if="m.insState == 0" class="body-item-insState" style="background-color: #909399;font-size: 12px;">å¾
æ£éª</span>--> |
| | | <!-- <span v-if="m.insState == 1" class="body-item-insState" style="background-color: #E6A23C;font-size: 12px;">æ£éªä¸</span>--> |
| | | <!-- <span v-if="m.insState == 2" class="body-item-insState" style="background-color: #67C23A;font-size: 12px;">å·²æ£éª</span>--> |
| | | <!-- <span v-if="m.insState == 3" class="body-item-insState" style="background-color: #E6A23C;font-size: 12px;">å¾
夿 ¸</span>--> |
| | | <!-- <span v-if="m.insState == 4" class="body-item-insState" style="background-color: #F56C6C;font-size: 9px;">夿 ¸æªéè¿</span>--> |
| | | <!-- <span v-if="m.insState == 5" class="body-item-insState" style="background-color: #67C23A;font-size: 10px;">夿 ¸éè¿</span>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | <!-- </div>--> |
| | | </el-col> |
| | | <el-col :lg="10" :md="10" :sm="24" :xl="10" :xs="24"> |
| | | <div class="right-1 card"> |
| | | <div class="right-1-item"> |
| | | <div class="img"> |
| | | <img alt="" src="@/assets/index_image/index-0.svg"> |
| | | </div> |
| | | <div class="mun"> |
| | | <p style="font-size: 20px;">{{getNumberFourTypes.totalNumberOfMessages}}</p> |
| | | <p style="font-size: 14px;margin-bottom: 10px;">æçå¾
å</p> |
| | | </div> |
| | | </div> |
| | | <div class="right-1-item"> |
| | | <div class="img"> |
| | | <img alt="" src="@/assets/index_image/index-1.svg"> |
| | | </div> |
| | | <div class="mun"> |
| | | <p style="font-size: 20px;">{{ getNumberFourTypes.totalNumberOfReadMessages }}</p> |
| | | <p style="font-size: 14px;margin-bottom: 10px;">å·²åäºå®</p> |
| | | </div> |
| | | </div> |
| | | <div class="right-1-item"> |
| | | <div class="img"> |
| | | <img alt="" src="@/assets/index_image/index-2.svg"> |
| | | </div> |
| | | <div class="mun"> |
| | | <p style="font-size: 20px;">{{ getNumberFourTypes.remainingToDo }}</p> |
| | | <p style="font-size: 14px;margin-bottom: 10px;">å©ä½å¾
å</p> |
| | | </div> |
| | | </div> |
| | | <div class="right-1-item"> |
| | | <div class="img"> |
| | | <img alt="" src="@/assets/index_image/index-3.svg"> |
| | | </div> |
| | | <div class="mun"> |
| | | <p style="font-size: 20px;">{{ getNumberFourTypes.totalNumberOfMessagesInThePastSevenDays }}</p> |
| | | <p style="font-size: 14px;margin-bottom: 10px;">è¿æäºå®</p> |
| | | </div> |
| | | <div class="right-2 card"> |
| | | <span style="color: #333333;font-size: 16px;">å·¥æ¶ç»è®¡</span> |
| | | <div> |
| | | <el-select v-model="sonLaboratory" placeholder="ç«ç¹" size="mini" style="width: 100px;" @change="initEchart"> |
| | | <el-option |
| | | v-for="item in dict.type.sys_sub_lab" |
| | | :key="item.value" |
| | | :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | <el-radio-group v-model="type" size="mini"> |
| | | <el-radio-button label="å¨" ></el-radio-button> |
| | | <el-radio-button label="æ"></el-radio-button> |
| | | <el-radio-button label="å¹´"></el-radio-button> |
| | | </el-radio-group> |
| | | <el-date-picker |
| | | v-model="time.week" |
| | | type="week" |
| | | format="yyyy 第 WW å¨" |
| | | placeholder="éæ©å¨" size="mini" v-if="type=='å¨'" @change="m=>changeTime(type,m)" style="width: 130px;"> |
| | | </el-date-picker> |
| | | <el-date-picker |
| | | v-model="time.month" |
| | | type="month" |
| | | placeholder="éæ©æ" size="mini" v-if="type=='æ'" @change="m=>changeTime(type,m)" style="width: 130px;"> |
| | | </el-date-picker> |
| | | <el-date-picker |
| | | v-model="time.year" |
| | | type="year" |
| | | placeholder="鿩年" size="mini" v-if="type=='年'" @change="m=>changeTime(type,m)" style="width: 130px;"> |
| | | </el-date-picker> |
| | | </div> |
| | | </div> |
| | | <div class="right-2 card"> |
| | | <div class="right-2-title"> |
| | | <span style="color: #333333;font-size: 16px;">æçæ¥ç¨</span> |
| | | <span style="cursor: pointer;font-size: 12px; |
| | | color: #3A7BFA;" @click="dialogVisible=true">æ·»å æçæ¥ç¨</span> |
| | | </div> |
| | | <div class="right-2-body"> |
| | | <div class="calendar" style="width: 49%;"> |
| | | <div class="control"> |
| | | <el-button class="prevm" icon="el-icon-arrow-left" @click="prevMonth(calendarValue)"></el-button> |
| | | <span>{{ calendarValue.getFullYear()+'å¹´'+(calendarValue.getMonth() + 1)+'æ' }}</span> |
| | | <el-button class="nextm" icon="el-icon-arrow-right" @click="nextMonth(calendarValue)"></el-button> |
| | | <div class="right-2-body"> |
| | | <el-row :gutter="10" style="width: 100%;height: 80px;"> |
| | | <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12"> |
| | | <div style="height: 100%;background: url(~@/assets/images/bg1.png) no-repeat;background-size: 100% 100%;padding: 12px 0;box-sizing: border-box;"> |
| | | <p style="text-align: center;font-size: 14px;color: #606266;line-height: 20px;margin-bottom: 4px;">æ»å·¥æ¶(å°æ¶)</p> |
| | | <p style="text-align: center;font-family: DIN Alternate, DIN Alternate;font-weight: 700;font-size: 30px;color: #3D3D3D;line-height: 35px;">{{chartData0.total}}</p> |
| | | </div> |
| | | <el-calendar v-model="calendarValue"> |
| | | <template |
| | | slot="dateCell" |
| | | slot-scope="{date, data}"> |
| | | <span> |
| | | {{ data.day.split('-').slice(2)+'' }} |
| | | </span> |
| | | <!-- <el-badge v-if="data.isSelected" is-dot class="item"> |
| | | </el-badge> --> |
| | | </template> |
| | | </el-calendar> |
| | | </div> |
| | | <div v-loading="scheduleLoading" class="right-2-list" style="width: 49%;height: 286px;"> |
| | | <div v-for="(m,i) in listScheduleByMe" :key="i" class="list2-item"> |
| | | <span>{{ m.scheduleTimes }}</span> |
| | | <el-tooltip :content="m.text" effect="dark" placement="top" style="margin-left: 10px;"> |
| | | <p class="ellipsis-multiline" >{{ m.text }}</p> |
| | | </el-tooltip> |
| | | </el-col> |
| | | <el-col :xs="24" :sm="24" :md="12" :lg="12" :xl="12"> |
| | | <div style="height: 100%;background: url(~@/assets/images/bg2.png) no-repeat;background-size: 100% 100%;padding: 12px 0;box-sizing: border-box;"> |
| | | <p style="text-align: center;font-size: 14px;color: #606266;line-height: 20px;margin-bottom: 4px;">æ£éªå(个)</p> |
| | | <p style="text-align: center;font-family: DIN Alternate, DIN Alternate;font-weight: 700;font-size: 30px;color: #3D3D3D;line-height: 35px;">{{chartData0.personNum}}</p> |
| | | </div> |
| | | <span v-if="listScheduleByMe.length==0" style="color:rgb(144, 147, 153);font-size: 14px;text-align: center;margin: 120px 0;display: inline-block;width: 100%;">ææ æ°æ®</span> |
| | | </div> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <echart-module :id="'index-1'" :config="chartConfig0" :datas="chartData0" style="height: 250px;width: 100%;"></echart-module> |
| | | </div> |
| | | <div class="right-3 card" style="overflow: hidden;"> |
| | | <div class="right-3-tab"> |
| | | <!-- <div :class="{active:currentIndex==4}" class="tab-item" style="cursor: pointer;" @click="currentIndex=4">é¢è¦æé</div>--> |
| | | <div :class="{active:currentIndex==5}" class="tab-item" style="cursor: pointer;" @click="currentIndexChange">CNASéç¥éå</div> |
| | | <div :class="{active:currentIndex==5}" class="tab-item">å¾
åäºé¡¹</div> |
| | | </div> |
| | | <div v-loading="listLoading" class="right-3-list"> |
| | | <scroll-pagination v-if="list.length>0||listLoading" :finishLoding="finishLoding" :list="list" @load="getList"> |
| | | <div v-for="(m,i) in list" :key="i" class="list3-item"> |
| | | <div class="list3-item-title"> |
| | | <!-- <img alt="" src="../../../static/img/index-tip.svg">--> |
| | | <p style="color: #FF7756">{{ m.theme }}</p> |
| | | </div> |
| | | <div class="list3-item-info"> |
| | | <p class="ellipsis-multiline" style="width: 73%;-webkit-line-clamp: 1;cursor: pointer;" @click="goNoticeDetail(m)"> |
| | | <!-- ç¼å·<span style="color:#3A7BFA;"> SB20240101-001 </span>ç设å¤å°äº2023-09-09 11:11:11è¿æ --> |
| | | {{ m.content }} |
| | | </p> |
| | | <p>{{ m.createTime }}</p> |
| | |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | <el-dialog :visible.sync="dialogVisible" title="æ¥ç¨æ·»å " width="400px"> |
| | | <div class="body" style="max-height: 60vh;"> |
| | | <el-row> |
| | | <el-col :span="22" class="search_thing"> |
| | | <div class="search_label"><span style="color: red;margin-right: 4px;">*</span>æ¶é´ï¼</div> |
| | | <div class="search_input"> |
| | | <el-date-picker |
| | | v-model="query.time" |
| | | format="yyyy-MM-dd HH:mm:ss" |
| | | placeholder="éæ©æ¥ææ¶é´" |
| | | size="small" |
| | | style="width: 100%;" type="datetime" value-format="yyyy-MM-dd HH:mm:ss"> |
| | | </el-date-picker> |
| | | </div> |
| | | </el-col> |
| | | <el-col :span="22" class="search_thing"> |
| | | <div class="search_label"><span style="color: red;margin-right: 4px;">*</span>å
容ï¼</div> |
| | | <div class="search_input"> |
| | | <el-input v-model="query.text" :rows="2" |
| | | placeholder="请è¾å
¥å
容" size="small" type="textarea"></el-input> |
| | | </div> |
| | | </el-col> |
| | | </el-row> |
| | | </div> |
| | | <span slot="footer" class="dialog-footer"> |
| | | <el-row> |
| | | <el-button @click="handleCancel">å æ¶</el-button> |
| | | <el-button :loading="loading" type="primary" @click="submit">ç¡® å®</el-button> |
| | | </el-row> |
| | | </span> |
| | | </el-dialog> |
| | | </div> |
| | | </template> |
| | | |
| | | <script> |
| | | import {getYearAndMonthAndDays} from '@/utils/date.js' |
| | | import ScrollPagination from '@/components/index/scroll-paging.vue' |
| | | import {calendarWorkByWeek, manHourByPerson, manHourByStation} from "@/api/index/report"; |
| | | import EchartModule from '@/components/echarts/echart.vue' |
| | | export default { |
| | | components: { |
| | | ScrollPagination |
| | | ScrollPagination, |
| | | EchartModule |
| | | }, |
| | | dicts: ['sys_sub_lab'], |
| | | data() { |
| | | return { |
| | | user: {}, |
| | | now: null, |
| | | calendarValue: new Date(), |
| | | currentIndex:5, |
| | | dialogVisible:false, |
| | | query:{ |
| | | time:'', |
| | | text:'' |
| | | }, |
| | | loading:false, |
| | | workLoading:false, |
| | | workList:[], |
| | | workDay:[], |
| | |
| | | finishLoding: false, // å è½½å®æï¼æ¾ç¤ºå·²ç»æ²¡ææ´å¤äº |
| | | timer:null, |
| | | keyMap:{}, |
| | | getNumberFourTypes: {}, |
| | | sonLaboratory:null, |
| | | chartData0:{ |
| | | total:0, |
| | | personNum:0, |
| | | data:[] |
| | | }, |
| | | chartConfig0:{ |
| | | height: '', |
| | | isLoading:false, |
| | | type:'pie0' |
| | | }, |
| | | type:'æ', |
| | | time:{ |
| | | week:'', |
| | | month:'', |
| | | year:'', |
| | | }, |
| | | } |
| | | }, |
| | | watch:{ |
| | | calendarValue(val){ |
| | | this.getScheduleByMe() |
| | | }, |
| | | currentIndex(){ |
| | | this.keyMap = {} |
| | | this.currentPage = 1; |
| | |
| | | } |
| | | }, |
| | | mounted() { |
| | | this.user = JSON.parse(localStorage.getItem('user')) |
| | | // this.user = JSON.parse(localStorage.getItem('user')) |
| | | this.nowTime() |
| | | setInterval(() => { |
| | | this.nowTime() |
| | |
| | | this.keyMap = {} |
| | | this.list = []; |
| | | this.getList(); |
| | | this.getScheduleByMe() |
| | | this.timer&&clearInterval(this.timer) |
| | | this.timer = setInterval(() => { |
| | | this.init(); |
| | |
| | | this.keyMap = {} |
| | | this.list = []; |
| | | this.getList(); |
| | | this.getScheduleByMe() |
| | | },1000*60*10) |
| | | this.getNumberFourTypesFun() |
| | | }, |
| | | methods: { |
| | | // è·³è½¬é¡µé¢ |
| | | goAddList() { |
| | | |
| | | }, |
| | | changeState (val) { |
| | | if (val == 0) { |
| | | return 'å¾
æ£éª' |
| | | } |
| | | }, |
| | | currentIndexChange () { |
| | | this.keyMap = {} |
| | | this.currentPage = 1; |
| | | this.list = []; |
| | | this.getList(); |
| | | }, |
| | | getNumberFourTypesFun() { |
| | | this.$axios.get(this.$api.informationNotification.getNumberFourTypesMessagesHomePage).then(res => { |
| | | this.getNumberFourTypes = res.data |
| | | }) |
| | | }, |
| | | getList(){ |
| | | const key = `_${this.currentPage}` |
| | |
| | | if(this.list.length==0){ |
| | | this.finishLoding = false; |
| | | } |
| | | this.$axios.get(this.$api.informationNotification.page+'?size='+this.pageSize+'¤t='+this.currentPage+'&messageType='+this.currentIndex).then(res => { |
| | | if(res.code === 201){ |
| | | return |
| | | } |
| | | let list = res.data.records; |
| | | this.total = res.data.total; |
| | | if(list.length==0){ |
| | | this.finishLoding = true; |
| | | }else{ |
| | | if(list.length<this.pageSize){ |
| | | this.finishLoding = true; |
| | | } |
| | | this.list = this.list.concat(list) |
| | | if(this.total==this.list.length){ |
| | | this.finishLoding = true; |
| | | } |
| | | this.currentPage++; |
| | | } |
| | | this.listLoading = false |
| | | }) |
| | | // this.$axios.get(this.$api.informationNotification.page+'?size='+this.pageSize+'¤t='+this.currentPage+'&messageType='+this.currentIndex).then(res => { |
| | | // this.listLoading = false |
| | | // let list = res.data.records; |
| | | // this.total = res.data.total; |
| | | // if(list.length==0){ |
| | | // this.finishLoding = true; |
| | | // }else{ |
| | | // if(list.length<this.pageSize){ |
| | | // this.finishLoding = true; |
| | | // } |
| | | // this.list = this.list.concat(list) |
| | | // if(this.total==this.list.length){ |
| | | // this.finishLoding = true; |
| | | // } |
| | | // this.currentPage++; |
| | | // } |
| | | // }).catch(err => { |
| | | // this.listLoading = false |
| | | // }) |
| | | }, |
| | | nowTime() { |
| | | var date = new Date(); |
| | |
| | | } |
| | | this.now = y + "-" + m + "-" + d + " " + h + ":" + min + ":" + s; |
| | | }, |
| | | nextMonth(value) { |
| | | let year = this.calendarValue.getFullYear();// å½å年份 |
| | | let month = this.calendarValue.getMonth() + 1;// å½åæä»½ |
| | | let day = this.calendarValue.getDate();// å½åå¤©æ° |
| | | let nextyear = year; |
| | | let nextmonth = parseInt(month) + 1; |
| | | // 夿ä¸ä¸ææ¯å¦ä¼è¿å
¥ä¸ä¸å¹´ |
| | | if (nextmonth === 13) { |
| | | nextyear = parseInt(year) + 1; |
| | | nextmonth = 1; |
| | | } |
| | | // 计ç®ä¸ä¸å¹´ä¸ä¸ä¸ªææå¤å°å¤© |
| | | let nextday = new Date(nextyear, nextmonth, 0); |
| | | let nextdays = nextday.getDate(); |
| | | if (day > nextdays) { |
| | | day = nextdays; |
| | | if (day < 10) { |
| | | day = '0' + day; |
| | | } |
| | | } |
| | | if (nextmonth < 10) { |
| | | nextmonth = '0' + nextmonth; |
| | | } |
| | | let nexttime = nextyear + '-' + nextmonth + '-' + day; |
| | | |
| | | // å°å¾å°çå¹´ææ¥æ ¼å¼è½¬æ¢ä¸ºæ åæ¶é´ï¼ä¸é¥¿äºä¹æ¶é´æ ¼å¼ç¸åæè½èå¨ |
| | | this.calendarValue = new Date(nexttime); |
| | | }, |
| | | prevMonth(time) { |
| | | let year = this.calendarValue.getFullYear();// å½å年份 |
| | | let month = this.calendarValue.getMonth() + 1;// å½åæä»½ |
| | | let day = this.calendarValue.getDate();// å½åå¤©æ° |
| | | let prevyear = year; |
| | | let prevmonth = parseInt(month) - 1; |
| | | // 夿ä¸ä¸ææ¯å¦ä¼è¿å
¥ä¸ä¸å¹´ |
| | | if (prevmonth === 0) { |
| | | prevyear = parseInt(year) - 1; |
| | | prevmonth = 12; |
| | | } |
| | | // 计ç®ä¸ä¸å¹´ä¸ä¸ä¸ªææå¤å°å¤© |
| | | let prevday = new Date(prevyear, prevmonth, 0); |
| | | let prevdays = prevday.getDate(); |
| | | if (day > prevdays) { |
| | | day = prevdays; |
| | | if (day < 10) { |
| | | day = '0' + day; |
| | | } |
| | | } |
| | | if (prevmonth < 10) { |
| | | prevmonth = '0' + prevmonth; |
| | | } |
| | | let prevtime = prevyear + '-' + prevmonth + '-' + day; |
| | | |
| | | // å°å¾å°çå¹´ææ¥æ ¼å¼è½¬æ¢ä¸ºæ åæ¶é´ï¼ä¸é¥¿äºä¹æ¶é´æ ¼å¼ç¸åæè½èå¨ |
| | | this.calendarValue = new Date(prevtime); |
| | | }, |
| | | handleCancel(){ |
| | | this.dialogVisible = false; |
| | | this.query = { |
| | | time:'', |
| | | text:'' |
| | | } |
| | | }, |
| | | submit(){ |
| | | if(!this.query.time){ |
| | | this.$message.error('æ¶é´æªå¡«å') |
| | | return |
| | | } |
| | | 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 |
| | | calendarWorkByWeek().then(res => { |
| | | this.workLoading = false; |
| | | this.workList = []; |
| | | for(let i=0;i<7;i++){ |
| | |
| | | let arr = m.split('-') |
| | | return arr[2] |
| | | }) |
| | | }).catch(err=>{ |
| | | this.workLoading = false; |
| | | }) |
| | | }, |
| | | getWeekdaysForNextWeek() { |
| | |
| | | }) |
| | | 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 |
| | | }) |
| | | }) |
| | | }, |
| | | goNoticeDetail(row){ |
| | | this.$axios.put(this.$api.informationNotification.triggerModificationStatusToRead+'/'+row.id).then(res => { |
| | | row.num = Math.random(100); |
| | |
| | | },29); |
| | | }) |
| | | }, |
| | | changeTime(type,m){ |
| | | if(m){ |
| | | switch(type){ |
| | | case 'å¨': |
| | | this.startTime = getYearAndMonthAndDays(new Date(this.time.week.getTime() - 24 * 60 * 60 * 1000)) |
| | | this.endTime = getYearAndMonthAndDays(new Date(this.time.week.getTime() + 24 * 60 * 60 * 1000 * 5)) |
| | | break; |
| | | case 'æ': |
| | | const year = new Date(this.time.month).getFullYear(); |
| | | const month = new Date(this.time.month).getMonth(); |
| | | const day = new Date(year, month + 1, 0).getDate(); // |
| | | // è®¾ç½®èµ·å§æ¥æåç»ææ¥æ |
| | | this.startTime = `${year}-${month + 1}-01` |
| | | this.endTime = `${year}-${month + 1}-${day}` // ææ« |
| | | break; |
| | | case 'å¹´': |
| | | const year0 = new Date(this.time.year).getFullYear(); |
| | | this.startTime = `${year0}-01-01`; // å¹´å |
| | | this.endTime = `${year0}-12-31`; // å¹´æ« |
| | | break; |
| | | } |
| | | }else{ |
| | | const year = new Date().getFullYear(); |
| | | const month = new Date().getMonth(); |
| | | |
| | | // è®¾ç½®èµ·å§æ¥æåç»ææ¥æ |
| | | this.startTime = new Date(year, month, 1).toISOString().slice(0, 10); // æå |
| | | this.endTime = new Date(year, month + 1, 0).toISOString().slice(0, 10); // ææ« |
| | | this.time.month = new Date() |
| | | } |
| | | this.initEchart() |
| | | }, |
| | | async initEchart(){ |
| | | this.chartConfig0.isLoading = false |
| | | const params = { |
| | | startTime: this.startTime, |
| | | endTime: this.endTime, |
| | | sonLaboratory: this.sonLaboratory, |
| | | } |
| | | let res0 = await manHourByStation(params) |
| | | if (res0.code == 500) return |
| | | this.chartData0.total = res0.message |
| | | let res1 = await manHourByPerson(params) |
| | | if (res1.code == 500) return |
| | | this.chartData0.personNum = 0 |
| | | this.chartData0.data = [] |
| | | if(res1.data){ |
| | | for(let m in res1.data){ |
| | | this.chartData0.personNum ++ |
| | | let obj = { |
| | | name:m, |
| | | value:res1.data[m], |
| | | penl:this.chartData0.total>0?((res1.data[m]/this.chartData0.total)*100).toFixed(2):0 |
| | | } |
| | | this.chartData0.data.push(obj) |
| | | } |
| | | } |
| | | this.chartConfig0.isLoading = true |
| | | }, |
| | | }, |
| | | deactivated(){ |
| | | this.timer&&clearInterval(this.timer) |
| | |
| | | } |
| | | </script> |
| | | |
| | | <style scoped lang="scss"> |
| | | <style scoped> |
| | | .index { |
| | | width: 100%; |
| | | height: calc(100% - 50px); |
| | | overflow-y: auto; |
| | | padding: 20px 10px 10px; |
| | | background: rgb(245, 247, 251); |
| | | padding: 14px; |
| | | background: #F5F7FB; |
| | | } |
| | | |
| | | .left-1 { |
| | |
| | | display: flex; |
| | | align-items: center; |
| | | justify-content: center; |
| | | cursor: pointer; |
| | | } |
| | | |
| | | .right-1-item .mun{ |
| | |
| | | .right-2-body{ |
| | | width: 100%; |
| | | margin-top: 20px; |
| | | display: flex; |
| | | align-items: flex-start; |
| | | justify-content: space-between; |
| | | /* display: flex; |
| | | align-items: start; |
| | | justify-content: space-between; */ |
| | | } |
| | | >>>.el-calendar__header { |
| | | display: none; |
| | |
| | | font-size: 14px; |
| | | } |
| | | .right-3-tab{ |
| | | display: flex; |
| | | align-items: center; |
| | | padding: 20px 0 0 20px; |
| | | margin-bottom: 16px; |
| | | } |
| | | .tab-item{ |
| | | width: 50%; |
| | | box-sizing: border-box; |
| | | text-align: center; |
| | | padding: 14px 0; |
| | | font-size: 20px; |
| | | background: #F5F7FB; |
| | | color: #333333; |
| | | } |
| | | .tab-item.active{ |
| | | background: #fff; |
| | | color: #FF3838; |
| | | padding-left: 16px; |
| | | font-weight: 500; |
| | | font-size: 18px; |
| | | color: #3D3D3D; |
| | | line-height: 25px; |
| | | text-align: left; |
| | | font-style: normal; |
| | | text-transform: none; |
| | | } |
| | | .right-3-list{ |
| | | padding: 0 12px 8px; |
| | |
| | | } |
| | | .list3-item-title{ |
| | | display: flex; |
| | | align-items: flex-start; |
| | | align-items: start; |
| | | margin-bottom: 10px; |
| | | } |
| | | .list3-item-info{ |
| | |
| | | border-radius: 16px; |
| | | overflow: hidden; |
| | | margin-bottom: 8px; |
| | | cursor: pointer; |
| | | } |
| | | .body-item.color0{ |
| | | background: #70A090; |
| | |
| | | background: #3A7BFA !important; |
| | | color: #fff !important; |
| | | } |
| | | .body-item-name { |
| | | display: inline-block; |
| | | height: 22px;width: 60px; |
| | | border-radius: 10px; |
| | | line-height: 22px; |
| | | text-align: center; |
| | | background: #C0C4CC; |
| | | color: #fff; |
| | | font-size: 14px |
| | | } |
| | | .body-item-insState { |
| | | margin-left: 2px; |
| | | display: inline-block; |
| | | height: 22px;width: 60px; |
| | | border-radius: 10px; |
| | | line-height: 22px; |
| | | text-align: center; |
| | | color: #fff; |
| | | font-size: 14px |
| | | >>>.el-tag--dark{ |
| | | border: 0; |
| | | } |
| | | </style> |