From 9ddf303ca99059fac2d6b83829f2d39c04d1cf5f Mon Sep 17 00:00:00 2001 From: Fixiaobai <fixiaobai@163.com> Date: 星期三, 13 九月 2023 18:04:20 +0800 Subject: [PATCH] Merge branch 'master' of http://192.168.0.22:9001/r/mom-before --- src/components/view/technology.vue | 15 src/components/view/mbom.vue | 398 +++--- src/components/view/technical.vue | 20 src/view/index.vue | 1140 +++++++++---------- src/assets/api/controller.js | 14 src/components/view/sale.vue | 36 src/components/view/standard-table/material.vue | 52 src/components/view/standard-table/product.vue | 41 src/components/view/standard.vue | 417 +++++- src/components/view/laboratoryManagement.vue | 206 ++- src/components/view/self-inspection.vue | 2 src/components/view/equipmentmaintain.vue | 57 src/components/view/record-content.vue | 2 src/components/view/standard-table/target.vue | 34 src/components/view/Technicalindex.vue | 963 ++++++++-------- src/components/view/standard-table/technology.vue | 40 16 files changed, 1,907 insertions(+), 1,530 deletions(-) diff --git a/src/assets/api/controller.js b/src/assets/api/controller.js index 7817ae6..cacd6d3 100644 --- a/src/assets/api/controller.js +++ b/src/assets/api/controller.js @@ -17,7 +17,18 @@ chooseTechByStandard:"/product/chooseTech",//鍙充笂瑙掓柊澧�-->鎶�鏈寚鏍�-->閫夋嫨宸ュ簭,宸ヨ壓 chooseFatherByStandard:"/product/chooseFather",//鍙充笂瑙掓柊澧�-->鎶�鏈寚鏍�-->閫夋嫨椤圭洰鐖剁被 addProductByStandard:"/product/add",//鍙充笂瑙掓柊澧�-->鎶�鏈寚鏍� - + addMBomByStandard:"/mbom/add",//鍙充笂瑙掓柊澧�-->鐗╂枡娓呭崟 + chooseTechByMBom:"/mbom/chooseTech",//鍙充笂瑙掓柊澧�-->鐗╂枡娓呭崟-->閫夋嫨宸ュ簭,宸ヨ壓 + mBomWrite:"/mbom/write",//鐗╂枡娓呭崟-->鏁伴噺,绉诲紑淇濆瓨 + chooseTechByProduct:"/technique/chooseTech",//鍙充笂瑙掓柊澧�-->鐢熶骇宸ヨ壓-->閫夋嫨宸ュ簭,宸ヨ壓 + addTechniqueByStandard:"/technique/add",//鍙充笂瑙掓柊澧�-->鐢熶骇宸ヨ壓 + chooseProByProduct:"/technique/choosePro",//鍙充笂瑙掓柊澧�-->鐢熶骇宸ヨ壓-->閫夋嫨椤圭洰(鐖跺瓙),鍗曚綅 + chooseDevByProduct:"/technique/chooseDev",//鍙充笂瑙掓柊澧�-->鐢熶骇宸ヨ壓-->閫夋嫨璁惧 + addVersion:"/material/addVersion",//娣诲姞鍚屼竴涓瀷鍙峰伐鑹鸿矾绾�,鎶�鏈寚鏍�,鐗╂枡娓呭崟,鐢熶骇宸ヨ壓鐨勭増鏈� + delAllByTechnology:"/technology/delAllTech",//宸ヨ壓璺嚎-鎵归噺鍒犻櫎 + delAllByTarget:"/product/delAllPro",//鎶�鏈寚鏍�-鎵归噺鍒犻櫎 + delAllByMBom:"/mbom/delAllMbom",//鐗╂枡娓呭崟-鎵归噺鍒犻櫎 + delAllByProduct:"/technique/delAllTeq",//鐢熶骇宸ヨ壓-鎵归噺鍒犻櫎 // 鎶�鏈鐞�-鎶�鏈枃浠� selectAllOrder: "/orders/selectAllOrder", //鏌ヨ鎵�鏈夎鍗曞垪琛� selectOrderById: "/orders/selectOrderById", //鏍规嵁璁㈠崟id鏌ヨ璁㈠崟璇︽儏 @@ -149,6 +160,7 @@ delQueById:"/techniqueModel/delQueById",//鍒犻櫎 delAllQue:"/techniqueModel/delAllQue",//鎵归噺鍒犻櫎 selecQueById:"/techniqueModel/selecQueById",//缂栬緫 + writeQueById:"/techniqueModel/writeQueById",//缂栬緫浼犲弬 } const url = { diff --git a/src/components/view/Technicalindex.vue b/src/components/view/Technicalindex.vue index 9211f57..96f7f9f 100644 --- a/src/components/view/Technicalindex.vue +++ b/src/components/view/Technicalindex.vue @@ -1,320 +1,242 @@ <template> <div class="record_content"> <div class="title"> - <el-row> + <el-row> <el-col :span="12" style="line-height: 32px;">鎶�鏈寚鏍囩淮鎶�</el-col> <el-col :span="12" style="text-align: right;"> <el-button type="primary" icon="el-icon-plus" style="background: #004EA2;" @click="event">鏂板</el-button> <!-- <el-button icon="el-icon-edit-outline" @click="modify">淇敼</el-button> --> - <el-button icon="el-icon-delete" @click="dels" >鍒犻櫎</el-button> + <el-button icon="el-icon-delete" @click="dels">鍒犻櫎</el-button> </el-col> </el-row> </div> - - <div> - <!-- 缂栬緫寮圭獥 --> - <div> - <el-dialog - title="鎶�鏈寚鏍囩紪杈�" - :visible.sync="modifyevent" - width="40%" - :before-close="handleClose"> - <el-form ref="form" :model="form" label-width="80px"> - <el-form-item label="绫诲瀷"> - <template> - <el-select v-model="value" placeholder="璇烽�夋嫨" style="width: 560px;"> - <el-option - v-for="item in options" - :key="item.value" - :label="item.label" - :value="item.value"> - </el-option> - </el-select> - </template> - </el-form-item> - <el-row> - <el-col :span="11"> - <el-form-item label="宸ュ簭"> - <el-input v-model="form.name" 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-form-item> - </el-col> - </el-row> + <div style="height: calc(100% - 42px);"> + <!-- 缂栬緫寮圭獥 --> + <div> + <el-dialog title="鎶�鏈寚鏍囩紪杈�" :visible.sync="modifyevent" width="40%" :before-close="handleClose"> + <el-form ref="form" :model="form" label-width="80px"> + <el-form-item label="绫诲瀷"> + <template> + <el-select v-model="value" placeholder="璇烽�夋嫨" style="width: 560px;"> + <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> + </el-option> + </el-select> + </template> + </el-form-item> + <el-row> + <el-col :span="11"> + <el-form-item label="宸ュ簭"> + <el-input v-model="form.name" 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-form-item> + </el-col> + </el-row> - <el-row> - <el-col :span="11"> - <el-form-item label="椤圭洰缁�"> - <el-input v-model="form.name" 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-form-item> - </el-col> - </el-row> + <el-row> + <el-col :span="11"> + <el-form-item label="椤圭洰缁�"> + <el-input v-model="form.name" 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-form-item> + </el-col> + </el-row> - <el-form-item label="鍗曚綅"> - <el-input v-model="form.name" placeholder="璇疯緭鍏ュ崟浣�" style="width: 220px;"></el-input> - </el-form-item> - </el-form> - <span slot="footer" class="dialog-footer"> - <el-button @click="modifyevent = false">鍙� 娑�</el-button> - <el-button type="primary" @click="modifyevent = false">纭� 瀹�</el-button> - </span> - </el-dialog> - </div> - <div class="choose"> - <span>绫诲瀷锛�</span> - <el-select v-model="search.type" size="small" placeholder="璇烽�夋嫨" @change="TYpe" style="width: 224px;margin-right: 30px;"> - <el-option label="姗¤兌杩炴帴鍣�" :value="0"></el-option> - <el-option label="閲戝睘杩炴帴鍣�" :value="1"></el-option> - <el-option label="婀挎彃鎷旂數杩炴帴鍣�" :value="2"></el-option> - <el-option label="鍒嗘敮缁勪欢" :value="3"></el-option> - </el-select> - <!-- <span>宸ュ簭锛�</span> + <el-form-item label="鍗曚綅"> + <el-input v-model="form.name" placeholder="璇疯緭鍏ュ崟浣�" style="width: 220px;"></el-input> + </el-form-item> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button @click="modifyevent = false">鍙� 娑�</el-button> + <el-button type="primary" @click="modifyevent = false">纭� 瀹�</el-button> + </span> + </el-dialog> + </div> + <div class="choose"> + <span>绫诲瀷锛�</span> + <el-select v-model="search.type" size="small" placeholder="璇烽�夋嫨" @change="TYpe" + style="width: 224px;margin-right: 30px;"> + <el-option label="姗¤兌杩炴帴鍣�" :value="0"></el-option> + <el-option label="閲戝睘杩炴帴鍣�" :value="1"></el-option> + <el-option label="婀挎彃鎷旂數杩炴帴鍣�" :value="2"></el-option> + <el-option label="鍒嗘敮缁勪欢" :value="3"></el-option> + </el-select> + <!-- <span>宸ュ簭锛�</span> <el-select v-model="search.name" size="small" placeholder="璇烽�夋嫨" style="width: 224px;margin-right: 30px;"> <el-option v-for="(a, ai) in process" key="ai" :label="a.name" :value="a.id"></el-option> </el-select> <el-button size="mini"><span>閲� 缃�</span></el-button> <el-button size="mini" type="primary" style="background: #004EA2;"><span>鏌ヨ</span></el-button> --> - </div> - <div class="thing"> - <!-- 涓讳綋宸� --> - <div class="left"> - <el-input v-model="search.technology" - suffix-icon="el-icon-search" - placeholder="璇疯緭鍏ユ悳绱㈠唴瀹�" - size="small" - clearable @input="query" ></el-input> - <el-tree :data="list" ref="tree" :props="{children: 'children',label: 'father'}" node-key="name" default-expand-all - @node-click="handleNodeClick" highlight-current - > - <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> - <!-- <el-button type="text" size="mini" @click.stop="remove(node, data)"> + </div> + <div class="thing"> + <!-- 涓讳綋宸� --> + <div class="left"> + <el-input v-model="search.technology" suffix-icon="el-icon-search" placeholder="璇疯緭鍏ユ悳绱㈠唴瀹�" size="small" + clearable @input="query"></el-input> + <el-tree :data="list" ref="tree" :props="{children: 'children',label: 'father'}" node-key="name" + default-expand-all @node-click="handleNodeClick" highlight-current> + <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> + <!-- <el-button type="text" size="mini" @click.stop="remove(node, data)"> <i class="el-icon-delete"></i> </el-button> --> - </div> - </el-tree> - </div> - <!-- 涓讳綋鍙� --> - <div class="right"> - <el-table - :data="tableData" - style="width: 100%;margin-bottom: 20px;" - row-key="name" - border - @selection-change="handleSelectionChange" - default-expand-all - :tree-props="{children: 'children', hasChildren: 'hasChildren'}"> - <el-table-column - type="selection" - width="55"> - </el-table-column> - <el-table-column - type="index" - width="50"> - </el-table-column> - <el-table-column - prop="name" - label="椤圭洰" - sortable - width="400px"> - <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> + </div> + </el-tree> + </div> + <!-- 涓讳綋鍙� --> + <div class="right"> + <el-table :data="tableData" style="width: 100%;overflow-y: auto;min-height: 100%" + max-height="100%" row-key="name" border @selection-change="handleSelectionChange" + default-expand-all :tree-props="{children: 'children', hasChildren: 'hasChildren'}"> + <el-table-column type="selection" width="55"> + </el-table-column> + <el-table-column type="index" width="50"> + </el-table-column> + <el-table-column prop="name" label="椤圭洰" sortable width="400px"> + <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> + </template> + </el-table-column> + <el-table-column prop="unit" label="鍗曚綅"> + </el-table-column> + <el-table-column prop="address" label="鎿嶄綔" width="200px"> + <template slot-scope="scope" style="text-align: center;"> + <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> + <div> + <el-dialog title="缂栬緫鎶�鏈唴瀹�" :visible.sync="upDia" width="500px"> + <div class="body"> - </template> - </el-table-column> - <el-table-column - prop="unit" - label="鍗曚綅"> - </el-table-column> - <el-table-column - prop="address" - label="鎿嶄綔" - width="200px"> - <template slot-scope="scope" style="text-align: center;"> - <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> - <div> - <el-dialog title="缂栬緫鎶�鏈唴瀹�" :visible.sync="upDia" width="500px"> - <div class="body"> + <el-row style="line-height: 46px;"> + <el-col :span="4" style="font-size: 14px;text-align: right;">绫诲瀷:</el-col> + <el-col :span="16" :offset="1"> + <template> + <el-select v-model="edit.type" disabled placeholder="璇烽�夋嫨" @change="TYpe" + style="width: 306px;margin-right: 30px;"> + <el-option label="姗¤兌杩炴帴鍣�" :value="0"></el-option> + <el-option label="閲戝睘杩炴帴鍣�" :value="1"></el-option> + <el-option label="婀挎彃鎷旂數杩炴帴鍣�" :value="2"></el-option> + <el-option label="鍒嗘敮缁勪欢" :value="3"></el-option> + </el-select> + </template> + </el-col> + </el-row> + <el-row style="line-height: 46px;"> + <el-col :span="4" style="font-size: 14px;text-align: right;">宸ュ簭:</el-col> + <el-col :span="16" :offset="1"> + <template> + <el-select v-model="edit.techFather" placeholder="璇烽�夋嫨" allow-create disabled style="width: 306px;" + filterable @change="workevent"> + <el-option v-for="(item,index) in process" :key="item.name" :label="item.name" :value="item.name"> + </el-option> + </el-select> + </template> + </el-col> + </el-row> + <el-row style="line-height: 46px;"> + <el-col :span="4" style="font-size: 14px;text-align: right;">宸ヨ壓:</el-col> + <el-col :span="16" :offset="1"> + <template> + <el-select v-model="edit.techName" placeholder="璇烽�夋嫨" disabled style="width: 306px;" allow-create + filterable> + <el-option v-for="item in craftapi" :key="item.id" :label="item.name" :value="item.id"> + </el-option> + </el-select> + </template> + </el-col> + </el-row> + <el-row style="line-height: 46px;"> + <el-col :span="4" style="font-size: 14px;text-align: right;">椤圭洰缁�:</el-col> + <el-col :span="16" :offset="1"> + <el-input v-model="edit.father" :disabled="true" size="small" clearable></el-input> + </el-col> + </el-row> + <el-row style="line-height: 46px;"> + <el-col :span="4" style="font-size: 14px;text-align: right;">椤圭洰鍚嶇О:</el-col> + <el-col :span="16" :offset="1"> + <el-input v-model="edit.name" size="small" clearable></el-input> + </el-col> + </el-row> + <el-row style="line-height: 46px;"> + <el-col :span="4" style="font-size: 14px;text-align: right;">鍗曚綅:</el-col> + <el-col :span="16" :offset="1"> + <el-input v-model="edit.unit" size="small" clearable></el-input> + </el-col> + </el-row> + </div> + <span slot="footer" class="dialog-footer"> + <el-button type="primary" @click="submitUpData">纭� 瀹�</el-button> + <el-button @click="upDia = false">鍙� 娑�</el-button> + </span> + </el-dialog> + </div> + <!-- 鏂板寮圭獥 --> + <div> + <el-dialog title="鎶�鏈寚鏍囨柊澧�" :visible.sync="dialogVisible" width="40%"> + <el-form ref="form" :model="form" label-width="80px"> + <el-form-item label="绫诲瀷"> + <template> + <el-select v-model="form.type" size="small" placeholder="璇烽�夋嫨" @change="edittype" + style="width: 554px;margin-right: 30px;"> + <el-option label="姗¤兌杩炴帴鍣�" :value="0"></el-option> + <el-option label="閲戝睘杩炴帴鍣�" :value="1"></el-option> + <el-option label="婀挎彃鎷旂數杩炴帴鍣�" :value="2"></el-option> + <el-option label="鍒嗘敮缁勪欢" :value="3"></el-option> + </el-select> + </template> + </el-form-item> + <el-row> + <el-col :span="11"> + <el-form-item label="宸ュ簭"> + <template> + <el-select v-model="form.work" placeholder="璇烽�夋嫨" allow-create filterable @change="workevent"> + <el-option v-for="(item,index) 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.name" placeholder="璇烽�夋嫨" allow-create filterable> + <el-option v-for="item in craftapi" :key="item.id" :label="item.name" :value="item.id"> + </el-option> + </el-select> + </template> + </el-form-item> + </el-col> + </el-row> - <el-row style="line-height: 46px;"> - <el-col :span="4" style="font-size: 14px;text-align: right;">绫诲瀷:</el-col> - <el-col :span="16" :offset="1"> - <template> - <el-select v-model="edit.type" disabled placeholder="璇烽�夋嫨" @change="TYpe" style="width: 306px;margin-right: 30px;"> - <el-option label="姗¤兌杩炴帴鍣�" :value="0"></el-option> - <el-option label="閲戝睘杩炴帴鍣�" :value="1"></el-option> - <el-option label="婀挎彃鎷旂數杩炴帴鍣�" :value="2"></el-option> - <el-option label="鍒嗘敮缁勪欢" :value="3"></el-option> - </el-select> - </template> - </el-col> - </el-row> - <el-row style="line-height: 46px;"> - <el-col :span="4" style="font-size: 14px;text-align: right;">宸ュ簭:</el-col> - <el-col :span="16" :offset="1"> - <template> - <el-select v-model="edit.techFather" - placeholder="璇烽�夋嫨" - allow-create - disabled - style="width: 306px;" - filterable - @change="workevent" - > - <el-option - v-for="(item,index) in process" - :key="item.name" - :label="item.name" - :value="item.name"> - </el-option> - </el-select> - </template> - </el-col> - </el-row> - <el-row style="line-height: 46px;"> - <el-col :span="4" style="font-size: 14px;text-align: right;">宸ヨ壓:</el-col> - <el-col :span="16" :offset="1"> - <template> - <el-select v-model="edit.techName" - placeholder="璇烽�夋嫨" - disabled - style="width: 306px;" - allow-create - filterable - > - <el-option - v-for="item in craftapi" - :key="item.id" - :label="item.name" - :value="item.id"> - </el-option> - </el-select> - </template> - </el-col> - </el-row> - <el-row style="line-height: 46px;"> - <el-col :span="4" style="font-size: 14px;text-align: right;">椤圭洰缁�:</el-col> - <el-col :span="16" :offset="1"> - <el-input v-model="edit.father" :disabled="true" size="small" clearable></el-input> - </el-col> - </el-row> - <el-row style="line-height: 46px;"> - <el-col :span="4" style="font-size: 14px;text-align: right;">椤圭洰鍚嶇О:</el-col> - <el-col :span="16" :offset="1"> - <el-input v-model="edit.name" size="small" clearable></el-input> - </el-col> - </el-row> - <el-row style="line-height: 46px;"> - <el-col :span="4" style="font-size: 14px;text-align: right;">鍗曚綅:</el-col> - <el-col :span="16" :offset="1"> - <el-input v-model="edit.unit" size="small" clearable></el-input> - </el-col> - </el-row> - </div> - <span slot="footer" class="dialog-footer"> - <el-button type="primary" @click="submitUpData">纭� 瀹�</el-button> - <el-button @click="upDia = false">鍙� 娑�</el-button> - </span> - </el-dialog> - </div> - - <!-- 鏂板寮圭獥 --> - <div> - <el-dialog - title="鎶�鏈寚鏍囨柊澧�" - :visible.sync="dialogVisible" - width="40%" - > - <el-form ref="form" :model="form" label-width="80px"> - <el-form-item label="绫诲瀷"> - <template> - <el-select v-model="form.type" size="small" placeholder="璇烽�夋嫨" @change="edittype" style="width: 554px;margin-right: 30px;"> - <el-option label="姗¤兌杩炴帴鍣�" :value="0"></el-option> - <el-option label="閲戝睘杩炴帴鍣�" :value="1"></el-option> - <el-option label="婀挎彃鎷旂數杩炴帴鍣�" :value="2"></el-option> - <el-option label="鍒嗘敮缁勪欢" :value="3"></el-option> - </el-select> - </template> - </el-form-item> - <el-row> - <el-col :span="11"> - <el-form-item label="宸ュ簭"> - <template> - <el-select v-model="form.work" - placeholder="璇烽�夋嫨" - allow-create - filterable - @change="workevent" - > - <el-option - v-for="(item,index) 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.name" - placeholder="璇烽�夋嫨" - allow-create - filterable - > - <el-option - v-for="item in craftapi" - :key="item.id" - :label="item.name" - :value="item.id"> - </el-option> - </el-select> - </template> - </el-form-item> - </el-col> - </el-row> - - <el-row> - <el-col :span="11"> - <el-form-item label="椤圭洰缁�" > - <template> - <el-select v-model="form.father" - placeholder="璇烽�夋嫨" - allow-create - filterable - @create="electadd" - > - <el-option - v-for="item in higherlevel" - :key="item" - :label="item" - :value="item"> - </el-option> - </el-select> - <!-- <el-autocomplete + <el-row> + <el-col :span="11"> + <el-form-item label="椤圭洰缁�"> + <template> + <el-select v-model="form.father" placeholder="璇烽�夋嫨" allow-create filterable @create="electadd"> + <el-option v-for="item in higherlevel" :key="item" :label="item" :value="item"> + </el-option> + </el-select> + <!-- <el-autocomplete popper-class="my-autocomplete" v-model="form.father" :fetch-suggestions="higherlevel" @@ -331,33 +253,32 @@ </template> </el-autocomplete> --> - </template> - </el-form-item> - </el-col> - <el-col :span="11" :offset="2"> - <el-form-item label="椤圭洰"> - <el-input v-model="form.project" style="width: 200px;" placeholder="璇疯緭鍏ラ」鐩�"></el-input> - </el-form-item> - </el-col> - </el-row> + </template> + </el-form-item> + </el-col> + <el-col :span="11" :offset="2"> + <el-form-item label="椤圭洰"> + <el-input v-model="form.project" style="width: 200px;" placeholder="璇疯緭鍏ラ」鐩�"></el-input> + </el-form-item> + </el-col> + </el-row> - <el-form-item label="鍗曚綅"> - <el-input v-model="form.unit" placeholder="璇疯緭鍏ュ崟浣�" style="width: 200px;"></el-input> - </el-form-item> - </el-form> - <span slot="footer" class="dialog-footer"> - <el-button @click="dialogVisible = false">鍙� 娑�</el-button> - <el-button type="primary" @click="add">纭� 瀹�</el-button> - </span> - </el-dialog> - </div> - </div> - + <el-form-item label="鍗曚綅"> + <el-input v-model="form.unit" placeholder="璇疯緭鍏ュ崟浣�" style="width: 200px;"></el-input> + </el-form-item> + </el-form> + <span slot="footer" class="dialog-footer"> + <el-button @click="dialogVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="add">纭� 瀹�</el-button> + </span> + </el-dialog> + </div> + </div> </div> </div> </template> <script> -export default { + export default { data() { return { search:{ @@ -397,20 +318,58 @@ unit:'', id:'', - } + }, + isAllSelect:false, } - + }, mounted() { this.selectAllleft() - this.selectAllright() - + this.selectAllright() }, methods:{ + // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆 + // 鍏ㄩ��/鍙栨秷閫夋搷浣� + selectAll(val) { + this.isAllSelect = !this.isAllSelect; + let data = this.tableData; + this.toggleSelect(data, this.isAllSelect, "all"); + }, + //閫夋嫨鏌愯 + selectTr(selection, row) { + console.log(selection,row); + this.$set(row, "isChecked", !row.isChecked); + this.$nextTick(() => { + this.isAllSelect = row.isChecked; + this.toggleSelect(row, row.isChecked, "tr"); + }); + }, + //閫掑綊瀛愮骇 + toggleSelect(data, flag, type) { + if (type === "all") { + console.log('222'); + if (data.length > 0) { + data.forEach((item) => { + this.toggleSelection(item, flag); + if (item.children && item.children.length > 0) { + this.toggleSelect(item.children, flag, type); + } + }); + } + } else { + if (data.children && data.children.length > 0) { + data.children.forEach((item) => { + item.isChecked = !item.isChecked; + this.$refs.multipleTable.toggleRowSelection(item, flag); + this.toggleSelect(item, flag, type); + }); + } + } + }, handleClose(){ - }, - selectDataList() { + }, + selectDataList() { this.list.forEach(a => { a.code = '[1]' if (a.children != undefined) { @@ -426,66 +385,66 @@ }) this.upIndex++ }, - //缂栬緫 - selecTech() { - this.$axios.get(this.$api.url.selecTech,{ - params:{ - id:this.upData.id + //缂栬緫 + selecTech() { + this.$axios.get(this.$api.url.selecTech, { + params: { + id: this.upData.id } }).then(res => { this.edit = res.data[0] console.log(this.edit); }) }, - childrenClick(val) { + childrenClick(val) { this.upData = val - this.selecTech() - this.upDia = true - }, - writeTechByIdskill() { + this.selecTech() + this.upDia = true + }, + writeTechByIdskill() { // console.log(this.upData.id); - this.$axios.post(this.$api.url.writeTechByIdskill + '?id=' + this.upData.id,{ - name:this.edit.name, - father:this.edit.father, - techTemId:this.edit.id, - unit:this.edit.unit + this.$axios.post(this.$api.url.writeTechByIdskill + '?id=' + this.upData.id, { + name: this.edit.name, + father: this.edit.father, + techTemId: this.edit.id, + unit: this.edit.unit }, { headers: { - "Content-Type": "application/json" - } + "Content-Type": "application/json" + } }).then(res => { this.selectAllright() }) - }, - submitUpData() {//纭畾 - this.writeTechByIdskill() - this.upDia = false - }, - //鍒犻櫎 - delTechBy() { - console.log(this.$api.url.delTechBy,this.upData.id); - this.$axios.post(this.$api.url.delTechBy,{ - id:this.upData.id - }).then(res =>{ - this.selectAllright() - this.$message.success('鍒犻櫎瀹屾垚') - }) }, - deleteRow(index, rows) { - this.tableData.splice(index,1) - this.upData = rows + submitUpData() { //纭畾 + this.writeTechByIdskill() + this.upDia = false + }, + //鍒犻櫎 + delTechBy() { + console.log(this.$api.url.delTechBy, this.upData.id); + this.$axios.post(this.$api.url.delTechBy, { + id: this.upData.id + }).then(res => { + this.selectAllright() + this.$message.success('鍒犻櫎瀹屾垚') + }) + }, + deleteRow(index, rows) { + this.tableData.splice(index, 1) + this.upData = rows this.upData.id = rows.id this.delTechBy() }, - //鎵归噺鍒犻櫎 - delAllTechskill() { - this.$axios.post(this.$api.url.delAllTechskill,{ - ids:this.delete - }).then(res =>{ - this.selectAllright() - }) - }, - dels() { + //鎵归噺鍒犻櫎 + delAllTechskill() { + this.$axios.post(this.$api.url.delAllTechskill, { + ids: this.delete + }).then(res => { + this.selectAllright() + }) + }, + dels() { this.selects.forEach(a => { for (var b = 0; b < this.tableData.length; b++) { if (this.tableData[b].id == a.id) { @@ -494,7 +453,7 @@ } } }) - let cc = this.selects.map(el => { + let cc = this.selects.map(el => { return el.id }) this.delete = cc.join(',') @@ -502,141 +461,152 @@ this.delAllTechskill() this.$message.success('鍒犻櫎瀹屾垚') }, - add() { - this.dialogVisible = false - this.addTechMode() + add() { + this.dialogVisible = false + this.addTechMode() this.form = {}; - }, - electadd(value) { - console.log(value); - this.higherlevel.push({}); - this.form.father = value; - }, - addTechMode() { - this.$axios.post(this.$api.url.addTechMode,{ - father:this.form.father, - name:this.form.project, - techTemId:this.form.name, - unit:this.form.unit, - }, { + }, + electadd(value) { + console.log(value); + this.higherlevel.push({}); + this.form.father = value; + }, + addTechMode() { + this.$axios.post(this.$api.url.addTechMode, { + father: this.form.father, + name: this.form.project, + techTemId: this.form.name, + unit: this.form.unit, + }, { headers: { - "Content-Type": "application/json" - } - }).then(res =>{ - this.$message.success('鏂板瀹屾垚') - this.selectAllright() + "Content-Type": "application/json" + } + }).then(res => { + this.$message.success('鏂板瀹屾垚') + this.selectAllright() - }) - }, - TYpe(val) { - this.typeselect = val - console.log(this.typeselect); - this.selectAllleft() - }, - edittype(val) { + }) + }, + TYpe(val) { + this.typeselect = val + console.log(this.typeselect); + this.selectAllleft() + }, + edittype(val) { this.typeselect = val this.chooseTechFath() }, - //涓讳綋宸� - selectAllleft() { - this.$axios.get(this.$api.url.selectAllleft,{ - 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) // 榛樿閫変腑鑺傜偣绗竴涓� - }) - let one=this.list.filter(item=>{ - return item.children.length>0 - })[0] - console.log(one); - let name=one.children[0].id - console.log(name); - this.selectAllrightStart(name) - this.selectDataList(); - }); + //涓讳綋宸� + selectAllleft() { + this.$axios.get(this.$api.url.selectAllleft, { + 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) // 榛樿閫変腑鑺傜偣绗竴涓� + }) + let one = this.list.filter(item => { + return item.children.length > 0 + })[0] + console.log(one); + let name = one.children[0].id + console.log(name); + this.selectAllrightStart(name) + this.selectDataList(); + }); }, - selectAllrightStart(name) { - this.$axios.get(this.$api.url.selectAllright,{ - params:{id:name} - }).then(res => { - this.tableData = res.data; - console.log(this.tableData); - }); + selectAllrightStart(name) { + this.$axios.get(this.$api.url.selectAllright, { + params: { + id: name + } + }).then(res => { + this.tableData = res.data; + console.log(this.tableData); + }); }, - // - //鏌ヨ - query(val) { - this.selectAllleft() - }, - //鍙� - selectAllright() { - this.$axios.get(this.$api.url.selectAllright,{ - params:{id:this.checkTreeNode.id} - }).then(res => { - this.tableData = res.data; - console.log(this.tableData); - }); + // + //鏌ヨ + query(val) { + this.selectAllleft() }, - //涓婄骇 - chooseProFath() { - console.log(this.checkTreeNode.id); - this.$axios.get(this.$api.url.chooseProFath,{ - params:{techTemId:this.checkTreeNode.id} - }).then(res => { - this.higherlevel = res.data; - console.log(this.higherlevel); - }, { - headers: { - "Content-Type": "application/json" - } - }) + //鍙� + selectAllright() { + this.$axios.get(this.$api.url.selectAllright, { + params: { + id: this.checkTreeNode.id + } + }).then(res => { + this.tableData = res.data; + console.log(this.tableData); + }); }, - //宸ュ簭宸ヨ壓 - 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" - } - }) + //涓婄骇 + chooseProFath() { + console.log(this.checkTreeNode.id); + this.$axios.get(this.$api.url.chooseProFath, { + params: { + techTemId: this.checkTreeNode.id + } + }).then(res => { + this.higherlevel = res.data; + console.log(this.higherlevel); + }, { + headers: { + "Content-Type": "application/json" + } + }) }, - workevent(val){ - console.log(val); - let idx = this.process.findIndex(el => el.name === val) - this.craftapi = this.process[idx].children - }, - - handleNodeClick(data){ - this.checkTreeNode = data + //宸ュ簭宸ヨ壓 + 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" + } + }) + }, + workevent(val) { + console.log(val); + let idx = this.process.findIndex(el => el.name === val) + this.craftapi = this.process[idx].children + }, + + handleNodeClick(data) { + this.checkTreeNode = data console.log(this.checkTreeNode.id); this.selectAllright() - }, - event(){ - this.dialogVisible = true - this.chooseProFath() - this.chooseTechFath() - }, - modify(){ - this.modifyevent = true - }, - // deleteRow(index, rows) { - // console.log(); - // rows.splice(index, 1); + }, + event() { + this.dialogVisible = true + this.chooseProFath() + this.chooseTechFath() + }, + modify() { + this.modifyevent = true + }, + // deleteRow(index, rows) { + // console.log(); + // rows.splice(index, 1); // }, - handleSelectionChange(val) { + handleSelectionChange(val) { this.selects = val; }, - //缂栬緫 - - } - } + //缂栬緫 + + } + } </script> <style scoped> @@ -677,7 +647,7 @@ .thing { width: 100%; - height: calc(100% - 120px); + height: calc(100% - 78px); background-color: #fff; display: flex; } @@ -687,6 +657,7 @@ height: calc(100% - 20px); border-right: 3px solid rgb(245, 247, 251); padding: 16px; + overflow-y: auto; } .thing .left .custom-tree-node span { @@ -726,8 +697,9 @@ color: #004ea0; cursor: pointer; } -.firstDiv { - /* float: left; + + .firstDiv { + /* float: left; width: 20px; height: 20px; border-radius: 60px; @@ -737,11 +709,12 @@ display: flex; align-items: center; margin-right: 8px; */ - /* border-radius: 60px; */ -} -.el-tag{ - border-radius: 50%; -} + /* border-radius: 60px; */ + } + + .el-tag { + border-radius: 50%; + } </style> <style> .record_content .title .el-button * { diff --git a/src/components/view/equipmentmaintain.vue b/src/components/view/equipmentmaintain.vue index 0de5776..30759c4 100644 --- a/src/components/view/equipmentmaintain.vue +++ b/src/components/view/equipmentmaintain.vue @@ -245,7 +245,6 @@ placeholder="璇疯緭鍏ユ悳绱㈠唴瀹�" size="small" clearable ></el-input> <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" @@ -263,11 +262,13 @@ <div class="right"> <el-table :data="tableData" - style="width: 100%;margin-bottom: 20px;" + style="width: 100%;margin-bottom: 20px;height: 600px;overflow: auto;" row-key="name" border + @select="selectTr" @selection-change="handleSelectionChange" default-expand-all + ref="multipleTable" :tree-props="{children: 'children', hasChildren: 'hasChildren'}"> <el-table-column type="selection" @@ -318,7 +319,7 @@ width="200px"> <template slot-scope="scope" style="text-align: center;"> <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="childrenClick(scope.row)">缂栬緫</el-button> --> <el-button type="text" size="mini" @click="deleteRow(scope.$index, scope.row)">鍒犻櫎</el-button> </div> </template> @@ -569,9 +570,6 @@ console.log(this.upData.id); this.delQueById() }, - handleSelectionChange(val) { - this.selects = val - }, //鎵归噺鍒犻櫎 delAllQue() { this.$axios.post(this.$api.url.delAllQue,{ @@ -609,6 +607,52 @@ // // filterNode(){ // }, + handleSelectionChange(val) { + this.deleteList = []; + val.forEach((v) => { + if (v.id !== undefined) { + this.deleteList.push(v.id); + } + }); + }, + // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆 + // 鍏ㄩ��/鍙栨秷閫夋搷浣� + selectAll(val) { + this.isAllSelect = !this.isAllSelect; + let data = this.tableData; + this.toggleSelect(data, this.isAllSelect, "all"); + }, + //閫夋嫨鏌愯 + selectTr(selection, row) { + console.log(selection,row); + this.$set(row, "isChecked", !row.isChecked); + this.$nextTick(() => { + this.isAllSelect = row.isChecked; + this.toggleSelect(row, row.isChecked, "tr"); + }); + }, + //閫掑綊瀛愮骇 + toggleSelect(data, flag, type) { + if (type === "all") { + console.log('222'); + if (data.length > 0) { + data.forEach((item) => { + this.toggleSelection(item, flag); + if (item.children && item.children.length > 0) { + this.toggleSelect(item.children, flag, type); + } + }); + } + } else { + if (data.children && data.children.length > 0) { + data.children.forEach((item) => { + item.isChecked = !item.isChecked; + this.$refs.multipleTable.toggleRowSelection(item, flag); + this.toggleSelect(item, flag, type); + }); + } + } + }, } } @@ -662,6 +706,7 @@ height: calc(100% - 20px); border-right: 3px solid rgb(245, 247, 251); padding: 16px; + overflow-y: auto; } .thing .left .custom-tree-node span { diff --git a/src/components/view/laboratoryManagement.vue b/src/components/view/laboratoryManagement.vue index 5fb48be..38548d3 100644 --- a/src/components/view/laboratoryManagement.vue +++ b/src/components/view/laboratoryManagement.vue @@ -1,8 +1,8 @@ <template> - <div> + <div class="laboratoryMangement"> <el-row> <el-col :span="12" class="top_left_name">璁惧缁存姢</el-col> - <el-col :span="12" style="text-align: right;"> + <el-col :span="12" style="text-align: right;" class="title"> <el-button @click="testItem()" type="primary" @@ -39,6 +39,7 @@ <el-form-item label="璁惧鐢ㄩ��" prop="type"> <el-select v-model="ruleForm.type" + @change="selectinstall" placeholder="璇烽�夋嫨璁惧鐢ㄩ��" > <el-option label="鐢熶骇璁惧" value="1"></el-option> @@ -207,12 +208,11 @@ :data="towTree" ref="tree" :props="{ children: 'children', label: 'father' }" - node-key="id" + node-key="father" default-expand-all highlight-current style="margin-top: 20px;" @node-click="handleNodeClick" - > <div class="custom-tree-node" slot-scope="{ node, data }"> <span @@ -397,8 +397,10 @@ name: "LaboratoryManagement", data() { return { + value: "", dialogVisible: false, + checkTreeNode:{}, isCollapse: true, //榛樿涓哄睍寮� radio1: "true", // 鍒嗙被鍒囨崲 tableData: [], // 涓婚〉琛ㄦ牸鏁版嵁 @@ -411,7 +413,7 @@ staue_value: "", // 涓婚〉琛ㄦ牸涓婃柟鐨勭姸鎬侀�夋嫨 // BOM鏍戞暟鎹粨鏋� towTree: [], - equipment: '', + equipment: '1', equaip:'', ruleForm: { // 鏂板浠櫒琛ㄥ崟 @@ -424,10 +426,11 @@ name: "", rawInsProductId: "", type: "", - treedata:{ - father:'璁惧缁�1', - }, + // treedata:{ + // father:'璁惧缁�1', + // }, equr:'', + }, delete:{}, equip:1, @@ -473,25 +476,29 @@ this.twoTreeApi(); // 鍒濆鍖栬皟鐢ㄨ〃鏍兼暟鎹� // this.tableDataApi(); - this.selectDevice()//鍙宠竟 + // this.selectDevice() }, methods: { - selectDevice() {//鍙宠竟鏁版嵁 - console.log(this.ruleForm.treedata.father); - console.log(this.equip); - this.$axios.get(this.$api.url.selectDevice,{ - params:{ - father:this.ruleForm.treedata.father, - type:this.equip, - } - }).then(res =>{ - console.log(res); - this.tableData = res.data - }, { - headers: { - "Content-Type": "application/json" - } - }) + handleNodeClick(val) { + this.checkTreeNode = val + console.log(this.checkTreeNode); + this.selectDevice() + }, + + staueValueChange() { + this.selectDevice() + // this.tableData = []; + // let val = 1; + // if (this.radio1 === "false") { + // val = 2; + // } + // this.$axios + // .get(this.$api.url.tableDeviceList, { + // params: { type: val, deviceStatue: this.staue_value } + // }) + // .then(res => { + // this.tableData = res.data; + // }); }, // 鍔ㄦ�佹帶鍒跺睍寮�涓庢敹璧峰拰鍒囨崲瀵瑰簲鍥炬爣 isC() { @@ -535,14 +542,21 @@ .catch(_ => {}); }, testItem() { - this.listgroup() this.dialogVisible = true; this.$axios.get(this.$api.url.addDeviceKeeper).then(res => { this.keeperList = res.data; }); }, + selectinstall(val) { + this.equip = val + this.listgroup() + }, listgroup() { - this.$axios.get(this.$api.url.listgroup).then(res =>{ + this.$axios.get(this.$api.url.listgroup,{ + params:{ + type:this.equip + } + }).then(res =>{ this.equaip = res.data console.log(this.equip); }) @@ -567,7 +581,51 @@ // } // }); this.towTree = res.data; - }); + this.$nextTick(() => { + this.$refs.tree.setCurrentKey(this.towTree[0].father) // 榛樿閫変腑鑺傜偣绗竴涓� + }) + console.log(this.towTree); + let one=this.towTree[0] + console.log(one); + let name =one.father + console.log(name); + this.selectDeviceStart(name) + }); + }, + selectDeviceStart(name,) {//鍙宠竟鏁版嵁 + this.$axios.get(this.$api.url.selectDevice,{ + params:{ + father:name, + type:this.equip, + deviceStatus:this.staue_value, + message:this.codeNameModel, + } + }).then(res =>{ + console.log(res); + this.tableData = res.data + }, { + headers: { + "Content-Type": "application/json" + } + }) + }, + + selectDevice() {//鍙宠竟鏁版嵁 + this.$axios.get(this.$api.url.selectDevice,{ + params:{ + father:this.checkTreeNode.father, + type:this.equip, + deviceStatus:this.staue_value, + message:this.codeNameModel, + } + }).then(res =>{ + console.log(res); + this.tableData = res.data + }, { + headers: { + "Content-Type": "application/json" + } + }) }, addApi() { this.$axios.post(this.$api.url.addApi,{ @@ -581,9 +639,9 @@ type:this.ruleForm.type, }, {headers: {"Content-Type": "application/json"} }).then(res =>{ - this.selectDevice() this.$message.success('鏂板鎴愬姛') this.ruleForm = {} + this.selectDevice() }) }, // tableDataApi() { @@ -592,15 +650,13 @@ // }); // }, reset() { - this.tableDataApi(); - this.radio1 = "true"; - this.codeNameModel = ""; - this.staue_value = ""; - }, - handleNodeClick(data) { - console.log(data); - // this.treedata = data - this.selectDevice() + // this.tableDataApi(); + // this.radio1 = "true"; + // this.codeNameModel = ""; + // this.staue_value = ""; + this.staue_value = "" + this.codeNameModel = "" + this.selectDevice() }, handlerDeptList() { this.towTree = []; @@ -617,24 +673,25 @@ }); }, selectSearch() { - this.tableData = []; - if (this.radio1 === "false") { - this.$axios - .get(this.$api.url.tableDeviceList, { - params: { type: 1, codeNameModel: this.codeNameModel } - }) - .then(res => { - this.tableData = res.data; - }); - } else if (this.radio1 === "true") { - this.$axios - .get(this.$api.url.tableDeviceList, { - params: { type: 2, codeNameModel: this.codeNameModel } - }) - .then(res => { - this.tableData = res.data; - }); - } + this.selectDevice() + // this.tableData = []; + // if (this.radio1 === "false") { + // this.$axios + // .get(this.$api.url.tableDeviceList, { + // params: { type: 1, codeNameModel: this.codeNameModel } + // }) + // .then(res => { + // this.tableData = res.data; + // }); + // } else if (this.radio1 === "true") { + // this.$axios + // .get(this.$api.url.tableDeviceList, { + // params: { type: 2, codeNameModel: this.codeNameModel } + // }) + // .then(res => { + // this.tableData = res.data; + // }); + // } }, delDeviceById() { this.$axios.post(this.$api.url.delDeviceById,{ @@ -722,20 +779,7 @@ } }); }, - staueValueChange() { - this.tableData = []; - let val = 1; - if (this.radio1 === "false") { - val = 2; - } - this.$axios - .get(this.$api.url.tableDeviceList, { - params: { type: val, deviceStatue: this.staue_value } - }) - .then(res => { - this.tableData = res.data; - }); - } + }, watch: { @@ -951,3 +995,25 @@ line-height: 14px; } </style> +<style> + .laboratoryMangement .title *{ + font-size: 14px; + } + + .laboratoryMangement .table_top_div *{ + font-size: 14px; + } + + .laboratoryMangement .title .el-button { + height: 32px; + border: 1px solid rgba(190, 190, 190, 0.44); + box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41); + padding: 0 12px; + } + .laboratoryMangement .table_top_div .el-button { + height: 32px; + border: 1px solid rgba(190, 190, 190, 0.44); + box-shadow: 0px 2px 4px rgba(220, 220, 220, 0.41); + padding: 0 12px; + } +</style> \ No newline at end of file diff --git a/src/components/view/mbom.vue b/src/components/view/mbom.vue index cfe1abd..4e8c3ba 100644 --- a/src/components/view/mbom.vue +++ b/src/components/view/mbom.vue @@ -1,127 +1,96 @@ <template> <div class="record_content"> <div class="title"> - <el-row> + <el-row> <el-col :span="12" style="line-height: 32px;">鐗╂枡娓呭崟缁存姢</el-col> <el-col :span="12" style="text-align: right;"> <el-button type="primary" icon="el-icon-plus" style="background: #004EA2;" @click="event">鏂板</el-button> - <el-button icon="el-icon-delete" @click="dels" >鍒犻櫎</el-button> + <el-button icon="el-icon-delete" @click="dels">鍒犻櫎</el-button> </el-col> </el-row> </div> <div> - <el-dialog - title="鐗╂枡娓呭崟鐨勭淮鎶�" - :visible.sync="dialogVisible" - width="80%" - :before-close="handleClose" :center="true"> - <div> - <el-form> - <el-row :gutter="2"> - <el-col :span="8"> - <el-form-item label="绫诲瀷:"> - <el-select v-model="search.type" size="small" placeholder="璇烽�夋嫨" style="width: 224px;margin-right: 30px;"> - <el-option label="姗¤兌杩炴帴鍣�" :value="0"></el-option> - <el-option label="閲戝睘杩炴帴鍣�" :value="1"></el-option> - <el-option label="婀挎彃鎷旂數杩炴帴鍣�" :value="2"></el-option> - <el-option label="鍒嗘敮缁勪欢" :value="3"></el-option> - </el-select> - </el-form-item> - </el-col> - <el-col :span="8"> - <el-form-item label="宸ュ簭"> - <template> - <el-select v-model="search.work" - placeholder="璇烽�夋嫨" - allow-create - filterable - @change="workevent" - > - <el-option - v-for="(item,index) in process" - :key="item.name" - :label="item.name" - :value="item.name"> - </el-option> - </el-select> - </template> - </el-form-item> - </el-col> - <el-col :span="8"> - <el-form-item label="宸ヨ壓鍚嶇О:"> - <el-select v-model="search.craft" size="small" placeholder="璇烽�夋嫨" style="width: 224px;margin-right: 30px;"> - <el-option - v-for="item in craftapi" - :key="item.id" - :label="item.name" - :value="item.id"> - </el-option> - </el-select> - </el-form-item> - </el-col> - </el-row> - </el-form> - <el-button size="mini" @click="Addrow" >娣诲姞琛�</el-button> - </div> - <div style="margin: 10px 0px;"> - <template> - <el-table - border - :data="tableapi" - height="calc(80vh - 250px)" - style="width: 100%"> - <el-table-column type="index" label="搴忓彿" width="70"> - </el-table-column> - <el-table-column - prop="date" - label="渚涘簲鍟嗗悕绉�" - width="180"> - <template slot-scope="scope"> - <el-input v-model="scope.row.supplier" placeholder="" ></el-input> - </template> - </el-table-column> - <el-table-column - prop="" - label="璐ㄩ噺杩芥函鍙�" - width="180"> - <template slot-scope="scope"> - <el-input v-model="scope.row.qualityTraceability" placeholder="" ></el-input> - </template> - </el-table-column> - <el-table-column - prop="name" - label="鍘熸潗鏂欏悕绉�"> - <template slot-scope="scope"> - <el-input v-model="scope.row.name" placeholder="" ></el-input> - </template> - </el-table-column> - <el-table-column - prop="address" - label="瑙勬牸鍨嬪彿"> - <template slot-scope="scope"> - <el-input v-model="scope.row.specifications" placeholder="" ></el-input> - </template> - </el-table-column> - <el-table-column - prop="unit" - label="鍗曚綅"> - <template slot-scope="scope"> - <el-input v-model="scope.row.unit" placeholder="" ></el-input> - </template> - </el-table-column> - </el-table> - </template> - </div> - <span slot="footer" class="dialog-footer"> - <el-button @click="dialogVisible = false">鍙� 娑�</el-button> - <el-button type="primary" @click="skipshow">纭� 瀹�</el-button> - </span> - </el-dialog> - </div> - + <el-dialog title="鐗╂枡娓呭崟鐨勭淮鎶�" :visible.sync="dialogVisible" width="80%" :before-close="handleClose" :center="true"> + <div> + <el-form> + <el-row :gutter="2"> + <el-col :span="8"> + <el-form-item label="绫诲瀷:"> + <el-select v-model="search.type" size="small" placeholder="璇烽�夋嫨" + style="width: 224px;margin-right: 30px;"> + <el-option label="姗¤兌杩炴帴鍣�" :value="0"></el-option> + <el-option label="閲戝睘杩炴帴鍣�" :value="1"></el-option> + <el-option label="婀挎彃鎷旂數杩炴帴鍣�" :value="2"></el-option> + <el-option label="鍒嗘敮缁勪欢" :value="3"></el-option> + </el-select> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="宸ュ簭"> + <template> + <el-select v-model="search.work" placeholder="璇烽�夋嫨" allow-create filterable @change="workevent"> + <el-option v-for="(item,index) in process" :key="item.name" :label="item.name" :value="item.name"> + </el-option> + </el-select> + </template> + </el-form-item> + </el-col> + <el-col :span="8"> + <el-form-item label="宸ヨ壓鍚嶇О:"> + <el-select v-model="search.craft" size="small" placeholder="璇烽�夋嫨" + style="width: 224px;margin-right: 30px;"> + <el-option v-for="item in craftapi" :key="item.id" :label="item.name" :value="item.id"> + </el-option> + </el-select> + </el-form-item> + </el-col> + </el-row> + </el-form> + <el-button size="mini" @click="Addrow">娣诲姞琛�</el-button> + </div> + <div style="margin: 10px 0px;"> + <template> + <el-table border :data="tableapi" height="calc(80vh - 250px)" style="width: 100%"> + <el-table-column type="index" label="搴忓彿" width="70"> + </el-table-column> + <el-table-column prop="date" label="渚涘簲鍟嗗悕绉�" width="180"> + <template slot-scope="scope"> + <el-input v-model="scope.row.supplier" placeholder=""></el-input> + </template> + </el-table-column> + <el-table-column prop="" label="璐ㄩ噺杩芥函鍙�" width="180"> + <template slot-scope="scope"> + <el-input v-model="scope.row.qualityTraceability" placeholder=""></el-input> + </template> + </el-table-column> + <el-table-column prop="name" label="鍘熸潗鏂欏悕绉�"> + <template slot-scope="scope"> + <el-input v-model="scope.row.name" placeholder=""></el-input> + </template> + </el-table-column> + <el-table-column prop="address" label="瑙勬牸鍨嬪彿"> + <template slot-scope="scope"> + <el-input v-model="scope.row.specifications" placeholder=""></el-input> + </template> + </el-table-column> + <el-table-column prop="unit" label="鍗曚綅"> + <template slot-scope="scope"> + <el-input v-model="scope.row.unit" placeholder=""></el-input> + </template> + </el-table-column> + </el-table> + </template> + </div> + <span slot="footer" class="dialog-footer"> + <el-button @click="dialogVisible = false">鍙� 娑�</el-button> + <el-button type="primary" @click="skipshow">纭� 瀹�</el-button> + </span> + </el-dialog> + </div> <div class="choose"> - <span>绫诲瀷锛�</span> - <el-select v-model="search.type" size="small" @change="TYpe" placeholder="璇烽�夋嫨" style="width: 224px;margin-right: 30px;"> + <span>绫诲瀷锛�</span> + <el-select v-model="search.type" size="small" @change="TYpe" placeholder="璇烽�夋嫨" + style="width: 224px;margin-right: 30px;"> <el-option label="姗¤兌杩炴帴鍣�" :value="0"></el-option> <el-option label="閲戝睘杩炴帴鍣�" :value="1"></el-option> <el-option label="婀挎彃鎷旂數杩炴帴鍣�" :value="2"></el-option> @@ -136,15 +105,11 @@ </div> <div class="thing"> <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" - style="height: 500px;overflow-y: auto;" - highlight-current - :props="{children: 'children',label: 'name'}" - node-key="name" - default-expand-all - @node-click="handleNodeClick" > + <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="overflow-y: auto;" highlight-current + :props="{children: 'children',label: 'name'}" 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> @@ -155,7 +120,7 @@ </el-tree> </div> <div class="right"> - <el-table :data="tableData" border style="width: 100%;overflow-y: auto;min-height: 100%" max-height="100%" + <el-table :data="tableData" border style="width: 100%;overflow-y: auto;min-height: 100%" max-height="100%" @selection-change="handleSelectionChange" default-expand-all> <el-table-column type="selection" width="50"> </el-table-column> @@ -176,48 +141,48 @@ </div> <!-- <el-dialog title="缂栬緫璁板綍鍐呭" :visible.sync="upDia" width="500px"> <div class="body"> - + </div> - + </el-dialog> --> </div> </template> <script> -export default { + export default { data() { return { - search:{ + search: { type: 0, technology: '' }, - list:[], - process:{}, + list: [], + process: {}, // handleClose:[], checkTreeNode:{ - id:2, + id:'', }, - tableData:[], - tableapi:[{ - supplier:'', - qualityTraceability:'', - name:'', - specifications:'', - unit:'', - }], - addsearch:{}, - upData:{}, - form:{}, - dialogVisible:false, - typeselect:0, - input:'', - craftapi:[], - } - }, - mounted() { - this.selectAllleft() - this.selectAllMbom() + tableData: [], + tableapi: [{ + supplier: '', + qualityTraceability: '', + name: '', + specifications: '', + unit: '', + }], + addsearch: {}, + upData: {}, + form: {}, + dialogVisible: false, + typeselect: 0, + input: '', + craftapi: [], + } }, - methods:{ + mounted() { + this.selectAllleft() + this.selectAllMbom() + }, + methods: { selectDataList() { this.list.forEach(a => { a.code = '[1]' @@ -234,35 +199,39 @@ }) this.upIndex++ }, - workevent(val){ - console.log(val); - let idx = this.process.findIndex(el => el.name === val) - this.craftapi = this.process[idx].children - }, + workevent(val) { + console.log(val); + let idx = this.process.findIndex(el => el.name === val) + this.craftapi = this.process[idx].children + }, //鏂板 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" - } - }) + 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" + } + }) }, addMbom(data) { - this.$axios.post(this.$api.url.addMbom,data - // { - // name:this.tableapi.name, - // qualityTraceability:this.tableapi.qualityTraceability, - // specifications:this.tableapi.specifications, - // supplier:this.tableapi.supplier, - // techTemId:this.craftapi.id, - // unit:this.tableapi.unit, - // } - , { + this.$axios.post(this.$api.url.addMbom,data,{ + // params:{ + // techTemId:this.craftapi.id, + // mbomModelDto2List:[{ + // name:this.tableapi.name, + // qualityTraceability:this.tableapi.qualityTraceability, + // specifications:this.tableapi.specifications, + // supplier:this.tableapi.supplier, + // unit:this.tableapi.unit, + // }] + // } + }, { headers: { "Content-Type": "application/json" } @@ -276,11 +245,11 @@ //鍒犻櫎 material(index) { console.log(this.upData.id); - this.$axios.post(this.$api.url.material,{ - id:this.upData.id - }).then(res =>{ + this.$axios.post(this.$api.url.material, { + id: this.upData.id + }).then(res => { this.$message.success(res.message) - this.tableData.splice(index,1) + this.tableData.splice(index, 1) // console.log(res); }) @@ -305,16 +274,23 @@ this.$nextTick(() => { this.$refs.tree.setCurrentKey(this.list[0].children[0].name) // 榛樿閫変腑鑺傜偣绗竴涓� }) + let one=this.list.filter(item=>{ + return item.children.length>0 + })[0] + console.log(one); + let name=one.children[0].id + console.log(name); + this.selectAllMbomStart(name) + this.selectDataList(); }, { headers: { "Content-Type": "application/json" } }) }, - //鍙宠竟 - selectAllMbom() { + selectAllMbomStart(name) { this.$axios.get(this.$api.url.selectAllMbom,{ - params:{id:this.checkTreeNode.id} + params:{id:name} }).then(res => { this.tableData = res.data; console.log(this.tableData); @@ -324,50 +300,62 @@ } }) }, + //鍙宠竟 + selectAllMbom() { + this.$axios.get(this.$api.url.selectAllMbom, { + params: { + id: this.checkTreeNode.id + } + }).then(res => { + this.tableData = res.data; + console.log(this.tableData); + }, { + headers: { + "Content-Type": "application/json" + } + }) + }, handleNodeClick(data){ this.checkTreeNode = data + console.log(data); console.log(this.checkTreeNode.id); this.selectAllMbom() - }, + }, handleClose(done) { this.$confirm('纭鍏抽棴锛�') - .then(_ => { - done(); - }) - .catch(_ => {}); + .then(_ => { + done(); + }) + .catch(_ => {}); }, + //鏂板 event(){ this.dialogVisible = true this.chooseTechFath() }, + //娣诲姞琛� Addrow() { if (this.tableapi == undefined) { this.tableapi = new Array(); } let obj = []; - this.tableapi.push(obj); }, - skipshow(){ + skipshow() { console.log('666'); let data = this.tableapi.at(-1) - // this.addMbom() data.techTemId = this.search.craft - // console.log(this.search.craft); - // console.log(data); - this.addMbom(data) - this.dialogVisible = false }, //delAllMbom 鎵归噺鍒犻櫎 delAllMbom() { - this.$axios.post(this.$api.url.delAllMbom,{ - ids:this.delete - }).then(res =>{ - this.selectAllMbom() - }) - }, + 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++) { @@ -396,8 +384,8 @@ this.material(index) }, - } - } + } + } </script> <style scoped> @@ -416,7 +404,8 @@ .title * { font-size: 16px; } - .choose-1{ + + .choose-1 { padding: 5px 24px; display: flex; align-items: center; @@ -455,6 +444,7 @@ height: calc(100% - 20px); border-right: 3px solid rgb(245, 247, 251); padding: 16px; + overflow-y: auto; } .thing .left .custom-tree-node span { diff --git a/src/components/view/record-content.vue b/src/components/view/record-content.vue index fd9e74b..504470a 100644 --- a/src/components/view/record-content.vue +++ b/src/components/view/record-content.vue @@ -46,6 +46,7 @@ height: calc(100% - 20px); border-right: 3px solid rgb(245, 247, 251); padding: 16px; + overflow-y: auto; } .thing .left .custom-tree-node span { @@ -141,7 +142,6 @@ <div class="left"> <el-input v-model="search.technology" suffix-icon="el-icon-search" placeholder="璇疯緭鍏ユ悳绱㈠唴瀹�" size="small" clearable @input="query"></el-input> <el-tree :data="list" ref="tree" - style="height: 500px;overflow-y: auto;" :props="{children: 'children',label: 'name'}" node-key="name" default-expand-all @node-click="handleNodeClick" highlight-current :key="upIndex"> diff --git a/src/components/view/sale.vue b/src/components/view/sale.vue index bdec015..b106e8f 100644 --- a/src/components/view/sale.vue +++ b/src/components/view/sale.vue @@ -132,9 +132,8 @@ <span>鐘舵�侊細</span> <el-select v-model="search.type" size="small" placeholder="璇烽�夋嫨" style="width: 224px;margin-right: 30px;"> <el-option label="鍏ㄩ儴" :value="null"></el-option> - <el-option label="閫氳繃" :value="0"></el-option> - <el-option label="涓嶉�氳繃" :value="1"></el-option> - <el-option label="鏈鏍�" :value="2"></el-option> + <el-option label="閫氳繃" :value="1"></el-option> + <el-option label="涓嶉�氳繃" :value="0"></el-option> </el-select> <span>浜よ揣鏃ユ湡锛�</span> <el-date-picker v-model="search.delTime" size="small" placeholder="璇疯緭鍏�" style="width: 224px;margin-right: 30px;" @@ -174,7 +173,8 @@ <span class="table_do" @click="changeShowDetail(scope.row)"> 鏌ョ湅璇︽儏 </span> <span class="table_do" v-if="scope.row.type==null" @click="saleCheck(scope)"> 瀹℃牳 </span> <span class="table_do" v-else> </span> - <span class="table_do" @click="openUpDia(scope.row.id)"> 缂栬緫 </span> + <span class="table_do" v-if="scope.row.type==null" @click="openUpDia(scope.row.id)"> 缂栬緫 </span> + <span class="table_do" v-else> </span> <span class="table_do" @click="delSale(scope.$index)"> 鍒犻櫎 </span> </template> </el-table-column> @@ -402,7 +402,7 @@ delTime: null }, tableData: [], - selects: [], + selects: '', currentPage: 1, countSize: 0, pageSize: 10, @@ -430,7 +430,13 @@ }, methods: { handleSelectionChange(val) { - this.selects = val.id; + this.selects = '' + val.forEach((a, ai)=>{ + this.selects += a.id + if(ai!=val.length-1){ + this.selects += ',' + } + }) }, handleSizeChange(val) { this.pageSize = val @@ -456,7 +462,7 @@ }) }, clean() { - this.selects = [] + this.selects = '' this.currentPage = 1 this.countSize = 0 this.pageSize = 10 @@ -464,7 +470,8 @@ formTime: null, createTime: null, insState: 2, - judgeState: 2 + judgeState: 2, + type: null } this.selectRawInspectsList() }, @@ -565,7 +572,6 @@ }) }, upSale() { - console.log(this.addData); for (var b = 0; b < this.addData.saleMaterialList.length; b++) { if (Object.keys(this.addData.saleMaterialList[b]).length == 0) { this.addData.saleMaterialList.splice(b, 1) @@ -581,7 +587,8 @@ } } for (var a in this.addData) { - if ((this.addData[a] == null || this.addData[a] == '') && a != 'type') { + console.log(a); + if ((this.addData[a] == null || this.addData[a] == '') && a!='checkname' && a!='checkTime' && a != 'type') { if (a == 'saleMaterialList') { this.$message.error('浜у搧淇℃伅涓嶈兘涓虹┖') } else { @@ -612,13 +619,12 @@ }) }, delSales(){ - console.log(this.selects); + if(this.selects=='') { + this.$message.warning('璇烽�夋嫨涓�鏉℃暟鎹垹闄�') + return + } this.axios.post(this.$api.url.delAllSale,{ ids: this.selects - }, { - headers: { - 'Content-Type': 'application/json' - } }).then(res=>{ this.$message.success('鍒犻櫎鎴愬姛') this.selectRawInspectsList() diff --git a/src/components/view/self-inspection.vue b/src/components/view/self-inspection.vue index a10d40f..55b8cbc 100644 --- a/src/components/view/self-inspection.vue +++ b/src/components/view/self-inspection.vue @@ -141,7 +141,7 @@ <div class="thing"> <div class="left"> <el-input v-model="search.technology" suffix-icon="el-icon-search" placeholder="璇疯緭鍏ユ悳绱㈠唴瀹�" size="small" clearable @input="(val)=>$refs.tree.filter(val)"></el-input> - <el-tree :data="list" style="height: 500px;overflow-y: auto;" ref="tree" :props="{children: 'children',label: 'name'}" node-key="name" default-expand-all + <el-tree :data="list" ref="tree" :props="{children: 'children',label: 'name'}" node-key="name" default-expand-all @node-click="handleNodeClick" highlight-current @node-expand="nodeOpen" @node-collapse="nodeClose" :filter-node-method="filterNode" :key="upIndex"> <div class="custom-tree-node" slot-scope="{ node, data }"> diff --git a/src/components/view/standard-table/material.vue b/src/components/view/standard-table/material.vue index 66e3416..4dc288b 100644 --- a/src/components/view/standard-table/material.vue +++ b/src/components/view/standard-table/material.vue @@ -40,6 +40,11 @@ <el-table-column prop="unit" label="鍗曚綅"> </el-table-column> <el-table-column prop="num" label="鏁伴噺"> + <template slot-scope="scope"> + <el-input v-model="scope.row.num" + v-if="scope.row.mname != null" + @blur="updateVal(scope.row)"></el-input> + </template> </el-table-column> </el-table> </div> @@ -51,13 +56,25 @@ data() { return { hasChildren:true, - selects: [] + selects: [], + isAllSelect:false, + deleteList:[], } }, props:['tableData','tableType'], created() {}, mounted() {}, methods: { + updateVal(row){ + this.$axios.post(this.$api.url.mBomWrite,{ + id : row.id, + num : row.num + }).then(res=>{ + this.$message.success(res.message); + }).catch(error=>{ + this.$message.error(error.message); + }) + }, // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆 // 鍏ㄩ��/鍙栨秷閫夋搷浣� selectAll(val) { @@ -94,14 +111,33 @@ } } }, - handleSelectionChange(val) { - this.deleteList = []; - val.forEach((v) => { - if (v.id !== undefined) { - this.deleteList.push(v.id); + //鏀瑰彉閫変腑 + toggleSelection(row, flag) { + this.$set(row, "isChecked", flag); + this.$nextTick(() => { + if (flag) { + this.$refs.multipleTable.toggleRowSelection(row, flag); + } else { + this.$refs.multipleTable.clearSelection(); } }); }, + handleSelectionChange(val) { + this.deleteList = []; + val.forEach((v) => { + this.searchIdFun(v); + }); + this.$emit("childData",this.deleteList); + }, + //閫掑綊鏌ユ壘閫変腑鏁版嵁id + searchIdFun(data){ + let obj = data; + if(obj.children != undefined){ + this.searchIdFun(obj.children); + }else{ + this.deleteList.push(obj.id); + } + }, // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆 缁撴潫 } } @@ -146,8 +182,8 @@ .standard .el-table__body { height: 100%; } - .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){ + /* .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){ padding-left: 23px !important; - } + } */ </style> \ No newline at end of file diff --git a/src/components/view/standard-table/product.vue b/src/components/view/standard-table/product.vue index 95a0782..62990fd 100644 --- a/src/components/view/standard-table/product.vue +++ b/src/components/view/standard-table/product.vue @@ -35,9 +35,9 @@ /* .standard .el-table__body { height: 100%; } */ - .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){ + /* .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){ padding-left: 23px !important; - } + } */ </style> <template> <div class="standard"> @@ -69,12 +69,18 @@ </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> + <el-tag type="info" v-if="scope.row.productFather != null">04</el-tag> <span>{{scope.row.productFather}}</span> </template> </el-table-column> + <el-table-column prop="productFather" hidden></el-table-column> <el-table-column prop="unit" label="鍗曚綅"></el-table-column> <el-table-column prop="product" label="鎸囨爣"></el-table-column> + <el-table-column label="鎿嶄綔"> + <template slot-scope="scope"> + <el-button type="text" @click="updateProduct(scope.row)">缂栬緫</el-button> + </template> + </el-table-column> </el-table> </div> </template> @@ -85,10 +91,14 @@ deviceGroupDialog:false, selects: [], isAllSelect:false, + deleteList:[], } }, props:['tableData','tableType'], methods:{ + updateProduct(row){ + console.log(row); + }, // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆 // 鍏ㄩ��/鍙栨秷閫夋搷浣� selectAll(val) { @@ -125,13 +135,32 @@ } } }, + //鏀瑰彉閫変腑 + toggleSelection(row, flag) { + this.$set(row, "isChecked", flag); + this.$nextTick(() => { + if (flag) { + this.$refs.multipleTable.toggleRowSelection(row, flag); + } else { + this.$refs.multipleTable.clearSelection(); + } + }); + }, handleSelectionChange(val) { this.deleteList = []; val.forEach((v) => { - if (v.id !== undefined) { - this.deleteList.push(v.id); - } + this.searchIdFun(v); }); + this.$emit("childData",this.deleteList); + }, + //閫掑綊鏌ユ壘閫変腑鏁版嵁id + searchIdFun(data){ + let obj = data; + if(obj.children != undefined){ + this.searchIdFun(obj.children); + }else{ + this.deleteList.push(obj.tqid); + } }, // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆 缁撴潫 } diff --git a/src/components/view/standard-table/target.vue b/src/components/view/standard-table/target.vue index 46cc2d9..9524ae4 100644 --- a/src/components/view/standard-table/target.vue +++ b/src/components/view/standard-table/target.vue @@ -57,6 +57,8 @@ data() { return { selects: [], + deleteList:[], + isAllSelect:false, } }, props:['tableData','tableType'], @@ -99,13 +101,32 @@ } } }, + //鏀瑰彉閫変腑 + toggleSelection(row, flag) { + this.$set(row, "isChecked", flag); + this.$nextTick(() => { + if (flag) { + this.$refs.multipleTable.toggleRowSelection(row, flag); + } else { + this.$refs.multipleTable.clearSelection(); + } + }); + }, handleSelectionChange(val) { this.deleteList = []; val.forEach((v) => { - if (v.id !== undefined) { - this.deleteList.push(v.id); - } + this.searchIdFun(v); }); + this.$emit("childData",this.deleteList); + }, + //閫掑綊鏌ユ壘閫変腑鏁版嵁id + searchIdFun(data){ + let obj = data; + if(obj.children != undefined){ + this.searchIdFun(obj.children); + }else{ + this.deleteList.push(obj.pid); + } }, // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆 缁撴潫 updateVal(row){ @@ -118,9 +139,6 @@ }).catch(error=>{ this.$message.error(error.message); }) - }, - handleSelectionChange(val) { - this.selects = val; }, } } @@ -169,8 +187,8 @@ /* .standard .el-table__body { height: 100%; } */ - .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){ + /* .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){ padding-left: 23px !important; - } + } */ </style> \ No newline at end of file diff --git a/src/components/view/standard-table/technology.vue b/src/components/view/standard-table/technology.vue index 2c2792e..978a988 100644 --- a/src/components/view/standard-table/technology.vue +++ b/src/components/view/standard-table/technology.vue @@ -67,16 +67,10 @@ props:['tableData','tableType'], created() {}, mounted() { - }, methods: { // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆 // 鍏ㄩ��/鍙栨秷閫夋搷浣� - selectAll(val) { - this.isAllSelect = !this.isAllSelect; - let data = this.tableData; - this.toggleSelect(data, this.isAllSelect, "all"); - }, //閫夋嫨鏌愯 selectTr(selection, row) { this.$set(row, "isChecked", !row.isChecked); @@ -106,13 +100,37 @@ } } }, + //鏀瑰彉閫変腑 + toggleSelection(row, flag) { + this.$set(row, "isChecked", flag); + this.$nextTick(() => { + if (flag) { + this.$refs.multipleTable.toggleRowSelection(row, flag); + } else { + this.$refs.multipleTable.clearSelection(); + } + }); + }, + selectAll(val) { + this.isAllSelect = !this.isAllSelect; + let data = this.tableData; + this.toggleSelect(data, this.isAllSelect, "all"); + }, handleSelectionChange(val) { this.deleteList = []; val.forEach((v) => { - if (v.id !== undefined) { - this.deleteList.push(v.id); - } + this.searchIdFun(v); }); + this.$emit("childData",this.deleteList); + }, + //閫掑綊鏌ユ壘閫変腑鏁版嵁id + searchIdFun(data){ + let obj = data; + if(obj.children != undefined){ + this.searchIdFun(obj.children); + }else{ + this.deleteList.push(obj.id); + } }, // 琛ㄦ牸鏍戝叏閮ㄩ�変腑閰嶇疆 缁撴潫 showDialog(){ @@ -189,7 +207,7 @@ /* .standard .el-table__body { height: 100%; } */ - .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){ + /* .standard .el-table .el-table__row:not([class*="el-table__row--level-"]) td:nth-child(3){ padding-left: 23px !important; - } + } */ </style> diff --git a/src/components/view/standard.vue b/src/components/view/standard.vue index 0586a40..2a3269a 100644 --- a/src/components/view/standard.vue +++ b/src/components/view/standard.vue @@ -5,9 +5,9 @@ <el-col :span="12" style="line-height: 32px;">鏍囧噯BOM</el-col> <el-col :span="12" style="text-align: right;"> <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="bomRightDl=true" icon="el-icon-delete">鍒犻櫎</el-button> + @click="showBomAddModel">鏂板</el-button> + <el-button icon="el-icon-plus" @click="addVersionBtn">鏂板鐗堟湰</el-button> + <el-button @click="deleteDataBtn" icon="el-icon-delete">鍒犻櫎</el-button> </el-col> </el-row> </div> @@ -32,8 +32,6 @@ </div> </el-tree> </div> - - <div class="right"> <div class="choose"> <span>绫诲瀷锛�</span> @@ -45,10 +43,10 @@ <el-option :value="3" label="鐢熶骇宸ヨ壓"></el-option> </el-select> <span>{{ tableType == 1 ? '椤圭洰锛�' : '宸ヨ壓鍚嶇О锛�' }}</span> - <el-input v-model="searchName" size="small" placeholder="璇疯緭鍏�" style="width: 224px;margin-right: 24px;" + <el-input v-model="searchName" size="small" placeholder="璇疯緭鍏�" style="width: 224px;margin-right: 50px;" clearable></el-input> - <span>{{ tableType == 1 ? '鐗堟湰锛�' : '鐗堟湰锛�' }}</span> - <el-select v-model="VER" @change="verevent" style="width: 280px;" placeholder="璇烽�夋嫨"> + <span>鐗堟湰锛�</span> + <el-select v-model="version2" @change="verevent" size="small" style="width: 280px;margin-right: 10px;" placeholder="璇烽�夋嫨"> <el-option v-for="item in version" :key="item" :label="item" :value="item"> </el-option> </el-select> @@ -58,16 +56,17 @@ </div> <div class="contentTable" v-if="this.typeselect == 0"> - <technology :tableType="tableType" :tableData="tableData"></technology> + <technology @childData="getChildData" :tableType="tableType" :tableData="tableData"></technology> </div> <div v-if="this.typeselect == 1"> - <target :tableType="tableType" :tableData="tableData"></target> + <target @childData="getChildData" :tableType="tableType" :tableData="tableData"></target> </div> <div v-if="this.typeselect == 2"> - <bom :tableType="tableType" :tableData="tableData"></bom> + <material @childData="getChildData" :tableType="tableType" :tableData="tableData"></material> </div> - <div v-if="this.typeselect == 3">鐢熶骇宸ヨ壓</div> - + <div v-if="this.typeselect == 3"> + <product @childData="getChildData" :tableType="tableType" :tableData="tableData"></product> + </div> </div> </div> @@ -155,45 +154,82 @@ <!-- 鐗╂枡娓呭崟 --> <div v-if="typeselect == 2"> <el-form :model="materialForm" label-position="right" - :rules="materialRules" ref="materialForm" label-width="80px"> - <el-row> + :rules="materialRules" ref="materialForm" label-width="90px"> + <el-row :gutter="100"> <el-col :span="12"> - <el-form-item label="瑙勬牸鍨嬪彿:" width="250"> - <el-input style="width:200px;" v-model="materialForm.pname" placeholder="璇疯緭鍏ュ崟浣�"/> - </el-form-item> + <el-form-item label="宸ュ簭:" prop="mfather"> + <el-select placeholder="璇烽�夋嫨宸ュ簭" @change="changeMName" + style="width:100%;" v-model="materialForm.mfather"> + <el-option v-for="(item,index) in materialFormList" :key="index" + :label="item.name" :value="item.name" ></el-option> + </el-select> + </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-col :span="12"> + <el-form-item label="宸ヨ壓鍚嶇О:" prop="mtechnologyId"> + <el-select placeholder="璇烽�夋嫨宸ヨ壓鍚嶇О" style="width:100%;" + v-model="materialForm.mtechnologyId"> + <el-option v-for="(item,index) in mIdList" :key="index" + :value="item.id" :label="item.name"></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-form-item label="鏉愭枡淇℃伅" style="font-weight: bold;"></el-form-item> </el-col> <el-col :span="12" style="text-align: right;"> - <el-button size="mini" style="text-align: right;">娣诲姞琛�</el-button> + <el-button size="mini" @click="addRowByMaterial">娣诲姞琛�</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 :data="materialForm.tableList" border max-height="470" + style="width:100%;text-align: left;margin: 0;padding: 0;" + :cell-style="{height:'20px',textAlign:'left'}" + :header-cell-style="{height:'20px'}"> + <el-table-column label="渚涘簲鍟嗗悕绉�"> + <template slot-scope="scope"> + <el-input size="mini" v-model="scope.row.supplier" + placeholder="璇疯緭鍏�"></el-input> + </template> + </el-table-column> + <el-table-column label="璐ㄩ噺杩芥函鍙�"> + <template slot-scope="scope"> + <el-input size="mini" v-model="scope.row.qualityTraceability" + placeholder="璇疯緭鍏�"></el-input> + </template> + </el-table-column> + <el-table-column label="鍘熸潗鏂欏悕绉�"> + <template slot-scope="scope"> + <el-input size="mini" v-model="scope.row.name" + placeholder="璇疯緭鍏�"></el-input> + </template> + </el-table-column> + <el-table-column label="瑙勬牸鍨嬪彿"> + <template slot-scope="scope"> + <el-input size="mini" v-model="scope.row.specifications" + placeholder="璇疯緭鍏�"></el-input> + </template> + </el-table-column> + <el-table-column label="鍗曚綅"> + <template slot-scope="scope"> + <el-input size="mini" v-model="scope.row.unit" + placeholder="璇疯緭鍏�"></el-input> + </template> + </el-table-column> + <el-table-column label="鏁伴噺"> + <template slot-scope="scope"> + <el-input size="mini" v-model="scope.row.num" + placeholder="璇疯緭鍏�"></el-input> + </template> + </el-table-column> </el-table> </el-col> </el-row> </el-form> - <div style="width:100%;text-align: right;"> + <div style="width:100%;margin-top: 20px;margin-left:75%"> <span slot="footer" class="dialog-footer" > <el-button type="primary" @click="confirmAdd('materialForm')">纭� 瀹�</el-button> <el-button @click="bomAddModelVisible = false">鍙� 娑�</el-button> @@ -203,52 +239,49 @@ <!-- 鐢熶骇宸ヨ壓 --> <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> + :rules="productRules" ref="productForm" label-width="90px"> + <el-form-item label="宸ュ簭:" prop="profather"> + <el-select v-model="productForm.profather" + style="width:200px;" @change="changeProduct" + placeholder="璇烽�夋嫨宸ュ簭"> + <el-option v-for="(item,index) in productFormList" :key="index" + :value="item.name" :label="item.name"></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-form-item label="宸ヨ壓鍚嶇О:" prop="protechnologyId"> + <el-select placeholder="璇烽�夋嫨宸ヨ壓鍚嶇О" + style="width:200px;" @change="getProductDeviceList" + v-model="productForm.protechnologyId"> + <el-option v-for="(item,index) in proIdList" :key="index" + :value="item.id" :label="item.name"></el-option> </el-select> </el-form-item> - <el-form-item label="璁惧:" width="250"> + <el-form-item label="璁惧:" prop="device"> <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> + v-model="productForm.device"> + <el-option v-for="(item,index) in productDeviceList" :key="index" + :value="item.device" :label="item.device"></el-option> </el-select> </el-form-item> - <el-form-item label="椤圭洰:" width="250"> + <el-form-item label="椤圭洰:" prop="productFather"> <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> + style="width:200px;" @change="changeProductFather" + v-model="productForm.productFather"> + <el-option v-for="(item,index) in productProjectList" :key="index" + :value="item.name" :label="item.name"></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 label="鎸囨爣:" prop="product"> + <el-select placeholder="璇烽�夋嫨鎸囨爣" + style="width:200px;" @change="changeProProduct" + v-model="productForm.product"> + <el-option v-for="(item,index) in proProductList" :key="index" + :value="item.name" :label="item.name"></el-option> + </el-select> </el-form-item> - <el-form-item label="鎸囨爣:" width="250"> - <el-input style="width:200px;" v-model="productForm.pq" placeholder="璇疯緭鍏ユ寚鏍�" /> + <el-form-item label="鍗曚綅:" prop="unit"> + <el-input style="width:200px;" disabled v-model="productForm.unit"/> </el-form-item> </el-form> <div style="width:100%;text-align: right;"> @@ -300,10 +333,11 @@ <script> import technology from "./standard-table/technology.vue" import material from "./standard-table/material.vue" -// import bom from "./standard-table/bom.vue" +import target from "./standard-table/target.vue" +import product from "./standard-table/product.vue" import bomClickAdd from '@/components/view/standard-box/bomClickAdd' export default { - components: { technology,material,bomClickAdd }, + components: { technology,material,target,product,bomClickAdd }, data() { var checkPq = (rule,value,callback)=>{ @@ -320,14 +354,11 @@ callback(); }; return { - //鎶�鏈寚鏍�-鏂板-宸ュ簭锛屽伐鑹轰笅鎷夋鏁版嵁 - targetFormList:[], - technologyIdList:[], - //鎶�鏈寚鏍�-鏂板-椤圭洰涓嬫媺妗嗘暟鎹� - projectList:[], + //瀛愮粍浠朵紶鐨刬d鍒楄〃 + childIds:[], //宸ュ簭鍒楄〃 + technologyIdList:[], fatherList:[], - //璁惧缁勫垪琛� deviceList:[], technologyForm:{ tefather:'', @@ -335,6 +366,15 @@ deviceGroup:'', productionQuota:'' }, + technologyRules:{ + tefather:{required:true,message:'宸ュ簭涓嶈兘涓虹┖',trigger:'change'}, + tename:{required:true,message:'宸ヨ壓鍚嶇О涓嶈兘涓虹┖',trigger:'blur'}, + deviceGroup:{required:true,message:'璁惧缁勪笉鑳戒负绌�',trigger:'change'}, + productionQuota:{validator:checkPq,trigger:'change'} + }, + //鎶�鏈寚鏍� + targetFormList:[], + projectList:[], targetForm:{ pfather:'', father: '', @@ -343,14 +383,6 @@ 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'}, @@ -361,16 +393,47 @@ internal:{validator:checkVal,trigger:'change'}, required:{validator:checkVal,trigger:'change'} }, + //鐗╂枡娓呭崟 + materialForm:{ + mfather: '', + mtechnologyId:'', + tableList:[] + }, + materialFormList:[], + mIdList:[], materialRules:{ - + mfather:{required:true,message:'宸ュ簭涓嶈兘涓虹┖',trigger:'change'}, + mtechnologyId:{required:true,message:'宸ヨ壓鍚嶇О涓嶈兘涓虹┖',trigger:'change'}, }, + //鐢熶骇宸ヨ壓 + productForm:{ + profather:'', + protechnologyId:'', + productFather:'', + product:'', + unit:'', + device:'' + }, + //璁惧鍒楄〃 + productDeviceList:[], + //宸ヨ壓鍚嶇О鍒楄〃 + proIdList:[], + //椤圭洰鍒楄〃 + productProjectList:[], + //鎸囨爣鍒楄〃 + proProductList:[], productRules:{ - + profather:{required:true,message:'宸ュ簭涓嶈兘涓虹┖',trigger:'change'}, + protechnologyId:{required:true,message:'宸ヨ壓鍚嶇О涓嶈兘涓虹┖',trigger:'change'}, + productFather:{required:true,message:'椤圭洰涓嶈兘涓虹┖',trigger:'change'}, + product:{required:true,message:'鎸囨爣涓嶈兘涓虹┖',trigger:'change'}, + device:{required:true,message:'璁惧涓嶈兘涓虹┖',trigger:'change'} }, + productFormList:[], // BOM鏍戞暟鎹粨鏋� list: [], search: null, - tableType: 1, // 琛ㄦ牸绫诲瀷 1锛氭妧鏈寚鏍囷紝0锛氬伐鑹鸿矾绾� + tableType: 0, // 琛ㄦ牸绫诲瀷 1锛氭妧鏈寚鏍囷紝0锛氬伐鑹鸿矾绾� searchName: "",// 鏌ヨ鏉′欢-鍚嶇О checkTreeNode: {},// 鐐瑰嚮閫変腑鏍戣妭鐐� tableData: [], @@ -380,9 +443,7 @@ bomRightDl: false, formTypeOptions: null, typeselect: 0, - returntree: { - id:28, - }, + returntree: {id:28}, version: {}, leftAdd:{ type: [], @@ -391,7 +452,7 @@ name: null, specifications: null }, - VER: {}, + version2: {}, verdata: {}, character: 0, restaurants: [], @@ -515,6 +576,69 @@ leftAddBom(){ }, + //鑾峰彇瀛愮粍浠舵暟鎹� + getChildData(data){ + this.childIds = data; + }, + //鍒犻櫎鎸夐挳 + deleteDataBtn(){ + let ids; + let url; + ids = this.childIds.filter(item=>{ + return item != undefined; + }); + if(ids.length < 1){ + this.$message.error("璇峰厛閫夋嫨鏁版嵁锛�"); + return; + } + switch(this.typeselect){ + case 0: + url = this.$api.url.delAllByTechnology; + break; + case 1: + url = this.$api.url.delAllByTarget; + break; + case 2: + url = this.$api.url.delAllByMBom; + break; + case 3: + url = this.$api.url.delAllByProduct; + break; + } + this.$confirm('纭鍒犻櫎宸查�変腑鐨勬暟鎹悧', '鍒犻櫎', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'warning' + }).then(() => { + this.$axios.post(url,{ + ids : ids.join(",") + }).then(res=>{ + this.selectAll(); + this.$message.success(res.message); + }).catch(error=>{ + this.$message.error(error.message); + }) + }).catch(() => {}); + }, + //鏂板鐗堟湰 + addVersionBtn(){ + this.$confirm('纭鏂板鐗堟湰鍚�', '鏂板鐗堟湰', { + confirmButtonText: '纭畾', + cancelButtonText: '鍙栨秷', + type: 'info' + }).then(() => { + this.$axios.post(this.$api.url.addVersion,{ + specificationsId : this.returntree.id, + version : this.version2.substring(1,2), + }).then(res=>{ + this.selectVersion(); + this.$message.success(res.message); + }).catch(error=>{ + this.$message.error(error.message); + }) + }).catch(() => {}); + }, + //鍙充晶bom,纭鏂板 confirmAdd(formName){ this.$refs[formName].validate(valid=>{ if(valid){ @@ -531,8 +655,25 @@ this.submitBomAdd(this.$api.url.addTechnology,obj); }else if(type == 1){ this.submitBomAdd(this.$api.url.addProductByStandard,this.targetForm); + }else if(type == 2){ + obj = { + mbomDto2List:this.materialForm.tableList, + technologyId:this.materialForm.mtechnologyId + } + this.submitBomAdd(this.$api.url.addMBomByStandard,obj); + }else if(type == 3){ + let form = this.productForm; + obj = { + device: form.device, + product: form.product, + productFather: form.productFather, + technologyId: form.protechnologyId, + unit: form.unit + } + this.submitBomAdd(this.$api.url.addTechniqueByStandard,obj); + }else{ + return } - } }) }, @@ -576,7 +717,35 @@ this.technologyIdList = arr[0].children; } }, - //鑾峰彇宸ュ簭锛屽伐鑹哄垪琛� + //鐗╂枡娓呭崟--娣诲姞琛� + addRowByMaterial(){ + let obj = { + "name": "", + "num": null, + "qualityTraceability": "", + "specifications": "", + "supplier": "", + "unit": "" + } + this.materialForm.tableList.push(obj); + }, + //鐗╂枡娓呭崟--鑾峰彇宸ュ簭锛屽伐鑹哄垪琛� + getMaterialFormList(){ + this.$axios.get(this.$api.url.chooseTechByMBom,{ + params:{specificationsId : this.returntree.id} + }).then(res=>{ + this.materialFormList = res.data; + }).catch(error=>{ + this.$message.error(error.message); + }) + }, + changeMName(val){ + let arr = this.materialFormList.filter(item=>{ + return item.name == val; + }) + this.mIdList = arr[0].children; + }, + //鎶�鏈寚鏍�--鑾峰彇宸ュ簭锛屽伐鑹哄垪琛� getTargetFormList(){ this.$axios.get(this.$api.url.chooseTechByStandard,{ params:{specificationsId : this.returntree.id} @@ -586,11 +755,59 @@ this.$message.error(error.message); }) }, - //鑾峰彇椤圭洰鍒楄〃 - getProjectFormList(){ - + //1.鐢熶骇宸ヨ壓-->閫夋嫨宸ュ簭,宸ヨ壓 + getProductFormList(){ + this.$axios.get(this.$api.url.chooseTechByProduct,{ + params:{specificationsId : this.returntree.id} + }).then(res=>{ + this.productFormList = res.data; + }).catch(error=>{ + this.$message.error(error.message); + }) }, - //鑾峰彇宸ュ簭鍒楄〃 + //2.閫夋嫨宸ュ簭锛岃幏鍙栧伐鑹哄悕绉� + changeProduct(val){ + let arr = this.productFormList.filter(item=>{ + return item.name == val + }); + this.proIdList = arr[0].children; + }, + //3.鐢熶骇宸ヨ壓-->閫夋嫨璁惧 + getProductDeviceList(val){ + this.$axios.get(this.$api.url.chooseDevByProduct,{ + params:{technologyId : val} + }).then(res=>{ + this.productDeviceList = res.data; + this.getProjectFormList(val); + }).catch(error=>{ + this.$message.error(error.message); + }) + }, + //4.鐢熶骇宸ヨ壓--鑾峰彇椤圭洰鍒楄〃 + getProjectFormList(val){ + this.$axios.get(this.$api.url.chooseProByProduct,{ + params:{technologyId : val} + }).then(res=>{ + this.productProjectList = res.data; + }).catch(error=>{ + this.$message.error(error.message); + }) + }, + //5.閫夋嫨椤圭洰鍒楄〃,鑾峰彇鎸囨爣 + changeProductFather(val){ + let arr = this.productProjectList.filter(item=>{ + return item.name == val; + }) + this.proProductList = arr[0].children; + }, + //閫夋嫨鎸囨爣鍒楄〃 + changeProProduct(val){ + let arr = this.proProductList.filter(item=>{ + return item.name == val; + }) + this.productForm.unit = arr[0].unit; + }, + //宸ヨ壓璺嚎--鑾峰彇宸ュ簭鍒楄〃 getFatherList(){ this.$axios.get(this.$api.url.chooseFather,{ params:{specificationsId : this.returntree.id} @@ -600,7 +817,7 @@ this.$message.error(error.message); }) }, - //鑾峰彇璁惧缁勫垪琛� + //宸ヨ壓璺嚎--鑾峰彇璁惧缁勫垪琛� getDeviceList(){ this.$axios.get(this.$api.url.chooseDevice).then(res=>{ this.deviceList = res.data; @@ -612,6 +829,8 @@ this.getFatherList(); this.getDeviceList(); this.getTargetFormList(); + this.getMaterialFormList(); + this.getProductFormList(); this.bomAddModelVisible = true }, startLeftAdd(){ @@ -708,7 +927,7 @@ return this.verdata[0] }) this.character=v - this.VER="v"+v + this.version2="v"+v this.selectAll() }, //鍙充晶鏁版嵁 diff --git a/src/components/view/technical.vue b/src/components/view/technical.vue index 753f2ac..424ee7e 100644 --- a/src/components/view/technical.vue +++ b/src/components/view/technical.vue @@ -4,7 +4,7 @@ <el-row> <el-col :span="12">鎶�鏈枃浠�</el-col> <el-col :span="12" style="text-align: right;"> - <el-button icon="el-icon-plus">鐢熸垚椤圭洰涔�</el-button> + <el-button icon="el-icon-plus">鐢熸垚椤圭洰涔�</el-button> </el-col> </el-row> </div> @@ -25,14 +25,14 @@ <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-select v-model="searchData.type" size="small" placeholder="鍏ㄩ儴" style="width: 250px;"> <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> + <el-button plain @click="resetBtn" style="margin-left: 12px;">閲� 缃�</el-button> + <el-button @click="searchTechnical">鏌� 璇�</el-button> </el-form-item> </el-form> </div> @@ -335,6 +335,7 @@ background: #fff; padding: 24px 32px; } + .search-header .el-form-item__label{ padding: 0 30px 0 0; } @@ -416,3 +417,12 @@ } </style> +<style> + .technical .title *{ + font-size: 14px; + } + + .technical .search-header *{ + font-size: 14px; + } +</style> diff --git a/src/components/view/technology.vue b/src/components/view/technology.vue index 6fa3369..c0ad40a 100644 --- a/src/components/view/technology.vue +++ b/src/components/view/technology.vue @@ -46,6 +46,7 @@ height: calc(100% - 20px); border-right: 3px solid rgb(245, 247, 251); padding: 16px; + overflow-y: auto; } .thing .left .custom-tree-node span { @@ -174,7 +175,6 @@ node-key="name" default-expand-all @node-click="handleNodeClick" - style="height: 500px;overflow-y: auto;" :key="upIndex" highlight-current > @@ -602,7 +602,7 @@ } ) .then((res) => { - console.log(res); + this.$parent.removeAllTab() this.selectAllTechNam(); this.form = {}; }); @@ -640,17 +640,17 @@ }, //鎵归噺鍒犻櫎 delAllTech() { - console.log(this.delete); this.$axios.post(this.$api.url.delAllTech, { - ids: this.delete, + ids: this.delete }); + this.$parent.removeAllTab() }, //鍒犻櫎 delTechById() { - console.log(this.$api.url.delTechById, this.upData.id); this.$axios.post(this.$api.url.delTechById, { - id: this.upData.id, + id: this.upData.id }); + this.$parent.removeAllTab() }, //缂栬緫 writeTechById() { @@ -677,7 +677,7 @@ } ) .then((res) => { - console.log(res); + this.$parent.removeAllTab() }); }, @@ -789,7 +789,6 @@ return el.id; }); this.delete = cc.join(","); - console.log(this.delete); this.delAllTech(); this.$message.success("鍒犻櫎瀹屾垚"); }, diff --git a/src/view/index.vue b/src/view/index.vue index 09cfbd5..27712b5 100644 --- a/src/view/index.vue +++ b/src/view/index.vue @@ -1,629 +1,585 @@ <style scoped> -.all { - width: 100vw; - height: 100vh; - background-size: 100% 100%; - display: flex; - flex-wrap: wrap; -} + .all { + width: 100vw; + height: 100vh; + background-size: 100% 100%; + display: flex; + flex-wrap: wrap; + } -.title { - width: 100%; - height: 58px; - display: flex; - align-items: center; - padding: 0 30px; -} + .title { + width: 100%; + height: 58px; + display: flex; + align-items: center; + padding: 0 30px; + } -.logo { - width: 130px; -} + .logo { + width: 130px; + } -.logo img { - width: 100%; - height: 100%; -} + .logo img { + width: 100%; + height: 100%; + } -.title .label { - font-size: 18px; - text-align: center; - width: calc(100% - 130px - 200px); -} + .title .label { + font-size: 18px; + text-align: center; + width: calc(100% - 130px - 200px); + } -.user { - width: 200px; - height: 100%; - display: flex; - align-items: center; - justify-content: right; - color: #000; -} + .user { + width: 200px; + height: 100%; + display: flex; + align-items: center; + justify-content: right; + color: #000; + } -.user * { - margin: 0 5px; -} + .user * { + margin: 0 5px; + } -.user img { - margin-left: 20px; - cursor: pointer; - width: 14px; -} + .user img { + margin-left: 20px; + cursor: pointer; + width: 14px; + } -.user span { - font-size: 14px; -} + .user span { + font-size: 14px; + } -.left { - height: calc(100vh - 58px - 40px); - background-color: #004ea2; - display: flex; - align-items: center; - flex-direction: column; - padding: 20px 0; - transition: 0.3s; - overflow-y: auto; -} + .left { + height: calc(100vh - 58px - 40px); + background-color: #004ea2; + display: flex; + align-items: center; + flex-direction: column; + padding: 20px 0; + transition: 0.3s; + overflow-y: auto; + } -.left::-webkit-scrollbar { - width: 0; -} + .left::-webkit-scrollbar { + width: 0; + } -.left .box { - color: #fff; - width: 68px; - height: 68px; - margin: 8px 0; - cursor: pointer; - display: flex; - align-items: center; - justify-content: center; - flex-direction: column; - border-radius: 8px; -} + .left .box { + color: #fff; + width: 68px; + height: 68px; + margin: 8px 0; + cursor: pointer; + display: flex; + align-items: center; + justify-content: center; + flex-direction: column; + border-radius: 8px; + } -.left .box:active { - opacity: 0.8; -} + .left .box:active { + opacity: 0.8; + } -.left .active_box { - background-color: #fff; - color: #004ea2; -} + .left .active_box { + background-color: #fff; + color: #004ea2; + } -.left .box i { - font-size: 32px; - margin-bottom: 8px; -} + .left .box i { + font-size: 24px; + margin-bottom: 8px; + } -.left .box div { - font-size: 14px; -} + .left .box div { + font-size: 14px; + } -.small_menu { - color: #666; -} + .small_menu { + color: #666; + } -.small_menu .active_p { - color: #004ea2; -} + .small_menu .active_p { + color: #004ea2; + } -.small_menu p { - padding: 12px 15px; - cursor: pointer; -} + .small_menu p { + padding: 12px 15px; + cursor: pointer; + } -.small_menu p:hover { - background-color: rgba(0, 0, 0, 0.05); -} + .small_menu p:hover { + background-color: rgba(0, 0, 0, 0.05); + } -.small_menu i { - font-size: 16px; -} + .small_menu i { + font-size: 16px; + } -.small_menu span { - font-size: 14px; -} + .small_menu span { + font-size: 14px; + } -.right { - height: calc(100vh - 58px); - transition: 0.3s; -} + .right { + height: calc(100vh - 58px); + transition: 0.3s; + } -.tag { - width: 100%; - height: 36px; - background: rgb(255, 255, 255); - opacity: 0.8; - box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.1); - display: flex; - align-items: center; - color: #999; - font-size: 14px; -} + .tag { + width: 100%; + height: 36px; + background: rgb(255, 255, 255); + opacity: 0.8; + box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.1); + display: flex; + align-items: center; + color: #999; + font-size: 14px; + } -.tag > .el-icon-s-unfold, -.el-icon-s-fold { - font-size: 18px; - cursor: pointer; - margin: 0 8px; -} + .tag .el-icon-delete { + display: none; + } -.tabs { - min-width: calc(100% - 34px); - height: 100%; - align-items: center; - display: flex; - overflow-x: auto; -} + .tag .el-icon-delete:hover { + color: #F56C6C; + } -.tab { - cursor: pointer; - font-size: 14px; - margin: 0 8px; - line-height: 32px; - transition: 0.3s; - border-top: 2px solid transparent; - border-bottom: 2px solid transparent; - user-select: none; - flex-shrink: 0; -} + .tag:hover .el-icon-delete { + display: block; + } -.tab i { - font-size: 12px; - display: none; -} + .tag>.el-icon-s-unfold, + .el-icon-s-fold, + .el-icon-delete { + font-size: 18px; + cursor: pointer; + margin: 0 8px; + } -.active_tab { - border-bottom: 2px solid #004ea2; - color: #004ea2; -} + .tabs { + min-width: calc(100% - 68px); + height: 100%; + align-items: center; + display: flex; + overflow-x: auto; + } -.active_tab i { - display: inline; - color: #004ea2; -} + .tab { + cursor: pointer; + font-size: 14px; + margin: 0 8px; + line-height: 32px; + transition: 0.3s; + border-top: 2px solid transparent; + border-bottom: 2px solid transparent; + user-select: none; + flex-shrink: 0; + } -.component_view { - height: calc(100vh - 94px - 22px); - width: calc(100% - 48px); - padding: 11px 24px; - background: rgb(245, 247, 251); - overflow-y: auto; -} + .tab i { + font-size: 12px; + display: none; + } -.com_index { - width: 100%; - height: 100%; -} + .active_tab { + border-bottom: 2px solid #004ea2; + color: #004ea2; + } + + .active_tab i { + display: inline; + color: #004ea2; + } + + .component_view { + height: calc(100vh - 94px - 22px); + width: calc(100% - 48px); + padding: 11px 24px; + background: rgb(245, 247, 251); + overflow-y: auto; + } + + .com_index { + width: 100%; + height: 100%; + } </style> -<style></style> <template> - <div class="all"> - <div class="title"> - <div class="logo"> - <img src="../../static/img/logo 1.png" /> - </div> - <div class="label">涓ぉ娴锋磱鏂颁竴浠om绯荤粺</div> - <div class="user"> - <el-avatar :size="24">{{ userName.substring(0, 1) }}</el-avatar> - <span>{{ userName }}</span> - <img src="../../static/img/閫�鍑�.png" @click="out" /> - </div> - </div> - <div class="left" :style="`width: ${leftOpen ? '92' : '0'}px;`"> - <div - :class="`box ${activeBox == 0 ? 'active_box' : ''}`" - @click="addTab(menu[0].c[0])" - > - <i class="font icon-shouye"></i> - <div>棣栭〉</div> - </div> - <div - :class="`box ${activeBox == 3 ? 'active_box' : ''}`" - @click="addTab(menu[1].c[0])" - > - <i class="font icon-jine"></i> - <div>閿�鍞鐞�</div> - </div> - <el-popover - placement="right-start" - width="90" - trigger="click" - v-for="(a, ai) in menu" - :key="ai" - v-if="a.k != '0' && a.k != '3'" - > - <div - :class="`box ${activeBox == a.k ? 'active_box' : ''}`" - @click="activeBox = a.k" - slot="reference" - > - <i :class="a.i"></i> - <div>{{ a.v }}</div> - </div> - <div class="small_menu"> - <p - v-for="(b, bi) in a.c" - :key="bi" - :class="activeP == b.k ? 'active_p' : ''" - @click="addTab(b)" - > - <i :class="b.i"></i> - <span>{{ b.v }}</span> - </p> - </div> - </el-popover> - </div> - <div - class="right" - :style="`width: calc(100% - ${leftOpen ? '92' : '0'}px);`" - > - <div class="tag"> - <i - :class="`${leftOpen ? 'el-icon-s-unfold' : 'el-icon-s-fold'}`" - @click="leftOpen = !leftOpen" - ></i> - <div class="tabs"> - <div - :class="`tab ${tabActive == a.k ? 'active_tab' : ''}`" - v-for="(a, ai) in tabs" - :key="ai" - @click="upTabActive(a.k)" - > - {{ a.v }} - <i - class="el-icon-close" - @click="removeTab(ai)" - v-if="tabActive != 0" - ></i> - </div> - </div> - </div> - <div class="component_view"> - <component - class="com_index" - v-for="(com, index) in tabs" - :is="com.u" - :key="upIndex + '|' + index" - v-show="com.k == tabActive" - > - </component> - </div> - </div> - </div> + <div class="all"> + <div class="title"> + <div class="logo"> + <img src="../../static/img/logo 1.png" /> + </div> + <div class="label">涓ぉ娴锋磱鏂颁竴浠om绯荤粺</div> + <div class="user"> + <el-avatar :size="24">{{ userName.substring(0, 1) }}</el-avatar> + <span>{{ userName }}</span> + <img src="../../static/img/閫�鍑�.png" @click="out" /> + </div> + </div> + <div class="left" :style="`width: ${leftOpen ? '92' : '0'}px;`"> + <div :class="`box ${activeBox == 0 ? 'active_box' : ''}`" @click="addTab(menu[0].c[0])"> + <i class="font icon-shouye"></i> + <div>棣栭〉</div> + </div> + <div :class="`box ${activeBox == 3 ? 'active_box' : ''}`" @click="addTab(menu[1].c[0])"> + <i class="font icon-jine"></i> + <div>閿�鍞鐞�</div> + </div> + <el-popover placement="right-start" width="90" trigger="click" v-for="(a, ai) in menu" :key="ai" + v-if="a.k != '0' && a.k != '3'"> + <div :class="`box ${activeBox == a.k ? 'active_box' : ''}`" @click="activeBox = a.k" slot="reference"> + <i :class="a.i"></i> + <div>{{ a.v }}</div> + </div> + <div class="small_menu"> + <p v-for="(b, bi) in a.c" :key="bi" :class="activeP == b.k ? 'active_p' : ''" @click="addTab(b)"> + <i :class="b.i"></i> + <span>{{ b.v }}</span> + </p> + </div> + </el-popover> + </div> + <div class="right" :style="`width: calc(100% - ${leftOpen ? '92' : '0'}px);`"> + <div class="tag"> + <i :class="`${leftOpen ? 'el-icon-s-unfold' : 'el-icon-s-fold'}`" @click="leftOpen = !leftOpen"></i> + <div class="tabs"> + <div :class="`tab ${tabActive == a.k ? 'active_tab' : ''}`" v-for="(a, ai) in tabs" :key="ai" + @click="upTabActive(a.k)"> + {{ a.v }} + <i class="el-icon-close" @click="removeTab(ai)" v-if="tabActive != 0"></i> + </div> + </div> + <i class="el-icon-delete" @click="allDel" title="鍒犻櫎鎵�鏈夋爣绛鹃〉"></i> + </div> + <div class="component_view"> + <component class="com_index" v-for="(com, index) in tabs" :is="com.u" :key="upIndex + '|' + index" + v-show="com.k == tabActive" @removeAllTab="removeAllTab"> + </component> + </div> + </div> + </div> </template> <script> -const requireComponent = require.context("../components/view", false, /\.vue/); -var comObj = {}; -requireComponent.keys().forEach(fileName => { - var names = fileName - .split("/") - .pop() - .replace(".vue", ""); - const componentConfig = requireComponent(fileName); - comObj[names] = componentConfig.default || componentConfig; -}); -export default { - components: comObj, - data() { - return { - userName: "value", - leftOpen: true, - menu: [ - { - k: 0, - v: "棣栭〉", - i: "font icon-shouye", - c: [ - { - k: 0, - v: "棣栭〉", - i: "font icon-shouye", - u: "index-index" - } - ] - }, - { - k: 3, - v: "閿�鍞鐞�", - i: "font icon-jine", - c: [ - { - k: 11, - v: "閿�鍞鐞�", - i: "font icon-jine", - u: "sale" - } - ] - }, - { - k: 1, - v: "鎶�鏈鐞�", - i: "font icon-ic_form_set24px", - c: [ - { - k: 1, - v: "鏍囧噯BOM", - i: "font icon-shouye", - u: "standard" - }, - { - k: 2, - v: "璁㈠崟BOM", - i: "font icon-shouye", - u: "technical" - } - ] - }, - { - k: 4, - v: "鐢熶骇绠$悊", - i: "font icon-shengchanguanli", - c: [ - { - k: 12, - v: "鐢熶骇璁㈠崟", - i: "font icon-shouye", - u: "" - }, - { - k: 13, - v: "鐢熶骇璁″垝", - i: "font icon-shouye", - u: "" - }, - { - k: 14, - v: "鐢熶骇鎶ュ伐", - i: "font icon-shouye", - u: "" - } - ] - }, - { - k: 5, - v: "WMS绠$悊", - i: "font icon-a-Inventorydumprequest", - c: [ - { - k: 15, - v: "鍘熸潗鏂欏簱瀛�", - i: "font icon-shouye", - u: "" - }, - { - k: 16, - v: "鍥炲崟绠$悊", - i: "font icon-shouye", - u: "" - }, - { - k: 17, - v: "鍗婃垚鍝佸簱瀛�", - i: "font icon-shouye", - u: "" - }, - { - k: 18, - v: "鎴愬搧搴撳瓨", - i: "font icon-shouye", - u: "" - }, - { - k: 19, - v: "鎴愬搧鍙戣揣", - i: "font icon-shouye", - u: "" - }, - { - k: 20, - v: "鎴愬搧鍏ュ簱", - i: "font icon-shouye", - u: "" - } - ] - }, - { - k: 2, - v: "QMS绠$悊", - i: "font icon-xunhuan", - c: [ - { - k: 3, - v: "鍘熸潗鏂欐楠�", - i: "font icon-shouye", - u: "rawInsBox" - }, - { - k: 4, - v: "鍘熸潗鏂欎笉鍚堟牸鍝�", - i: "font icon-shouye", - u: "rawUnqualifiedBox" - }, - { - k: 5, - v: "杩囩▼妫�楠�", - i: "font icon-shouye", - u: "processInspection" - }, - { - k: 6, - v: "鎴愬搧妫�楠�", - i: "font icon-shouye", - u: "finishedProductInspection" - }, - { - k: 7, - v: "涓嶅悎鏍煎搧绠$悊", - i: "font icon-shouye", - u: "unqualifiedManagement" - }, - { - k: 9, - v: "璐ㄩ噺缁熻", - i: "font icon-shouye", - u: "" - }, - { - k: 10, - v: "璁¢噺绠$悊", - i: "font icon-shouye", - u: "measurementManagement" - }, - { - k: 10.1, - v: "涓嶅悎鏍煎搧澶勭疆", - i: "font icon-shouye", - u: "Processingproducts" - } - ] - }, - { - k: 6, - v: "鏍哥畻绠$悊", - i: "font icon-caiwuhesuanxitong", - c: [ - { - k: 21, - v: "浜ч噺宸ヨ祫", - i: "font icon-shouye", - u: "" - }, - { - k: 22, - v: "鍛樺伐鍑哄嫟", - i: "font icon-shouye", - u: "" - } - ] - }, - { - k: 7, - v: "鍩虹鏁版嵁", - i: "font icon-a-ziyuan20", - c: [ - { - k: 23, - v: "鐢熶骇璁板綍缁存姢", - i: "font icon-shouye", - u: "record-content" - }, - { - k: 24, - v: "鑷椤圭洰缁存姢", - i: "font icon-shouye", - u: "self-inspection" - }, - { - k: 25, - v: "鎶�鏈寚鏍囩淮鎶�", - i: "font icon-shouye", - u: "Technicalindex" - }, - { - k: 26, - v: "宸ヨ壓璺嚎缁存姢", - i: "font icon-shouye", - u: "technology" - }, - { - k: 27, - v: "璁惧缁存姢", - i: "font icon-shouye", - u: "laboratoryManagement" - }, - { - k: 28, - v: "鐗╂枡娓呭崟缁存姢", - i: "font icon-shouye", - u: "mbom" - }, - // { - // k: 29, - // v: "宸℃椤圭洰缁存姢", - // i: "font icon-shouye", - // u: "routinginspection" - // }, - { - k: 30, - v: "鐢熶骇宸ヨ壓缁存姢", - i: "font icon-shouye", - u: "equipmentmaintain" - } - ] - } - ], - activeBox: 0, - activeP: 0, - tabActive: 0, - tabs: [ - { - k: 0, - v: "棣栭〉", - i: "font icon-shouye", - u: "index-index" - } - ], - upIndex: 0 - }; - }, - created() {}, - mounted() { - this.userName = JSON.parse(localStorage.getItem("user")).name; - }, - methods: { - addTab(ob) { - if (ob.k == 0) this.activeBox = 0; - if (ob.k == 11) this.activeBox = 3; - this.activeP = ob.k; //0 - this.tabActive = ob.k; //0 - let num = -1; - this.tabs.forEach((a, ai) => { - if (ob.k == a.k) { - num = a.k; - } - }); - // 濡傛灉娌℃湁閬嶅巻鍒皌abs閲屾病鏈夎ob瀵瑰簲鐨則able锛屽線tabs閲岄潰鍔犲叆璇b - if (num == -1) { - this.tabs.push(ob); - } - }, - removeTab(index) { - if (this.tabs.length > 1) { - this.tabs.splice(index, 1); - this.activeP = this.tabs[this.tabs.length - 1].k; - this.tabActive = this.tabs[this.tabs.length - 1].k; - } else { - this.$message.warning("涓嶈兘鍏抽棴鏈�鍚庣殑鏍囩"); - } - }, - upTabActive(num) { - this.tabActive = num; - this.activeP = num; - if (num == 0) { - this.activeBox = 0; - } else if (num > 0 && num <= 2) { - this.activeBox = 1; - } else if (num > 2 && num < 11) { - this.activeBox = 2; - } else if (num == 11) { - this.activeBox = 3; - } else if (num > 11 && num <= 14) { - this.activeBox = 4; - } else if (num > 14 && num <= 20) { - this.activeBox = 5; - } else if (num > 20 && num <= 22) { - this.activeBox = 6; - } else if (num > 22 && num <= 30) { - this.activeBox = 7; - } - }, - out() { - sessionStorage.clear(); - localStorage.removeItem("autoenter"); - this.$router.push("/enter"); - } - } -}; -</script> + const requireComponent = require.context("../components/view", false, /\.vue/); + var comObj = {}; + requireComponent.keys().forEach(fileName => { + var names = fileName + .split("/") + .pop() + .replace(".vue", ""); + const componentConfig = requireComponent(fileName); + comObj[names] = componentConfig.default || componentConfig; + }); + export default { + components: comObj, + data() { + return { + userName: "value", + leftOpen: true, + menu: [{ + k: 0, + v: "棣栭〉", + i: "font icon-shouye", + c: [{ + k: 0, + v: "棣栭〉", + i: "font icon-shouye", + u: "index-index" + }] + }, + { + k: 3, + v: "閿�鍞鐞�", + i: "font icon-jine", + c: [{ + k: 11, + v: "閿�鍞鐞�", + i: "font icon-jine", + u: "sale" + }] + }, + { + k: 1, + v: "鎶�鏈鐞�", + i: "font icon-ic_form_set24px", + c: [{ + k: 1, + v: "鏍囧噯BOM", + i: "font icon-shouye", + u: "standard" + }, + { + k: 2, + v: "璁㈠崟BOM", + i: "font icon-shouye", + u: "technical" + } + ] + }, + { + k: 4, + v: "鐢熶骇绠$悊", + i: "font icon-shengchanguanli", + c: [{ + k: 12, + v: "鐢熶骇璁㈠崟", + i: "font icon-shouye", + u: "" + }, + { + k: 13, + v: "鐢熶骇璁″垝", + i: "font icon-shouye", + u: "" + }, + { + k: 14, + v: "鐢熶骇鎶ュ伐", + i: "font icon-shouye", + u: "" + } + ] + }, + { + k: 5, + v: "WMS绠$悊", + i: "font icon-a-Inventorydumprequest", + c: [{ + k: 15, + v: "鍘熸潗鏂欏簱瀛�", + i: "font icon-shouye", + u: "" + }, + { + k: 16, + v: "鍥炲崟绠$悊", + i: "font icon-shouye", + u: "" + }, + { + k: 17, + v: "鍗婃垚鍝佸簱瀛�", + i: "font icon-shouye", + u: "" + }, + { + k: 18, + v: "鎴愬搧搴撳瓨", + i: "font icon-shouye", + u: "" + }, + { + k: 19, + v: "鎴愬搧鍙戣揣", + i: "font icon-shouye", + u: "" + }, + { + k: 20, + v: "鎴愬搧鍏ュ簱", + i: "font icon-shouye", + u: "" + } + ] + }, + { + k: 2, + v: "QMS绠$悊", + i: "font icon-xunhuan", + c: [{ + k: 3, + v: "鍘熸潗鏂欐楠�", + i: "font icon-shouye", + u: "rawInsBox" + }, + { + k: 4, + v: "鍘熸潗鏂欎笉鍚堟牸鍝�", + i: "font icon-shouye", + u: "rawUnqualifiedBox" + }, + { + k: 5, + v: "杩囩▼妫�楠�", + i: "font icon-shouye", + u: "processInspection" + }, + { + k: 6, + v: "鎴愬搧妫�楠�", + i: "font icon-shouye", + u: "finishedProductInspection" + }, + { + k: 7, + v: "涓嶅悎鏍煎搧绠$悊", + i: "font icon-shouye", + u: "unqualifiedManagement" + }, + { + k: 9, + v: "璐ㄩ噺缁熻", + i: "font icon-shouye", + u: "" + }, + { + k: 10, + v: "璁¢噺绠$悊", + i: "font icon-shouye", + u: "measurementManagement" + }, + { + k: 10.1, + v: "涓嶅悎鏍煎搧澶勭疆", + i: "font icon-shouye", + u: "Processingproducts" + } + ] + }, + { + k: 6, + v: "鏍哥畻绠$悊", + i: "font icon-caiwuhesuanxitong", + c: [{ + k: 21, + v: "浜ч噺宸ヨ祫", + i: "font icon-shouye", + u: "" + }, + { + k: 22, + v: "鍛樺伐鍑哄嫟", + i: "font icon-shouye", + u: "" + } + ] + }, + { + k: 7, + v: "鍩虹鏁版嵁", + i: "font icon-a-ziyuan20", + c: [{ + k: 23, + v: "鐢熶骇璁板綍缁存姢", + i: "font icon-shouye", + u: "record-content" + }, + { + k: 24, + v: "鑷椤圭洰缁存姢", + i: "font icon-shouye", + u: "self-inspection" + }, + { + k: 25, + v: "鎶�鏈寚鏍囩淮鎶�", + i: "font icon-shouye", + u: "Technicalindex" + }, + { + k: 26, + v: "宸ヨ壓璺嚎缁存姢", + i: "font icon-shouye", + u: "technology" + }, + { + k: 27, + v: "璁惧缁存姢", + i: "font icon-shouye", + u: "laboratoryManagement" + }, + { + k: 28, + v: "鐗╂枡娓呭崟缁存姢", + i: "font icon-shouye", + u: "mbom" + }, + { + k: 30, + v: "鐢熶骇宸ヨ壓缁存姢", + i: "font icon-shouye", + u: "equipmentmaintain" + } + ] + } + ], + activeBox: 0, + activeP: 0, + tabActive: 0, + tabs: [{ + k: 0, + v: "棣栭〉", + i: "font icon-shouye", + u: "index-index" + }], + upIndex: 0 + }; + }, + created() {}, + mounted() { + this.userName = JSON.parse(localStorage.getItem("user")).name; + }, + methods: { + addTab(ob) { + if (ob.k == 0) this.activeBox = 0; + if (ob.k == 11) this.activeBox = 3; + this.activeP = ob.k; //0 + this.tabActive = ob.k; //0 + let num = -1; + this.tabs.forEach((a, ai) => { + if (ob.k == a.k) { + num = a.k; + } + }); + // 濡傛灉娌℃湁閬嶅巻鍒皌abs閲屾病鏈夎ob瀵瑰簲鐨則able锛屽線tabs閲岄潰鍔犲叆璇b + if (num == -1) { + this.tabs.push(ob); + } + }, + removeTab(index) { + this.tabs.splice(index, 1); + this.activeP = this.tabs[this.tabs.length - 1].k; + this.tabActive = this.tabs[this.tabs.length - 1].k; + }, + allDel() { + this.activeBox = 0 + this.activeP = 0 + this.tabActive = 0 + this.tabs = [{ + k: 0, + v: " 棣栭〉", + i: "font icon-shouye", + u: "index-index" + }] + }, + + upTabActive(num) { + this.tabActive = num; + this.activeP = num; + for (var i = 0; i < this.menu.length; i++) { + this.menu[i].c.forEach(b => { + if (b.k == num) { + this.activeBox = this.menu[i].k; + return + } + }) + } + }, + out() { + sessionStorage.clear(); + localStorage.removeItem("autoenter"); + this.$router.push("/enter"); + }, + removeAllTab(){ + this.upIndex++ + } + } + }; +</script> \ No newline at end of file -- Gitblit v1.9.3