From 72ac5494a32173d69ed739e1dd672cc1b9c03f92 Mon Sep 17 00:00:00 2001 From: Fixiaobai <fixiaobai@163.com> Date: 星期二, 12 九月 2023 17:52:42 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.0.22:9001/r/mom-before --- src/components/view/standard.vue | 387 +++++++++++++++++++++++++-- src/components/view/technology.vue | 2 src/components/view/laboratoryManagement.vue | 2 src/components/view/mbom.vue | 37 ++ src/components/view/equipmentmaintain.vue | 321 ++++++++++++++++++---- src/components/view/record-content.vue | 5 src/components/view/standard-table/target.vue | 15 src/components/view/technical.vue | 41 ++ src/components/view/standard-table/technology.vue | 6 src/assets/api/controller.js | 8 src/components/view/standard-table/product.vue | 13 11 files changed, 718 insertions(+), 119 deletions(-) diff --git a/src/assets/api/controller.js b/src/assets/api/controller.js index acf86ae..3f91038 100644 --- a/src/assets/api/controller.js +++ b/src/assets/api/controller.js @@ -14,6 +14,10 @@ leftAddOneTwo: "/material/add",//宸︿晶鏂板1锛�2绾� leftAddThree: "/standard/add",//宸︿晶涓夌骇鏂板 leftAddFour: "/specifications/add",//宸︿晶鍥涚骇鏂板 + chooseTechByStandard:"/product/chooseTech",//鍙充笂瑙掓柊澧�-->鎶�鏈寚鏍�-->閫夋嫨宸ュ簭,宸ヨ壓 + chooseFatherByStandard:"/product/chooseFather",//鍙充笂瑙掓柊澧�-->鎶�鏈寚鏍�-->閫夋嫨椤圭洰鐖剁被 + addProductByStandard:"/product/add",//鍙充笂瑙掓柊澧�-->鎶�鏈寚鏍� + // 鎶�鏈鐞�-鎶�鏈枃浠� selectAllOrder: "/orders/selectAllOrder", //鏌ヨ鎵�鏈夎鍗曞垪琛� selectOrderById: "/orders/selectOrderById", //鏍规嵁璁㈠崟id鏌ヨ璁㈠崟璇︽儏 @@ -82,6 +86,7 @@ deleteIdorFather: "/device/deleteIdorFather" // 鍒犻櫎鏍戞ā鍧楁暟鎹� } +//search_class:codeNameModel // QMS璁¢噺绠$悊 const measure = { measureLedgerPageTable: "/measureLedger/metering_table", // 璁¢噺棰勬祴-->鍒嗛〉琛ㄦ牸 @@ -117,6 +122,7 @@ selectAllMbom:"/mbomModel/selectAllMbom",//鐗╂枡缁存姢--銆嬪彸杈� addMbom:"/mbomModel/addMbom",//鐗╂枡--->鏂板 material:"/mbomModel/delMbomById",//鐗╂枡娓呭崟鍒犻櫎 + delAllMbom:"/mbom/delAllMbom",//鎵归噺鍒犻櫎 selectAllTeque:"/techniqueModel/selectAllTeque",//鐢熶骇宸ヨ壓缁存姢---銆傚彸杈� @@ -138,6 +144,8 @@ addQeMode:"/techniqueModel/addQeMode",//鏂板----銆嬩紶鍙� delQueById:"/techniqueModel/delQueById",//鍒犻櫎 delAllQue:"/techniqueModel/delAllQue",//鎵归噺鍒犻櫎 + selecQueById:"/techniqueModel/selecQueById",//缂栬緫 + } const url = { enter: "user/enter", //鐧诲綍 diff --git a/src/components/view/equipmentmaintain.vue b/src/components/view/equipmentmaintain.vue index e2695da..0de5776 100644 --- a/src/components/view/equipmentmaintain.vue +++ b/src/components/view/equipmentmaintain.vue @@ -17,12 +17,11 @@ <el-dialog title="鎶�鏈寚鏍囩紪杈�" :visible.sync="modifyevent" - width="40%" - :before-close="handleClose"> + width="40%"> <el-form ref="form" :model="form" label-width="80px"> <el-form-item label="绫诲瀷"> <template> - <el-select v-model="form.type" placeholder="璇烽�夋嫨" > + <el-select v-model="edit.type" disabled placeholder="璇烽�夋嫨" style="width: 560px;"> <el-option label="姗¤兌杩炴帴鍣�" :value="0"></el-option> <el-option label="閲戝睘杩炴帴鍣�" :value="1"></el-option> <el-option label="婀挎彃鎷旂數杩炴帴鍣�" :value="2"></el-option> @@ -34,7 +33,7 @@ <el-col :span="11"> <el-form-item label="宸ュ簭"> <template> - <el-select v-model="form.work" + <el-select v-model="edit.techFather" disabled placeholder="璇烽�夋嫨" > <el-option v-for="item in process" @@ -46,28 +45,63 @@ </template> </el-form-item> </el-col> + <el-col :span="11" :offset="2"> + <el-form-item label="宸ヨ壓"> + <el-input v-model="edit.techName" :disabled="true" placeholder="璇烽�夋嫨"></el-input> + </el-form-item> + </el-col> </el-row> <el-row> <el-col :span="11"> <el-form-item label="璁惧"> - <el-input v-model="form.father" placeholder="璇烽�夋嫨"></el-input> + <el-input v-model="edit.dname" disabled placeholder="璇烽�夋嫨"></el-input> </el-form-item> </el-col> <el-col :span="11" :offset="2"> <el-form-item label="椤圭洰"> - <el-input v-model="form.name" placeholder="璇疯緭鍏ラ」鐩�"></el-input> + <!-- <el-input v-model="edit.father" :disabled="true" placeholder="璇疯緭鍏ラ」鐩�"></el-input> --> + <template> + <el-select v-model="edit.father" @change="projectApi" placeholder="璇烽�夋嫨" > + <el-option + v-for="item in project" + :key="item.name" + :label="item.name" + :value="item.name"> + </el-option> + </el-select> + </template> </el-form-item> </el-col> </el-row> - <el-form-item label="鍗曚綅"> - <el-input v-model="form.unit" placeholder="璇疯緭鍏ュ崟浣�" style="width: 220px;"></el-input> - </el-form-item> + <el-row> + <el-col :span="11"> + <el-form-item label="鎸囨爣"> + <template> + <el-select v-model="edit.name" @change="scale" placeholder="璇烽�夋嫨" > + <el-option + v-for="item in quota" + :key="item.id" + :label="item.name" + :value="item.id"> + </el-option> + </el-select> + </template> + + </el-form-item> + </el-col> + <el-col :span="11" :offset="2"> + <el-form-item label="鍗曚綅"> + <el-input v-model="unitrow" :value="unitrow" :disabled="true" placeholder="璇疯緭鍏ラ」鐩�"></el-input> + </el-form-item> + </el-col> + </el-row> + </el-form> <span slot="footer" class="dialog-footer"> <el-button @click="modifyevent = false">鍙� 娑�</el-button> - <el-button type="primary" @click="modifyevent = false">纭� 瀹�</el-button> + <el-button type="primary" @click="editApi">纭� 瀹�</el-button> </span> </el-dialog> </div> @@ -76,12 +110,11 @@ <el-dialog title="鎶�鏈寚鏍囨柊澧�" :visible.sync="dialogVisible" - width="40%" - :before-close="handleClose"> + width="40%"> <el-form ref="form" :model="form" label-width="80px"> <el-form-item label="绫诲瀷"> <template> - <el-select v-model="form.type" placeholder="璇烽�夋嫨" style="width: 480px;"> + <el-select v-model="form.type" placeholder="璇烽�夋嫨" @change="edittype" style="width: 480px;"> <el-option label="姗¤兌杩炴帴鍣�" :value="0"></el-option> <el-option label="閲戝睘杩炴帴鍣�" :value="1"></el-option> <el-option label="婀挎彃鎷旂數杩炴帴鍣�" :value="2"></el-option> @@ -93,13 +126,27 @@ <el-col :span="11"> <el-form-item label="宸ュ簭"> <template> - <el-select v-model="form.father" + <el-select v-model="form.father" @change="workevent" placeholder="璇烽�夋嫨" > <el-option v-for="item in process" :key="item.name" :label="item.name" :value="item.name"> + </el-option> + </el-select> + </template> + </el-form-item> + </el-col> + <el-col :span="11" :offset="2"> + <el-form-item label="宸ヨ壓鍚嶇О"> + <template> + <el-select v-model="form.craft" placeholder="璇烽�夋嫨" > + <el-option + v-for="item in craftapi" + :key="item.id" + :label="item.name" + :value="item.id"> </el-option> </el-select> </template> @@ -113,9 +160,9 @@ <el-select v-model="form.work" placeholder="璇烽�夋嫨" > <el-option v-for="item in higherlevel" - :key="item.name" + :key="item.devId" :label="item.name" - :value="item.name"> + :value="item.devId"> </el-option> </el-select> </template> @@ -123,14 +170,47 @@ </el-col> <el-col :span="11" :offset="2"> <el-form-item label="椤圭洰"> - <el-input v-model="form.name" placeholder="璇疯緭鍏ラ」鐩�"></el-input> + <template> + <el-select v-model="form.ee" @change="projectApi" placeholder="璇烽�夋嫨" > + <el-option + v-for="item in project" + :key="item.name" + :label="item.name" + :value="item.name"> + </el-option> + </el-select> + </template> </el-form-item> </el-col> </el-row> - <el-form-item label="鍗曚綅"> + <el-row> + <el-col :span="11"> + <el-form-item label="鎸囨爣"> + <template> + <el-select v-model="form.aa" @change="scale" placeholder="璇烽�夋嫨" > + <el-option + v-for="item in quota" + :key="item.id" + :label="item.name" + :value="item.id"> + </el-option> + </el-select> + </template> + </el-form-item> + </el-col> + <el-col :span="11" :offset="2"> + <el-form-item label="鍗曚綅"> + <template> + <el-input v-model="unitrow" :disabled="true" placeholder="璇疯緭鍏ュ崟浣�" style="width: 200px;"></el-input> + </template> + </el-form-item> + </el-col> + </el-row> + + <!-- <el-form-item label="鍗曚綅"> <el-input v-model="form.unit" placeholder="璇疯緭鍏ュ崟浣�" style="width: 220px;"></el-input> - </el-form-item> + </el-form-item> --> </el-form> <span slot="footer" class="dialog-footer"> <el-button @click="dialogVisible = false">鍙� 娑�</el-button> @@ -160,11 +240,14 @@ <!-- 涓讳綋宸� --> <div class="left"> <el-input v-model="search.technology" + @input="query" suffix-icon="el-icon-search" placeholder="璇疯緭鍏ユ悳绱㈠唴瀹�" size="small" clearable ></el-input> - <el-tree :data="list" ref="tree" :props="{children: 'children',label: 'name'}" highlight-current node-key="id" default-expand-all - highlight-current :filter-node-method="filterNode" + <el-tree :data="list" ref="tree" + style="height: 500px;overflow-y: auto;" + :props="{children: 'children',label: 'name'}" highlight-current node-key="name" default-expand-all + @node-click="handleNodeClick" > <div class="custom-tree-node" slot-scope="{ node, data }"> @@ -197,30 +280,28 @@ <el-table-column label="璁惧鍚嶇О" sortable + prop="dname" width="300px"> <template slot-scope="scope"> - <el-tag> + <!-- <el-tag> <div class="firstDiv" :style="`color: ${scope.row.children ? '#16a7ff' : '#58c173'}`"> {{ scope.row.children ? "01" : "02" }} </div> </el-tag> - <span style="children: black">{{ scope.row.name }}</span> - + <span style="children: black">{{ scope.row.name }}</span> --> + <el-tag v-if="scope.row.children" type="primary">01</el-tag> + <span style="color: black" v-if="scope.row.children"> + {{ scope.row.dname }} + </span> </template> </el-table-column> - <el-table-column label="椤圭洰" sortable width="300px"> <template slot-scope="scope"> - <el-tag> - <div class="firstDiv" :style="`color: ${scope.row.children ? '#16a7ff' : '#58c173'}`"> - {{ scope.row.children ? "01" : "02" }} - </div> - </el-tag> - <span style="color: black">{{ scope.row.name }}</span> - + <el-tag type="success" v-if="!scope.row.children">02</el-tag> + <span style="color: black" v-if="!scope.row.children">{{ scope.row.father }}</span> </template> </el-table-column> <el-table-column @@ -228,7 +309,7 @@ label="鍗曚綅"> </el-table-column> <el-table-column - prop="address" + prop="name" label="鎸囨爣"> </el-table-column> <el-table-column @@ -236,9 +317,11 @@ label="鎿嶄綔" width="200px"> <template slot-scope="scope" style="text-align: center;"> - <el-button type="text" size="mini" @click="childrenClick(scope)">缂栬緫</el-button> - <el-button type="text" size="mini" @click="deleteRow(scope.$index, tableData)">鍒犻櫎</el-button> - </template> + <div v-if="!scope.row.children"> + <el-button type="text" size="mini" @click="childrenClick(scope.row)">缂栬緫</el-button> + <el-button type="text" size="mini" @click="deleteRow(scope.$index, scope.row)">鍒犻櫎</el-button> + </div> + </template> </el-table-column> </el-table> </div> @@ -258,12 +341,17 @@ options:[], process:[], list: [], - TYpe:'', selects:'', process:{}, options:{}, + craftapi:{}, + project:{}, + edit:{}, + upData:{ + + }, checkTreeNode:{ - id:2, + id:1, }, form:{ type:'', @@ -271,13 +359,16 @@ work:'', name:'', unit:'', - + }, + modifyevent:false, dialogVisible:false, tableData: [], higherlevel:{}, + quota:{}, + unitrow:'', } }, @@ -303,12 +394,12 @@ this.upIndex++ }, elForm() {}, - //鏂板 - choosePro() {//宸ュ簭 + // //鏂板 + choosePro() {//椤圭洰 this.$axios.get(this.$api.url.choosePro,{ params:{techTemId:this.checkTreeNode.id} }).then(res => { - this.process = res.data; + this.project = res.data; console.log(this.process); }, { headers: { @@ -328,6 +419,44 @@ } }) }, + //鏂板 + edittype(val) { + this.typeselect = val + this.chooseTechFath() + }, + projectApi(val) { + console.log(val); + let idx = this.project.findIndex(el => el.name === val) + this.quota = this.project[idx].children + console.log( this.quota); + }, + scale(val) { + console.log(val); + let cc = this.quota.findIndex(el => el.id === val) + console.log(cc); + this.unitrow = this.quota[cc].unit + console.log(this.unitrow); + }, + workevent(val){ + console.log(val); + let idx = this.process.findIndex(el => el.name === val) + this.craftapi = this.process[idx].children + console.log( this.craftapi); + }, + chooseTechFath() { + this.$axios.get(this.$api.url.chooseTechFath,{ + params:{type:this.typeselect} + }).then(res => { + this.process = res.data; + console.log(this.process); + }, { + headers: { + "Content-Type": "application/json" + } + }).then(res =>{ + + }) + }, //鏂板 event(){ this.dialogVisible = true @@ -337,21 +466,54 @@ //纭 add() { this.dialogVisible = false + this.addQeMode() }, addQeMode(){ - this.$axios.get(this.$api.url.addQeMode,{ - devId:this.form.xxx, - techTemId:this.form.xxx, - technicalModelId:this.form.xxx, + this.$axios.post(this.$api.url.addQeMode,{ + devId:this.form.work, + techTemId:this.form.craft, + technicalModelId:this.form.aa, + }, {headers: {"Content-Type": "application/json"} + }).then(res =>{ + this.selectAllTeque() + this.form = {} + this.unitrow = "" }) }, //缂栬緫 - childrenClick() { + childrenClick(ob) { this.modifyevent=true - this.chooseTechFath() + this.upData = ob + this.selecQueById() + this.choosePro() }, - TYpe() { + //缂栬緫 selecQueById + selecQueById() { + this.$axios.get(this.$api.url.selecQueById,{ + params:{id:this.upData.id} + }).then(res => { + console.log(res); + this.edit = res.data[0] + console.log(this.edit); + this.unitrow = this.edit.unit + }) + }, + editApi() { + this.modifyevent = false + this.writeQueById() + }, + writeQueById() { + this.$axios.post(this.$api.url.writeQueById,{ + devId:this.edit.did, + techTemId:this.edit.tid, + technicalModelId:this.edit.name, + }, {headers: {"Content-Type": "application/json"} + }).then(res =>{ + }) + }, + //======================== + TYpe(val) { this.typeselect = val this.selectAllleft() }, @@ -361,17 +523,24 @@ this.selectAllTeque() }, - + //鏌ヨ + query(val) { + this.selectAllleft() + }, //涓讳綋宸� selectAllleft() { this.$axios.get(this.$api.url.selectAllleft,{ - params:{type:this.typeselect} + params:{type:this.typeselect,message:this.search.technology} }).then(res => { this.list = res.data; console.log(this.list); this.selectDataList() + this.$nextTick(() => { + this.$refs.tree.setCurrentKey(this.list[0].children[0].name) // 榛樿閫変腑鑺傜偣绗竴涓� + }) }) }, + //涓讳綋鍙� selectAllTeque() { this.$axios.get(this.$api.url.selectAllTeque,{ @@ -385,12 +554,34 @@ modify(){ this.modifyevent = true }, - deleteRow(index, rows) { - rows.splice(index, 1); + //delQueById + delQueById() { + this.$axios.post(this.$api.url.delQueById,{ + id:this.upData.id + }).then(res =>{ + this.selectAllTeque() + this.$message.success('鍒犻櫎瀹屾垚') + }) + }, + deleteRow(index, row) { + this.tableData.splice(index,1) + this.upData.id = row.id + console.log(this.upData.id); + this.delQueById() }, handleSelectionChange(val) { this.selects = val }, + //鎵归噺鍒犻櫎 + delAllQue() { + this.$axios.post(this.$api.url.delAllQue,{ + ids:this.delete + }).then(res =>{ + this.selectAllTeque() + this.$message.success('鍒犻櫎瀹屾垚') + }) + }, + dels() { this.selects.forEach(a => { for (var b = 0; b < this.tableData.length; b++) { @@ -400,18 +591,24 @@ } } }) + let cc = this.selects.map(el => { + return el.id + }) + this.delete = cc.join(',') + console.log(this.delete); + this.delAllQue() this.$message.success('鍒犻櫎瀹屾垚') }, - handleClose(){ - this.$confirm('纭鍏抽棴锛�') - .then(_ => { - done(); - }) - .catch(_ => {}) - }, - filterNode(){ + // handleClose(){ + // // this.$confirm('纭鍏抽棴锛�') + // // .then(_ => { + // // done(); + // // }) + // // .catch(_ => {}) + // // }, + // // filterNode(){ - }, + // }, } } diff --git a/src/components/view/laboratoryManagement.vue b/src/components/view/laboratoryManagement.vue index 34b1576..5fb48be 100644 --- a/src/components/view/laboratoryManagement.vue +++ b/src/components/view/laboratoryManagement.vue @@ -555,7 +555,7 @@ twoTreeApi() { this.$axios.get(this.$api.url.towTree,{ params:{ - type:this.equip + type:this.equip, } }).then(res => { // let list = res.data; diff --git a/src/components/view/mbom.vue b/src/components/view/mbom.vue index fbfa699..cfe1abd 100644 --- a/src/components/view/mbom.vue +++ b/src/components/view/mbom.vue @@ -136,10 +136,15 @@ </div> <div class="thing"> <div class="left"> - <el-input v-model="search.technology" suffix-icon="el-icon-search" placeholder="璇疯緭鍏ユ悳绱㈠唴瀹�" size="small" clearable ></el-input> - <el-tree :data="list" ref="tree" highlight-current + <el-input v-model="search.technology" @input="query" suffix-icon="el-icon-search" placeholder="璇疯緭鍏ユ悳绱㈠唴瀹�" size="small" clearable ></el-input> + <el-tree + :data="list" ref="tree" + style="height: 500px;overflow-y: auto;" + highlight-current :props="{children: 'children',label: 'name'}" - node-key="id" default-expand-all @node-click="handleNodeClick" > + node-key="name" + default-expand-all + @node-click="handleNodeClick" > <div class="custom-tree-node" slot-scope="{ node, data }"> <span><i :class="`node_i ${data.code != '[2]'?'el-icon-folder-opened':'el-icon-tickets'}`"></i> {{data.code}} {{ data.name }}</span> @@ -183,7 +188,7 @@ return { search:{ type: 0, - technology: null + technology: '' }, list:[], process:{}, @@ -284,14 +289,22 @@ this.typeselect = val this.selectAllleft() }, + query() { + this.selectAllleft() + }, //宸﹁竟 selectAllleft() { this.$axios.get(this.$api.url.selectAllleft,{ - params:{type:this.typeselect} + params:{type:this.typeselect, + message:this.search.technology + } }).then(res => { this.list = res.data; console.log(this.list); this.selectDataList() + this.$nextTick(() => { + this.$refs.tree.setCurrentKey(this.list[0].children[0].name) // 榛樿閫変腑鑺傜偣绗竴涓� + }) }, { headers: { "Content-Type": "application/json" @@ -347,6 +360,14 @@ this.dialogVisible = false }, + //delAllMbom 鎵归噺鍒犻櫎 + delAllMbom() { + this.$axios.post(this.$api.url.delAllMbom,{ + ids:this.delete + }).then(res =>{ + this.selectAllMbom() + }) + }, dels() { this.selects.forEach(a => { for (var b = 0; b < this.tableData.length; b++) { @@ -356,6 +377,12 @@ } } }) + let cc = this.selects.map(el => { + return el.id + }) + this.delete = cc.join(',') + console.log(this.delete); + this.delAllMbom() this.$message.success('鍒犻櫎瀹屾垚') }, handleSelectionChange(val) { diff --git a/src/components/view/record-content.vue b/src/components/view/record-content.vue index 5fbeedf..fd9e74b 100644 --- a/src/components/view/record-content.vue +++ b/src/components/view/record-content.vue @@ -464,12 +464,13 @@ "Content-Type": "application/json" } } - ) + ).then(res =>{ + this.selectjilu() + }) }, add() { this.dialogVisible = false this.addRecord() - this.selectjilu() this.form = {}; }, query() { diff --git a/src/components/view/standard-table/product.vue b/src/components/view/standard-table/product.vue index 80f18e1..95a0782 100644 --- a/src/components/view/standard-table/product.vue +++ b/src/components/view/standard-table/product.vue @@ -67,7 +67,12 @@ <span>{{scope.row.device}}</span> </template> </el-table-column> - <el-table-column prop="productFather" label="椤圭洰"></el-table-column> + <el-table-column prop="productFather" label="椤圭洰"> + <template slot-scope="scope"> + <el-tag type="info" v-if="scope.row.productFather != null">03</el-tag> + <span>{{scope.row.productFather}}</span> + </template> + </el-table-column> <el-table-column prop="unit" label="鍗曚綅"></el-table-column> <el-table-column prop="product" label="鎸囨爣"></el-table-column> </el-table> @@ -76,7 +81,11 @@ <script> export default ({ data() { - + return { + deviceGroupDialog:false, + selects: [], + isAllSelect:false, + } }, props:['tableData','tableType'], methods:{ diff --git a/src/components/view/standard-table/target.vue b/src/components/view/standard-table/target.vue index f07c292..46cc2d9 100644 --- a/src/components/view/standard-table/target.vue +++ b/src/components/view/standard-table/target.vue @@ -19,11 +19,16 @@ <span>{{scope.row.tname}}</span> </template> </el-table-column> + <el-table-column prop="pfather" label="椤圭洰"> + <template slot-scope="scope"> + <el-tag type="info" color="#faf2ff" v-if="scope.row.pfather != null"> + <span style="color: #e1affb">03</span> + </el-tag> + <span>{{scope.row.pfather}}</span> + </template> + </el-table-column> <el-table-column prop="pname" label="鎸囨爣鍚嶇О"> <template slot-scope="scope"> - <el-tag type="info" color="#faf2ff" v-if="scope.row.pname != null"> - <span style="color: #e1affb">03</span> - </el-tag> <span>{{scope.row.pname}}</span> </template> </el-table-column> @@ -31,14 +36,14 @@ <el-table-column prop="internal" label="鍐呮帶鍊�"> <template slot-scope="scope"> <el-input v-model="scope.row.internal" - v-if="scope.row.internal != null" + v-if="scope.row.pname != null" @blur="updateVal(scope.row)"></el-input> </template> </el-table-column> <el-table-column prop="required" label="鏍囧噯鍊�"> <template slot-scope="scope"> <el-input v-model="scope.row.required" - v-if="scope.row.required != null" + v-if="scope.row.pname != null" @blur="updateVal(scope.row)"></el-input> </template> </el-table-column> diff --git a/src/components/view/standard-table/technology.vue b/src/components/view/standard-table/technology.vue index cffdb58..2c2792e 100644 --- a/src/components/view/standard-table/technology.vue +++ b/src/components/view/standard-table/technology.vue @@ -35,7 +35,7 @@ <el-table-column prop="pq" label="鐢熶骇瀹氶(涓�/澶�)"> <template slot-scope="scope"> <el-input v-model="scope.row.pq" - v-if="scope.row.pq != null" + v-if="scope.row.dg != null" @blur="updatePq(scope.row)" ></el-input> </template> @@ -65,9 +65,7 @@ } }, props:['tableData','tableType'], - created() { - console.log(this.tableData) - }, + created() {}, mounted() { }, diff --git a/src/components/view/standard.vue b/src/components/view/standard.vue index 6c22674..0586a40 100644 --- a/src/components/view/standard.vue +++ b/src/components/view/standard.vue @@ -7,7 +7,6 @@ <el-button type="primary" icon="el-icon-plus" style="background: #004EA2;" @click="bomAddModelVisible = true">鏂板</el-button> <el-button icon="el-icon-plus">鏂板鐗堟湰</el-button> - <el-button @click="bomRightUp=true" icon="el-icon-edit-outline">淇敼</el-button> <el-button @click="bomRightDl=true" icon="el-icon-delete">鍒犻櫎</el-button> </el-col> </el-row> @@ -74,15 +73,191 @@ <div class="bom-add-model"> - <el-dialog title="BOM鏂板" :visible.sync="bomAddModelVisible" width="30%"> - <div> - <!-- 鐗╂枡娓呭崟鏂板 --> - <bomClickAdd v-if="typeselect===2"/> + <el-dialog title="BOM鏂板" :visible.sync="bomAddModelVisible" width="45%"> + <!-- 宸ヨ壓璺嚎 --> + <div v-if="typeselect == 0"> + <el-form :model="technologyForm" :inline="true" label-position="right" + ref="technologyForm" :rules="technologyRules" label-width="90px"> + <el-form-item label="宸ュ簭:" prop="tefather"> + <el-select id="tefather" size="small" + filterable allow-create default-first-option + v-model="technologyForm.tefather" placeholder="璇疯緭鍏ユ垨閫夋嫨宸ュ簭"> + <el-option :value="item.father" :label="item.father" v-for="(item,index) in fatherList" :key="index"></el-option> + </el-select> + </el-form-item> + <el-form-item label="宸ヨ壓鍚嶇О:" prop="tename"> + <el-input id="tename" size="small" placeholder="璇疯緭鍏ュ伐鑹哄悕绉�" + clearable v-model="technologyForm.tename"></el-input> + </el-form-item> + <el-form-item label="璁惧缁�:" prop="deviceGroup"> + <el-select id="deviceGroup" placeholder="璇烽�夋嫨璁惧缁�" size="small" + v-model="technologyForm.deviceGroup"> + <el-option :value="item.father" + v-for="(item,index) in deviceList" :key="index" :label="item.father"></el-option> + </el-select> + </el-form-item> + <el-form-item label="鐢熶骇瀹氶:" prop="productionQuota"> + <el-input id="productionQuota" size="small" clearable v-model.number="technologyForm.productionQuota" placeholder="璇疯緭鍏ョ敓浜у畾棰�" /> + </el-form-item> + </el-form> + <div style="width:100%;text-align: right;"> + <span slot="footer" class="dialog-footer" > + <el-button type="primary" @click="confirmAdd('technologyForm')">纭� 瀹�</el-button> + <el-button @click="bomAddModelVisible = false">鍙� 娑�</el-button> + </span> + </div> </div> - <span slot="footer" class="dialog-footer"> - <el-button @click="bomAddModelVisible = false">鍙� 娑�</el-button> - <el-button type="primary" @click="bomAddModelVisible = false">纭� 瀹�</el-button> - </span> + <!-- 鎶�鏈寚鏍� --> + <div v-if="typeselect == 1"> + <el-form :model="targetForm" :inline="true" label-position="right" + :rules="targetRules" ref="targetForm" label-width="90px"> + <el-form-item label="宸ュ簭:" prop="pfather"> + <el-select v-model="targetForm.pfather" + @change="changeFather" + style="width:200px;" placeholder="璇烽�夋嫨宸ュ簭"> + <el-option :value="item.name" :label="item.name" v-for="(item,index) in targetFormList" :key="index"></el-option> + </el-select> + </el-form-item> + <el-form-item label="宸ヨ壓鍚嶇О:" prop="technologyId"> + <el-select v-model="targetForm.technologyId" + @change="changeTechnologyId" + style="width:200px;" placeholder="璇烽�夋嫨宸ヨ壓鍚嶇О"> + <el-option :value="item.id" :label="item.name" v-for="(item,index) in technologyIdList" :key="index"></el-option> + </el-select> + </el-form-item> + <el-form-item label="椤圭洰:" prop="father"> + <el-select v-model="targetForm.father" + filterable allow-create default-first-option + style="width:200px;" placeholder="璇疯緭鍏ユ垨閫夋嫨椤圭洰"> + <el-option :value="item.father" :label="item.father" v-for="(item,index) in projectList" :key="index"></el-option> + </el-select> + </el-form-item> + <el-form-item label="鎸囨爣鍚嶇О:" prop="name"> + <el-input style="width:200px;" v-model="targetForm.name" placeholder="璇疯緭鍏ユ寚鏍囧悕绉�"/> + </el-form-item> + <el-form-item label="鍗曚綅:" prop="unit"> + <el-input style="width:200px;" v-model="targetForm.unit" placeholder="璇疯緭鍏ュ崟浣�"/> + </el-form-item> + <el-form-item label="鍐呮帶鍊�:" prop="internal"> + <el-input style="width:200px;" v-model="targetForm.internal" placeholder="璇疯緭鍏ュ唴鎺у��"/> + </el-form-item> + <el-form-item label="鏍囧噯鍊�:" prop="required"> + <el-input style="width:200px;" v-model="targetForm.required" placeholder="璇疯緭鍏ユ爣鍑嗗��"/> + </el-form-item> + </el-form> + <div style="width:100%;text-align: right;"> + <span slot="footer" class="dialog-footer" > + <el-button type="primary" @click="confirmAdd('targetForm')">纭� 瀹�</el-button> + <el-button @click="bomAddModelVisible = false">鍙� 娑�</el-button> + </span> + </div> + </div> + <!-- 鐗╂枡娓呭崟 --> + <div v-if="typeselect == 2"> + <el-form :model="materialForm" label-position="right" + :rules="materialRules" ref="materialForm" label-width="80px"> + <el-row> + <el-col :span="12"> + <el-form-item label="瑙勬牸鍨嬪彿:" width="250"> + <el-input style="width:200px;" v-model="materialForm.pname" placeholder="璇疯緭鍏ュ崟浣�"/> + </el-form-item> + </el-col> + <el-col :span="12" style="text-align: right;"> + <el-form-item label="浜у搧澶х被:" width="250"> + <el-select placeholder="璇烽�夋嫨浜у搧澶х被" + style="width:240px;" v-model="materialForm.dg"> + <el-option value="1">1</el-option> + <el-option value="2">2</el-option> + <el-option value="3">3</el-option> + <el-option value="4">4</el-option> + </el-select> + </el-form-item> + </el-col> + </el-row> + <el-row> + <el-col :span="12"> + <el-form-item label="鏉愭枡淇℃伅"></el-form-item> + </el-col> + <el-col :span="12" style="text-align: right;"> + <el-button size="mini" style="text-align: right;">娣诲姞琛�</el-button> + </el-col> + </el-row> + <el-row> + <el-col :span="24"> + <el-table > + <el-table-column label="鏉愭枡鍚嶇О"></el-table-column> + <el-table-column label="瑙勬牸鍨嬪彿"></el-table-column> + <el-table-column label="鍗曚綅"></el-table-column> + <el-table-column label="鏁伴噺"></el-table-column> + </el-table> + </el-col> + </el-row> + </el-form> + <div style="width:100%;text-align: right;"> + <span slot="footer" class="dialog-footer" > + <el-button type="primary" @click="confirmAdd('materialForm')">纭� 瀹�</el-button> + <el-button @click="bomAddModelVisible = false">鍙� 娑�</el-button> + </span> + </div> + </div> + <!-- 鐢熶骇宸ヨ壓 --> + <div v-if="typeselect == 3"> + <el-form :model="productForm" :inline="true" label-position="right" + label-width="80px"> + <el-form-item label="宸ュ簭:" width="250"> + <el-select v-model="productForm.father" + style="width:200px;" + placeholder="璇疯緭鍏ユ垨閫夋嫨鐢熶骇瀹氶"> + <el-option value="1">1</el-option> + <el-option value="2">2</el-option> + <el-option value="3">3</el-option> + <el-option value="4">4</el-option> + </el-select> + </el-form-item> + <el-form-item label="宸ヨ壓鍚嶇О:" width="250"> + <el-select placeholder="璇疯緭鍏ユ垨閫夋嫨宸ヨ壓鍚嶇О" + style="width:200px;" + v-model="productForm.name"> + <el-option value="1">1</el-option> + <el-option value="2">2</el-option> + <el-option value="3">3</el-option> + <el-option value="4">4</el-option> + </el-select> + </el-form-item> + <el-form-item label="璁惧:" width="250"> + <el-select placeholder="璇烽�夋嫨璁惧" + style="width:200px;" + v-model="productForm.dg"> + <el-option value="1">1</el-option> + <el-option value="2">2</el-option> + <el-option value="3">3</el-option> + <el-option value="4">4</el-option> + </el-select> + </el-form-item> + <el-form-item label="椤圭洰:" width="250"> + <el-select placeholder="璇烽�夋嫨椤圭洰" + style="width:200px;" + v-model="productForm.dg"> + <el-option value="1">1</el-option> + <el-option value="2">2</el-option> + <el-option value="3">3</el-option> + <el-option value="4">4</el-option> + </el-select> + </el-form-item> + <el-form-item label="鍗曚綅:" width="250"> + <el-input style="width:200px;" v-model="productForm.unit" placeholder="璇疯緭鍏ュ崟浣�"/> + </el-form-item> + <el-form-item label="鎸囨爣:" width="250"> + <el-input style="width:200px;" v-model="productForm.pq" placeholder="璇疯緭鍏ユ寚鏍�" /> + </el-form-item> + </el-form> + <div style="width:100%;text-align: right;"> + <span slot="footer" class="dialog-footer" > + <el-button type="primary" @click="confirmAdd('productForm')">纭� 瀹�</el-button> + <el-button @click="bomAddModelVisible = false">鍙� 娑�</el-button> + </span> + </div> + </div> </el-dialog> <!-- 宸︿晶鐐瑰嚮+鎸夐挳 --> <el-dialog title="BOM鏂板" :visible.sync="bomLeftAdd" width="29%"> @@ -108,16 +283,6 @@ <el-button type="primary" @click="submitForm('leftAdd')">纭� 瀹�</el-button> </span> </el-dialog> - <!-- 鍙充笂渚х偣鍑讳慨鏀规寜閽� --> - <el-dialog title="BOM淇敼" :visible.sync="bomRightUp" width="30%"> - <el-form> - 淇敼 - </el-form> - <span slot="footer" class="dialog-footer"> - <el-button @click="bomRightUp = false">鍙� 娑�</el-button> - <el-button type="primary" @click="bomRightUp = false">纭� 瀹�</el-button> - </span> - </el-dialog> <!-- 鍙充笂渚х偣鍑诲垹闄ゆ寜閽� --> <el-dialog title="BOM鍒犻櫎" :visible.sync="bomRightDl" width="30%"> <el-form> @@ -141,7 +306,67 @@ components: { technology,material,bomClickAdd }, data() { + var checkPq = (rule,value,callback)=>{ + if(value!='' && !Number.isInteger(value)){ + return callback(new Error('璇疯緭鍏ユ暟瀛楀��')); + } + callback(); + }; + var checkVal = (rule,value,callback)=>{ + let arr = [">","<","="]; + if(value!='' && arr.indexOf(value.substring(0,1))==-1){ + callback(new Error("寮�澶撮渶鍖呭惈 > 鎴� < 鎴� = ")) + } + callback(); + }; return { + //鎶�鏈寚鏍�-鏂板-宸ュ簭锛屽伐鑹轰笅鎷夋鏁版嵁 + targetFormList:[], + technologyIdList:[], + //鎶�鏈寚鏍�-鏂板-椤圭洰涓嬫媺妗嗘暟鎹� + projectList:[], + //宸ュ簭鍒楄〃 + fatherList:[], + //璁惧缁勫垪琛� + deviceList:[], + technologyForm:{ + tefather:'', + tename:'', + deviceGroup:'', + productionQuota:'' + }, + targetForm:{ + pfather:'', + father: '', + technologyId:'', + name:'', + unit:'', + internal:'', + required: '' + }, + materialForm:{}, + productForm:{}, + technologyRules:{ + tefather:{required:true,message:'宸ュ簭涓嶈兘涓虹┖',trigger:'change'}, + tename:{required:true,message:'宸ヨ壓鍚嶇О涓嶈兘涓虹┖',trigger:'blur'}, + deviceGroup:{required:true,message:'璁惧缁勪笉鑳戒负绌�',trigger:'change'}, + productionQuota:{validator:checkPq,trigger:'change'} + }, + targetRules:{ + pfather:{required:true,message:'宸ュ簭涓嶈兘涓虹┖',trigger:'change'}, + technologyId:{required:true,message:'宸ヨ壓鍚嶇О涓嶈兘涓虹┖',trigger:'change'}, + father:{required:true,message:'椤圭洰涓嶈兘涓虹┖',trigger:'change'}, + name:{required:true,message:'鎸囨爣鍚嶇О涓嶈兘涓虹┖',trigger:'blur'}, + unit:{required:true,message:'鍗曚綅涓嶈兘涓虹┖',trigger:'change'}, + internal:{validator:checkVal,trigger:'change'}, + required:{validator:checkVal,trigger:'change'} + }, + materialRules:{ + + }, + productRules:{ + + }, // BOM鏍戞暟鎹粨鏋� list: [], search: null, @@ -175,14 +400,6 @@ isLeftAdd: true } }, - // watch: { - // search(val) { - // this.$refs.tree.filter(val); - // }, - // tableType(val){ - // this.selectProductTableData() - // } - // }, mounted() { this.tableType=0 this.selectMaterialTree() @@ -296,6 +513,108 @@ this.$refs[formName].resetFields(); }, leftAddBom(){ + + }, + confirmAdd(formName){ + this.$refs[formName].validate(valid=>{ + if(valid){ + let type = this.typeselect; + let obj = {} + if(type == 0){ + obj = { + specificationsId: Number.parseInt(this.returntree.id), + deviceGroup: this.technologyForm.deviceGroup, + father: this.technologyForm.tefather, + name: this.technologyForm.tename, + productionQuota: Number.parseInt(this.technologyForm.productionQuota), + } + this.submitBomAdd(this.$api.url.addTechnology,obj); + }else if(type == 1){ + this.submitBomAdd(this.$api.url.addProductByStandard,this.targetForm); + } + + } + }) + }, + submitBomAdd(url,data){ + this.$axios.post( + url,data, + {headers: { "Content-Type": "application/json" }} + ).then(res=>{ + this.selectAll(); + this.$message.success(res.message); + }).catch(error=>{ + this.$message.error(error.message); + }) + this.bomAddModelVisible = false; + }, + clearBomAddModel(){ + if(this.typeselect == 0){ + this.$refs["technologyForm"].resetFields(); + }else if(this.typeselect == 1){ + this.$refs["targetForm"].resetFields(); + }else if(this.typeselect == 2){ + this.$refs["materialForm"].resetFields(); + }else{ + this.$refs["productForm"].resetFields(); + } + }, + changeTechnologyId(val){ + this.$axios.get(this.$api.url.chooseFatherByStandard,{ + params:{technologyId : val} + }).then(res=>{ + this.projectList = res.data; + }).catch(error=>{ + this.$message.error(error.message); + }); + }, + changeFather(val){ + let arr = this.targetFormList.filter(item=>{ + return item.name == val; + }); + if(arr != undefined || arr.children != null){ + this.technologyIdList = arr[0].children; + } + }, + //鑾峰彇宸ュ簭锛屽伐鑹哄垪琛� + getTargetFormList(){ + this.$axios.get(this.$api.url.chooseTechByStandard,{ + params:{specificationsId : this.returntree.id} + }).then(res=>{ + this.targetFormList = res.data; + }).catch(error=>{ + this.$message.error(error.message); + }) + }, + //鑾峰彇椤圭洰鍒楄〃 + getProjectFormList(){ + + }, + //鑾峰彇宸ュ簭鍒楄〃 + getFatherList(){ + this.$axios.get(this.$api.url.chooseFather,{ + params:{specificationsId : this.returntree.id} + }).then(res=>{ + this.fatherList = res.data; + }).catch(error=>{ + this.$message.error(error.message); + }) + }, + //鑾峰彇璁惧缁勫垪琛� + getDeviceList(){ + this.$axios.get(this.$api.url.chooseDevice).then(res=>{ + this.deviceList = res.data; + }).catch(error=>{ + this.$message.error(error.message); + }) + }, + showBomAddModel(){ + this.getFatherList(); + this.getDeviceList(); + this.getTargetFormList(); + this.bomAddModelVisible = true + }, + startLeftAdd(){ }, getType(typeName){ @@ -572,6 +891,11 @@ this.restaurants=this.loadFatherType() } } + }, + bomAddModelVisible(newVal){ + if(!newVal){ + this.clearBomAddModel(); + } } } } @@ -579,11 +903,14 @@ <style scoped> -.standard { - + +.standard .bom-add-model{ + width: 100%; } -.standard .contentTable{ +.standard .bom-add-model form{ + width: 90%; + margin-left: 5%; } .standard .title .el-button { diff --git a/src/components/view/technical.vue b/src/components/view/technical.vue index 5b5a65b..753f2ac 100644 --- a/src/components/view/technical.vue +++ b/src/components/view/technical.vue @@ -11,7 +11,7 @@ <div class="search-header"> <el-form v-model="searchData" :inline="true"> <el-form-item label="璁㈠崟鍙�:"> - <el-input v-model="searchData.id"></el-input> + <el-input v-model="searchData.id" ></el-input> </el-form-item> <el-form-item label="涓嬪崟鏃ユ湡:"> <el-date-picker @@ -21,7 +21,16 @@ placeholder="閫夋嫨鏃ユ湡"> </el-date-picker> </el-form-item> - <el-form-item> + <el-form-item label="浜у搧鍚嶇О:"> + <el-input v-model="searchData.name" @input="query"></el-input> + </el-form-item> + <el-form-item label="缂栧埗鐘舵��:" > + <el-select v-model="searchData.type" placeholder="鍏ㄩ儴" style="width: 310px;"> + <el-option label="寰呯紪鍒�" :value="0"></el-option> + <el-option label="宸茬紪鍒�" :value="1"></el-option> + </el-select> + </el-form-item> + <el-form-item > <el-button plain @click="resetBtn">閲� 缃�</el-button> <el-button @click="searchTechnical">鏌� 璇�</el-button> </el-form-item> @@ -222,7 +231,9 @@ return { searchData:{ id:'', - date:'' + date:'', + name:'', + condition:'', }, compiledata:{}, technicalTable: [], @@ -242,8 +253,6 @@ authorizedstrength(row) { this.compiledata = row this.compile() - // let ccc = row - // console.log(row); }, //缂栧埗 compile() { @@ -255,23 +264,35 @@ }) this.getTechnicalTableData() }, + async showDetails(row){ this.showDetail = true const res = await this.$axios.get(this.$api.url.selectOrderById,{params:{id:row.id}}) this.selectedRow = res.data console.log(this.selectedRow) }, + + async getTechnicalTableData() { const res = await this.$axios.get(this.$api.url.selectAllOrder,{ params:{ pageSize:(this.pageParams.pageNo-1), - countSize:this.pageParams.pageSize,...this.searchData}}) + countSize:this.pageParams.pageSize,...this.searchData, + orderCode:this.searchData.id, + time:this.searchData.date, + name:this.searchData.name, + type:this.searchData.type, + } + }) this.technicalTable = res.data.row this.pageParams.total = res.data.total }, + + // 澶撮儴鏉′欢鏌ヨ-閲嶇疆 resetBtn() { this.searchData={} + this.getTechnicalTableData() }, // 澶撮儴鏉′欢鏌ヨ-鏌ヨ searchTechnical() { @@ -294,6 +315,9 @@ height: 100%; width: 100%; } + .el-form-item__label{ + padding: 0 60px 0; + } .technical .title .el-button { height: 32px; border: 1px solid rgba(190, 190, 190, 0.44); @@ -311,9 +335,12 @@ background: #fff; padding: 24px 32px; } +.search-header .el-form-item__label{ + padding: 0 30px 0 0; +} .search-header .el-form-item{ margin: 0px; - font-size: 14px; + font-size: 20px; } .search-header .el-form-item:nth-child(1){ margin-right: 48px; diff --git a/src/components/view/technology.vue b/src/components/view/technology.vue index 12fc170..6fa3369 100644 --- a/src/components/view/technology.vue +++ b/src/components/view/technology.vue @@ -275,7 +275,7 @@ <el-select v-model="edit.children" style="width: 310px" - + disabled multiple placeholder="璇烽�夋嫨" > -- Gitblit v1.9.3