浏览代码

修改双击编辑和单击选中触发限制

wangwei 4 年之前
父节点
当前提交
0113698094
共有 5 个文件被更改,包括 74 次插入67 次删除
  1. 26 18
      src/views/admin/admin/index.vue
  2. 0 4
      src/views/admin/admin/popup.vue
  3. 32 30
      src/views/admin/group/index.vue
  4. 10 14
      src/views/admin/group/popup.vue
  5. 6 1
      types/store.ts

+ 26 - 18
src/views/admin/admin/index.vue

@@ -108,7 +108,7 @@
       const userStore = useUserStore();
       const [register, { openModal }] = useModal();
       const [addRegister, { openModal: openPopup }] = useModal();
-      const id = userStore.getUserInfo?.id;
+      const id: any = userStore.getUserInfo?.id;
       function getTableAction() {
         // 获取组件
         const tableAction = unref(tableRef);
@@ -121,7 +121,7 @@
       // 请求之前处理参数
       function beforeFetch(params) {
         console.log(params);
-        console.log('==========before========');
+        console.log('==========beforeFetch========');
         // params['op'] = {};
         for (let k in params) {
           if (!params[k]) {
@@ -157,7 +157,6 @@
             item.groups_text = [];
           }
         });
-        console.log(`result`, result);
       }
 
       async function init() {
@@ -182,8 +181,8 @@
       }
 
       function handleEdit(record: EditRecordRow) {
-        if (!popupData.treeData.length) {
-          error('没有修改权限!');
+        if (record.id === id || !record.groups[0]) {
+          // error('不可修改!');
           return;
         }
         currentEditKeyRef.value = record.id; // record.key
@@ -198,9 +197,7 @@
       }
 
       async function handleDelete(record: Recordable) {
-        console.log(record);
-        await deleteUser({ id: record.id }).then((res) => {
-          console.log(res);
+        await deleteUser({ id: record.id }).then(() => {
           getTableAction().reload();
           success('删除成功!');
         });
@@ -208,6 +205,23 @@
 
       function selectionChange() {
         const keys = getTableAction().getSelectRowKeys();
+        const dataSource = getTableAction().getDataSource();
+        dataSource.map((item) => {
+          if (!item.groups[0]) {
+            if (keys.includes(item.id)) {
+              keys.splice(
+                keys.findIndex((keyItem) => keyItem === item.id),
+                1
+              );
+            }
+          }
+        });
+        if (keys.includes(id)) {
+          keys.splice(
+            keys.findIndex((keyItem) => keyItem === id),
+            1
+          );
+        }
         if (keys.length) {
           btn.disable_btn = false;
         } else {
@@ -220,8 +234,7 @@
         if (!ids) {
           return;
         }
-        await deleteBatchesUser({ ids }).then((res) => {
-          console.log(res);
+        await deleteBatchesUser({ ids }).then(() => {
           getTableAction().reload();
           success('删除成功!');
           getTableAction().setSelectedRowKeys([]);
@@ -243,23 +256,18 @@
           data.groups = data.groups_text = '';
         }
         delete data.groups_value;
-        console.log(`data`, data);
         if (!data.id) {
-          await addUser(data).then((res) => {
-            console.log(res);
+          await addUser(data).then(() => {
             getTableAction().reload();
             closeModel();
             success('创建成功!');
           });
-          console.log('----------add---');
         } else {
-          await editUser(data).then((res) => {
-            console.log(res);
+          await editUser(data).then(() => {
             getTableAction().reload();
             closeModel();
             success('修改成功!');
           });
-          console.log('----------edit---');
         }
       }
 
@@ -276,7 +284,7 @@
       }
 
       function createActions(record: EditRecordRow): ActionItem[] {
-        if (id === record.id) {
+        if (id === record.id || !record.groups[0]) {
           return [
             {
               label: '',

+ 0 - 4
src/views/admin/admin/popup.vue

@@ -49,10 +49,6 @@
       //   });
       const [register, { closeModal }] = useModalInner((data) => {
         resetFields();
-        // if (unref(isUpdate)) {
-        //   setFieldsValue(data);
-        // }
-        console.log('=======================');
         setFieldsValue(data);
         role.id = data.id;
         console.log(`popupData.treeData`, popupData.treeData);

+ 32 - 30
src/views/admin/group/index.vue

@@ -34,7 +34,6 @@
   import { CollapseContainer } from '/@/components/Container/index';
   import Popup from './popup.vue';
   import { useModal } from '/@/components/Modal';
-  //   import { getAllMenuList } from '/@/api/sys/menu';
   import { columns } from './data';
   import { useUserStore } from '/@/store/modules/user';
   import { useMessage } from '/@/hooks/web/useMessage';
@@ -58,29 +57,33 @@
   interface PopupData {
     title: string;
     treeData: object[];
+    group_ids: number[];
   }
   interface Btn {
     btn_text: string;
     btn_status: boolean;
     disable_btn: boolean;
   }
-  // interface Group {
-  //   id: string;
-  //   name: boolean;
-  // }
+
+  interface Group {
+    id: any;
+    name: string;
+  }
 
   export default defineComponent({
     components: { CollapseContainer, BasicTable, TableAction, Popup, ExpExcelModel },
     setup() {
       const userStore = useUserStore();
+      const groups = userStore.getUserInfo.groups as Group[];
+      const group_ids = groups.map((item) => item.id);
       const { createMessage } = useMessage();
       const { success /*, error */ } = createMessage;
       const tableRef = ref<Nullable<TableActionType>>(null);
       const currentEditKeyRef = ref('');
-      // const groups = userStore.getUserInfo.groups as Group[];
       const popupData = reactive<PopupData>({
         title: '添加',
         treeData: [{}],
+        group_ids: [],
       });
 
       const btn = reactive<Btn>({
@@ -128,6 +131,7 @@
       function addGroupFn() {
         console.log('添加');
         popupData.title = '添加';
+        popupData.group_ids = group_ids;
         openPopup(true, {});
       }
 
@@ -149,8 +153,7 @@
       }
 
       function handleEdit(record: EditRecordRow) {
-        console.log(`record 5555`, record);
-        if (record.pid === 0) {
+        if (record.pid === 0 || group_ids.includes(record.id)) {
           return;
         }
         currentEditKeyRef.value = record.id; // record.key
@@ -162,24 +165,28 @@
             record = item;
           }
         });
-        console.log(`record ===group`, record);
         openPopup(true, record);
       }
 
       async function handleDelete(record: Recordable) {
-        console.log('点击了删除', record.id);
         console.log(record);
-        await deleteGroup({ id: record.id }).then((res) => {
-          console.log(res);
+        await deleteGroup({ id: record.id }).then(() => {
           getTableAction().reload();
           ExpandAllRows();
           success('删除成功!');
         });
       }
 
-      function selectionChange() {
-        console.log(`userStore`, userStore.getUserInfo());
+      async function selectionChange() {
         const keys = getTableAction().getSelectRowKeys();
+        groups.map((item) => {
+          if (keys.includes(item.id)) {
+            keys.splice(
+              keys.findIndex((keyItem) => keyItem === item.id),
+              1
+            );
+          }
+        });
         if (keys.length) {
           btn.disable_btn = false;
         } else {
@@ -192,8 +199,7 @@
         if (!ids) {
           return;
         }
-        await deleteBatchesGroup({ ids }).then((res) => {
-          console.log(res);
+        await deleteBatchesGroup({ ids }).then(() => {
           getTableAction().reload();
           ExpandAllRows();
           success('删除成功!');
@@ -208,23 +214,19 @@
         const closeModel = params.closeModal;
         console.log(`data`, data);
         if (!data.id) {
-          await addGroup(data).then((res) => {
-            console.log(res);
+          await addGroup(data).then(() => {
             getTableAction().reload();
             closeModel();
             ExpandAllRows();
             success('创建成功!');
           });
-          console.log('----------add---');
         } else {
-          await editGroup(data).then((res) => {
-            console.log(res);
+          await editGroup(data).then(() => {
             getTableAction().reload();
             closeModel();
             ExpandAllRows();
             success('修改成功!');
           });
-          console.log('----------edit---');
         }
       }
 
@@ -241,7 +243,14 @@
       }
 
       function createActions(record: EditRecordRow): ActionItem[] {
-        if (record.pid !== 0) {
+        if (record.pid === 0 || group_ids.includes(record.id)) {
+          return [
+            {
+              label: '',
+              icon: '',
+            },
+          ];
+        } else {
           return [
             {
               label: '编辑',
@@ -259,13 +268,6 @@
               },
             },
           ];
-        } else {
-          return [
-            {
-              label: '',
-              icon: '',
-            },
-          ];
         }
       }
       return {

+ 10 - 14
src/views/admin/group/popup.vue

@@ -1,5 +1,5 @@
 <template>
-  <BasicModal v-bind="$attrs" @register="register" @ok="confirm" :title="title" minHeight="500">
+  <BasicModal v-bind="$attrs" @register="register" @ok="confirm" :title="title" :minHeight="500">
     <BasicForm @register="registerForm" :model="model" />
     <!-- <MenuTree /> -->
     <div class="tree-wrap">
@@ -28,6 +28,7 @@
   interface PopupData {
     title: string;
     treeData: object[];
+    group_ids: number[];
   }
   interface AllowRule {
     id: number;
@@ -70,11 +71,7 @@
         actionColOptions: { span: 24 },
       });
       const [register, { closeModal }] = useModalInner((data) => {
-        console.log(data);
         resetFields();
-        // if (unref(isUpdate)) {
-        //   setFieldsValue(data);
-        // }
         if (data.id) {
           reactData.id = data.id;
         } else {
@@ -89,7 +86,6 @@
 
         setFieldsValue(data);
         formatTreeData(popupData.treeData); // 禁止选取自己或自己下级为父id
-        console.log(`popupData.treeData`, popupData.treeData);
         updateSchema({
           field: 'pid',
           componentProps: {
@@ -127,38 +123,38 @@
         });
       }
 
-      function setReactDataId(allowRule) {
+      // 设置选中的rule key
+      function setTreeCheckedRule(allowRule) {
         allowRule.map((item) => {
           if (reactData.initRules.includes(item.id)) {
             reactData.rules.push(item.id);
           }
           if (item.children) {
-            setReactDataId(item.children);
+            setTreeCheckedRule(item.children);
           }
         });
       }
 
       async function getRuleTree(id) {
-        console.log(`id`, id);
         if (!id) {
-          id = 1;
+          // 没有id => 添加 => 默认通过当前用户的第一个角色组id请求权限树
+          id = popupData.group_ids[0];
+          // 添加 => 清除所有选中
+          reactData.initRules = [];
         }
         await getAllowRule({ id }).then((res) => {
           reactData.allowRule = res.tree as AllowRule[];
           reactData.rules = [];
-          setReactDataId(reactData.allowRule);
+          setTreeCheckedRule(reactData.allowRule);
         });
       }
 
       async function confirm() {
-        console.log('确定');
         const data = await validate();
         data.rules = [...reactData.rules];
         if (reactData.id) {
           data.id = reactData.id;
         }
-        console.log(`pid`, data);
-        console.log(`data`, data);
         const childData = { closeModal, data };
         emit('saveData', childData);
       }

+ 6 - 1
types/store.ts

@@ -29,12 +29,17 @@ export interface ErrorLogInfo {
   time?: string;
 }
 
+interface Group {
+  id: number;
+  name: string;
+}
+
 export interface UserInfo {
   id: string | number;
   username: string;
   nickname: string;
   avatar: string;
-  groups?: [];
+  groups?: Group[];
   email?: string;
   loginip?: string;
   loginfailure?: number;