From eef1ef0be935d4a3d8fc691b2666f41796b2d4a5 Mon Sep 17 00:00:00 2001 From: gaoshp <291585735@qq.com> Date: 星期一, 04 十一月 2024 19:57:08 +0800 Subject: [PATCH] 增加列表显示 --- src/views/mdc/MYTree.vue | 107 ++++++++++++++++++++++++++++++++++++++++++++--------- 1 files changed, 89 insertions(+), 18 deletions(-) diff --git a/src/views/mdc/MYTree.vue b/src/views/mdc/MYTree.vue index 9192086..06363fd 100644 --- a/src/views/mdc/MYTree.vue +++ b/src/views/mdc/MYTree.vue @@ -1,36 +1,64 @@ <!-- * @Date: 2024-04-18 19:53:35 - * @LastEditors: Sneed - * @LastEditTime: 2024-04-21 10:37:48 - * @FilePath: /belleson-frontend/Users/mache/Documents/demo/cps-web/src/views/mdc/MYTree.vue + * @LastEditors: gaoshp + * @LastEditTime: 2024-11-04 19:55:07 + * @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" @change="search" placeholder="" 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: { type: Boolean, default: false + }, + 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: [], @@ -46,17 +74,36 @@ this.$emit('update:modelValue', value) } }, - created() { + mounted() { this.getList() - this.customNodeClass = (data, node) => { - return this.currentNodeKey == node.id || this.value.includes(node.id) ? 'active' : '' + let key = this.$route.path + if (localStorage.getItem(key) === '1') { + this.showType = true } + console.log(this.$route, '>>>>>>') }, methods: { - renderContent(h, { data }) { + search() { + console.log('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 @@ -64,15 +111,17 @@ 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.tableData = data.filter(v => v.isWorkstation && v.title.indexOf(this.word) > -1) this.data = this.formatData(data) this.$nextTick(() => { this.currentNodeKey = this.firstWorkKey this.$emit('loaded', this.firstWorkKey) + this.$emit('request', data) }) } }) @@ -88,8 +137,15 @@ 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) => { + let children = this.formatData(data, v).sort((a, b) => { return b.sort - a.sort + }) + v.children = children.filter(v => { + if (v.isWorkstation) { + return v.title.indexOf(this.word) > -1 + } else { + return true + } }) this.setCurrentKey(v) return v @@ -98,8 +154,15 @@ 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) => { + let children = this.formatData(data, item).sort((a, b) => { return b.sort - a.sort + }) + item.children = children.filter(v => { + if (v.isWorkstation) { + return v.title.indexOf(this.word) > -1 + } else { + return true + } }) this.setCurrentKey(item) return item @@ -117,6 +180,10 @@ }, checkChange(data, data1, data2) { + console.log('>>>>>>>') + 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) }, }, @@ -124,7 +191,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