src/assets/api/controller.js | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/do/b1-inspect-order-plan/Inspection.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/tool/value-table.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 | |
src/components/view/b3-classes.vue | ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史 |
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 = { 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 } 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 } }) 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) { // 有id为修改 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;