zouzs 4 週間 前
コミット
d23ef68f90

+ 5 - 5
src/views/system/role/components/menuTree.vue

@@ -6,6 +6,7 @@ import {type CheckboxValueType} from 'element-plus'
 
 onMounted(() => {
   getMenuList();
+  console.log(model.value)
 })
 
 const emit = defineEmits(['update:modelValue'])
@@ -19,14 +20,13 @@ const getMenuList = async () => {
 const model = defineModel()
 
 watch(model, (value: number[]) => {
-  console.log(value)
   nextTick(() => {
-    setCheckedKeys(value)
+    setCheckedKeys(value, true)
     const allKeys = getAllKeys(menuList.value);
-    console.log(allKeys.length);
+    menuNodeAll.value = value.length === allKeys.length;
     isIndeterminate.value = value.length > 0 && value.length < allKeys.length;
   })
-}, {immediate: true})
+}, {immediate: true, deep: true})
 
 const menuRef = ref(null)
 
@@ -70,7 +70,7 @@ const getAllKeys = (data: any) => {
   }, []);
 }
 
-const setCheckedKeys = (keys: number[], leafOnly = false) => {
+const setCheckedKeys = (keys: number[], leafOnly: boolean) => {
   return menuRef.value.setCheckedKeys(keys, leafOnly)
 }
 </script>

+ 14 - 1
src/views/system/role/index.vue

@@ -33,11 +33,12 @@
         @change="handleFormChange"
         @submit-error="handleSubmitError"
         @close="handleClose"
+        @opened="handleOpen"
         :form="{ columns, labelPosition: 'right',labelWidth: 100, rules, rowProps: {gutter: 20}, colProps: {span: 12} }"
         :dialog="{ title: dialogTitle + '角色', width: 600, confirmLoading }"
     >
       <template #plus-field-menuIds>
-        <menu-tree v-model="form.menuIds"></menu-tree>
+        <menu-tree ref="menuRef" v-model="form.menuIds"></menu-tree>
       </template>
     </PlusDialogForm>
   </div>
@@ -75,6 +76,8 @@ onMounted(async () => {
   await getDeptList()
 })
 
+const menuRef = ref(null)
+
 interface TableRow {
   id: number;
   name: string;
@@ -332,6 +335,9 @@ const columns: PlusColumn[] = [
     label: "菜单权限",
     prop: "menuIds",
     colProps: {span: 24},
+    fieldProps: {
+
+    }
   },
   {
     label: "备注",
@@ -396,6 +402,13 @@ const handleTableChange = (values: FieldValues) => {
       });
 }
 
+const handleOpen = () => {
+  console.log('open')
+  if (!state.isCreate) {
+    console.log(menuRef.value)
+  }
+}
+
 const handleSubmit = async (values: FieldValues) => {
   console.log(values, 'Submit')
   confirmLoading.value = true