From 7319ab1ce998a7d13f0192a4ccaf92d4a02929f8 Mon Sep 17 00:00:00 2001
From: licp <lichunping@guanfang.com.cn>
Date: 星期三, 11 十二月 2024 14:33:43 +0800
Subject: [PATCH] 电路试验上传文件报错
---
src/components/view/b3-classes.vue | 307 +++++++++++++++++++++++++++++++++-----------------
1 files changed, 201 insertions(+), 106 deletions(-)
diff --git a/src/components/view/b3-classes.vue b/src/components/view/b3-classes.vue
index 49493b3..f20bb20 100644
--- a/src/components/view/b3-classes.vue
+++ b/src/components/view/b3-classes.vue
@@ -29,14 +29,14 @@
</el-option>
</el-select>
<el-input v-model="query.userName" placeholder="璇疯緭鍏ヤ汉鍛樺悕绉�" size="small" style="width: 140px;margin: 0 16px;" clearable @keyup.enter.native="refreshTable()"></el-input>
- <el-select v-model="query.laboratory" placeholder="璇烽�夋嫨瀹為獙瀹�" style="width: 140px;" size="small" clearable @change="refreshTable()">
+ <!-- <el-select v-model="query.laboratory" placeholder="璇烽�夋嫨瀹為獙瀹�" style="width: 140px;" size="small" clearable @change="refreshTable()">
<el-option
v-for="item in laboratory"
:key="item.value"
:label="item.label"
:value="item.value">
</el-option>
- </el-select>
+ </el-select> -->
</div>
</div>
<div class="search_thing" style="padding-left: 30px;">
@@ -44,13 +44,13 @@
<el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button>
</div>
<div class="search_thing btns" style="padding-left: 30px;">
- <el-button size="small" type="primary" v-if="downPower" @click="configTime" :loading="downLoading">鏃堕棿閰嶇疆</el-button>
+ <el-button size="small" type="primary" v-if="listPower" @click="configTime" :loading="downLoading">鏃堕棿閰嶇疆</el-button>
<el-button size="small" type="primary" v-if="downPower" @click="handleDown" :loading="downLoading">瀵� 鍑�</el-button>
<el-button size="small" type="primary" @click="schedulingVisible = true" v-if="addPower">鎺� 鐝�</el-button>
</div>
</div>
<div class="center" v-loading="pageLoading">
- <scroll-pagination @load="init" :finishLoding="finishLoding" v-show="query.month&&list.length>0" style="height: 100%;" :key="'123'" :list="list">
+ <!-- <scroll-pagination @load="init" :finishLoding="finishLoding" v-show="query.month&&list.length>0" style="height: 100%;" :key="'123'" :list="list">
<div class="clearfix">
<div class="fixed-left">
<div class="content-title" style="padding-left: 16px;box-sizing: border-box;">
@@ -97,10 +97,101 @@
</div>
</div>
</div>
- </scroll-pagination>
- <scroll-pagination @load="initYear" :finishLoding="finishLoding" v-show="!query.month&&yearList.length>0" style="width: 100%;" :key="'111'" :list="yearList">
- <div class="clearfix year-table">
+ </scroll-pagination> -->
+ <div class="clearfix" style="width: 100%;" v-show="query.month">
<div class="fixed-left">
+ <div class="content-title" style="padding-left: 16px;box-sizing: border-box;">
+ 浜哄憳鍚嶇О
+ </div>
+ <div class="content-user" :class="{hoverType:currentUserIndex==index}" v-for="(item,index) in list" :key="'e'+index" v-on:mouseenter="onMouseEnter(index)"
+ v-on:mouseleave="currentUserIndex=null">
+ <div class="user-pic">{{ item.name.charAt(0) }}</div>
+ <div class="user-info">
+ <p style="font-size: 14px;color: #3A7BFA;line-height: 24px;">{{ item.name }}</p>
+ <p style="color: #999999;font-size: 12px;transform: scale(0.8) translateX(-20px);white-space: nowrap;width: 150px;overflow-x: show;">鏃�:{{ item.day0 }},涓�:{{ item.day1 }},澶�:{{ item.day2 }},浼�:{{ item.day3 }},鍋�:{{ item.day4 }},宸�:{{ item.day6 }}</p>
+ <p style="margin-top: 4px;"><span style="color: #999999;font-size: 12px;display: inline-block;transform: scale(0.8) translateX(-10px);">鍚堣鍑哄嫟: </span><span style="font-size: 16px;
+ color: #FF4902;">{{ query.month?item.monthlyAttendance
+.totalAttendance:item.sidebarAnnualAttendance
+.totalAttendance }}澶�</span></p>
+ </div>
+ </div>
+ </div>
+ <div class="scroll-right">
+ <div class="content">
+ <div class="content-title content-title-right" style="border-bottom: 0;">
+ <div class="content-title-item" v-for="(item,index) in weeks" :key="'b'+index">
+ <span class="month" style="position: absolute;top: 4px;" v-if="item.week=='鍛ㄦ棩'">{{ item.weekNum }}鍛�</span>
+ <p style="height: 26px;position: absolute;bottom: 12px;">
+ <span class="day">{{ item.day }}</span>
+ <span class="week">{{ item.week.charAt(1) }}</span>
+ </p>
+ </div>
+ </div>
+ <div class="content-body" v-for="(item,index) in list" :key="'c'+index"
+ v-on:mouseenter="onMouseEnter(index)"
+ v-on:mouseleave="currentUserIndex=null">
+ <div class="content-body-item" v-for="(m,i) in item.list" :key="'d'+i" :class="{hoverType:currentUserIndex==index}">
+ <el-dropdown trigger="click" placement="bottom" @command="e=>handleCommand(e,m)" :disabled="!upPower" style="width: 100%;height: 100%;cursor: pointer;">
+ <div class="work-box" :class="{type0:m.shift==='0',type1:m.shift==='1',type2:m.shift==='2',type3:m.shift==='3',type4:m.shift==='4',type5:m.shift==='5',type6:m.shift==='6'}">
+ <span style="cursor: pointer;" :style="`opacity: ${getShiftByDic(m.shift)=='鏃�'?0:1};`">{{ getShiftByDic(m.shift) }}</span>
+ </div>
+ <el-dropdown-menu slot="dropdown">
+ <el-dropdown-item v-for="(n,j) in classType" :key="'h'+j" :command="n.value">{{ n.label }}</el-dropdown-item>
+ </el-dropdown-menu>
+ </el-dropdown>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <div class="clearfix year-table" style="width: 100%;" v-show="!query.month">
+ <div class="fixed-left">
+ <div class="content-title" style="padding-left: 16px;box-sizing: border-box;">
+ 浜哄憳鍚嶇О
+ </div>
+ <div class="content-user" :class="{hoverType:currentUserIndex==index}" v-for="(item,index) in yearList" :key="'e'+index" v-on:mouseenter="onMouseEnter(index)"
+ v-on:mouseleave="currentUserIndex=null">
+ <div class="user-pic">{{ item.name.charAt(0) }}</div>
+ <div class="user-info">
+ <p style="font-size: 14px;color: #3A7BFA;line-height: 24px;">{{ item.name }}</p>
+ <p style="color: #999999;font-size: 12px;transform: scale(0.8) translateX(-20px);white-space: nowrap;width: 150px;overflow-x: show;">鏃�:{{ item.day0 }},涓�:{{ item.day1 }},澶�:{{ item.day2 }},浼�:{{ item.day3 }},鍋�:{{ item.day4 }},宸�:{{ item.day6 }}</p>
+ <p style="margin-top: 4px;"><span style="color: #999999;font-size: 12px;display: inline-block;transform: scale(0.8) translateX(-10px);">鍚堣鍑哄嫟: </span><span style="font-size: 16px;
+ color: #FF4902;">{{ item.work_time }}澶�</span></p>
+ </div>
+ </div>
+ </div>
+ <div class="scroll-right">
+ <div class="content">
+ <div>
+ <div class="content-title content-title-right" style="border-bottom: 0;height: 52px;" :style="`display: grid;
+ grid-template-columns: repeat(${monthList.length}, 1fr);`">
+ <div class="content-title-item" v-for="(item,index) in monthList" :key="'b'+index" style="height: 52px;">
+ <span class="month">{{ item }}鏈�</span>
+ </div>
+ </div>
+ <div
+ class="content-body"
+ v-for="(item,index) in yearList"
+ :key="'c'+index"
+ v-on:mouseenter="onMouseEnter(index)"
+ v-on:mouseleave="currentUserIndex=null"
+ :style="`display: grid;
+ grid-template-columns: repeat(${monthList.length}, 1fr);`"
+ >
+ <div class="content-body-item" v-for="(m,i) in item.monthList" :key="'d'+i" :class="{hoverType:currentUserIndex==index}">
+ <p style="color:rgb(153, 153, 153);font-size: 12px;">鍚堣鍑哄嫟锛�<span style="font-size: 14px;color:#000">{{ m.totalMonthAttendance }}</span></p>
+ <p style="color:rgb(153, 153, 153);font-size: 12px;">
+ 鏃�:{{ m.day0 }},涓�:{{ m.day1 }},澶�:{{ m.day2 }},浼�:{{ m.day3 }},鍋�:{{ m.day4 }},宸�:{{ m.day6 }}
+ </p>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ </div>
+ <!-- <scroll-pagination @load="initYear" :finishLoding="finishLoding" v-show="!query.month&&yearList.length>0" style="width: 100%;" :key="'111'" :list="yearList">
+ <div class="clearfix year-table">
+ <div class="fixed-left">
<div class="content-title" style="padding-left: 16px;box-sizing: border-box;">
浜哄憳鍚嶇О
</div>
@@ -144,27 +235,26 @@
</div>
</div>
</div>
- </scroll-pagination>
- <span style="color:#909399;font-size:14px;position: absolute;left:50%;top: 50%;transform: translate(-59%,-50%);" v-if="(query.month&&list.length==0)||(!query.month&&yearList.length==0)">鏆傛棤鏁版嵁</span>
+ </scroll-pagination> -->
+ <!-- <span style="color:#909399;font-size:14px;position: absolute;left:50%;top: 50%;transform: translate(-59%,-50%);" v-if="(query.month&&list.length==0)||(!query.month&&yearList.length==0)">鏆傛棤鏁版嵁</span> -->
</div>
+<el-pagination
+ background
+ @current-change="currentChange"
+ :page-size="pageSize" :current-page="currentPage"
+ layout="total, prev, pager, next, jumper"
+ :total="total" style="margin-top: 10px;text-align: right;margin-right: 30px;">
+</el-pagination>
+
<el-dialog title="鏃堕棿閰嶇疆" :visible.sync="configTimeVisible" width="620px">
- <div v-loading="configTimeVisibleLoading" ></div>
- <div v-if="!configTimeVisibleLoading">
+ <div v-loading="configTimeVisibleLoading" style="min-height: 200px;">
<div v-for="(item, index) in timeQuery">
- <div class="form_title">
- <span>{{`鐝${transFromNumber(index + 1)}`}}</span>
- <span style="margin-right: 10px">
- <i class="el-icon-circle-check" v-if="item.isEdit" style="margin-left: 10px; color: #4b79f2" @click="saveEdit(item, index)"></i>
- <i class="el-icon-edit" v-if="!item.isEdit" style="margin-left: 10px; color: #4b79f2" @click="item.isEdit = true"></i>
- <i class="el-icon-delete" v-if="!item.isEdit && timeQuery.length > 1" style="margin-left: 10px; color: #FF4902" @click="deleteTime(item, index)"></i>
- </span>
- </div>
- <div class="form">
- <div style="margin-bottom: 12px">
+ <div class="form" style="display: flex;justify-content: space-between">
+ <div style="margin-bottom: 12px;width: 200px;">
<span class="form_label">鐝锛�</span>
<span v-if="!item.isEdit"> {{item.type}} </span>
<span class="form_input" v-if="item.isEdit">
- <el-select v-model="item.shift" placeholder="璇烽�夋嫨" style="width: 70%;" clearable size="small">
+ <el-select v-model="item.shift" placeholder="璇烽�夋嫨" style="width: 70%;margin-right: 8px;" clearable size="small">
<el-option v-for="obj in timeTypeList"
:key="obj.value"
:label="obj.label"
@@ -173,12 +263,12 @@
</el-select>
</span>
</div>
- <div>
+ <div style="width: calc(100% - 260px);">
<span class="form_label">鏃堕棿锛�</span>
- <span v-if="!item.isEdit"> {{item.time === null ? '' : item.time[0] + '~' + item.time[1]}} </span>
+ <span v-if="!item.isEdit"> {{item.startTime&&item.endTime ? item.startTime + '~' + item.endTime:''}} </span>
<span class="form_input" v-if="item.isEdit">
- <el-time-picker
- style="width: 70%;"
+ <!-- <el-time-picker
+ style="width: 200px;"
is-range
size="small"
v-model="item.time"
@@ -188,12 +278,38 @@
start-placeholder="寮�濮嬫椂闂�"
end-placeholder="缁撴潫鏃堕棿"
placeholder="閫夋嫨鏃堕棿鑼冨洿">
- </el-time-picker>
+ </el-time-picker> -->
+ <el-time-select
+ placeholder="璧峰鏃堕棿"
+ v-model="item.startTime"
+ size="small"
+ :picker-options="{
+ start: '00:00',
+ step: '00:15',
+ end: '24:00'
+ }" style="width: 120px;">
+ </el-time-select>
+ <el-time-select
+ style="width: 120px;"
+ placeholder="缁撴潫鏃堕棿"
+ v-model="item.endTime"
+ size="small"
+ :picker-options="{
+ start: '00:00',
+ step: '00:15',
+ end: '24:00'
+ }">
+ </el-time-select>
</span>
</div>
- <el-divider></el-divider>
+ <span>
+ <i class="el-icon-circle-check" v-if="item.isEdit" style="margin-left: 10px; color: #4b79f2;cursor: pointer;" @click="saveEdit(item, index)"></i>
+ <i class="el-icon-edit" v-if="!item.isEdit" style="margin-left: 10px; color: #4b79f2;cursor: pointer;" @click="item.isEdit = true"></i>
+ <i class="el-icon-delete" v-if=" timeQuery.length > 1" style="margin-left: 10px; color: #FF4902;cursor: pointer;" @click="deleteTime(item, index)"></i>
+ </span>
</div>
- <div @click="addTimeForm" style="color: #4b79f2" v-if="index === timeQuery.length - 1">娣诲姞鏃堕棿閰嶇疆</div>
+ <el-divider></el-divider>
+ <div @click="addTimeForm" style="color: #4b79f2;cursor: pointer;" v-if="index === timeQuery.length - 1">娣诲姞鏃堕棿閰嶇疆</div>
</div>
<div @click="addTimeForm" style="color: #4b79f2" v-if="timeQuery.length === 0">娣诲姞鏃堕棿閰嶇疆</div>
</div>
@@ -329,18 +445,18 @@
},
list:[],
currentPage: 1, // 褰撳墠椤�
- pageSize: 10, // 涓�椤�10鏉�
- total: '',
+ pageSize: 6, // 涓�椤�10鏉�
+ total: 0,
pageLoading: false, // 缁勪欢loading鐨勫睍绀�,榛樿涓簍rue
finishLoding: false, // 鍔犺浇瀹屾垚锛屾樉绀哄凡缁忔病鏈夋洿澶氫簡
monthList:[],
yearList:[],
downLoading:false,
- keyMap:{},
configTimeVisible: false, // 鏃堕棿閰嶇疆寮规
configTimeVisibleLoading: false, // 鏃堕棿閰嶇疆寮规loading
timeTypeList: [],
timeQuery: [],
+ listPower:false,
}
},
watch: {
@@ -379,14 +495,12 @@
this.monthList.push(i)
}
this.monthList.reverse()
- // this.getPower()
+ this.getPower()
},
methods: {
refresh(){
this.list = [];
this.yearList = []
- this.keyMap = {};
- this.finishLoding = false;
this.currentPage = 1
this.query = {
userName:'',
@@ -401,14 +515,20 @@
}
},
refreshTable(){
- this.keyMap = {};
this.currentPage = 1
- this.finishLoding = false;
if(this.query.month){
this.list = [];
this.init()
}else{
this.yearList = []
+ this.initYear()
+ }
+ },
+ currentChange(num){
+ this.currentPage = num
+ if(this.query.month){
+ this.init()
+ }else{
this.initYear()
}
},
@@ -430,17 +550,7 @@
return overWan ? getWan(overWan) + "涓�" + getWan(noWan) : getWan(num)
},
init(){
- const key = `_${this.currentPage}`
- const value = this.keyMap[key]
- // 濡傛灉value瀛樺湪锛岃〃绀虹紦瀛樻湁鍊硷紝閭d箞闃绘璇锋眰
- if(value) {
- return
- }
- // value涓嶅瓨鍦紝琛ㄧず绗竴娆¤姹�,璁剧疆鍗犱綅
- this.keyMap[key] = 'temp'
- if(this.currentPage==1){
- this.pageLoading = true
- }
+ this.pageLoading = true
let year = this.query.year.getFullYear()
let month0 = this.query.month?this.query.month:new Date().getMonth()+1
let month = month0>9?month0:'0'+month0
@@ -453,8 +563,8 @@
}).then(res => {
this.pageLoading = false
if (res.code == 201) return
- this.total = res.data.total
- let list = res.data.page.records.map(item=>{
+ this.total = res.data.page.total
+ this.list = res.data.page.records.map(item=>{
for (let key in item.monthlyAttendance) {
let type = this.getDayByDic(key)
if(type!=undefined||type!=null){
@@ -473,33 +583,10 @@
}
this.weeks.push(obj)
})
- 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++;
- }
})
},
initYear(){
- const key = `_${this.currentPage}`
- const value = this.keyMap[key]
- // 濡傛灉value瀛樺湪锛岃〃绀虹紦瀛樻湁鍊硷紝閭d箞闃绘璇锋眰
- if(value) {
- return
- }
- // value涓嶅瓨鍦紝琛ㄧず绗竴娆¤姹�,璁剧疆鍗犱綅
- this.keyMap[key] = 'temp'
- // pageYear
- if(this.currentPage==1){
- this.pageLoading = true
- }
+ this.pageLoading = true
let year = this.query.year.getFullYear()
this.$axios.post(this.$api.performanceShift.pageYear, {
size:this.pageSize,
@@ -511,7 +598,7 @@
this.pageLoading = false
if (res.code == 201) return
this.total = res.data.total
- let list = res.data.records.map(item=>{
+ this.yearList = res.data.records.map(item=>{
for (let key in item.year) {
let type = this.getDayByDic(key)
if(type!=undefined||type!=null){
@@ -532,18 +619,18 @@
}
return item
});
- if(list.length==0){
- this.finishLoding = true;
- }else{
- if(list.length<this.pageSize){
- this.finishLoding = true;
- }
- this.yearList = this.yearList.concat(list)
- if(this.total==this.yearList.length){
- this.finishLoding = true;
- }
- this.currentPage++;
- }
+ // if(list.length==0){
+ // this.finishLoding = true;
+ // }else{
+ // if(list.length<this.pageSize){
+ // this.finishLoding = true;
+ // }
+ // this.yearList = this.yearList.concat(list)
+ // if(this.total==this.yearList.length){
+ // this.finishLoding = true;
+ // }
+ // this.currentPage++;
+ // }
})
},
getPower() {
@@ -551,20 +638,25 @@
let add = false
let up = false
let down = false
+ let listPower = false
for (var i = 0; i < power.length; i++) {
- if (power[i].menuMethod == 'update') {
+ if (power[i].menuMethod == 'performanceShiftUpdate') {
up = true
}
if (power[i].menuMethod == 'delDeviceParameter') {
down = true
}
- if (power[i].menuMethod == 'add') {
+ if (power[i].menuMethod == 'performanceShiftAdd') {
add = true
+ }
+ if (power[i].menuMethod == 'shiftTimeList') {
+ listPower = true
}
}
this.addPower = add
this.upPower = up
this.downPower = down
+ this.listPower = listPower
},
onMouseEnter(index){
this.currentUserIndex = index
@@ -624,8 +716,9 @@
if (res.data.length > 0) {
res.data.forEach(item => {
item.isEdit = false
- item.time.push(item.startTime)
- item.time.push(item.endTime)
+ // item.time = []
+ // item.time.push(item.startTime)
+ // item.time.push(item.endTime)
const index = this.timeTypeList.findIndex(val => val.value === item.shift)
if (index > -1) {
item.type = this.timeTypeList[index].label
@@ -654,6 +747,8 @@
item.type = this.timeTypeList[index].label
}
}
+ delete item.orderBy
+ delete item.time
const isEmpty = this.isObjectEmpty(item)
if (isEmpty) {
this.$message.error('璇峰~鍐欏畬鏁�')
@@ -662,8 +757,8 @@
let newObj = {}
let url = ''
newObj.shift = item.shift
- newObj.startTime = item.time[0]
- newObj.endTime = item.time[1]
+ newObj.startTime = item.startTime
+ newObj.endTime = item.endTime
url = this.$api.performanceShift.shiftAdd
if (item.id) {
// 鏈塱d涓轰慨鏀�
@@ -677,21 +772,21 @@
}).then(res => {
if (res.code == 201) return
this.$message.success('鎿嶄綔鎴愬姛')
+ this.getTimeList()
})
- this.getTimeList()
},
deleteTime (item, index) {
- this.$axios.post(this.$api.performanceShift.shiftRemove, {
- id: item.id
- },{
- headers: {
- 'Content-Type': 'application/json'
- }
- }).then(res => {
- if (res.code == 201) return
- this.$message.success('鎿嶄綔鎴愬姛')
- })
- this.getTimeList()
+ if(item.id){
+ this.$axios.post(this.$api.performanceShift.shiftRemove, {
+ id: item.id
+ }).then(res => {
+ if (res.code == 201) return
+ this.$message.success('鎿嶄綔鎴愬姛')
+ this.getTimeList()
+ })
+ }else{
+ this.timeQuery.splice(index, 1)
+ }
},
isObjectEmpty(obj) {
return Object.keys(obj).some(key => !obj[key]);
@@ -879,7 +974,7 @@
}
.center {
width: 100%;
- height: calc(100% - 50px );
+ height: calc(100% - 100px );
background-color: #fff;
overflow-y: auto;
display: flex;
--
Gitblit v1.9.3