From dcf9c9e0410fe1186239e3f8d6f7bdc789c08010 Mon Sep 17 00:00:00 2001
From: lzhe <lzhe@example.com>
Date: 星期三, 05 六月 2024 18:00:39 +0800
Subject: [PATCH] 1

---
 src/views/mdc/MYTree.vue |   58 +++++++++++++++++++++++++++++++++++++++++++++++++++-------
 1 files changed, 51 insertions(+), 7 deletions(-)

diff --git a/src/views/mdc/MYTree.vue b/src/views/mdc/MYTree.vue
index c54ec8f..1713833 100644
--- a/src/views/mdc/MYTree.vue
+++ b/src/views/mdc/MYTree.vue
@@ -1,33 +1,50 @@
 <!--
  * @Date: 2024-04-18 19:53:35
  * @LastEditors: Sneed
- * @LastEditTime: 2024-04-18 20:56:37
+ * @LastEditTime: 2024-06-04 21:33:08
  * @FilePath: /belleson-frontend/Users/mache/Documents/demo/cps-web/src/views/mdc/MYTree.vue
 -->
 <template>
     <el-tree ref="treeRef" v-bind="$attrs" :show-checkbox="showCheckbox" :current-node-key="currentNodeKey"
         node-key="id" :props="defalutProps" :data="data" @check-change="checkChange" @node-click="handleNodeClick"
-        highlight-current default-expand-all></el-tree>
+        highlight-current default-expand-all :expand-on-click-node="false" :render-content="renderContent"></el-tree>
 </template>
 
 <script>
+import pmsPng from '@/assets/pms.png'
 export default {
     props: {
         showCheckbox: {
             type: Boolean,
             default: false
+        },
+        getAll: {
+            type: Boolean,
+            default: false
+        },
+        props: {
+            type: Object,
+            default: () => {
+                return {}
+            }
         }
     },
     data() {
         return {
+            pmsPng,
             firstWorkKey: '',
-            currentNodeKey: '',
+            currentNodeKey: [],
             defalutProps: {
                 label: 'title',
-                children: 'children'
+                children: 'children',
+                disabled: this.showCheckbox ? '' : 'disabled',
+                class: (data, node) => {
+                    return this.value.includes(data.id) ? 'active' : ''
+                },
+                ...this.props
             },
             data: [],
-            value: []
+            value: [],
         }
     },
     watch: {
@@ -44,6 +61,19 @@
         this.getList()
     },
     methods: {
+        renderContent(h, { data, node }) {
+            let img = data.groupTag == 'fms_beltline'
+            return h('a', {
+                class: {
+                    disabled: this.props.disabled ? this.props.disabled(data, node) : data.disabled
+                },
+                disabled: this.props.disabled ? this.props.disabled(data, node) : data.disabled
+            },
+                img ? h('img', {
+                    src: pmsPng
+                }, '') : '',
+                data.title)
+        },
         getList() {
             this.$HTTP.post('/api/blade-cps/group/groupWorkstation/type', {
                 groupCategory: 1,
@@ -53,6 +83,8 @@
                     this.data = this.formatData(data)
                     this.$nextTick(() => {
                         this.currentNodeKey = this.firstWorkKey
+                        this.$emit('loaded', this.firstWorkKey)
+                        this.$emit('request', data)
                     })
                 }
             })
@@ -67,6 +99,7 @@
             let newData = []
             if (!current) {
                 newData = data.filter(item => item.parentId == 0).map(v => {
+                    if (!v.isWorkstation) v.disabled = true
                     v.children = this.formatData(data, v).sort((a, b) => {
                         return b.sort - a.sort
                     })
@@ -76,6 +109,7 @@
             } else {
                 let res = data.filter(v => v.parentId == current.id)
                 res = res.map(item => {
+                    if (!item.isWorkstation) item.disabled = true
                     item.children = this.formatData(data, item).sort((a, b) => {
                         return b.sort - a.sort
                     })
@@ -87,7 +121,6 @@
             return newData
         },
         handleNodeClick(node) {
-            console.log(node)
             this.$nextTick(() => {
                 if (node.isWorkstation) {
                     this.currentNodeKey = node.id
@@ -96,10 +129,21 @@
 
         },
         checkChange(data, data1, data2) {
+            if (this.getAll) {
+                return this.value = this.$refs.treeRef.getCheckedNodes().filter(v => v.isWorkstation)
+            }
             this.value = this.$refs.treeRef.getCheckedNodes().filter(v => v.isWorkstation).map(item => item.id)
         },
     },
 }
 </script>
 
-<style lang="scss" scoped></style>
\ No newline at end of file
+<style lang="scss">
+.is-current .el-tree-node__content {
+    background: var(--el-color-primary) !important;
+}
+
+a.disabled {
+    color: #ccc;
+}
+</style>
\ No newline at end of file

--
Gitblit v1.9.3