From 591fe8bb24ba4e0a955576aac46b3f4f8fe4f28e Mon Sep 17 00:00:00 2001 From: gaoluyang <gaoluyang@rengu.cc> Date: 星期三, 24 七月 2024 15:59:28 +0800 Subject: [PATCH] 检测中心-班次时间配置功能 --- src/components/view/b3-classes.vue | 178 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 178 insertions(+), 0 deletions(-) diff --git a/src/components/view/b3-classes.vue b/src/components/view/b3-classes.vue index 7fb7bad..f68711f 100644 --- a/src/components/view/b3-classes.vue +++ b/src/components/view/b3-classes.vue @@ -44,6 +44,7 @@ <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="downPower" @click="handleDown" :loading="downLoading">瀵� 鍑�</el-button> <el-button size="small" type="primary" @click="schedulingVisible = true" v-if="addPower">鎺� 鐝�</el-button> </div> @@ -146,6 +147,57 @@ </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-dialog title="鏃堕棿閰嶇疆" :visible.sync="configTimeVisible" width="620px"> + <div v-loading="configTimeVisibleLoading" ></div> + <div v-if="!configTimeVisibleLoading"> + <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"> + <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-option v-for="obj in timeTypeList" + :key="obj.value" + :label="obj.label" + :value="obj.value"> + </el-option> + </el-select> + </span> + </div> + <div> + <span class="form_label">鏃堕棿锛�</span> + <span v-if="!item.isEdit"> {{item.time === null ? '' : item.time[0] + '~' + item.time[1]}} </span> + <span class="form_input" v-if="item.isEdit"> + <el-time-picker + style="width: 70%;" + is-range + size="small" + v-model="item.time" + range-separator="~" + format="HH:mm" + value-format="HH:mm" + start-placeholder="寮�濮嬫椂闂�" + end-placeholder="缁撴潫鏃堕棿" + placeholder="閫夋嫨鏃堕棿鑼冨洿"> + </el-time-picker> + </span> + </div> + <el-divider></el-divider> + </div> + <div @click="addTimeForm" style="color: #4b79f2" v-if="index === timeQuery.length - 1">娣诲姞鏃堕棿閰嶇疆</div> + </div> + <div @click="addTimeForm" style="color: #4b79f2" v-if="timeQuery.length === 0">娣诲姞鏃堕棿閰嶇疆</div> + </div> + </el-dialog> <el-dialog title="鎺掔彮" :visible.sync="schedulingVisible" width="400px"> <div class="search_thing"> <div class="search_label" style="width:90px"><span style="color: red;margin-right: 4px;">*</span>鍛ㄦ锛�</div> @@ -285,6 +337,10 @@ yearList:[], downLoading:false, keyMap:{}, + configTimeVisible: false, // 鏃堕棿閰嶇疆寮规 + configTimeVisibleLoading: false, // 鏃堕棿閰嶇疆寮规loading + timeTypeList: [], + timeQuery: [], } }, watch: { @@ -355,6 +411,23 @@ this.yearList = [] this.initYear() } + }, + transFromNumber(num){ + let changeNum = ['闆�', '涓�', '浜�', '涓�', '鍥�', '浜�', '鍏�', '涓�', '鍏�', '涔�']; //changeNum[0] = "闆�" + let unit = ["", "鍗�", "鐧�", "鍗�", "涓�"]; + num = parseInt(num); + let getWan = (temp) => { + let strArr = temp.toString().split("").reverse(); + let newNum = ""; + for (var i = 0; i < strArr.length; i++) { + newNum = (i == 0 && strArr[i] == 0 ? "" : (i > 0 && strArr[i] == 0 && strArr[i - 1] == 0 ? "" : changeNum[strArr[i]] + (strArr[i] == 0 ? unit[0] : unit[i]))) + newNum; + } + return newNum; + } + let overWan = Math.floor(num / 10000); + let noWan = num % 10000; + if (noWan.toString().length < 4) noWan = "0" + noWan; + return overWan ? getWan(overWan) + "涓�" + getWan(noWan) : getWan(num) }, init(){ const key = `_${this.currentPage}` @@ -534,6 +607,104 @@ this.refresh() }) }, + configTime () { + this.$axios.post(this.$api.enums.selectEnumByCategory, { + category: "鐝绫诲瀷" + }).then(res => { + console.log('res---', res) + this.timeTypeList = res.data + }) + this.getTimeList() + this.configTimeVisible = true + }, + getTimeList () { + this.configTimeVisibleLoading = true + this.$axios.get(this.$api.performanceShift.getList).then(res => { + if (res.code === 200) { + this.timeQuery = res.data + this.timeQuery.forEach(item => { + item.isEdit = false + }) + } + this.configTimeVisibleLoading = false + }).catch(e => { + this.configTimeVisibleLoading = false + console.log('e--',e) + }) + }, + addTimeForm () { + this.timeQuery.push({ + type: '', + shift: '', + time: null, + isEdit: true + }) + }, + saveEdit (item, index) { + if (item.shift) { + const index = this.timeTypeList.findIndex(val => val.value === item.shift) + if (index > -1) { + item.type = this.timeTypeList[index].label + } + } + const isEmpty = this.isObjectEmpty(item) + if (isEmpty) { + this.$message.error('璇峰~鍐欏畬鏁�') + return + } + let newObj = {} + let url = '' + newObj.shift = item.shift + newObj.startTime = item.time[0] + newObj.endTime = item.time[1] + url = this.$api.performanceShift.shiftAdd + if (item.id) { + // 鏈塱d涓轰慨鏀� + newObj.id = item.id + url = this.$api.performanceShift.shiftUpdate + } + this.$axios.post(url, newObj, { + headers: { + 'Content-Type': 'application/json' + } + }).then(res => { + if (res.code == 201) return + this.$message.success('鎿嶄綔鎴愬姛') + }) + 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() + }, + isObjectEmpty(obj) { + return Object.keys(obj).some(key => !obj[key]); + }, + saveTimeQuery () { + this.timeQuery.forEach(item => { + if (this.isObjectEmpty(item)) { + return this.$message.error('璇峰~鍐欏畬鏁�') + } + }) + console.log('???') + }, + closeConfigTimeVisible () { + this.configTimeVisible = false + this.timeQuery = [{ + type: '', + time: null, + isEdit: false + }] + }, handleDown(){ let year = this.query.year.getFullYear() let time = ''; @@ -680,6 +851,13 @@ </script> <style scoped> +.form_title { + height: 36px; + display: flex; + flex-direction: row; + justify-content: space-between; + font-weight: 800; +} .search { height: 50px; display: flex; -- Gitblit v1.9.3