From 5e18bf58d03f4b6830afddb92af9079dcc5587e2 Mon Sep 17 00:00:00 2001 From: licp <lichunping@guanfang.com.cn> Date: 星期一, 11 三月 2024 09:25:26 +0800 Subject: [PATCH] Merge branch 'master' of http://114.132.189.42:9002/r/mes-ocea-before into master --- src/views/quality/rawMaterial/rawMaterial-form.vue | 105 +++++++++++--------- src/views/plan/customerorder/index.vue | 36 ++++--- src/views/quality/rawMaterial/testValue-select.vue | 64 ++++++++++++ src/api/technology/completeproductstructure.js | 9 + src/api/plan/customerorder.js | 2 src/views/technology/completeproductstructure/index.vue | 25 ++++ 6 files changed, 172 insertions(+), 69 deletions(-) diff --git a/src/api/plan/customerorder.js b/src/api/plan/customerorder.js index b6db926..2dc7524 100644 --- a/src/api/plan/customerorder.js +++ b/src/api/plan/customerorder.js @@ -266,7 +266,7 @@ export function downloadProduct(data){ return request({ - url: '/mes/plan/customerOrder/downloadProduct', + url: '/mes/plan/customerOrder/getProduct', method: 'post', responseType: 'blob', data: data diff --git a/src/api/technology/completeproductstructure.js b/src/api/technology/completeproductstructure.js index 2f31570..383537a 100644 --- a/src/api/technology/completeproductstructure.js +++ b/src/api/technology/completeproductstructure.js @@ -90,3 +90,12 @@ data: obj }) } + +export function exportBom(obj) { + return request({ + url: '/mes/bom/exportBom', + method: 'post', + data: obj, + responseType: 'blob' + }) +} diff --git a/src/views/plan/customerorder/index.vue b/src/views/plan/customerorder/index.vue index 3b0251a..4ba8c0f 100644 --- a/src/views/plan/customerorder/index.vue +++ b/src/views/plan/customerorder/index.vue @@ -586,7 +586,7 @@ sort: true, isTrue: true, isSearch: true, - searchInfoType: 'text', + searchInfoType: 'date', formatter: this.formatDutyDate, }, { @@ -1036,20 +1036,24 @@ permitArr: [], }) } - this.table.toolbar.push({ - text: '涓嬭浇宸ヨ壓鏂囦欢', - disabled: false, - type: 'primary', - fun: this.downloadWord, - permitArr: ['03plan','04planed'], - }) - this.table.toolbar.push({ - text: '涓嬭浇鎺掍骇鍗�', - disabled: false, - type: 'primary', - permitArr: [], - fun: this.downloadProductionScheduling, - }) + if(this.permissions.plan_download_process_file){ + this.table.toolbar.push({ + text: '涓嬭浇宸ヨ壓鏂囦欢', + disabled: false, + type: 'primary', + fun: this.downloadWord, + permitArr: ['03plan','04planed'], + }) + } + if(this.permissions.plan_download_product_file){ + this.table.toolbar.push({ + text: '涓嬭浇鎺掍骇鍗�', + disabled: false, + type: 'primary', + permitArr: [], + fun: this.downloadProductionScheduling, + }) + } this.table.toolbar.push({ text: '鍏宠仈璁㈠崟', disabled: false, @@ -1130,7 +1134,7 @@ this.$message.error("璇烽�夋嫨涓�鏉℃暟鎹�") return } - downloadProduct({ids: ids}).then(res=>{ + downloadProduct(ids).then(res=>{ if(res.status===200){ transform(res) } diff --git a/src/views/quality/rawMaterial/rawMaterial-form.vue b/src/views/quality/rawMaterial/rawMaterial-form.vue index c4c60ab..31e5075 100644 --- a/src/views/quality/rawMaterial/rawMaterial-form.vue +++ b/src/views/quality/rawMaterial/rawMaterial-form.vue @@ -177,30 +177,22 @@ <el-table-column prop="testValue" label="妫�娴嬪��" min-width="160" v-for="(item,index) in empiricalValueAdd" :key="index"> <template slot-scope="scope"> <div v-if="!scope.row.children"> - <el-tooltip :disabled="scope.row.deviceId != null" class="item" effect="dark" content="璇峰厛閫夋嫨璁惧锛�" placement="top-start"> - <el-dropdown> - <el-input placeholder="妫�娴嬪��"/> - <i style="line-height: normal;padding: 10px 7px;" class="el-icon-arrow-down el-icon--right"></i> - <el-dropdown-menu slot="dropdown"> - <el-dropdown-item>榛勯噾绯�</el-dropdown-item> - <el-dropdown-item>鐙瓙澶�</el-dropdown-item> - <el-dropdown-item>铻鸿洺绮�</el-dropdown-item> - <el-dropdown-item>鍙岀毊濂�</el-dropdown-item> - <el-dropdown-item>铓典粩鐓�</el-dropdown-item> - </el-dropdown-menu> - </el-dropdown> - <!-- <el-autocomplete clearable - :disabled="scope.row.deviceId == null || (dataForm.id!=null&&(resultVal!=null && resultVal!=''))" - @blur.stop="changeState(scope.row,scope.$index)" - @select="changeState(scope.row,scope.$index)" - v-model="scope.row.testValueList[index]" - :fetch-suggestions="querySearch" - placeholder="璇疯緭鍏ユ垨閫夋嫨妫�娴嬪��" > - <i style="line-height: normal;padding: 10px 7px;" class="el-icon-arrow-down" slot="suffix"></i> - <template slot-scope="{ item }"> - <div>{{ item.value }}</div> - </template> - </el-autocomplete> --> + <!-- :disabled="scope.row.deviceId == null || (dataForm.id!=null&&(resultVal!=null && resultVal!=''))" --> + <!-- @input="$nextTick(()=>{checkTestValues(scope.row)})" --> + <!-- @blur.capture.native="changeState(scope.row)" --> + <el-tooltip :disabled="scope.row.deviceId != null" class="item" effect="dark" content="璇峰厛閫夋嫨璁惧锛�" placement="top-start"> + <el-autocomplete clearable + cache="false" + ref="testValueInput" + @blur="checkTestValues(scope.row,'blur',$event)" + @select="checkTestValues(scope.row,'select',$event)" + v-model="scope.row.testValueList[index]" + :fetch-suggestions="querySearch" + placeholder="璇疯緭鍏ユ垨閫夋嫨妫�娴嬪��" > + <template slot-scope="{ item }"> + <div>{{ item.value }}</div> + </template> + </el-autocomplete> </el-tooltip> </div> </template> @@ -225,7 +217,7 @@ <el-table-column prop="note" label="妫�楠屾弿杩�" width="160" > <template slot-scope="scope"> <div v-if="!scope.row.children"> - <el-input @blur="changeState(scope.row, scope.$index)" :disabled="scope.row.deviceId == null || (dataForm.id!=null&&(resultVal!=null && resultVal!=''))" v-model="scope.row.note" placeholder="妫�楠屾弿杩�"></el-input> + <el-input @blur="checkTestValues(scope.row,'blur',$event)" :disabled="scope.row.deviceId == null || (dataForm.id!=null&&(resultVal!=null && resultVal!=''))" v-model="scope.row.note" placeholder="妫�楠屾弿杩�"></el-input> </div> </template> </el-table-column> @@ -415,11 +407,10 @@ import rawMaterialPartDialog from '@/views/common/rawMaterial-part' import { getStore } from '@/util/store' import qrCodeApp from '@/views/common/qrCodeApp' - import transformImage from '@/util/fileTransform' export default { components:{ rawMaterialPartDialog, - qrCodeApp + qrCodeApp, }, computed:{}, data(){ @@ -485,7 +476,7 @@ }], dataRule: { code:[{ required: true, message: '璇锋壂鎻忛�夋嫨闆朵欢', trigger: 'blur' }], - createTime: [{ required: true, message: '璇烽�夋嫨鎶ユ鏃ユ湡', trigger: 'change' }] + createTime: [{ required: true, message: '璇烽�夋嫨鎶ユ鏃ユ湡', trigger: 'blur' }] }, deviceList: [], } @@ -748,7 +739,7 @@ required: null, rpId: null, name: null, - unit: 'mm', + unit: '', userName: null, testValue: '', testValueList: [], @@ -891,27 +882,38 @@ console.log(e,e.target.tabIndex); console.log(e.target.value); }, - changeState(row, index) { - this.$nextTick(()=>{ - if(row){ - let isTrue = true - for(var i=0;i<row.testValueList.length;i++){ - let val = row.testValueList[i] - if(!['鏄�','鍚�'].includes(val)){ - let reg = /(^-?[0-9]{1,6}$)|(^-?[0-9]{1,6}[\.]{1}[0-9]{1,3}$)/ - if(!reg.test(val)){ - row.testValueList = '' - this.$message.error("璇疯緭鍏�6浣嶆暟瀛楁垨閫夋嫨鏄惁") - isTrue = false + checkTestValues(row,currentOption,event){ + if(row){ + let isTrue = true + if(currentOption==='blur'){ + let targetVal = event.target.value + if( (targetVal && ['鏄�','鍚�'].includes(targetVal)) || !targetVal){ + isTrue = false + }else{ + for(var i=0;i<row.testValueList.length;i++){ + let val = row.testValueList[i] + if(val != '' && val != null){ + if(!['鏄�','鍚�'].includes(val)){ + let reg = /(^-?[0-9]{1,6}$)|(^-?[0-9]{1,6}[\.]{1}[0-9]{1,3}$)/ + if(!reg.test(val)){ + row.testValueList[i] = '' + event.target.value = '' + this.$message.error("璇疯緭鍏�6浣嶆暟瀛楁垨閫夋嫨鏄惁") + isTrue = false + } + } + } } } - } - if(!isTrue){ - return - } - } - console.log(row.testValueList.join(",")); - return + } + if(!isTrue){ + return + } + this.changeState(row) + } + }, + changeState(row) { + this.$nextTick(()=>{ if (row.rpId != null && row.rpId != '') { let val = row.testValueList.join(",") if (val === undefined || val === '' || val === null) { @@ -1205,6 +1207,13 @@ border: 1px solid #e4e7ed; border-bottom: none; } +.dropdown{ + position: relative; + right: 30px; + top: 5px; + color: #C0C4CC; + font-size: 14px; +} @media (max-width: 767px) { .pad-addcol-btn{ font-size:12px; diff --git a/src/views/quality/rawMaterial/testValue-select.vue b/src/views/quality/rawMaterial/testValue-select.vue index 0e814c9..3435f79 100644 --- a/src/views/quality/rawMaterial/testValue-select.vue +++ b/src/views/quality/rawMaterial/testValue-select.vue @@ -1,13 +1,71 @@ <!-- 鍘熸潗鏂欐楠�-妫�娴嬪�艰緭鍏ユ缁勪欢 --> <template> + <el-select v-model="selectedValue" @change="handleChange" clearable> + <el-option + v-for="item in options" + :key="item.value" + :label="item.label" + :value="item.value" + ></el-option> + <el-input + v-model="inputValue" + slot="prefix" + placeholder="鑷畾涔夎緭鍏�" + @input="handleInput" + ></el-input> + </el-select> </template> <script> export default { - + props:{ + value: { + type: [String, Number], + default: '' + }, + options: { + type: Array, + default: () => [] + } + }, + data(){ + return { + selectedValue: '', + inputValue: '', + // options: [{ + // label:'鏄�', + // value: '鏄�' + // },{ + // label:'鍚�', + // value: '鍚�' + // }] + } + }, + created() { + this.selectedValue = this.value; + }, + watch: { + value(newValue) { + this.selectedValue = newValue; + } + }, + methods: { + handleChange(value) { + this.$emit('input1', value); + }, + handleInput(value) { + this.$emit('input1', value); + } + } } </script> -<style> - +<style scope> + .dropdown{ + position: relative; + right: 30px; + top: 5px; + color: #C0C4CC; + font-size: 14px; + } </style> diff --git a/src/views/technology/completeproductstructure/index.vue b/src/views/technology/completeproductstructure/index.vue index 8af0091..3a79e2b 100644 --- a/src/views/technology/completeproductstructure/index.vue +++ b/src/views/technology/completeproductstructure/index.vue @@ -21,11 +21,13 @@ fetchList, delObj, addByStructure, + exportBom } from '@/api/technology/completeproductstructure' import ttable from '@/views/common/ztt-table.vue' import { mapGetters } from 'vuex' import { changeState } from '../../../api/technology/completeproductstructure' import { remote } from '@/api/admin/dict' +import { transform } from '@/util/fileTransform' export default { data() { @@ -292,7 +294,14 @@ permitArr: [], fun: ()=>{this.deleteAll()}, }) - } + } + this.table.toolbar.push({ + text: 'BOM瀵煎嚭', + type:'primary', + disabled: false, + permitArr: [], + fun: ()=>{this.exportBomFun()}, + }) if(this.permissions.technology_completeproductstructure_del){ this.table.operator = [ { @@ -317,6 +326,20 @@ } }, methods: { + exportBomFun(){ + let ids = this.multipleSelection.map(ele=>ele.id) + if(ids.length<1){ + this.$message.error("璇烽�夋嫨涓�鏉℃暟鎹�") + return + } + exportBom(ids).then(res=>{ + if(res.status===200){ + transform(res) + } + }).catch(error=>{ + console.error(error) + }) + }, getBomTypeDbOptions() { remote('bom_type_db').then((response) => { if (response.data.code === 0) { -- Gitblit v1.9.3