From b468a4fa1558c674acbf0782456c23751360cdb5 Mon Sep 17 00:00:00 2001 From: Crunchy <3114200645@qq.com> Date: 星期三, 24 七月 2024 21:09:48 +0800 Subject: [PATCH] Merge remote-tracking branch 'origin/master' --- src/components/tool/value-table.vue | 2 src/components/do/b1-inspect-order-plan/Inspection.vue | 78 +++++++++++--- src/components/view/b3-classes.vue | 167 +++++++++++++++++++++++++++++++++ src/assets/api/controller.js | 4 4 files changed, 231 insertions(+), 20 deletions(-) diff --git a/src/assets/api/controller.js b/src/assets/api/controller.js index e1b97c9..1c342d8 100644 --- a/src/assets/api/controller.js +++ b/src/assets/api/controller.js @@ -317,6 +317,10 @@ update: "/performanceShift/update", //缁╂晥绠$悊-鐝-鐝鐘舵�佷慨鏀� pageYear: "/performanceShift/pageYear", //缁╂晥绠$悊-鐝-骞翠唤鍒嗛〉鏌ヨ export: "/performanceShift/export", //缁╂晥绠$悊-鐝-瀵煎嚭 + shiftAdd: "/shiftTime/add", //缁╂晥绠$悊-鐝-鏃堕棿閰嶇疆-鏂板 + getList: "/shiftTime/list", //缁╂晥绠$悊-鐝-鏃堕棿閰嶇疆-鏌ヨ鏃堕棿閰嶇疆淇℃伅 + shiftRemove: "/shiftTime/remove", //缁╂晥绠$悊-鐝-鏃堕棿閰嶇疆-鍒犻櫎 + shiftUpdate: "/shiftTime/update", //缁╂晥绠$悊-鐝-鏃堕棿閰嶇疆-淇敼 } const auxiliaryWorkingHours = { diff --git a/src/components/do/b1-inspect-order-plan/Inspection.vue b/src/components/do/b1-inspect-order-plan/Inspection.vue index f5ace4a..eeaebea 100644 --- a/src/components/do/b1-inspect-order-plan/Inspection.vue +++ b/src/components/do/b1-inspect-order-plan/Inspection.vue @@ -64,6 +64,7 @@ white-space: normal; } .thermal-table{ + min-width: calc(100% - 10px); margin: 5px 5px 0; table-layout: fixed; } @@ -592,17 +593,17 @@ <el-divider></el-divider> <h4 style="margin-bottom: 20px;font-size: 24px;font-weight: 400;text-align: center;">鐑惊鐜楠屽師濮嬭褰�</h4> <el-form :inline="true" :model="wareForm" class="form-inline" label-width="100px" style="justify-content: flex-start;display: flex;align-items: center;width: 100%;"> - <el-form-item label="鍨嬪彿:" style="margin-bottom: 0;"> - <el-input clearable v-model="thermalCyclingInfo.model" disabled size="small" placeholder=""></el-input> - </el-form-item> - <el-form-item label="璇曢獙鏂规硶:" style="margin-bottom: 0;"> - <el-input clearable v-model="thermalCyclingInfo.methodName" disabled size="small" placeholder=""></el-input> - </el-form-item> - <el-form-item label="寰幆娆℃暟:" style="margin-bottom: 0;" v-if="thermalCyclingInfo.inspectionItemClass=='鐩存祦鐢甸樆'"> - <el-input-number v-model="thermalCyclingInfo.inspectionItem" :min="1" :max="thermalCyclingInfo.max" label="" style="margin-top:4px" size="small" @change="thermalCyclingChange"></el-input-number> - </el-form-item> - <el-form-item label="浠櫒鍚嶇О:" style="margin-bottom: 0;"> + <el-form-item label="浠櫒鍚嶇О:" style="margin-bottom: 0;"> <el-input clearable v-model="equipForm.value0" disabled size="small" placeholder=""></el-input> + </el-form-item> + <el-form-item label="浠櫒鍚嶇О:" style="margin-bottom: 0;"> + <el-input clearable v-model="equipForm.value1" disabled size="small" placeholder=""></el-input> + </el-form-item> + <el-form-item label="鍨嬪彿:" style="margin-bottom: 0;"> + <el-input clearable v-model="thermalCyclingInfo.model" disabled size="small" placeholder=""></el-input> + </el-form-item> + <el-form-item label="璇曢獙鏂规硶:" style="margin-bottom: 0;"> + <el-input clearable v-model="thermalCyclingInfo.methodName" disabled size="small" placeholder=""></el-input> </el-form-item> </el-form> <el-divider></el-divider> @@ -617,9 +618,6 @@ </el-option> </el-select> </el-form-item> - <el-form-item label="浠櫒鍚嶇О:" > - <el-input clearable v-model="equipForm.value1" disabled size="small" placeholder=""></el-input> - </el-form-item> <el-form-item label="浠櫒缂栧彿:"> <el-select v-model="equipForm.code1" placeholder="璇烽�夋嫨" size="small"> <el-option @@ -630,7 +628,10 @@ </el-option> </el-select> </el-form-item> - <el-button type="primary" size="small" style="margin-bottom: 22px;margin-left: 10px;" @click="handleAddThermal">鏂板</el-button> + <el-form-item label="寰幆娆℃暟:" v-if="thermalCyclingInfo.inspectionItemClass=='鐩存祦鐢甸樆'"> + <el-input-number v-model="thermalCyclingInfo.inspectionItem" :min="1" :max="thermalCyclingInfo.max" label="" style="margin-top:4px;width: 190px;" size="small" @change="thermalCyclingChange"></el-input-number> + </el-form-item> + <el-button type="primary" size="small" style="margin-bottom: 22px;margin-left: 30px;" @click="handleAddThermal">鏂板</el-button> <el-button size="small" style="margin-bottom: 22px;" @click="handleDeleteThermal">鍒犻櫎</el-button> </el-form> <div class="table-container" v-loading="thermalCyclingLoading"> @@ -648,7 +649,7 @@ <el-input clearable size="small" placeholder="" v-model="item.arr[i].value0" @change="m=>saveThermalCycling(m,item,'value0')"></el-input> <span style="font-size: 12px;margin-left: 13px;margin-right: 13px;"> 鈩�</span> </div> - <div style="display: flex;align-items: center;" v-if="item.name!='鐜娓╁害'||thermalCyclingInfo.inspectionItemClass!='鐩存祦鐢甸樆'"> + <div style="display: flex;align-items: center;" v-if="item.name!='鐜娓╁害'&&thermalCyclingInfo.inspectionItemClass=='鐩存祦鐢甸樆'"> <label style="width: 100px;white-space: nowrap;font-size: 12px;">鐩存祦鐢甸樆:</label> <el-input clearable size="small" placeholder="" v-model="item.arr[i].value1" @change="saveThermalCycling"></el-input> <span style="margin-left: 5px;font-size: 12px;"> 惟/km</span> @@ -1398,6 +1399,13 @@ if (res.code == 201) return let {productVos,sampleVo} = res.data this.thermalCyclingInfo = {...this.thermalCyclingInfo,...sampleVo} + if(this.thermalCyclingInfo.inspectionItem>1){ + for(let i in this.param){ + if(this.param[i].inspectionItemSubclass){ + delete this.param[i] + } + } + } if(productVos.length>0){ this.thermalCyclingInfo.inspectionItemClass = productVos[0].insProduct.inspectionItemClass productVos.forEach(item=>{ @@ -1430,6 +1438,7 @@ case 'insValue': let insValue = JSON.parse(insProductResult[i]) if(insValue&&insValue.length>0){ + this.thermalCyclingInfo.length = 0 this.thermalCyclingInfo.arr.forEach(a=>{ if(a.name==obj.inspectionItemSubclass){ a.arr = [] @@ -1438,6 +1447,7 @@ value0:insValue[i].v, value1:insValue[i].w, }) + this.thermalCyclingInfo.length++ } a.insResult = obj.insResult } @@ -1448,9 +1458,9 @@ i:obj.id, r:0, c:0, + w:m.w, v:{ - v:m.v, - w:m.w + v:m.v } }) }) @@ -1464,6 +1474,18 @@ v:obj.insResult } } + }else{ + this.thermalCyclingInfo.arr.forEach(a=>{ + a.insResult = null + a.arr = [] + a.arr.push( + { + value0:'', + value1:'' + } + ) + }) + this.thermalCyclingInfo.length = 1 } }) } @@ -1624,7 +1646,7 @@ } } }) - // console.log(1111,this.param) + console.log(1111,this.param) this.saveInsContext() }, // 鐑惊鐜�---缁撴潫 @@ -1958,7 +1980,7 @@ } ] obj.insResult = null; - }else{} + } return obj }) this.thermalCyclingInfo.arr = arr; @@ -2216,10 +2238,19 @@ } catch (e) {} try { let equipValue = JSON.parse(a.insProductResult.equipValue) + this.param[a.id].equipValue = [] + for (let i = 0; i < equipValue.length; i++) { + this.param[a.id].equipValue.push({ + v:{ + v:'' + } + }) + } for (let i = 0; i < equipValue.length; i++) { if(this.tableLists.find(m=>m.templateId==this.currentTable)&&(this.tableLists.find(m=>m.templateId==this.currentTable).templateName=='娓╁害寰幆妫�楠屽師濮嬭褰�'||this.tableLists.find(m=>m.templateId==this.currentTable).templateName=='鐑惊鐜楠屽師濮嬭褰�')){ // 娓╁害寰幆璁惧璧嬪�� this.$set(this.equipForm,`code`+i,equipValue[i].v) + this.param[a.id].equipValue[i].v.v = equipValue[i].v }else{ this.param[a.id].equipValue[i].v.v = equipValue[i].v if(equipValue[i].v){ @@ -2244,10 +2275,19 @@ } catch (e) {} try { let equipName = JSON.parse(a.insProductResult.equipName) + this.param[a.id].equipName = [] + for (let i = 0; i < equipName.length; i++) { + this.param[a.id].equipName.push({ + v:{ + v:'' + } + }) + } for (let i = 0; i < equipName.length; i++) { if(this.tableLists.find(m=>m.templateId==this.currentTable)&&(this.tableLists.find(m=>m.templateId==this.currentTable).templateName=='娓╁害寰幆妫�楠屽師濮嬭褰�'||this.tableLists.find(m=>m.templateId==this.currentTable).templateName=='鐑惊鐜楠屽師濮嬭褰�')){ // 娓╁害寰幆璧嬪�� this.$set(this.equipForm,`value`+i,equipName[i].v) + this.param[a.id].equipName[i].v.v = equipName[i].v }else{ this.param[a.id].equipName[i].v.v = equipName[i].v } diff --git a/src/components/tool/value-table.vue b/src/components/tool/value-table.vue index 21dba9f..3fa5c3c 100644 --- a/src/components/tool/value-table.vue +++ b/src/components/tool/value-table.vue @@ -627,7 +627,7 @@ if (this.isShowZero) { this.tableData.map(item => { Object.keys(item).forEach(val => { - if (item[val] === null && val.includes('Hours')) { + if (item[val] === null && (val.includes('Hours') || val === 'total')) { item[val] = 0 } }) diff --git a/src/components/view/b3-classes.vue b/src/components/view/b3-classes.vue index 7fb7bad..baa00dd 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,53 @@ </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" style="min-height: 200px;"> + <div v-for="(item, index) in timeQuery"> + <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%;margin-right: 8px;" 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 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 class="form_input" v-if="item.isEdit"> + <el-time-picker + style="width: 200px;" + 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> + <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> + <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> + </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 +333,10 @@ yearList:[], downLoading:false, keyMap:{}, + configTimeVisible: false, // 鏃堕棿閰嶇疆寮规 + configTimeVisibleLoading: false, // 鏃堕棿閰嶇疆寮规loading + timeTypeList: [], + timeQuery: [], } }, watch: { @@ -355,6 +407,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 +603,97 @@ 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.post(this.$api.performanceShift.getList).then(res => { + if (res.code == 201) return + if (res.data.length > 0) { + res.data.forEach(item => { + item.isEdit = false + 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 + } + }) + this.timeQuery = res.data + } + 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 + } + } + delete item.orderBy + 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) { + 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]); + }, handleDown(){ let year = this.query.year.getFullYear() let time = ''; @@ -680,6 +840,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