| | |
| | | * @version: |
| | | * @Date: 2024-06-26 15:31:43 |
| | | * @LastEditors: Ben Lin |
| | | * @LastEditTime: 2024-06-26 21:41:54 |
| | | * @LastEditTime: 2024-10-22 10:23:53 |
| | | --> |
| | | <template> |
| | | <GeneralTree |
| | |
| | | :treeData="treeData" |
| | | :create-icon="createIcon" |
| | | :fieldNames="fieldNames" |
| | | :beforeRightClick="getRightMenu" |
| | | ref="generalTree" |
| | | /><!-- |
| | | add |
| | | @handle-add="handleAdd" --> |
| | | </template> |
| | | <script lang="ts" setup> |
| | | import { Ref, inject, onMounted, ref } from 'vue'; |
| | | import { Ref, inject, nextTick, onMounted, ref } from 'vue'; |
| | | import { isNullOrUnDef } from '/@/utils/is'; |
| | | import GeneralTree from '/@/views/components/GeneralTree.vue'; |
| | | import { TreeItem } from '/@/components/TigerTree'; |
| | | import { EntityCustFunctionType } from '/@/api/tigerapi/model/basModel'; |
| | | import { EventDataNode } from 'ant-design-vue/es/tree'; |
| | | import { useProdRouteStore } from '/@/store/modules/prodRoute'; |
| | | |
| | | const emit = defineEmits(['select']); |
| | | const emit = defineEmits(['select', 'deletenode']); |
| | | const objParams = inject('objParams') as Ref<any>; |
| | | const nodeType = inject('nodeType') as Ref<any>; |
| | | const selectedNodes = inject('selectedNodes') as Ref<any>; |
| | | const useProdRoute = useProdRouteStore(); |
| | | const custImport = ref<any[]>([]); |
| | | const EntityCustFunction = ref([ |
| | | { |
| | | CreateIcon(params: Recordable<any>) {}, |
| | | SelectNode(selectedNodes: Ref<any[]>) {}, |
| | | GetRightMenuList(node: EventDataNode) {}, |
| | | } as EntityCustFunctionType, |
| | | ]); |
| | | /* 动态import实体名.ts的自定义方法 */ |
| | | try { |
| | | custImport.value = await import(`../entityts/${objParams.value['Name']}.ts`); |
| | | } catch (e) {} |
| | | const [{ CreateIcon, SelectNode }] = isNullOrUnDef(custImport.value['default']) |
| | | const [{ CreateIcon, SelectNode, fetchTreeData, GetRightMenuList }] = isNullOrUnDef( |
| | | custImport.value['default'], |
| | | ) |
| | | ? EntityCustFunction.value |
| | | : custImport.value['default'](); |
| | | const treeData = ref<TreeItem[]>([]); |
| | | const title = ref(''); |
| | | const fieldNames = ref({}); |
| | | const generalTree = ref(null); |
| | | const ExpandedKeys = ref([]); |
| | | |
| | | onMounted(async () => { |
| | | await fetch(objParams.value['Name']); |
| | | await nextTick(); |
| | | if (generalTree.value) { |
| | | generalTree.value.expandAll(true); |
| | | ExpandedKeys.value = generalTree.value.getExpandedKeys(); |
| | | if (useProdRoute.getCurSelectedNodes.some((q) => q.name == objParams.value['CODE'])) { |
| | | selectedNodes.value = useProdRoute.getCurSelectedNodes.filter( |
| | | (q) => q.name == objParams.value['CODE'], |
| | | )[0].SelectedNodes; |
| | | if (selectedNodes.value.length > 0) { |
| | | generalTree.value.setSelectedKeys([selectedNodes.value[0]?.tid]); |
| | | emit('select', SelectNode(selectedNodes, objParams.value['CODE'])); |
| | | } |
| | | } |
| | | } |
| | | }); |
| | | |
| | | /** |
| | |
| | | */ |
| | | async function fetch(type: string) { |
| | | if (!isNullOrUnDef(custImport.value)) { |
| | | const [{ fetchTreeData }] = custImport.value['default'](); |
| | | // const [{ fetchTreeData }] = custImport.value['default'](); |
| | | //根据type获取树形数据 |
| | | const data = await fetchTreeData(type, objParams.value['CODE']); |
| | | title.value = data.title; |
| | |
| | | } |
| | | |
| | | function handleSelect(Id = '', info) { |
| | | nodeType.value = info.selectedNodes[0].type; |
| | | selectedNodes.value = info.selectedNodes; |
| | | emit('select', SelectNode(selectedNodes)); |
| | | if (generalTree.value) { |
| | | const keys = generalTree.value.getSelectedKeys(); |
| | | console.log(keys); |
| | | } |
| | | emit('select', SelectNode(selectedNodes, objParams.value['CODE'])); |
| | | } |
| | | |
| | | /** |
| | |
| | | * @return {*} |
| | | */ |
| | | function UnSelect(node) { |
| | | nodeType.value = ''; |
| | | emit('select', SelectNode(undefined)); |
| | | emit('select', SelectNode(undefined, objParams.value['CODE'])); |
| | | // reload(); |
| | | } |
| | | |
| | | /** |
| | | * @description: 获取右键菜单列表,带入emit事件 |
| | | * @param {*} node |
| | | * @return {*} |
| | | */ |
| | | function getRightMenu(node: EventDataNode) { |
| | | return GetRightMenuList(node, emit, objParams.value['CODE']); |
| | | } |
| | | </script> |