33
33
<el-tree
34
34
ref =" treeRef"
35
35
node-key =" id"
36
- :check-strictly =" !menuCheckStrictly"
37
36
show-checkbox
38
37
:props =" defaultProps"
39
38
:data =" menuOptions"
@@ -91,7 +90,6 @@ const formRules = reactive({
91
90
})
92
91
const formRef = ref () // 表单 Ref
93
92
const menuOptions = ref <any []>([]) // 树形结构数据
94
- const menuCheckStrictly = ref (false ) // 在显示复选框的情况下,是否严格的遵循父子不互相关联的做法,默认为 true
95
93
const menuExpand = ref (false ) // 展开/折叠
96
94
const treeRef = ref <InstanceType <typeof ElTree >>() // 树组件Ref
97
95
const treeNodeAll = ref (false ) // 全选/全不选
@@ -102,6 +100,8 @@ const open = async (type: string, id?: number) => {
102
100
modelTitle .value = t (' action.' + type )
103
101
formType .value = type
104
102
resetForm ()
103
+ // 加载 Menu 列表。注意,必须放在前面,不然下面 setChecked 没数据节点
104
+ menuOptions .value = handleTree (await MenuApi .getSimpleMenusList ())
105
105
// 修改时,设置数据
106
106
if (id ) {
107
107
formLoading .value = true
@@ -110,15 +110,13 @@ const open = async (type: string, id?: number) => {
110
110
// 设置选中
111
111
formData .value = res
112
112
// 设置选中
113
- res .menuIds ? .forEach ((item : any ) => {
114
- treeRef .value ? .setChecked (item , true , false )
113
+ res .menuIds .forEach ((menuId : number ) => {
114
+ treeRef .value .setChecked (menuId , true , false )
115
115
})
116
116
} finally {
117
117
formLoading .value = false
118
118
}
119
119
}
120
- // 加载Menu列表
121
- menuOptions .value = handleTree (await MenuApi .getSimpleMenusList ())
122
120
}
123
121
defineExpose ({ open }) // 提供 open 方法,用于打开弹窗
124
122
@@ -134,8 +132,8 @@ const submitForm = async () => {
134
132
try {
135
133
const data = formData .value as unknown as TenantPackageApi .TenantPackageVO
136
134
data .menuIds = [
137
- ... (treeRef .value ! .getCheckedKeys (false ) as unknown as Array <number >),
138
- ... (treeRef .value ! .getHalfCheckedKeys () as unknown as Array <number >)
135
+ ... (treeRef .value ! .getCheckedKeys (false ) as unknown as Array <number >), // 获得当前选中节点
136
+ ... (treeRef .value ! .getHalfCheckedKeys () as unknown as Array <number >) // 获得半选中的父节点
139
137
]
140
138
if (formType .value === ' create' ) {
141
139
await TenantPackageApi .createTenantPackage (data )
@@ -154,6 +152,10 @@ const submitForm = async () => {
154
152
155
153
/** 重置表单 */
156
154
const resetForm = () => {
155
+ // 重置选项
156
+ treeNodeAll .value = false
157
+ menuExpand .value = false
158
+ // 重置表单
157
159
formData .value = {
158
160
id: null ,
159
161
name: null ,
@@ -162,17 +164,14 @@ const resetForm = () => {
162
164
status: CommonStatusEnum .ENABLE
163
165
}
164
166
treeRef .value ?.setCheckedNodes ([])
165
- treeNodeAll .value = false
166
- menuExpand .value = false
167
- // 设置为非严格,继续使用半选中
168
- menuCheckStrictly .value = false
169
167
formRef .value ?.resetFields ()
170
168
}
171
169
172
170
// 全选/全不选
173
171
const handleCheckedTreeNodeAll = () => {
174
172
treeRef .value ! .setCheckedNodes (treeNodeAll .value ? menuOptions .value : [])
175
173
}
174
+
176
175
// 全部(展开/折叠)TODO:for循环全部展开和折叠树组件数据
177
176
const handleCheckedTreeExpand = () => {
178
177
const nodes = treeRef .value ?.store .nodesMap
0 commit comments