From c5f70afac4dd35b3a6033eef8aae530d674425e0 Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期一, 13 五月 2024 15:02:52 +0800 Subject: [PATCH] 完成工时管理前端 --- src/components/view/b3-work-time-management.vue | 2 src/components/do/b1-ins-order/add.vue | 4 src/main.js | 4 src/components/do/b3-work-time-management/work-time-management.vue | 10 +- src/components/do/b3-work-time-management/work-time-config.vue | 4 src/components/do/b3-work-time-management/work-time-statistics.vue | 233 ++++++++++++++++++++++++++++++++++++++++++++++ src/components/view/b3-classes.vue | 20 ++- 7 files changed, 258 insertions(+), 19 deletions(-) diff --git a/src/components/do/b1-ins-order/add.vue b/src/components/do/b1-ins-order/add.vue index ce7f27f..99e204e 100644 --- a/src/components/do/b1-ins-order/add.vue +++ b/src/components/do/b1-ins-order/add.vue @@ -667,6 +667,10 @@ this.addObj.sampleNum = this.sampleList.length this.$nextTick(() => { this.$refs.sampleTable.doLayout() + if(this.addObj.sampleNum>0){ + this.$refs.sampleTable.setCurrentRow(this.sampleList[0],true) + this.rowClick(this.sampleList[0]) + } }) }) } diff --git a/src/components/do/b3-work-time-management/work-time-config.vue b/src/components/do/b3-work-time-management/work-time-config.vue index ed06257..4e38b79 100644 --- a/src/components/do/b3-work-time-management/work-time-config.vue +++ b/src/components/do/b3-work-time-management/work-time-config.vue @@ -8,7 +8,7 @@ </div> <div class="search_thing"> <div class="search_label">瀹為獙瀹わ細</div> - <el-select v-model="componentData.entity.laboratory" placeholder="鍏ㄩ儴" size="small"> + <el-select v-model="componentData.entity.laboratory" placeholder="鍏ㄩ儴" size="small" @change="refreshTable()"> <el-option v-for="item in laboratoryList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> @@ -16,7 +16,7 @@ <div class="search_thing"> <div class="search_label">閮ㄩ棬锛�</div> <div class="search_input"> - <el-select v-model="componentData.entity.department" placeholder="鍏ㄩ儴" size="small"> + <el-select v-model="componentData.entity.department" placeholder="鍏ㄩ儴" size="small" @change="refreshTable()"> <el-option v-for="item in partList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> diff --git a/src/components/do/b3-work-time-management/work-time-management.vue b/src/components/do/b3-work-time-management/work-time-management.vue index cb657d0..17c0b8a 100644 --- a/src/components/do/b3-work-time-management/work-time-management.vue +++ b/src/components/do/b3-work-time-management/work-time-management.vue @@ -13,13 +13,13 @@ </div> <div class="search_thing" style="width: 200px;"> <div class="search_label">鏄熸湡锛�</div> - <el-select v-model="componentData.entity.laboratory" placeholder="鍏ㄩ儴" size="small"> + <el-select v-model="componentData.entity.laboratory" placeholder="鍏ㄩ儴" size="small" @change="refreshTable()"> <el-option v-for="item in weekList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> </div> <div class="search_thing"> - <div class="search_label">鏃堕棿鑼冨洿锛�</div> + <div class="search_label" style="width: 90px;">鏃堕棿鑼冨洿锛�</div> <div class="search_input"> <el-date-picker style="width: 100%;" @@ -28,7 +28,7 @@ type="daterange" range-separator="鑷�" start-placeholder="寮�濮嬫棩鏈�" - end-placeholder="缁撴潫鏃ユ湡"> + end-placeholder="缁撴潫鏃ユ湡" @change="refreshTable()"> </el-date-picker> </div> </div> @@ -36,11 +36,11 @@ <div class="search_thing" style="width: 200px;"> <div class="search_label" >鍚嶅瓧锛�</div> <el-input size="small" placeholder="璇疯緭鍏�" clearable - v-model="componentData.entity.number"></el-input> + v-model="componentData.entity.number" @keyup.enter.native="refreshTable()"></el-input> </div> <div class="search_thing" style="width: 200px;"> <div class="search_label">鐘舵�侊細</div> - <el-select v-model="componentData.entity.laboratory" placeholder="鍏ㄩ儴" size="small"> + <el-select v-model="componentData.entity.laboratory" placeholder="鍏ㄩ儴" size="small" @change="refreshTable()"> <el-option v-for="item in stateList" :key="item.value" :label="item.label" :value="item.value"> </el-option> </el-select> diff --git a/src/components/do/b3-work-time-management/work-time-statistics.vue b/src/components/do/b3-work-time-management/work-time-statistics.vue index e624163..fd79c90 100644 --- a/src/components/do/b3-work-time-management/work-time-statistics.vue +++ b/src/components/do/b3-work-time-management/work-time-statistics.vue @@ -1,19 +1,246 @@ <template> <div class="work-time-statistics"> - 宸ユ椂缁熻 + <div class="search"> + <div class="search_thing"> + <div class="search_label">鏃ユ湡锛�</div> + <div class="search_input" style="display: flex;align-items: center;"> + <el-date-picker + v-model="componentData.entity.laboratory" + type="month" + format="yyyy-MM-dd HH:mm:ss" + value-format="yyyy-MM-dd HH:mm:ss" + placeholder="閫夋嫨鏈�" size="small" style="width: 100%;"> + </el-date-picker> + </div> + </div> + <div class="search_thing"> + <div class="search_label">鍛樺伐锛�</div> + <el-select v-model="componentData.entity.laboratory" placeholder="鍏ㄩ儴" size="small" @change="refreshTable()"> + <el-option v-for="item in personList" :key="item.id" :label="item.name" :value="item.id"> + </el-option> + </el-select> + </div> + <div class="search_thing"> + <div class="search_label">閮ㄩ棬锛�</div> + <div class="search_input"> + <el-select v-model="componentData.entity.laboratory" placeholder="鍏ㄩ儴" size="small" @change="refreshTable()"> + <el-option v-for="item in weekList" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </div> + </div> + <div class="search_thing" style="padding-left: 30px;width: 100px;"> + <el-button size="small" @click="refresh()">閲� 缃�</el-button> + <el-button size="small" type="primary" @click="refreshTable()">鏌� 璇�</el-button> + </div> + <el-button size="small" type="primary" style="position: absolute;right: 50px;" @click="handleDown">瀵� 鍑�</el-button> + <el-button size="small" type="primary" style="position: absolute;right: 120px;" @click="handleUp" v-show="currentTable == 'value0'">瀵� 鍏�</el-button> + </div> + <el-radio-group v-model="currentTable" size="small" :key="'111'" style="margin-top: 10px;"> + <el-radio-button label="value0"> + 鍘熷宸ユ椂 + </el-radio-button> + <el-radio-button label="value1"> + 淇宸ユ椂 + </el-radio-button> + </el-radio-group> + <div class="table"> + <ValueTable ref="ValueTable0" + v-show="currentTable == 'value0'" + :url="$api.auxiliaryWorkingHours.selectAuxiliaryWorkingHours" + :componentData="componentData" :inputUrl="$api.auxiliaryWorkingHours.selectAuxiliaryWorkingHours" :downUrl="$api.auxiliaryWorkingHours.selectAuxiliaryWorkingHours" :key="upIndex" /> + <ValueTable ref="ValueTable1" + v-show="currentTable == 'value1'" + :url="$api.auxiliaryWorkingHours.selectAuxiliaryWorkingHours" + :componentData="componentData0" :key="upIndex" /> + </div> </div> </template> <script> +import ValueTable from '../../tool/value-table.vue' export default { + components: { + ValueTable + }, data () { return{ - + componentData: { + entity: { + number: null, + department: null, + laboratory: null, + orderBy: { + field: 'id', + order: 'desc' + } + }, + isIndex: true, + showSelect: false, + select: false, + do: [], + tagField: { + deviceStatus: { + select: [] + }, + equipmentManager: { + select: [] + }, + authorizedPerson: { + select: [] + }, + insProductIds:{ + select:[] + } + }, + linkEvent: { + deviceName: { + method: 'selectAllByOne' + } + }, + selectField: { + authorizedPerson: { + select: [], + choose: true + }, + equipmentManager: { + select: [] + }, + insProductIds:{ + select:[], + choose: true + } + }, + requiredAdd: [], + requiredUp: [] + }, + componentData0: { + entity: { + number: null, + department: null, + laboratory: null, + orderBy: { + field: 'id', + order: 'desc' + } + }, + isIndex: true, + showSelect: false, + select: false, + do: [], + tagField: { + deviceStatus: { + select: [] + }, + equipmentManager: { + select: [] + }, + authorizedPerson: { + select: [] + }, + insProductIds:{ + select:[] + } + }, + linkEvent: { + deviceName: { + method: 'selectAllByOne' + } + }, + selectField: { + authorizedPerson: { + select: [], + choose: true + }, + equipmentManager: { + select: [] + }, + insProductIds:{ + select:[], + choose: true + } + }, + requiredAdd: [], + requiredUp: [] + }, + upIndex:0, + weekList:[], + personList:[], + currentTable:'value0' + } + }, + mounted(){ + this.getUsers() + }, + methods: { + refresh(){}, + refreshTable(){}, + getUsers(){ + this.$axios.post(this.$api.user.selectUserList, { + page: { + current: -1, + size: -1, + }, + entity: { + name: null, + } + }, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + if (res.code === 201) { + return + } + let arr = res.data.body.records + this.personList = arr + }) + }, + handleDown(){ + if(this.currentTable == 'value0'){ + this.$refs.ValueTable0.downFile(false) + }else{ + this.$refs.ValueTable1.downFile(false) + } + }, + handleUp(){ + this.$refs.ValueTable0.openUpload() } } } </script> -<style> +<style scoped> +.work-time-statistics{ + height: 100%; +} +.search { + background-color: #fff; + height: 80px; + display: flex; + align-items: center; + } + .search_thing { + width: 270px; + display: flex; + align-items: center; + } + + .search_label { + width: 60px; + font-size: 14px; + text-align: right; + } + + .search_input { + width: calc(100% - 60px); + } + .table { + margin-top: 10px; + background-color: #fff; + width: calc(100% - 40px); + height: calc(100% - 60px - 80px - 10px - 40px - 25px); + padding: 20px; + } </style> diff --git a/src/components/view/b3-classes.vue b/src/components/view/b3-classes.vue index 2d9ffd5..168bb7b 100644 --- a/src/components/view/b3-classes.vue +++ b/src/components/view/b3-classes.vue @@ -75,7 +75,7 @@ <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 }}</span> + <span class="week">{{ item.week.charAt(1) }}</span> </p> </div> </div> @@ -83,13 +83,13 @@ 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}"> - <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',}"> + <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',}"> <!-- <div class="work-box-left"> <span>{{ getShiftByDic(m.shift) }}</span> </div> --> <el-dropdown trigger="click" placement="bottom" @command="e=>handleCommand(e,m)" :disabled="!downPower"> <!-- <i class="el-icon-arrow-down el-icon--right" style="font-size: 20px;color: #fff;cursor: pointer;"></i> --> - <span style="cursor: pointer;">{{ getShiftByDic(m.shift) }}</span> + <span style="cursor: pointer;" :style="`opacity: ${getShiftByDic(m.shift)=='鏃�'?0:1};`">{{ getShiftByDic(m.shift) }}</span> <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> @@ -583,7 +583,7 @@ if(obj){ return obj.label } - return '鏈帓鐝�' + return '鏃�' } } } @@ -664,7 +664,7 @@ } .content-title-item{ height: 100%; - width: 60px; + width: 50px; flex-shrink: 0; border-bottom: 1px solid #EEEEEE; box-sizing: border-box; @@ -699,8 +699,9 @@ } .content-body-item{ height: 70px; - width: 60px; + width: 50px; flex-shrink: 0; + font-size: 12px; box-sizing: border-box; padding: 4px; border-right: 1px solid #EEEEEE; @@ -752,6 +753,13 @@ .work-box.type4 span{ color: #F56C6C !important; } +.work-box.type5{ + background: #ff46c145; + color: #ff46c0 !important; +} +.work-box.type5 span{ + color: #ff46c0 !important; +} /* .el-icon-arrow-down::before{ color: #c6c4c4; } */ diff --git a/src/components/view/b3-work-time-management.vue b/src/components/view/b3-work-time-management.vue index 9a90bfc..66d77a4 100644 --- a/src/components/view/b3-work-time-management.vue +++ b/src/components/view/b3-work-time-management.vue @@ -27,7 +27,7 @@ }, data() { return{ - currentComponent:'workTimeConfig' + currentComponent:'workTimeStatistics' } } } diff --git a/src/main.js b/src/main.js index f149db9..c083de0 100644 --- a/src/main.js +++ b/src/main.js @@ -14,8 +14,8 @@ //鏈湴 Vue.prototype.LOCATIONVUE = "http://127.0.0.1:80"; // const javaApi = 'http://192.168.11.200:8001';//鏉� -const javaApi = 'http://10.20.102.168:8001';//寮� -// const javaApi = 'http://172.20.10.3:8001';//濮� +// const javaApi = 'http://10.20.102.168:8001';//寮� +const javaApi = 'http://172.20.10.3:8001';//濮� // const javaApi = 'http://192.168.11.2:8001';//鏌� // const javaApi = 'http://114.132.189.42:1234';//娴嬭瘯鏈� //鑳滀簯鏈嶅姟鍣� -- Gitblit v1.9.3