From e2fdfe540eaf160dc7d063c60667041edcc64e86 Mon Sep 17 00:00:00 2001
From: gaoshp <291585735@qq.com>
Date: 星期二, 05 十一月 2024 22:55:14 +0800
Subject: [PATCH] 处理显示名称

---
 src/views/mdc/MYTree.vue |   97 ++++++++++++++++++++++++++++++++++++------------
 1 files changed, 73 insertions(+), 24 deletions(-)

diff --git a/src/views/mdc/MYTree.vue b/src/views/mdc/MYTree.vue
index 687ad0d..f9b59f0 100644
--- a/src/views/mdc/MYTree.vue
+++ b/src/views/mdc/MYTree.vue
@@ -1,17 +1,30 @@
 <!--
  * @Date: 2024-04-18 19:53:35
- * @LastEditors: Sneed
- * @LastEditTime: 2024-04-23 23:09:18
- * @FilePath: /belleson-frontend/Users/mache/Documents/demo/cps-web/src/views/mdc/MYTree.vue
+ * @LastEditors: gaoshp
+ * @LastEditTime: 2024-11-04 20:05:01
+ * @FilePath: /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 :expand-on-click-node="false" :render-content="renderContent"></el-tree>
+    <el-input v-model="word" style="max-width: 600px" placeholder="" @change="search" class="input-with-select">
+        <template #append>
+            <el-button :icon="ElementPlusIconsVue.Search" />
+        </template>
+    </el-input>
+    <el-switch v-model="showType" active-text="鍒楄〃" inactive-text="鏍戠姸" @change="switchFn" />
+    <el-tree v-show="!showType" :expand-on-click-node="false" 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
+        :render-content="renderContent"></el-tree>
+    <el-table v-show="showType" :data="tableData" @selection-change="handleSelectionChange" highlight-current-row
+        :current-row-key="currentNodeKey" row-key="id" @row-click="rowClick">
+        <el-table-column v-if="showCheckbox" type="selection" :selectable="selectable" width="55" />
+        <el-table-column prop="title" label="宸ヤ綅鍚嶇О" />
+    </el-table>
 </template>
 
 <script>
 import pmsPng from '@/assets/pms.png'
+import * as ElementPlusIconsVue from '@element-plus/icons-vue'
 export default {
     props: {
         showCheckbox: {
@@ -21,20 +34,31 @@
         getAll: {
             type: Boolean,
             default: false
+        },
+        props: {
+            type: Object,
+            default: () => {
+                return {}
+            }
         }
     },
     data() {
         return {
+            ElementPlusIconsVue,
+            word: '',
+            showType: false, // 鏄剧ず绫诲瀷
+            tableData: [],
             pmsPng,
             firstWorkKey: '',
             currentNodeKey: [],
             defalutProps: {
                 label: 'title',
                 children: 'children',
-                disabled: 'disabled',
+                disabled: this.showCheckbox ? '' : 'disabled',
                 class: (data, node) => {
                     return this.value.includes(data.id) ? 'active' : ''
-                }
+                },
+                ...this.props
             },
             data: [],
             value: [],
@@ -50,14 +74,35 @@
             this.$emit('update:modelValue', value)
         }
     },
-    created() {
+    mounted() {
         this.getList()
+        let key = this.$route.path
+        if (localStorage.getItem(key) === '1') {
+            this.showType = true
+        }
+        console.log(this.$route, '>>>>>>')
     },
     methods: {
-        renderContent(h, { data }) {
+        search() {
+            this.getList()
+        },
+        switchFn(val) {
+            console.log(this.$route, val, '>>>>>>')
+            localStorage.setItem(this.$route.path, val ? '1' : '0')
+        },
+        handleSelectionChange(selection) {
+            this.value = selection.map(v => v.id)
+        },
+        rowClick(row) {
+            this.currentNodeKey = row.id
+        },
+        renderContent(h, { data, node }) {
             let img = data.groupTag == 'fms_beltline'
             return h('a', {
-                disabled: data.disabled
+                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
@@ -65,24 +110,23 @@
                 data.title)
         },
         getList() {
-            this.$HTTP.post('/api/blade-cps/group/groupWorkstation/type', {
+            this.$HTTP.post('/api/smis/group/groupWorkstation/type', {
                 groupCategory: 1,
                 groupType: "group_workstation"
             }).then(({ code, data }) => {
                 if (code === 200) {
-                    this.data = this.formatData(data)
+                    this.tableData = data.filter(v => v.isWorkstation && v.title.indexOf(this.word) > -1)
+                    this.data = this.formatData(data.filter(v => !v.isWorkstation || (v.isWorkstation && v.title.indexOf(this.word) > -1)))
                     this.$nextTick(() => {
-                        this.currentNodeKey = this.firstWorkKey
-                        this.$emit('loaded', this.firstWorkKey)
+                        this.setCurrentKey(data)
+                        this.$emit('loaded', this.currentNodeKey)
+                        this.$emit('request', data)
                     })
                 }
             })
         },
-        setCurrentKey(v) {
-            if (this.firstWorkKey) return
-            if (v.isWorkstation) {
-                this.firstWorkKey = v.id
-            }
+        setCurrentKey(data) {
+            this.currentNodeKey = data.find(v => v.isWorkstation && v.title.indexOf(this.word) > -1).id
         },
         formatData(data, current) {
             let newData = []
@@ -92,7 +136,7 @@
                     v.children = this.formatData(data, v).sort((a, b) => {
                         return b.sort - a.sort
                     })
-                    this.setCurrentKey(v)
+                    // this.setCurrentKey(v)
                     return v
                 })
             } else {
@@ -102,7 +146,7 @@
                     item.children = this.formatData(data, item).sort((a, b) => {
                         return b.sort - a.sort
                     })
-                    this.setCurrentKey(item)
+                    // this.setCurrentKey(item)
                     return item
                 })
                 return res
@@ -118,6 +162,7 @@
 
         },
         checkChange(data, data1, data2) {
+            console.log('>>>>>>>')
             if (this.getAll) {
                 return this.value = this.$refs.treeRef.getCheckedNodes().filter(v => v.isWorkstation)
             }
@@ -128,7 +173,11 @@
 </script>
 
 <style lang="scss">
-.active .el-tree-node__content {
-    background: var(--el-color-primary) !important;
+.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