瀏覽代碼

公共方法封装

zhangchong 2 年之前
父節點
當前提交
7dff74c4ea

+ 11 - 0
src/api/login/user.ts

@@ -18,6 +18,17 @@ export function changePwd(data: object) {
         data
     });
 }
+/**
+ * 修改默认密码 (第一次登录进来修改)
+ * @param data
+ */
+export function changeDefaultPwd(data: object) {
+    return request({
+        url: `/api/v1/User/change-default-pwd`,
+        method: 'post',
+        data
+    });
+}
 /**
  * 当前用户信息
  * @param 

+ 20 - 3
src/utils/tools.ts

@@ -68,7 +68,7 @@ export function desensitizationName(name: string) {
  * @returns 返回处理后的姓名
  */
 export function checkFile(fileValue: string) {
-    
+
     let index = fileValue.lastIndexOf('.'); //(考虑严谨用lastIndexOf(".")得到)得到"."在第几位
     let fileValueSuffix = fileValue.substring(index); //截断"."之前的,得到后缀
     if (/(.*)\.(mp4|avi|wmv|MP4|AVI|WMV)$/.test(fileValueSuffix)) {
@@ -159,9 +159,26 @@ export function upNumber(value: number) {
     }
     return C_Num.join("");
 }
-function S4():string {
+function S4(): string {
     return (((1 + Math.random()) * 0x10000) | 0).toString(16).substring(1);
 }
-export function guid():string {
+export function guid(): string {
     return (S4() + S4() + "-" + S4() + "-" + S4() + "-" + S4() + "-" + S4() + S4() + S4());
+}
+
+/**
+ * 根据id排除自己(树形结构选择 修改时用)
+ * @param {any} arr 需要排除的数组
+ * @param {string} id
+ * @returns {*}
+ */
+export function excludeSelfById(arr: Array<any>, id: string) {
+    if (!arr) return [];
+    return arr.filter((v: any) => {
+        if (v.id === id) return false;
+        if (v.children && v.children.length) {
+            v.children = excludeSelfById(v.children, id);
+        }
+        return true;
+    });
 }

+ 3 - 3
src/views/knowledge/component/Preview.vue

@@ -38,9 +38,9 @@ onMounted(async () => {
 	state.loading = true;
 	if (route.params.id) {
 		try {
-			const {isAddPv} = route.params;
-			let IsAddPv = isAddPv ?? false;
-			const res: any = await KnowledgeInfo(route.params.id,{isAddPv:IsAddPv});
+			const { isAddPv } = route.params;
+			let IsAddPv = isAddPv ? 'true' : false;
+			const res: any = await KnowledgeInfo(route.params.id, { isAddPv: IsAddPv });
 			state.info = res.result ?? {};
 			state.loading = false;
 		} catch (error) {

+ 2 - 2
src/views/knowledge/config/type/component/knowledgeTypeAdd.vue

@@ -13,7 +13,7 @@
 							<el-cascader
 								:options="state.treeData"
 								filterable
-								:props="{ checkStrictly: true, value: 'id', label: 'name', emitPath: false, children: 'child' }"
+								:props="{ checkStrictly: true, value: 'id', label: 'name', emitPath: false, children: 'children' }"
 								placeholder="请选择上级类型"
 								clearable
 								class="w100"
@@ -23,7 +23,7 @@
 							>
 								<template #default="{ node, data }">
 									<span>{{ data.name }}</span>
-									<span v-if="!node.isLeaf"> ({{ data.child.length }}) </span>
+									<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
 								</template>
 							</el-cascader>
 						</el-form-item>

+ 4 - 18
src/views/knowledge/config/type/component/knowledgeTypeEdit.vue

@@ -13,7 +13,7 @@
 							<el-cascader
 								:options="state.treeData"
 								filterable
-								:props="{ checkStrictly: true, value: 'id', label: 'name', emitPath: false, children: 'child' }"
+								:props="{ checkStrictly: true, value: 'id', label: 'name', emitPath: false, children: 'children' }"
 								placeholder="请选择上级类型"
 								clearable
 								class="w100"
@@ -23,7 +23,7 @@
 							>
 								<template #default="{ node, data }">
 									<span>{{ data.name }}</span>
-									<span v-if="!node.isLeaf"> ({{ data.child.length }}) </span>
+									<span v-if="!node.isLeaf"> ({{ data.children.length }}) </span>
 								</template>
 							</el-cascader>
 						</el-form-item>
@@ -48,6 +48,7 @@
 <script setup lang="ts" name="knowledgeTypeEdit">
 import { reactive, ref } from 'vue';
 import { ElMessage, FormInstance } from 'element-plus';
+import { excludeSelfById } from '/@/utils/tools';
 import { updateType, typeDetail } from '/@/api/knowledge/type';
 
 // 定义子组件向父组件传值/事件
@@ -65,28 +66,13 @@ const state = reactive<any>({
 	treeData: [], // 上级
 	loading: false,
 });
-// 格式化数据  排除自己
-const formatData = (arr: Array<any>, id: string) => {
-	if (!arr) return [];
-	// 使用 filter 方法代替 splice 方法,避免修改原数组
-	return arr.filter((v: any) => {
-		// 排除自己
-		if (v.id === id) return false;
-		// 如果有子数组,递归调用 formatData 函数
-		if (v.children && v.children.length) {
-			v.children = formatData(v.children, id);
-		}
-		// 返回 true 表示保留该元素
-		return true;
-	});
-};
 // 打开弹窗
 const openDialog = async (row: any, treeData: any) => {
 	try {
 		const res: any = await typeDetail(row.id);
 		state.ruleForm = res.result;
 		state.treeData = JSON.parse(JSON.stringify(treeData));
-		state.treeData = formatData(state.treeData, row.id);
+		state.treeData = excludeSelfById(state.treeData, row.id);
 		state.isShowDialog = true;
 	} catch (error) {
 		// 打印错误信息

+ 153 - 55
src/views/knowledge/config/type/index.vue

@@ -7,9 +7,7 @@
 						<el-input v-model="state.queryParams.keyword" placeholder="类型名称" clearable @keyup.enter="handleQuery" style="width: 250px" />
 					</el-form-item>
 					<el-form-item class="mb0">
-						<el-button type="primary" @click="handleQuery" :loading="state.loading">
-							<SvgIcon name="ele-Search" class="mr5" />查询
-						</el-button>
+						<el-button type="primary" @click="handleQuery" :loading="state.loading"> <SvgIcon name="ele-Search" class="mr5" />查询 </el-button>
 						<el-button @click="resetQuery(ruleFormRef)" class="default-button"> <SvgIcon name="ele-Refresh" class="mr5" />重置 </el-button>
 					</el-form-item>
 				</el-form>
@@ -27,41 +25,23 @@
 				</div>
 			</div>
 			<!-- 表格 -->
-			<el-table
-				class="table"
-				:data="state.tableData"
-				row-key="id"
-				default-expand-all
-				v-loading="state.loading"
-				:tree-props="{ children: 'child' }"
-				ref="tableRef"
-			>
-				<el-table-column prop="name" label="类型名称" />
-				<el-table-column prop="sort" label="排序" width="150" />
-				<el-table-column prop="creationTime" label="创建时间" width="170" align="center">
-					<template #default="{ row }">
-						<span>{{ formatDate(row.creationTime, 'YYYY-mm-dd HH:MM:SS') }}</span>
-					</template>
-				</el-table-column>
-				<el-table-column prop="isEnable" label="状态" width="150" align="center">
-					<template #default="{ row }">
-						<el-tag v-if="row.isEnable" type="success"> 启用 </el-tag>
-						<el-tag v-else type="info"> 停用 </el-tag>
-					</template>
-				</el-table-column>
-				<el-table-column label="操作" width="250" fixed="right" align="center">
-					<template #default="{ row }">
-						<el-button link type="primary" @click="onOpenEdit(row)" title="修改"> 修改 </el-button>
-						<el-button link type="info" @click="onDisabled(row)" v-if="row.isEnable" title="停用"> 停用 </el-button>
-						<el-button link type="warning" @click="onEnable(row)" v-else title="启用"> 启用 </el-button>
-						<el-button link type="info" @click="undercarriage(row)" v-if="row.isEnable" title="停用并下架关联知识"> 停用并下架 </el-button>
-						<el-button link type="danger" @click="onDelete(row)" title="删除"> 删除 </el-button>
-					</template>
-				</el-table-column>
-				<template #empty>
-					<Empty />
+			<el-auto-resizer class="table" v-loading="state.loading">
+				<template #default="{ height, width }">
+					<el-table-v2
+						v-model:expanded-row-keys="state.expandedRowKeys"
+						:columns="state.columns"
+						:data="state.tableData"
+						expand-column-key="name"
+						fixed
+						:width="width"
+						:height="height"
+					>
+						<template #empty>
+							<Empty />
+						</template>
+					</el-table-v2>
 				</template>
-			</el-table>
+			</el-auto-resizer>
 		</div>
 		<KnowledgeTypeAdd ref="knowledgeTypeAddRef" @updateList="getList" />
 		<KnowledgeTypeEdit ref="knowledgeTypeEditRef" @updateList="getList" />
@@ -69,7 +49,7 @@
 </template>
 <script lang="ts" setup name="knowledgeType">
 import { defineAsyncComponent, ref, h, reactive, onMounted, watch } from 'vue';
-import { ElMessageBox, ElMessage } from 'element-plus';
+import { ElMessageBox, ElMessage, ElTag, ElButton } from 'element-plus';
 import { formatDate } from '/@/utils/formatTime';
 import { treelist, delType, changeAble, changestateandoffshelf } from '/@/api/knowledge/type';
 import { throttle } from '/@/utils/tools';
@@ -91,31 +71,140 @@ const state = reactive({
 		keyword: '',
 	},
 	expandedRowKeys: <any>[],
+	columns: [
+		{
+			key: 'name',
+			dataKey: 'name',
+			title: '类型名称',
+			width: 600,
+		},
+		{
+			key: 'sort',
+			dataKey: 'sort',
+			title: '排序',
+			width: 150,
+		},
+		{
+			key: 'lastModificationTime',
+			dataKey: 'lastModificationTime',
+			title: '更新时间',
+			width: 200,
+			cellRenderer: (data: any) => h('span', {}, { default: () => formatDate(new Date(data.rowData.lastModificationTime), 'YYYY-mm-dd HH:MM:SS') }),
+		},
+		{
+			key: 'isEnable',
+			dataKey: 'isEnable',
+			title: '状态',
+			width: 100,
+			cellRenderer: (data: any) => {
+				return h(ElTag, { type: data.rowData.isEnable ? 'success' : 'info' }, { default: () => (data.rowData.isEnable ? '启用' : '禁用') });
+			},
+		},
+		{
+			key: 'handle',
+			title: '操作',
+			width: 200,
+			fixed: 'right',
+			align: 'center',
+			cellRenderer: (data: any) => {
+				return h('p', {}, [
+					h(
+						ElButton,
+						{
+							onClick: () => onOpenEdit(data.rowData),
+							type: 'primary',
+							link: true,
+							title: '修改菜单',
+						},
+						{ default: () => '修改' }
+					),
+					data.rowData.isEnable
+						? h('span', {}, [
+								h(
+									ElButton,
+									{
+										onClick: () => onDisabled(data.rowData),
+										type: 'danger',
+										link: true,
+										title: '停用分类',
+									},
+									{ default: () => '停用' }
+								),
+								h(
+									ElButton,
+									{
+										onClick: () => undercarriage(data.rowData),
+										type: 'info',
+										link: true,
+										title: '停用并下架关联知识',
+										style: { marginLeft: 0 },
+									},
+									{ default: () => '停用并下架' }
+								),
+						  ])
+						: h(
+								ElButton,
+								{
+									onClick: () => onEnable(data.rowData),
+									type: 'warning',
+									link: true,
+									title: '启用分类',
+								},
+								{ default: () => '启用' }
+						  ),
+					h(
+						ElButton,
+						{
+							onClick: () => onDelete(data.rowData),
+							type: 'danger',
+							link: true,
+							title: '删除分类',
+						},
+						{ default: () => '删除' }
+					),
+				]);
+			},
+		},
+	],
 });
-// 过滤表格
+// 表格过滤
 const formatTable = (list: any[], keyword: string) => {
+	if (!list.length || !Array.isArray(list)) return [];
 	let emptyArr: any[] = [];
-	console.log(list)
 	list.map((item) => {
 		if (item.name.includes(keyword)) {
-			if (item.child && Array.isArray(item.child) && item.child.length > 0) {
-				item.child = formatTable(item.child, keyword);
+			if (item.children && Array.isArray(item.children) && item.children.length > 0) {
+				item.children = formatTable(item.children, keyword);
 			}
 			emptyArr.push(item);
-		} else if (item.child && Array.isArray(item.child) && item.child.length > 0) {
-			item.child = formatTable(item.child, keyword);
-			if (item.child.length) {
+		} else if (item.children && Array.isArray(item.children) && item.children.length > 0) {
+			item.children = formatTable(item.children, keyword);
+			if (item.children.length) {
 				emptyArr.push(item);
 			}
 		}
 	});
 	return emptyArr;
 };
+let emptyArr: any[] = [];
+const getExpand = (list: any[]) => {
+	if (!list.length || !Array.isArray(list)) return [];
+	list.map((item) => {
+		if (item.children && Array.isArray(item.children) && item.children.length > 0) {
+			getExpand(item.children);
+		}
+		emptyArr.push(item.id);
+	});
+	return emptyArr;
+};
 /** 搜索按钮操作 节流操作 */
 const handleQuery = throttle(() => {
 	if (state.queryParams.keyword) {
 		state.loading = true;
+		state.expandedRowKeys = [];
+		emptyArr = [];
 		state.tableData = formatTable(JSON.parse(JSON.stringify(state.staticArr)), state.queryParams.keyword);
+		state.expandedRowKeys = getExpand(state.tableData);
 		state.loading = false;
 	} else {
 		getList();
@@ -126,26 +215,34 @@ const resetQuery = (formEl: FormInstance | undefined) => {
 	if (!formEl) return;
 	formEl.resetFields();
 	getList();
+	state.expandedRowKeys = [];
+	emptyArr = [];
 };
-
+// 展开收起
 const expand = () => {
 	state.isExpand = !state.isExpand;
-	toggleRowExpansionAll(state.tableData, state.isExpand);
 };
-const tableRef = ref();
-const toggleRowExpansionAll = (data: any[], isExpansion: boolean) => {
-	data.forEach((item) => {
-		tableRef.value.toggleRowExpansion(item, isExpansion);
-		if (item.child !== undefined && item.child !== null) {
-			toggleRowExpansionAll(item.child, isExpansion);
+watch(
+	() => state.isExpand,
+	(old: Boolean) => {
+		if (old) getAllIds(state.tableData);
+		else state.expandedRowKeys = [];
+	}
+);
+const getAllIds = (arr: any) => {
+	if (!arr) return [];
+	arr.forEach((v: any) => {
+		if (v.children?.length) {
+			getAllIds(v.children);
+			state.expandedRowKeys.push(v.id);
 		}
 	});
 };
-// 打开新增菜单弹窗
+// 打开新增分类弹窗
 const onOpenAdd = () => {
 	knowledgeTypeAddRef.value.openDialog(state.tableData);
 };
-// 打开编辑菜单弹窗
+// 打开编辑分类弹窗
 const onOpenEdit = (row: any) => {
 	knowledgeTypeEditRef.value.openDialog(row, state.tableData);
 };
@@ -216,6 +313,7 @@ const getList = () => {
 		.then((res: any) => {
 			state.tableData = res?.result ?? [];
 			state.staticArr = res?.result ?? [];
+			getAllIds(state.tableData);
 			state.loading = false;
 		})
 		.catch(() => {

+ 1 - 1
src/views/knowledge/knowledge/draft/index.vue

@@ -168,7 +168,7 @@ const onEdit = (row: any) => {
 		params: {
 			id: row.id,
 			tagsViewName: '编辑草稿',
-			isDraft: 1,
+			isDraft:'isDraft',
 		},
 	});
 };

+ 17 - 3
src/views/knowledge/knowledge/index.vue

@@ -26,9 +26,9 @@
 									ref="orgRef"
 									v-loading="state.loading"
 									:filter-node-method="filterNode"
-									default-expand-all
-									node-key="id"
+									node-key="orgCode"
 									style="min-width: 100%; display: inline-block"
+									:default-expanded-keys="state.defaultExpandedOrgKeys"
 								>
 								</el-tree>
 							</el-scrollbar>
@@ -44,9 +44,9 @@
 									ref="typeRef"
 									v-loading="state.loading"
 									:filter-node-method="filterNodeType"
-									default-expand-all
 									node-key="id"
 									style="min-width: 100%; display: inline-block"
+									:default-expanded-keys="state.defaultExpandedTypeKeys"
 								>
 								</el-tree>
 							</el-scrollbar>
@@ -286,6 +286,8 @@ const state = reactive<any>({
 	knowledgeOptions: [],
 	options: [],
 	statusOptions: [],
+	defaultExpandedOrgKeys: [],
+	defaultExpandedTypeKeys: [],
 });
 const router = useRouter();
 const ruleFormRef = ref<FormInstance>(); //表单ref
@@ -385,7 +387,19 @@ const getOrgListApi = async () => {
 	try {
 		const res: any = await Promise.all([getOrgList(), treelist({ IsEnable: true })]);
 		state.orgData = res[0].result ?? [];
+		state.defaultExpandedOrgKeys = state.orgData.map((v: any) => {
+			return v.children.map((i: any) => {
+				return i.orgCode;
+			});
+		});
+		state.defaultExpandedOrgKeys.push(state.orgData[0].orgCode); //默认展开一级部门
 		state.knowledgeOptions = res[1].result ?? [];
+		state.defaultExpandedTypeKeys = state.knowledgeOptions.map((v: any) => {
+			return v.children.map((i: any) => {
+				return i.id;
+			});
+		});
+		state.defaultExpandedTypeKeys.push(state.orgData[0].id); //默认展开一级分类
 		state.loading = false;
 	} catch (error) {
 		state.loading = false;

+ 1 - 1
src/views/knowledge/retrieval/index.vue

@@ -72,7 +72,7 @@ const onPreview = (row: any) => {
 		name:'knowledgePreview',
 		params:{
 			id:row.id,
-			isAddPv:'true',
+			isAddPv:'isAddPv',
 			tagsViewName:'知识预览'
 		}
 	})

+ 5 - 5
src/views/resetPwd/component/resetPwd.vue

@@ -43,9 +43,9 @@
 				</template>
 			</el-input>
 		</el-form-item>
-        <el-button type="primary" class="resetPwd-content-submit" round @click="onChangeConfirm(resetPwdRef)" :loading="state.loading"
-				>确认修改</el-button
-			>
+		<el-button type="primary" class="resetPwd-content-submit" round @click="onChangeConfirm(resetPwdRef)" :loading="state.loading"
+			>确认修改</el-button
+		>
 		<div class="font12 mt10 resetPwd-msg">提示:密码不得少于8位数,且必须包含数字、字母大小写和特殊字符</div>
 	</el-form>
 </template>
@@ -56,7 +56,7 @@ import { useRouter } from 'vue-router';
 import { ElNotification } from 'element-plus';
 import { Session } from '/@/utils/storage';
 import type { FormInstance } from 'element-plus';
-import { changePwd } from '/@/api/login/user';
+import { changeDefaultPwd } from '/@/api/login/user';
 import { storeToRefs } from 'pinia';
 import { useUserInfo } from '/@/stores/userInfo';
 // 修改密码参数类型
@@ -85,7 +85,7 @@ const onChangeConfirm = async (formEl: FormInstance | undefined) => {
 	await formEl.validate((valid) => {
 		if (valid) {
 			state.loading = true;
-			changePwd(state.ruleForm)
+			changeDefaultPwd(state.ruleForm)
 				.then(async () => {
 					//
 					// 清楚缓存

+ 3 - 18
src/views/system/config/dict/component/DickEdit.vue

@@ -55,7 +55,7 @@
 import { reactive, ref } from 'vue';
 import type { FormInstance } from 'element-plus';
 import { ElMessage } from 'element-plus';
-import { throttle } from '/@/utils/tools';
+import { throttle, excludeSelfById } from '/@/utils/tools';
 import { auth } from '/@/utils/authFunction';
 import { editDic, getDetail, dictypeList, getDataByTypeid } from '/@/api/system/dict';
 // 定义子组件向父组件传值/事件
@@ -76,21 +76,6 @@ const state = reactive<any>({
 });
 const ruleFormRef = ref<FormInstance>();
 let loading = ref<boolean>(false);
-// 格式化数据  排除自己
-const formatData = (arr: Array<any>, id: string) => {
-	if (!arr) return [];
-	// 使用 filter 方法代替 splice 方法,避免修改原数组
-	return arr.filter((v: any) => {
-		// 排除自己
-		if (v.id === id) return false;
-		// 如果有子数组,递归调用 formatData 函数
-		if (v.children && v.children.length) {
-			v.children = formatData(v.children, id);
-		}
-		// 返回 true 表示保留该元素
-		return true;
-	});
-};
 // 打开弹窗
 const openDialog = async (row: any, tableData: any) => {
 	state.currentId = row.id ?? '';
@@ -100,7 +85,7 @@ const openDialog = async (row: any, tableData: any) => {
 		ruleFormRef.value?.clearValidate();
 		try {
 			const res: any = await Promise.all([getDetail(row.id), dictypeList()]);
-			state.parentData = formatData(JSON.parse(JSON.stringify(tableData)), row.id);
+			state.parentData = excludeSelfById(JSON.parse(JSON.stringify(tableData)), row.id);
 			state.ruleForm = res[0].result;
 			state.dictypeList = res[1].result ?? [];
 			state.isShowDialog = true;
@@ -121,7 +106,7 @@ const onCancel = () => {
 const changeDicType = (val: string) => {
 	getDataByTypeid({ typeid: val }).then((response: any) => {
 		state.parentData = response?.result ?? [];
-		state.parentData = formatData(JSON.parse(JSON.stringify(state.parentData)), state.currentId);
+		state.parentData = excludeSelfById(JSON.parse(JSON.stringify(state.parentData)), state.currentId);
 	});
 };
 // 保存

+ 2 - 17
src/views/system/menu/component/editMenu.vue

@@ -146,7 +146,7 @@
 <script setup lang="ts" name="systemEditMenu">
 import { defineAsyncComponent, reactive, ref } from 'vue';
 import { ElMessage, FormInstance } from 'element-plus';
-import { getImageUrl } from '/@/utils/tools';
+import { getImageUrl, excludeSelfById } from '/@/utils/tools';
 import { auth } from '/@/utils/authFunction';
 import { setBackEndControlRefreshRoutes } from '/@/router/backEnd';
 import { updateMenu, getMenuList, getMenuById } from '/@/api/system/menu';
@@ -206,21 +206,6 @@ const state = reactive({
 		},
 	],
 });
-// 格式化数据  排除自己
-const formatData = (arr: Array<any>, id: string) => {
-	if (!arr) return [];
-	// 使用 filter 方法代替 splice 方法,避免修改原数组
-	return arr.filter((v: any) => {
-		// 排除自己
-		if (v.id === id) return false;
-		// 如果有子数组,递归调用 formatData 函数
-		if (v.children && v.children.length) {
-			v.children = formatData(v.children, id);
-		}
-		// 返回 true 表示保留该元素
-		return true;
-	});
-};
 // 获取全部菜单
 const getMenuData = (routes: any) => {
 	const arr: any = [];
@@ -239,7 +224,7 @@ const openDialog = async (row: any) => {
 		try {
 			const res: any = await Promise.all([getMenuList(), getMenuById(row.id)]);
 			state.menuData = getMenuData(res[0].result);
-			state.menuData = formatData(state.menuData, row.id);
+			state.menuData = excludeSelfById(state.menuData, row.id);
 			state.ruleForm = res[1].result;
 			state.isShowDialog = true;
 		} catch (error) {

+ 2 - 16
src/views/system/organize/component/editOrg.vue

@@ -49,6 +49,7 @@
 import { reactive, ref } from 'vue';
 import { ElMessage, FormInstance } from 'element-plus';
 import { auth } from '/@/utils/authFunction';
+import { excludeSelfById } from '/@/utils/tools';
 import { updateOrg, getOrgById } from '/@/api/system/organize';
 
 // 定义接口来定义对象的类型
@@ -84,21 +85,6 @@ const state = reactive<OrgFormState>({
 	orgData: [], // 上级部门数据
 	loading: false,
 });
-// 格式化数据  排除自己
-const formatData = (arr: Array<any>, id: string) => {
-	if (!arr) return [];
-	// 使用 filter 方法代替 splice 方法,避免修改原数组
-	return arr.filter((v: any) => {
-		// 排除自己
-		if (v.id === id) return false;
-		// 如果有子数组,递归调用 formatData 函数
-		if (v.children && v.children.length) {
-			v.children = formatData(v.children, id);
-		}
-		// 返回 true 表示保留该元素
-		return true;
-	});
-};
 // 打开弹窗
 const openDialog = async (row: any, orgData: any) => {
 	if (!auth('100503')) ElMessage.warning('抱歉,您没有获取部门详情的权限!');
@@ -106,7 +92,7 @@ const openDialog = async (row: any, orgData: any) => {
 		ruleFormRef.value?.resetFields();
 		try {
 			state.orgData = JSON.parse(JSON.stringify(orgData));
-			state.orgData = formatData(state.orgData, row.id);
+			state.orgData = excludeSelfById(state.orgData, row.id);
 			const res: any = await getOrgById(row.id);
 			state.ruleForm = res.result;
 			state.isShowDialog = true;

+ 2 - 1
src/views/system/organize/index.vue

@@ -135,7 +135,7 @@ const state = reactive({
 			},
 		},
 	],
-	isExpand: false,
+	isExpand: true,
 });
 const ruleFormRef = ref();
 // 搜索
@@ -236,6 +236,7 @@ const getOrgListApi = () => {
 		.then((res: any) => {
 			state.orgTableData = res?.result ?? [];
 			state.staticArr = res?.result ?? [];
+			getAllIds(state.orgTableData)
 			state.loading = false;
 		})
 		.catch(() => {