From 088a78f8649b8aee154f663bfcf73b96885f76ed Mon Sep 17 00:00:00 2001 From: zouyu <2723363702@qq.com> Date: 星期一, 11 九月 2023 18:07:32 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.0.22:9001/r/mom-before --- src/components/view/standard.vue | 236 +++++++++++++++++++++++++++++++++++++++++++++++++++++++---- 1 files changed, 220 insertions(+), 16 deletions(-) diff --git a/src/components/view/standard.vue b/src/components/view/standard.vue index 29fb3c4..d3e8721 100644 --- a/src/components/view/standard.vue +++ b/src/components/view/standard.vue @@ -22,7 +22,7 @@ <el-button size="mini" icon="el-icon-plus" @click="bomLeftAdd=true"></el-button> </el-col> </el-row> - <el-tree :data="list" ref="tree" default-expand-all :props="{ children: 'children', label: 'name' }" + <el-tree style="width: ;" :data="list" ref="tree" default-expand-all :props="{ children: 'children', label: 'name' }" node-key="id" :filter-node-method="filterNode" @node-click="handleNodeClick" highlight-current> <div class="custom-tree-node" slot-scope="{ node, data }"> <span><i :class="`node_i ${data.code != '[5]' ? 'el-icon-folder-opened' : 'el-icon-tickets'}`"></i> @@ -224,13 +224,25 @@ <!-- 宸︿晶鐐瑰嚮+鎸夐挳 --> <el-dialog title="BOM鏂板" :visible.sync="bomLeftAdd" width="29%"> <el-form ref="leftAdd" :model="leftAdd"> - <el-form-item label="绫诲瀷"> - <el-cascader v-model="leftAdd.type" size="mini" style="width: 93%;" :options="formTypeOptions" :props="{ checkStrictly: true }" clearable></el-cascader> + <el-form-item :rules="[{ required: true, message: '璇烽�夋嫨浜у搧绫诲瀷', trigger: 'blur' }]" label="浜у搧绫诲瀷" prop="type"> + <el-cascader @change="changeLeftAdd" v-model="leftAdd.type" style="width: 86%;" :options="formTypeOptions" :props="{ checkStrictly: true }" clearable></el-cascader> + </el-form-item> + <el-form-item v-if="leftAdd.type.length<2" label="浜у搧澶х被" prop="father"> + <el-autocomplete class="inline-input" style="width: 88%;" v-model="leftAdd.father" :fetch-suggestions="querySearch" placeholder="璇烽�夋嫨浜у搧澶х被" @select="handleSelect"></el-autocomplete> + </el-form-item> + <el-form-item v-if="leftAdd.type.length<3" label="浜у搧鍚嶇О" prop="name"> + <el-autocomplete class="inline-input" style="width: 88%;" v-model="leftAdd.name" :fetch-suggestions="querySearchName" placeholder="璇烽�夋嫨浜у搧鍚嶇О" @select="handleSelect"></el-autocomplete> + </el-form-item> + <el-form-item v-if="leftAdd.type.length<4" label="浜у搧鏍囧噯" prop="standard"> + <el-autocomplete class="inline-input" style="width: 88%;" v-model="leftAdd.standard" :fetch-suggestions="querySearchStandar" placeholder="璇烽�夋嫨浜у搧鏍囧噯" @select="handleSelect"></el-autocomplete> + </el-form-item> + <el-form-item label="浜у搧鍨嬪彿" prop="specifications"> + <el-input v-model="leftAdd.specifications" style="width: 88%;" placeholder="璇疯緭鍏ヤ骇鍝佸瀷鍙�"></el-input> </el-form-item> </el-form> <span slot="footer" class="dialog-footer"> - <el-button @click="bomLeftAdd = false">鍙� 娑�</el-button> - <el-button type="primary" @click="bomLeftAdd = false">纭� 瀹�</el-button> + <el-button @click="resetForm('leftAdd')">鍙� 娑�</el-button> + <el-button type="primary" @click="submitForm('leftAdd')">纭� 瀹�</el-button> </span> </el-dialog> <!-- 鍙充笂渚х偣鍑讳慨鏀规寜閽� --> @@ -249,7 +261,7 @@ 鍒犻櫎 </el-form> <span slot="footer" class="dialog-footer"> - <el-button @click="bomRightDl = false">鍙� 娑�</el-button> + <el-button @click="bomRightDl=false">鍙� 娑�</el-button> <el-button type="primary" @click="bomRightDl = false">纭� 瀹�</el-button> </span> </el-dialog> @@ -312,7 +324,7 @@ }, version: {}, leftAdd:{ - type: null, + type: [], father: null, standard: null, name: null, @@ -320,7 +332,11 @@ }, VER: {}, verdata: {}, - character: 0 + character: 0, + restaurants: [], + bomName:[], + bomStandard:[], + isLeftAdd: true } }, // watch: { @@ -338,6 +354,113 @@ console.log(this.formTypeOptions); }, methods: { + changeLeftAdd(){ + if(this.leftAdd.type.length===2){ + this.leftAdd.father=null + this.leftAdd.father=this.leftAdd.type[1] + } + if(this.leftAdd.type.length===3){ + this.leftAdd.name=null + this.leftAdd.father=this.leftAdd.type[1] + this.leftAdd.name=this.leftAdd.type[2] + } + if(this.leftAdd.type.length===4){ + this.leftAdd.standard=null + this.leftAdd.father=this.leftAdd.type[1] + this.leftAdd.name=this.leftAdd.type[2] + this.leftAdd.standard=this.leftAdd.type[3] + } + }, + submitForm(formName) { + this.$refs[formName].validate((valid) => { + if (valid) { + let obj=JSON.parse(JSON.stringify(this.leftAdd)) + console.log(obj); + let one=this.list.filter(item=>{ + return item.name===obj.type[0] + })[0] + let two=one.children.filter(item=>{ + return item.name===obj.father + })[0] + console.log("two",two); + //鎵ц涓�浜岀骇鏂板 + if(two===undefined||two===null){ + obj.type=this.getType(obj.type[0]) + this.$axios.post(this.$api.url.leftAddOneTwo,obj,{ + headers: { "Content-Type": "application/json" } + }).then(res=>{ + this.$message({ + message: res.message, + type: 'success' + }); + this.selectMaterialTree() + }) + }else{ + let three=two.children.filter(item=>{ + return item.name===obj.name + })[0] + console.log("three",three); + if(three===undefined||three===null){ + obj.type=this.getType(obj.type[0]) + this.$axios.post(this.$api.url.leftAddOneTwo,obj,{ + headers: { "Content-Type": "application/json" } + }).then(res=>{ + this.$message({ + message: res.message, + type: 'success' + }); + this.selectMaterialTree() + }) + }else{ + //鏂板鏍囧噯鍨嬪彿 + let four=three.children.filter(item=>{ + return item.name===obj.standard + })[0] + if(four===undefined||four===null){ + let StandardDto={ + "id": three.id, + "specifications": obj.specifications, + "standard": obj.standard + } + this.$axios.post(this.$api.url.leftAddThree,StandardDto,{ + headers: { "Content-Type": "application/json" } + }).then(res=>{ + this.$message({ + message: res.message, + type: 'success' + }); + this.selectMaterialTree() + }) + }else{ + let specificationsDto={ + "id": four.id, + "specifications": obj.specifications + } + this.$axios.post(this.$api.url.leftAddFour,specificationsDto,{ + headers: { "Content-Type": "application/json" } + }).then(res=>{ + this.$message({ + message: res.message, + type: 'success' + }); + this.selectMaterialTree() + this.selectVersion() + }) + } + } + } + this.resetForm('leftAdd') + } else { + console.log('error submit!!'); + return false; + } + }); + }, + resetForm(formName) { + this.bomLeftAdd=false + this.$refs[formName].resetFields(); + }, + leftAddBom(){ confirmAdd(formName){ this.$refs[formName].validate(valid=>{ if(valid){ @@ -388,6 +511,39 @@ startLeftAdd(){ }, + getType(typeName){ + return typeName==="鎴愬搧"?1:2 + }, + handleSelect(item) { + console.log(item); + }, + querySearch(queryString, cb) { + var restaurants = this.restaurants; + var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants; + // 璋冪敤 callback 杩斿洖寤鸿鍒楄〃鐨勬暟鎹� + cb(results); + }, + querySearchName(queryString, cb) { + var restaurants = this.bomName; + var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants; + // 璋冪敤 callback 杩斿洖寤鸿鍒楄〃鐨勬暟鎹� + cb(results); + }, + querySearchStandar(queryString, cb) { + var restaurants = this.bomStandard; + var results = queryString ? restaurants.filter(this.createFilter(queryString)) : restaurants; + // 璋冪敤 callback 杩斿洖寤鸿鍒楄〃鐨勬暟鎹� + cb(results); + }, + loadFatherType(){ + return [{label:"姗¤兌杩炴帴鍣�",value: "姗¤兌杩炴帴鍣�"},{label:"閲戝睘杩炴帴鍣�",value: "閲戝睘杩炴帴鍣�"}, + {label:"婀挎彃鎷旂數杩炴帴鍣�",value: "婀挎彃鎷旂數杩炴帴鍣�"},{label:"鍒嗘敮缁勪欢",value: "鍒嗘敮缁勪欢"}] + }, + createFilter(queryString) { + return (restaurant) => { + return (restaurant.value.toLowerCase().indexOf(queryString.toLowerCase()) === 0); + }; + }, selectDataList() { this.list.forEach(a => { a.code = '[1]' @@ -423,7 +579,12 @@ this.selectVersion() }, handleNodeClick(val) {//鏍戠殑鍊� - this.returntree = val + if(val.code==='[5]'&&val.children===undefined){ + console.log(val); + this.returntree = val + this.typeselect=0 + this.selectVersion() + } }, async selectVersion() {//鐗堟湰 let v=await this.$axios.get(this.$api.url.selectVersion, { @@ -556,29 +717,71 @@ break; } }, + // 閫掑綊鏇存敼娣诲姞绾ц仈鎵�闇�灞炴�� replaceProp(arr){ for (let index = 0; index < arr.length; index++) { let element = arr[index]; element.label=element.name element.value=element.name - // if() + if(element.children!=undefined){ + if(element.code==='[4]'){ + delete element['children'] + continue + } + this.replaceProp(element.children) + } } } }, watch:{ leftAdd: { - handler(newVal, oldVal) { - console.log("鏂扮殑",newVal); - console.log("鏃х殑",oldVal); - }, + handler(newVal, oldVal) { + if(this.isLeftAdd){ + let tree=JSON.parse(JSON.stringify(this.list)) + let father=null; + if(newVal.father!=null&&newVal.father!=''&&newVal.type.length>0){ + let one=tree.filter(item=>{ + return item.name===newVal.type[0] + })[0] + console.log(one); + let two=one.children.filter(item=>{ + return item.name===newVal.father + })[0] + if(two!=undefined){ + this.bomName=[] + father=JSON.parse(JSON.stringify(two)) + two.children.forEach(item=>{ + let obj={label: item.name,value: item.name} + this.bomName.push(obj) + }) + } + } + if(newVal.name!=null&&newVal!=''&&newVal.father!=null&&newVal.father!=''&&newVal.type.length>0){ + let three=null + if(father!=undefined&&father!=null){ + three=father.children.filter(item=>{ + return item.name===newVal.name + })[0] + } + if(three!=undefined&&three!=null){ + this.bomStandard=[] + three.children.forEach(item=>{ + let obj={label: item.name,value: item.name} + this.bomStandard.push(obj) + }) + } + } + } + }, deep: true // 娣卞害鐩戝惉瀵硅薄鍐呴儴灞炴�х殑鍙樺寲锛屽彲閫夌殑 }, bomLeftAdd:{ handler(newval,oldVal){ if(newval){ let treeOptions = JSON.parse(JSON.stringify(this.list)); - console.log(treeOptions); - + this.replaceProp(treeOptions) + this.formTypeOptions=treeOptions + this.restaurants=this.loadFatherType() } } } @@ -616,6 +819,7 @@ .thing .left { width: 295px; height: calc(100% - 32px); + overflow-y: auto; border-right: 3px solid rgb(245, 247, 251); padding: 16px; } -- Gitblit v1.9.3