From 5e440a7dc434c43eb828fa62cf9c12b0078b8565 Mon Sep 17 00:00:00 2001 From: 疯狂的狮子Li <15040126243@163.com> Date: 星期一, 20 一月 2025 11:36:18 +0800 Subject: [PATCH] !173 发布 5.3.0-BETA 公测版本 Merge pull request !173 from 疯狂的狮子Li/dev --- src/views/demo/tree/index.vue | 175 +++++++++++++++++++++++++-------------------------------- 1 files changed, 77 insertions(+), 98 deletions(-) diff --git a/src/views/demo/tree/index.vue b/src/views/demo/tree/index.vue index 6981365..566d071 100644 --- a/src/views/demo/tree/index.vue +++ b/src/views/demo/tree/index.vue @@ -1,9 +1,9 @@ <template> <div class="p-2"> <transition :enter-active-class="proxy?.animate.searchAnimate.enter" :leave-active-class="proxy?.animate.searchAnimate.leave"> - <div class="mb-[10px]" v-show="showSearch"> + <div v-show="showSearch" class="mb-[10px]"> <el-card shadow="hover"> - <el-form :model="queryParams" ref="queryFormRef" :inline="true" label-width="68px"> + <el-form ref="queryFormRef" :model="queryParams" :inline="true"> <el-form-item label="鏍戣妭鐐瑰悕" prop="treeName"> <el-input v-model="queryParams.treeName" placeholder="璇疯緭鍏ユ爲鑺傜偣鍚�" clearable @keyup.enter="handleQuery" /> </el-form-item> @@ -16,25 +16,25 @@ </div> </transition> - <el-card shadow="never"> + <el-card shadow="hover"> <template #header> <el-row :gutter="10" class="mb8"> <el-col :span="1.5"> - <el-button type="primary" plain icon="Plus" @click="handleAdd()" v-hasPermi="['demo:tree:add']">鏂板</el-button> + <el-button v-hasPermi="['demo:tree:add']" type="primary" plain icon="Plus" @click="handleAdd()">鏂板</el-button> </el-col> <el-col :span="1.5"> <el-button type="info" plain icon="Sort" @click="handleToggleExpandAll">灞曞紑/鎶樺彔</el-button> </el-col> - <right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar> + <right-toolbar v-model:show-search="showSearch" @query-table="getList"></right-toolbar> </el-row> </template> <el-table + ref="treeTableRef" v-loading="loading" :data="treeList" row-key="id" :default-expand-all="isExpandAll" - :tree-props="{children: 'children', hasChildren: 'hasChildren'}" - ref="treeTableRef" + :tree-props="{ children: 'children', hasChildren: 'hasChildren' }" > <el-table-column label="鐖秈d" align="center" prop="parentId" /> <el-table-column label="閮ㄩ棬id" align="center" prop="deptId" /> @@ -43,20 +43,20 @@ <el-table-column label="鎿嶄綔" align="center" class-name="small-padding fixed-width"> <template #default="scope"> <el-tooltip content="淇敼" placement="top"> - <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['demo:tree:edit']" /> + <el-button v-hasPermi="['demo:tree:edit']" link type="primary" icon="Edit" @click="handleUpdate(scope.row)" /> </el-tooltip> <el-tooltip content="鏂板" placement="top"> - <el-button link type="primary" icon="Plus" @click="handleAdd(scope.row)" v-hasPermi="['demo:tree:add']" /> + <el-button v-hasPermi="['demo:tree:add']" link type="primary" icon="Plus" @click="handleAdd(scope.row)" /> </el-tooltip> <el-tooltip content="鍒犻櫎" placement="top"> - <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['demo:tree:remove']" /> + <el-button v-hasPermi="['demo:tree:remove']" link type="primary" icon="Delete" @click="handleDelete(scope.row)" /> </el-tooltip> </template> </el-table-column> </el-table> </el-card> <!-- 娣诲姞鎴栦慨鏀规祴璇曟爲瀵硅瘽妗� --> - <el-dialog :title="dialog.title" v-model="dialog.visible" width="500px" append-to-body> + <el-dialog v-model="dialog.visible" :title="dialog.title" width="500px" append-to-body> <el-form ref="treeFormRef" :model="form" :rules="rules" label-width="80px"> <el-form-item label="鐖秈d" prop="parentId"> <el-tree-select @@ -89,20 +89,16 @@ </template> <script setup name="Tree" lang="ts"> -import { listTree, getTree, delTree, addTree, updateTree } from "@/api/demo/tree"; +import { listTree, getTree, delTree, addTree, updateTree } from '@/api/demo/tree'; import { TreeVO, TreeQuery, TreeForm } from '@/api/demo/tree/types'; -import { ComponentInternalInstance } from 'vue'; -import { ElForm, ElTable } from 'element-plus'; - type TreeOption = { id: number; treeName: string; children?: TreeOption[]; -} +}; -const { proxy } = getCurrentInstance() as ComponentInternalInstance;; - +const { proxy } = getCurrentInstance() as ComponentInternalInstance; const treeList = ref<TreeVO[]>([]); const treeOptions = ref<TreeOption[]>([]); @@ -111,48 +107,37 @@ const isExpandAll = ref(true); const loading = ref(false); -const queryFormRef = ref(ElForm); -const treeFormRef = ref(ElForm); -const treeTableRef = ref(ElTable) +const queryFormRef = ref<ElFormInstance>(); +const treeFormRef = ref<ElFormInstance>(); +const treeTableRef = ref<ElTableInstance>(); const dialog = reactive<DialogOption>({ - visible: false, - title: '' + visible: false, + title: '' }); - const initFormData: TreeForm = { - id: undefined, - parentId: undefined, - deptId: undefined, - userId: undefined, - treeName: undefined, -} + id: undefined, + parentId: undefined, + deptId: undefined, + userId: undefined, + treeName: undefined +}; const data = reactive<PageData<TreeForm, TreeQuery>>({ - form: {...initFormData}, + form: { ...initFormData }, queryParams: { parentId: undefined, deptId: undefined, userId: undefined, - treeName: undefined, + treeName: undefined }, rules: { - id: [ - { required: true, message: "涓婚敭涓嶈兘涓虹┖", trigger: "blur" } - ], - parentId: [ - { required: true, message: "鐖秈d涓嶈兘涓虹┖", trigger: "blur" } - ], - deptId: [ - { required: true, message: "閮ㄩ棬id涓嶈兘涓虹┖", trigger: "blur" } - ], - userId: [ - { required: true, message: "鐢ㄦ埛id涓嶈兘涓虹┖", trigger: "blur" } - ], - treeName: [ - { required: true, message: "鍊间笉鑳戒负绌�", trigger: "blur" } - ], + id: [{ required: true, message: '涓婚敭涓嶈兘涓虹┖', trigger: 'blur' }], + parentId: [{ required: true, message: '鐖秈d涓嶈兘涓虹┖', trigger: 'blur' }], + deptId: [{ required: true, message: '閮ㄩ棬id涓嶈兘涓虹┖', trigger: 'blur' }], + userId: [{ required: true, message: '鐢ㄦ埛id涓嶈兘涓虹┖', trigger: 'blur' }], + treeName: [{ required: true, message: '鍊间笉鑳戒负绌�', trigger: 'blur' }] } }); @@ -162,116 +147,110 @@ const getList = async () => { loading.value = true; const res = await listTree(queryParams.value); - const data = proxy?.handleTree<TreeVO>(res.data, "id", "parentId"); + const data = proxy?.handleTree<TreeVO>(res.data, 'id', 'parentId'); if (data) { treeList.value = data; loading.value = false; } -} +}; /** 鏌ヨ娴嬭瘯鏍戜笅鎷夋爲缁撴瀯 */ const getTreeselect = async () => { const res = await listTree(); treeOptions.value = []; const data: TreeOption = { id: 0, treeName: '椤剁骇鑺傜偣', children: [] }; - data.children = proxy?.handleTree<TreeOption>(res.data, "id", "parentId"); + data.children = proxy?.handleTree<TreeOption>(res.data, 'id', 'parentId'); treeOptions.value.push(data); -} +}; // 鍙栨秷鎸夐挳 const cancel = () => { reset(); dialog.visible = false; -} +}; // 琛ㄥ崟閲嶇疆 const reset = () => { - form.value = {...initFormData} - treeFormRef.value.resetFields(); -} + form.value = { ...initFormData }; + treeFormRef.value?.resetFields(); +}; /** 鎼滅储鎸夐挳鎿嶄綔 */ const handleQuery = () => { getList(); -} +}; /** 閲嶇疆鎸夐挳鎿嶄綔 */ const resetQuery = () => { - queryFormRef.value.resetFields(); + queryFormRef.value?.resetFields(); handleQuery(); -} +}; /** 鏂板鎸夐挳鎿嶄綔 */ const handleAdd = (row?: TreeVO) => { + reset(); + getTreeselect(); + if (row && row.id) { + form.value.parentId = row.id; + } else { + form.value.parentId = 0; + } dialog.visible = true; - dialog.title = "娣诲姞娴嬭瘯鏍�"; - nextTick(() => { - reset(); - getTreeselect(); - if (row != null && row.id) { - form.value.parentId = row.id; - } else { - form.value.parentId = 0; - } - }); -} + dialog.title = '娣诲姞娴嬭瘯鏍�'; +}; /** 灞曞紑/鎶樺彔鎿嶄綔 */ const handleToggleExpandAll = () => { isExpandAll.value = !isExpandAll.value; - toggleExpandAll(treeList.value, isExpandAll.value) -} + toggleExpandAll(treeList.value, isExpandAll.value); +}; /** 灞曞紑/鎶樺彔鎿嶄綔 */ const toggleExpandAll = (data: TreeVO[], status: boolean) => { data.forEach((item) => { - treeTableRef.value.toggleRowExpansion(item, status) - if (item.children && item.children.length > 0) toggleExpandAll(item.children, status) - }) -} + treeTableRef.value?.toggleRowExpansion(item, status); + if (item.children && item.children.length > 0) toggleExpandAll(item.children, status); + }); +}; /** 淇敼鎸夐挳鎿嶄綔 */ -const handleUpdate = (row: TreeVO) => { - loading.value = true; +const handleUpdate = async (row: TreeVO) => { + reset(); + await getTreeselect(); + if (row) { + form.value.parentId = row.id; + } + const res = await getTree(row.id); + Object.assign(form.value, res.data); dialog.visible = true; - dialog.title = "淇敼娴嬭瘯鏍�"; - nextTick(async () => { - reset(); - await getTreeselect(); - if (row != null) { - form.value.parentId = row.id; - } - const res = await getTree(row.id); - loading.value = false; - Object.assign(form.value, res.data); - }); -} + dialog.title = '淇敼娴嬭瘯鏍�'; +}; /** 鎻愪氦鎸夐挳 */ const submitForm = () => { - treeFormRef.value.validate((valid: boolean) => { + treeFormRef.value?.validate(async (valid: boolean) => { if (valid) { buttonLoading.value = true; if (form.value.id) { - updateTree(form.value).finally(() => buttonLoading.value = false); + await updateTree(form.value).finally(() => (buttonLoading.value = false)); } else { - addTree(form.value).finally(() => buttonLoading.value = false); + await addTree(form.value).finally(() => (buttonLoading.value = false)); } - proxy?.$modal.msgSuccess("鎿嶄綔鎴愬姛"); + proxy?.$modal.msgSuccess('鎿嶄綔鎴愬姛'); dialog.visible = false; - getList(); + await getList(); } }); -} +}; /** 鍒犻櫎鎸夐挳鎿嶄綔 */ const handleDelete = async (row: TreeVO) => { await proxy?.$modal.confirm('鏄惁纭鍒犻櫎娴嬭瘯鏍戠紪鍙蜂负"' + row.id + '"鐨勬暟鎹」锛�'); loading.value = true; - await delTree(row.id).finally(() => loading.value = false); + await delTree(row.id).finally(() => (loading.value = false)); await getList(); - proxy?.$modal.msgSuccess("鍒犻櫎鎴愬姛"); -} + proxy?.$modal.msgSuccess('鍒犻櫎鎴愬姛'); +}; onMounted(() => { getList(); -- Gitblit v1.9.3