From 3e091224ab26252d8624b42b461ba773ee8bee0f Mon Sep 17 00:00:00 2001 From: gaoshp <291585735@qq.com> Date: 星期日, 03 十一月 2024 19:16:31 +0800 Subject: [PATCH] update --- src/views/home/widgets/index.vue | 189 +++++++++++++++++++++++++++++++++-------------- 1 files changed, 132 insertions(+), 57 deletions(-) diff --git a/src/views/home/widgets/index.vue b/src/views/home/widgets/index.vue index 93d9d19..837a33b 100644 --- a/src/views/home/widgets/index.vue +++ b/src/views/home/widgets/index.vue @@ -17,9 +17,9 @@ </div> <el-row :gutter="15"> <el-col v-for="(item, index) in grid.layout" v-bind:key="index" :md="item" :xs="24"> - <draggable v-model="grid.copmsList[index]" animation="200" handle=".customize-overlay" group="people" item-key="com" dragClass="aaaaa" force-fallback fallbackOnBody class="draggable-box"> + <draggable v-model="grid.copmsList[index]" animation="200" handle=".customize-overlay" group="people" item-key="com" dragClass="aaaaa" force-fallback fallbackOnBody class="draggable-box" @add="endDraggable"> <template #item="{ element }"> - <div class="widgets-item"> + <div class="widgets-item" :ref="element"> <component :is="allComps[element]"></component> <div v-if="customizing" class="customize-overlay"> <el-button class="close" type="danger" plain icon="el-icon-close" size="small" @click="remove(element)"></el-button> @@ -39,10 +39,9 @@ <div class="widgets-aside-title"><el-icon><el-icon-circle-plus-filled/></el-icon>娣诲姞閮ㄤ欢</div> <div class="widgets-aside-close" @click="close()"><el-icon><el-icon-close /></el-icon></div> </el-header> - {{grid.layout.join(',')}},xxxx <el-header style="height:auto"> <div class="selectLayout"> - <div class="selectLayout-item item01" :class="{active:grid.layout.join(',')=='12,6,6'}" @click="setLayout([12,6,6])"> + <!-- <div class="selectLayout-item item01" :class="{active:grid.layout.join(',')=='12,6,6'}" @click="setLayout([12,6,6])"> <el-row :gutter="2"> <el-col :span="12"><span></span></el-col> <el-col :span="6"><span></span></el-col> @@ -61,6 +60,14 @@ <el-col :span="24"><span></span></el-col> <el-col :span="24"><span></span></el-col> <el-col :span="24"><span></span></el-col> + </el-row> + </div> --> + <div class="selectLayout-item item04" :class="{active:grid.layout.join(',').indexOf('24,12,6,6')>-1}" @click="setLayout([24,12,6,6])"> + <el-row :gutter="2"> + <el-col :span="24"><span></span></el-col> + <el-col :span="12"><span></span></el-col> + <el-col :span="6"><span></span></el-col> + <el-col :span="6"><span></span></el-col> </el-row> </div> </div> @@ -83,7 +90,7 @@ </div> </el-main> <el-footer style="height:51px;"> - <el-button size="small" @click="backDefaul()">鎭㈠榛樿</el-button> + <el-button size="small" @click="backDefaul()">鍏抽棴</el-button> </el-footer> </el-container> </div> @@ -113,7 +120,7 @@ this.getWorkbenchCarList(); }, mounted() { - this.$emit('on-mounted') + this.$emit('on-mounted'); }, computed: { allCompsList(){ @@ -126,14 +133,7 @@ description: allComps[key].description }) } - var myCopmsList = this.grid.copmsList.reduce(function(a, b){return a.concat(b)}) - for(let comp of allCompsList){ - const _item = myCopmsList.find((item)=>{return item === comp.key}) - if(_item){ - comp.disabled = true - } - } - return allCompsList + return allCompsList; }, myCompsList(){ var copmsList = []; @@ -143,7 +143,6 @@ }) var myGrid = copmsList; this.$TOOL.data.set("DASHBOARDGRID", copmsList); - //return this.allCompsList.filter(item => !item.disabled && myGrid.includes(item.key)) return this.allCompsList; }, nowCompsList(){ @@ -156,6 +155,9 @@ } }, methods: { + endDraggable(e) { + //console.log(this.grid,e,111) + }, getWorkbenchCarList() { var data = this.$TOOL.data.get("MENU"); this.workid = data[0].children[0].id; //璁板綍绗竴涓猚hildren鐨刬d @@ -167,38 +169,83 @@ //鎸墆coordinate杩涜浠庡皬鍒板ぇ鎺掑簭锛屽鏋測coordinate涓�鏍锋椂锛屾寜鐓coordinate浠庡皬鍒板ぇ鎺掑簭 //cardWide浠h〃瀹藉害 //cardKey浠h〃缁勪欢鍚嶇О - cards.sort((a, b) => { - // 鍏堟瘮杈� ycoordinate - if (a.ycoordinate < b.ycoordinate) { - return -1; - } - if (a.ycoordinate > b.ycoordinate) { - return 1; - } - // 濡傛灉 ycoordinate 鐩稿悓锛屽垯姣旇緝 xcoordinate - if (a.xcoordinate < b.xcoordinate) { - return -1; - } - if (a.xcoordinate > b.xcoordinate) { - return 1; - } - // 濡傛灉 xcoordinate 涔熺浉鍚岋紝鍒欎笉浜ゆ崲浣嶇疆 - return 0; - }); - cards.forEach((item,index)=> { - this.$CONFIG.DEFAULT_GRID.copmsList[index] = [item.cardKey]; - this.$CONFIG.DEFAULT_GRID.layout[index] = item.cardWide * 2; - }) - console.log(this.$CONFIG.DEFAULT_GRID.copmsList,this.$CONFIG.DEFAULT_GRID.layout,234) - this.$CONFIG.DEFAULT_GRID.data = cards; + // cards.sort((a, b) => { + // // 鍏堟瘮杈� ycoordinate + // if (a.ycoordinate < b.ycoordinate) { + // return -1; + // } + // if (a.ycoordinate > b.ycoordinate) { + // return 1; + // } + // // 濡傛灉 ycoordinate 鐩稿悓锛屽垯姣旇緝 xcoordinate + // if (a.xcoordinate < b.xcoordinate) { + // return -1; + // } + // if (a.xcoordinate > b.xcoordinate) { + // return 1; + // } + // // 濡傛灉 xcoordinate 涔熺浉鍚岋紝鍒欎笉浜ゆ崲浣嶇疆 + // return 0; + // }); + // var layout = [...new Set(cards.map(v => v.cardWide *2))]; //甯冨眬 + // if(layout.length < 3) { + // layout = [24,12,6,6]; + // } + var result = {} + //鎺掑簭 + // cards.forEach(v=> { + // if(!result[`${v.cardWide}-${v.xcoordinate}`]) { + // result[`${v.cardWide}-${v.xcoordinate}`] = [] + // } + // result[`${v.cardWide}-${v.xcoordinate}`].push(v) + // }) + // let resdata = [] + // Object.values(result).forEach(v => { + // let min = v.sort((a,b) => a.ycoordinate - b.ycoordinate)[0]; + // let minYX = Number(min.ycoordinate)*10 + Number(min.xcoordinate); + // let obj = {}; + // obj[minYX] = v; + // resdata.push(obj); + // }) + // var lastData = resdata.map(v => Object.values(v)); + // //杞寲 + // var copmsList = lastData.map(function(outerArray) { + // // 璁块棶鏈�鍐呭眰鐨勫璞℃暟缁� + // var innerArray = outerArray[0]; + // return innerArray.map(function(obj) { + // return obj.cardKey; + // }); + // }); + //淇濊瘉鏈�4涓暟缁勶紝鎵嶈兘鎷栨嫿 + // var neededLength = 4 - copmsList.length; + // for (var i = 0; i < neededLength; i++) { + // copmsList.push([]); + // } + // this.$CONFIG.DEFAULT_GRID.copmsList = copmsList; + // this.$CONFIG.DEFAULT_GRID.layout = layout; + // this.$CONFIG.DEFAULT_GRID.data = cards; + //this.$CONFIG.DEFAULT_GRID.copmsList = [["mdcDeviceStatus"],["mdcRunning","mdcEquipmentRun"],[],[]] + if(res.data.length == 0) { + this.$CONFIG.DEFAULT_GRID.copmsList = [[],[],[],[]]; + }else { + var layoutConfig = JSON.parse(res.data[0].layoutConfig); + //涓嶆弧瓒�4锛岃ˉ瓒� + var newArr = [...layoutConfig]; + for (let i = 0; i < (4-newArr.length); i++) { + layoutConfig.push([]); + } + this.$CONFIG.DEFAULT_GRID.copmsList = res.data[0].layoutConfig == null?[]:layoutConfig; + } + this.$CONFIG.DEFAULT_GRID.layout = [24,12,6,6]; + this.$CONFIG.DEFAULT_GRID.data = res.data; this.defaultGrid = this.$CONFIG.DEFAULT_GRID; - this.grid = this.$TOOL.data.get("grid") || JSON.parse(JSON.stringify(this.defaultGrid)) + this.grid = this.$TOOL.data.get("grid") || JSON.parse(JSON.stringify(this.defaultGrid)); } }) }, //寮�鍚嚜瀹氫箟 custom(){ - this.customizing = true + this.customizing = true; const oldWidth = this.$refs.widgets.offsetWidth this.$nextTick(() => { const scale = this.$refs.widgets.offsetWidth / oldWidth @@ -216,28 +263,57 @@ }, //杩藉姞 push(item){ - let target = this.grid.copmsList[0] - target.push(item.key) + var that = this; + var target = this.grid; + if(this.grid.copmsList.length == 0) { + target.copmsList.push([item.key]); + }else { + target.copmsList[0].push(item.key) + } + this.$nextTick(()=> { + //var height = String(Math.floor(this.$refs.Access[0].offsetHeight/ 57)); + //item.cardLength = height; + //item.cardWide = '12'; + //item.xcoordinate = '0'; + //item.ycoordinate = '4'; + item.cardKey = item.key; + item.workbenchId = that.workid; + target.data.push(item); + }) }, //闅愯棌缁勪欢 remove(item){ - var newCopmsList = this.grid.copmsList - newCopmsList.forEach((obj, index) => { - var newObj = obj.filter(o=>o!=item) - newCopmsList[index] = newObj; + this.$nextTick(()=> { + var newCopmsList = this.grid.copmsList; + newCopmsList.forEach((obj, index) => { + var newObj = obj.filter(o=>o!=item) + newCopmsList[index] = newObj; + }) + this.grid.data.forEach((item1,index1)=> { + if(item1.cardKey == item) { + this.grid.data.splice(index1,1); + } + }) }) }, //淇濆瓨 save(){ this.customizing = false this.$refs.widgets.style.removeProperty('transform') - this.$TOOL.data.set("grid", this.grid) + this.$TOOL.data.set("grid", this.grid); + //this.apiResource.workStationIdList //淇濆瓨鎺ュ彛 - var copmsList = this.grid.copmsList; - var flattened = copmsList.reduce((acc, val) => acc.concat(val), []); //鎵佸钩鍖� - var data = this.grid.data.filter(item=>flattened.includes(item.cardKey)); + //var copmsList = this.grid.copmsList; + //var flattened = copmsList.reduce((acc, val) => acc.concat(val), []); //鎵佸钩鍖� + //var data = this.grid.data.filter(item=>this.nowCompsList.includes(item.cardKey)); + this.grid.data.forEach(item=> { + item.layoutConfig = JSON.stringify(this.grid.copmsList); + if(item.cardKey == "mdcRunning") { + item.apiResource = JSON.stringify({workStationIdList: []}) + } + }) var obj = { - workbenchCardAddVOList: data, + workbenchCardAddVOList: this.grid.data, workbenchId: this.workid } this.$HTTP.post(`/api/blade-system/workbench-card/create-workbench-card`,obj).then(res=> { @@ -245,14 +321,13 @@ this.$message.success("鎿嶄綔鎴愬姛"); } }) - console.log(this.grid,111) }, //鎭㈠榛樿 backDefaul(){ this.customizing = false this.$refs.widgets.style.removeProperty('transform') - this.grid = JSON.parse(JSON.stringify(this.defaultGrid)) - this.$TOOL.data.remove("grid") + // this.grid = JSON.parse(JSON.stringify(this.defaultGrid)) + // this.$TOOL.data.remove("grid") }, //鍏抽棴 close(){ @@ -304,8 +379,8 @@ .selectLayout {width: 100%;display: flex;} .selectLayout-item {width:60px;height:60px;border: 2px solid var(--el-border-color-light);padding:5px;cursor: pointer;margin-right: 15px;} .selectLayout-item span {display: block;background: var(--el-border-color-light);height:46px;} - .selectLayout-item.item02 span {height:30px;} - .selectLayout-item.item02 .el-col:nth-child(1) span {height:14px;margin-bottom: 2px;} + .selectLayout-item.item02 span,.selectLayout-item.item04 span {height:30px;} + .selectLayout-item.item02 .el-col:nth-child(1) span,.selectLayout-item.item04 .el-col:nth-child(1) span {height:14px;margin-bottom: 2px;} .selectLayout-item.item03 span {height:14px;margin-bottom: 2px;} .selectLayout-item:hover {border-color: var(--el-color-primary);} .selectLayout-item.active {border-color: var(--el-color-primary);} -- Gitblit v1.9.3