From d5d5fa605542dd629bd9ff9bebf3f3102e7c130c Mon Sep 17 00:00:00 2001 From: yanran200730 Date: Thu, 12 May 2022 15:25:31 +0800 Subject: [PATCH] =?UTF-8?q?=E5=85=9A=E5=BB=BA=E5=A4=A7=E5=B1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../designer/components/RenderElement.vue | 4 +- .../bigscreen/viewer/AppGigscreenViewer.vue | 2 +- .../components/AiDvPartyOrg/AiDvPartyOrg.vue | 202 +++++++++++++++++- 3 files changed, 200 insertions(+), 8 deletions(-) diff --git a/packages/bigscreen/designer/components/RenderElement.vue b/packages/bigscreen/designer/components/RenderElement.vue index e7332383..622c6a70 100644 --- a/packages/bigscreen/designer/components/RenderElement.vue +++ b/packages/bigscreen/designer/components/RenderElement.vue @@ -138,7 +138,7 @@ - + @@ -156,7 +156,7 @@ export default { name: 'RenderElement', - props: ['data', 'index', 'theme'], + props: ['data', 'index', 'theme', 'instance'], components: { AiSwiper diff --git a/packages/bigscreen/viewer/AppGigscreenViewer.vue b/packages/bigscreen/viewer/AppGigscreenViewer.vue index cc6cd85f..69f7a041 100644 --- a/packages/bigscreen/viewer/AppGigscreenViewer.vue +++ b/packages/bigscreen/viewer/AppGigscreenViewer.vue @@ -14,7 +14,7 @@ }" v-for="(item, index) in componentList" :key="index"> - + diff --git a/project/dvui/components/AiDvPartyOrg/AiDvPartyOrg.vue b/project/dvui/components/AiDvPartyOrg/AiDvPartyOrg.vue index 8de97150..eeddf4cf 100644 --- a/project/dvui/components/AiDvPartyOrg/AiDvPartyOrg.vue +++ b/project/dvui/components/AiDvPartyOrg/AiDvPartyOrg.vue @@ -1,6 +1,17 @@ @@ -9,7 +20,9 @@ import 'vue-okr-tree/dist/vue-okr-tree.css' export default { - name: 'AiPartyOrg', + name: 'AiDvPartyOrg', + + props: ['instance'], components: { VueOkrTree @@ -17,16 +30,195 @@ data () { return { - + scale: 1, + x: '50%', + y: '50%', + treeData: [], + props: { + label: 'name', + children: 'children' + } } }, - methods: { + mounted () { + this.bindEvent() + this.getPartyOrg() + }, + destroyed () { + document.querySelector('body').removeEventListener('mousewheel', this.onMousewheel) + document.querySelector('body').removeEventListener('mouseup', this.onMouseUp) + document.querySelector('body').removeEventListener('mousedown', this.onMousedown) + document.querySelector('body').removeEventListener('mousemove', this.onMouseMove) + }, + + methods: { + bindEvent () { + document.querySelector('body').addEventListener('mousewheel', this.onMousewheel, true) + document.querySelector('body').addEventListener('mouseup', this.onMouseUp, true) + document.querySelector('body').addEventListener('mousedown', this.onMousedown, true) + document.querySelector('body').addEventListener('mousemove', this.onMouseMove, true) + }, + + onMousewheel (event) { + if (!event) return false + const elClass = event.target.className + if (elClass === 'tree' || elClass === 'middle' || (elClass && (elClass.indexOf('chart') > -1 || elClass.indexOf('user') > -1))) { + var dir = event.deltaY > 0 ? 'Up' : 'Down' + if (dir === 'Up') { + this.scale = this.scale - 0.2 <= 0.1 ? 0.1 : this.scale - 0.2 + } else { + this.scale = this.scale + 0.2 + } + } + + return false + }, + + onMousedown (e) { + const elClass = e.target.className + if ((elClass && (elClass.indexOf('chart') > -1 || elClass.indexOf('user') > -1))) { + const left = document.querySelector('#tree').offsetLeft + const top = document.querySelector('#tree').offsetTop + this.isMove = true + this.offsetX = e.clientX - left + this.offsetY = e.clientY - top + } + }, + + onMouseMove (e) { + if (!this.isMove) return + + this.x = (e.clientX - this.offsetX) + 'px' + this.y = (e.clientY - this.offsetY) + 'px' + }, + + onMouseUp () { + this.isMove = false + }, + + getPartyOrg () { + this.instance.post('/app/partyOrganization/queryPartyOrganizationServiceList').then(res => { + if (res.code === 0) { + this.treeData = res.data.filter(e => !e.parentId) + this.treeData.map(p => this.addChild(p, res.data.map(v => { + return { + ...v, + name: v.name.substr(0, 12) + } + }), {parent: 'parentId'})) + + this.$nextTick(() => { + this.autoScale() + }) + } + }) + }, + + autoScale () { + const treeWidth = this.$refs.tree.offsetWidth + const containerWidth = this.$refs.container.offsetWidth + this.scale = treeWidth < containerWidth ? 1 : containerWidth / treeWidth + this.x = '50%' + this.y = '50%' + } } }