From c37378f2b4cfde6cc4ac244e1272f135f6ff8eab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=AE=89=E8=99=B9=E7=9D=BF?= <297504645@qq.com> Date: Tue, 23 Apr 2024 17:30:46 +0800 Subject: [PATCH] =?UTF-8?q?=E3=80=90nev-pc=E3=80=91=E5=AE=A2=E6=88=B7?= =?UTF-8?q?=E9=80=80=E6=8B=86=E6=9A=82=E5=AD=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- fe/PC/src/utils/index.js | 9 + .../dismantle/StepsFormTree/index.vue | 142 +++-- .../{okk_el.vue => index_ischeck.vue} | 193 ++++++- .../StepsFormTree/okk_currenTable.vue | 542 ------------------ .../dismantle/customerDismantleJob.vue | 112 +++- 5 files changed, 354 insertions(+), 644 deletions(-) rename fe/PC/src/views/finishedProductManage/dismantle/StepsFormTree/{okk_el.vue => index_ischeck.vue} (67%) delete mode 100644 fe/PC/src/views/finishedProductManage/dismantle/StepsFormTree/okk_currenTable.vue diff --git a/fe/PC/src/utils/index.js b/fe/PC/src/utils/index.js index 0260109b7..4948f5f9e 100644 --- a/fe/PC/src/utils/index.js +++ b/fe/PC/src/utils/index.js @@ -555,4 +555,13 @@ export function initDataToHttpFormat (date) { // 新建浏览器标签页面 export function createNewTabs (url) { window.open(url, "_blank") +} + +// 生成UUID +export function generateUUID() { + return 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) { + const r = crypto.randomBytes(1)[0] % 16 | 0, + v = c === 'x' ? r : (r & 0x3 | 0x8); + return v.toString(16); + }); } \ No newline at end of file diff --git a/fe/PC/src/views/finishedProductManage/dismantle/StepsFormTree/index.vue b/fe/PC/src/views/finishedProductManage/dismantle/StepsFormTree/index.vue index a017ac27e..d257b48a8 100644 --- a/fe/PC/src/views/finishedProductManage/dismantle/StepsFormTree/index.vue +++ b/fe/PC/src/views/finishedProductManage/dismantle/StepsFormTree/index.vue @@ -63,7 +63,6 @@ @select="tableHandleSelect" @select-all="tableHandleSelectAll" :tree-props="{children: 'children', hasChildren: 'hasChildren'}"> - 0){ + const _res = this.findAllPeer(row,data[i][this.config.children]) + if(_res) _peerArr = _res + } } } - console.log('获取所有同级',_peerArr) return _peerArr }, - // todo:【选中】勾选递归:获取所有同级(同级下的chilred未被选中的) + // 递归:获取所有子集 + findChildren(row,data){ + let _childrenArr = []//子集 + if(!data){data = this.CreateFormData.details} + for(let i = 0;i 0){ + const _res = this.findChildren(row,data[i][this.config.children]) + if(_res) _childrenArr = _res + } + } + } + return _childrenArr + }, + // 【选中】勾选递归:获取同级(同级下的chilred未被选中的) findPeerForCheckHandle(row,data){ + // debugger if(!data){data = this.CreateFormData.details} - let _peerArr = []//同级 + let _peerArr = null//同级 for(let i = 0;i{ - if(item.children && item.children.length > 0){ + _peerArr = [] + data[i][this.config.children].forEach(item=>{ + if(item[this.config.children] && item[this.config.children].length > 0){ let sonHasCheck = 0 - item.children.forEach(son=>{ + item[this.config.children].forEach(son=>{ if(son.isCheck){sonHasCheck ++} }) if(sonHasCheck == 0){ @@ -421,48 +447,37 @@ export default { }) break } - else{ - console.log("bbb") - if(data[i].children && data[i].children.length > 0){ - this.findPeerForCheckHandle(row,data[i].children) + else { + if(data[i][this.config.children] && data[i][this.config.children].length > 0){ + const _res = this.findPeerForCheckHandle(row,data[i][this.config.children]) + if(_res) _peerArr = _res } } } - console.log('获取所有同级(同级下的chilred未被选中的)',_peerArr) return _peerArr }, - // todo:【选中】勾选递归:获取父级的所有同级(同级下的chilred未被选中的) - findParentPeerForCheckHandle(row,data){ + // 获取父级 + findParentRow(row,data){ if(!data){data = this.CreateFormData.details} - let _parentPeerArr = []//父级同级 let _parentRow = null//父级 for(let i = 0;i 0){ - this.findParentPeerForCheckHandle(row,data[i].children) + if(data[i][this.config.children] && data[i][this.config.children].length > 0){ + const _res = this.findParentRow(row,data[i][this.config.children]) + if(_res) _parentRow = _res } } } - console.log(442,_parentRow) - // if(_parentRow){ - // _parentPeerArr = this.findPeerForCheckHandle(_parentRow) - // } - // console.log('获取父级的同级(同级下的chilred未被选中的)',_parentPeerArr) - return _parentPeerArr - }, - // todo:【取消】勾选递归:如果他父级的同级有选中,获取父级 - findPeerForCancleCheckHandle(row){ + return _parentRow }, // 1、选择的时候,同级默认选择,父级的同级(子集未被勾选的)默认选择 // 2、取消勾选的时候,同级取消选择,父级的同级如果有被勾选,则父级默认选择 // 3、全选,最底层选中 // 4、全不选,全不不选择 - // 选择操作 + // 选择操作 todo:isCheck 有问题 tableHandleSelect(selection, row){ this.selectData = selection const isCheck = selection.length && selection.indexOf(row) !== -1 @@ -470,21 +485,46 @@ export default { if (isCheck) { row.isCheck = true console.log("勾选",selection, row) - console.log(472,this.CreateFormData.details) let _peerArr = this.findPeerForCheckHandle(row) - // let _parentPeerArr = this.findParentPeerForCheckHandle(row) - // let _allCheck = [..._peerArr,..._parentPeerArr] + let _parentRow = this.findParentRow(row) + let _parentPeerArr = _parentRow ? this.findPeerForCheckHandle(_parentRow) : [] + let _allCheck = [..._peerArr,..._parentPeerArr] + let _childrenArr = this.findChildren(row) + // 勾选时:依次为将同级及父级同级选中,父级清空选中,子集清空 this.$nextTick(()=>{ - this.toggleSelection(_peerArr,true) + this.toggleSelection(_allCheck,true) + _allCheck.forEach(item=>{item.isCheck = true}) + this.toggleSelection([_parentRow],false) + _parentRow.isCheck = false + this.toggleSelection(_childrenArr,false) + _childrenArr.forEach(item=>{item.isCheck = false}) }) }else{ // 同级取消勾选 row.isCheck = false - let _peerArr = this.findPeer(row) + let _peerArr = this.findAllPeer(row)//同级arr + let _parentRow = this.findParentRow(row)//父级row + let _parentPeerArr = _parentRow ? this.findAllPeer(_parentRow) : []//父级同级arr + let _parentPeerSonArr = []//父级同级的子集arr + _parentPeerArr.forEach(item=>{ + item.isCheck = false + _parentPeerSonArr = [..._parentPeerSonArr,...this.findChildren(item)] + }) + let _parentPeerShow = 0 + // 判断父级的同级是否有选中 + _parentPeerArr.forEach(item=>{if(item.isCheck){_parentPeerShow ++}}) + console.log(513,_parentRow) + // 取消时:依次为同级取消选中,父级选中(如果父级的同级有选中,且不是最外层),父级的同级的子集取消选中 this.$nextTick(()=>{ this.toggleSelection(_peerArr,false) + _peerArr.forEach(item=>{item.isCheck = false}) + if((_parentPeerShow > 0 || row.parentId == _parentRow.id) && _parentRow.id != _parentRow.parentId){ + this.toggleSelection([_parentRow],true) + _parentRow.isCheck = true + } + this.toggleSelection(_parentPeerSonArr,false) + _parentPeerSonArr.forEach(item=>{item.isCheck = false}) }) - // 取消的时候,如果他父级的同级有选中,则他的父级选中 console.log("取消勾选",selection, row) } }, @@ -493,11 +533,11 @@ export default { for (let i = 0; i < root.length; i++) { if (root[i] == null) return 0 // 没有children - if (!root[i].children?.length) { + if (!root[i][this.config.children]?.length) { deepArr.push(root[i]) } else { onePathDeep++ - this.getLastFloors(root[i].children, onePathDeep, deepArr) + this.getLastFloors(root[i][this.config.children], onePathDeep, deepArr) } } return deepArr; @@ -651,4 +691,12 @@ export default { \ No newline at end of file diff --git a/fe/PC/src/views/finishedProductManage/dismantle/StepsFormTree/okk_el.vue b/fe/PC/src/views/finishedProductManage/dismantle/StepsFormTree/index_ischeck.vue similarity index 67% rename from fe/PC/src/views/finishedProductManage/dismantle/StepsFormTree/okk_el.vue rename to fe/PC/src/views/finishedProductManage/dismantle/StepsFormTree/index_ischeck.vue index 9ead6920b..ad3a07c90 100644 --- a/fe/PC/src/views/finishedProductManage/dismantle/StepsFormTree/okk_el.vue +++ b/fe/PC/src/views/finishedProductManage/dismantle/StepsFormTree/index_ischeck.vue @@ -8,7 +8,8 @@ :append-to-body="false" :modal="false" :modal-append-to-body="false" - :show-close="false" + :show-close="true" + @close="close(0)" >
父级物料代码:{{ propsData.details[0].itemCode }} + :prop="detailsTableColumns[2].prop" + :label="detailsTableColumns[2].label" + >