浏览代码

[Feat 0000]用户管理授权 API管理 规程值多次请求bug修改

bobo04052021@163.com 2 天之前
父节点
当前提交
017413b5ae

+ 1 - 1
.env

@@ -1,5 +1,5 @@
 # port
-VITE_PORT = 3100
+VITE_PORT = 8062
 
 #  网站标题
 VITE_GLOB_APP_TITLE = 智能通风管控系统

+ 1 - 1
src/views/vent/dataCenter/APICenter/ApiAddModal.vue

@@ -35,7 +35,7 @@ async function handleSubmit() {
     let values = await validate();
     setModalProps({ confirmLoading: true });
     //提交表单
-    await AddOrEdit(values, isAdd.value);
+    await AddOrEdit(values, unref(isAdd.value));
     //关闭弹窗
     closeModal();
     //刷新列表

+ 6 - 6
src/views/vent/dataCenter/APICenter/apiManger.api.ts

@@ -1,11 +1,11 @@
 import { defHttp } from '/@/utils/http/axios';
 
 enum Api {
-  apiManageList = '/dataCenter/apimanage/list',
-  apiManageAdd = '/dataCenter/apimanage/add',
-  apiManageEdit = '/dataCenter/apimanage/edit',
-  apiManageDelete = '/dataCenter/apimanage/delete',
-  apiManageQueryByID = '/dataCenter/apimanage/queryById',
+  apiManageList = '/dataCenter/sys/apiMangage/list',
+  apiManageAdd = '/dataCenter/sys/apiMangage/add',
+  apiManageEdit = '/dataCenter/sys/apiMangage/edit',
+  apiManageDelete = '/dataCenter/sys/apiMangage/delete',
+  apiManageQueryByID = '/dataCenter/sys/apiMangage/queryById',
 }
 // 分站查询接口
 export const apiManageList = (params) =>
@@ -17,7 +17,7 @@ export const apiManageList = (params) =>
 // API接口编辑
 export const AddOrEdit = (params, isAdd) => {
   const url = isAdd ? Api.apiManageAdd : Api.apiManageEdit;
-  return isAdd ? defHttp.post({ url: url, params }) : defHttp.post({ url: url, params });
+  return defHttp.post({ url: url, params });
 };
 // API接口通过id删除
 export const apiManageDelete = (params) => {

+ 96 - 0
src/views/vent/dataCenter/user/UserPermModal.vue

@@ -0,0 +1,96 @@
+<template>
+  <BasicModal v-bind="$attrs" @register="registerModal" title="API授权" :width="adaptiveWidth" @ok="handleSubmit" :showFooter="showFooter">
+    <a-table :data-source="APIList" :columns="columns" :row-selection="rowSelection" :row-key="(record) => record.id"> </a-table>
+  </BasicModal>
+</template>
+<script lang="ts" setup>
+import { ref, computed, onMounted, unref } from 'vue';
+import { BasicModal, useModalInner } from '/@/components/Modal';
+import { apiManageList, apiPermPagelist, bathAddApiPerm } from './user.api';
+import { useDrawerAdaptiveWidth } from '/@/hooks/jeecg/useAdaptiveWidth';
+import { message, Modal } from 'ant-design-vue';
+// 声明Emits
+const emit = defineEmits(['success', 'register']);
+const showFooter = ref(true);
+const APIList = ref([]);
+const selectedRowKeys = ref<any>([]);
+const userID = ref('');
+const columns = [
+  {
+    title: 'API名称',
+    dataIndex: 'apiName',
+    key: 'apiName',
+    align: 'center',
+  },
+  {
+    title: '请求路径',
+    dataIndex: 'reqUrl',
+    key: 'reqUrl',
+    align: 'center',
+  },
+  {
+    title: 'HTTP方法',
+    dataIndex: 'reqMethod',
+    key: 'reqMethod',
+    align: 'center',
+  },
+];
+//表单赋值
+const [registerModal, { setModalProps, closeModal }] = useModalInner(async (data) => {
+  setModalProps({ confirmLoading: false });
+  userID.value = data.userID;
+  await getAllApiList();
+  await getPermApiList();
+});
+const { adaptiveWidth } = useDrawerAdaptiveWidth();
+// 行选择配置
+const rowSelection = {
+  selectedRowKeys,
+  onChange: (selectedKeys) => {
+    selectedRowKeys.value = selectedKeys;
+  },
+};
+//表单提交事件
+async function handleSubmit() {
+  try {
+    setModalProps({ confirmLoading: true });
+    // 参数
+    const params = {
+      apiIdList: selectedRowKeys.value.length > 0 ? selectedRowKeys.value.join(',') : {}, // 转换为逗号分隔的字符串
+      userId: userID.value, // 用户ID
+    };
+    const response = await bathAddApiPerm(params);
+    console.log('提交的ID:', selectedRowKeys.value);
+    console.log('API响应:', response);
+    message.success('提交成功');
+    //关闭弹窗
+    closeModal();
+    //刷新列表
+    emit('success');
+  } finally {
+    setModalProps({ confirmLoading: false });
+  }
+}
+async function getPermApiList() {
+  const result = await apiPermPagelist({ pageNo: 1, pageSize: 1000, userId: userID.value });
+  const permApiIds = result.records?.map((item) => String(item.apiId)) || [];
+  selectedRowKeys.value = [...permApiIds];
+  return result;
+}
+// 获取接口列表
+async function getAllApiList() {
+  const result = await apiManageList({ pageNo: 1, pageSize: 1000 });
+  APIList.value = result.records;
+}
+onMounted(async () => {
+  await getAllApiList();
+});
+</script>
+<style scoped>
+.selected-info {
+  background: #cccc;
+  padding: 15px;
+  border-radius: 6px;
+  margin-bottom: 20px;
+}
+</style>

+ 0 - 77
src/views/vent/dataCenter/user/UserPermissionDrawer.vue

@@ -1,77 +0,0 @@
-<template>
-  <BasicDrawer
-    v-bind="$attrs"
-    @register="registerDrawer"
-    title="API授权"
-    :width="adaptiveWidth"
-    @ok="handleSubmit"
-    :showFooter="showFooter"
-    destroyOnClose
-  >
-    <BasicTree
-      :checkedKeys="checkedKeys"
-      :expandedKeys="expandedKeys"
-      :selectedKeys="selectedKeys"
-      checkable
-      :tree-data="treeData"
-      ref="treeRef"
-      :clickRowToExpand="false"
-      @check="onCheck"
-      @select="onTreeNodeSelect"
-    >
-      <template #title="{ title, key }">
-        <span v-if="key === '0-0-1-0'" style="color: #1890ff">{{ title }}</span>
-        <template v-else>{{ title }}</template>
-      </template>
-    </BasicTree>
-  </BasicDrawer>
-</template>
-<script lang="ts" setup>
-import { defineComponent, ref, computed, unref, useAttrs } from 'vue';
-import { BasicTree, TreeItem } from '/src/components/Tree';
-import { BasicDrawer, useDrawerInner } from '/@/components/Drawer';
-import { getAPILIst } from './user.api';
-import { useDrawerAdaptiveWidth } from '/@/hooks/jeecg/useAdaptiveWidth';
-// 声明Emits
-const emit = defineEmits(['success', 'register']);
-const showFooter = ref(true);
-const selectedKeys = ref([]);
-const expandedKeys = ref([]);
-const checkedKeys = ref([]);
-const treeData = [
-  {
-    title: 'parent 1',
-    key: '0-0',
-  },
-  {
-    title: '测试api',
-    key: '0-1',
-  },
-  {
-    title: '测试api1',
-    key: '0-2',
-  },
-  {
-    title: '测试api2',
-    key: '0-3',
-  },
-];
-//表单赋值
-const [registerDrawer, { setDrawerProps, closeDrawer }] = useDrawerInner(async (data) => {
-  showFooter.value = data?.showFooter ?? true;
-  setDrawerProps({ confirmLoading: false, showFooter: showFooter.value });
-});
-const { adaptiveWidth } = useDrawerAdaptiveWidth();
-
-//提交事件
-async function handleSubmit() {
-  try {
-    setDrawerProps({ confirmLoading: true });
-    closeDrawer();
-    //刷新列表
-    emit('success');
-  } finally {
-    setDrawerProps({ confirmLoading: false });
-  }
-}
-</script>

+ 6 - 17
src/views/vent/dataCenter/user/index.vue

@@ -37,7 +37,7 @@
     <!--用户代理-->
     <UserAgentModal @register="registerAgentModal" @success="reload" />
     <!--回收站-->
-    <UserPermissionDrawer @register="registerPermissionModal" @success="reload" />
+    <UserPermModal @register="registerPermModal" @success="reload" />
   </div>
 </template>
 
@@ -56,7 +56,7 @@ import { useModal } from '/@/components/Modal';
 import { useMessage } from '/@/hooks/web/useMessage';
 import { columns, searchFormSchema } from './user.data';
 import { list, deleteUser, batchDeleteUser, frozenBatch, syncUser } from './user.api';
-import UserPermissionDrawer from './UserPermissionDrawer.vue';
+import UserPermModal from './UserPermModal.vue';
 // import { usePermission } from '/@/hooks/web/usePermission'
 // const { hasPermission } = usePermission();
 
@@ -71,7 +71,7 @@ const [registerPasswordModal, { openModal: openPasswordModal }] = useModal();
 //代理人model
 const [registerAgentModal, { openModal: openAgentModal }] = useModal();
 // 授权model
-const [registerPermissionModal, { openDrawer: openPermissionModal }] = useDrawer();
+const [registerPermModal, { openModal: openPermissionModal }] = useModal();
 
 // 列表页面公共参数、方法
 const { prefixCls, tableContext } = useListPage({
@@ -186,19 +186,8 @@ function handleAgentSettings(userName) {
 /**
  * 打开授权弹窗
  */
-function handlePermissionModel() {
-  openPermissionModal(true);
-}
-
-/**
- * 冻结解冻
- */
-async function handleFrozen(record, status) {
-  if ('admin' == record.username) {
-    createMessage.warning('管理员账号不允许此操作!');
-    return;
-  }
-  await frozenBatch({ ids: record.id, status: status }, reload);
+function handlePermissionModel(userID) {
+  openPermissionModal(true, { userID });
 }
 /**
  *同步钉钉和微信回调
@@ -221,7 +210,7 @@ function getTableAction(record): ActionItem[] {
     },
     {
       label: '授权',
-      onClick: handlePermissionModel.bind(null),
+      onClick: handlePermissionModel.bind(null, record.id),
       // ifShow: () => hasPermission('system:user:edit'),
     },
   ];

+ 24 - 5
src/views/vent/dataCenter/user/user.api.ts

@@ -24,19 +24,38 @@ enum Api {
   frozenBatch = '/sys/user/frozenBatch',
   getUserAgent = '/sys/sysUserAgent/queryByUserName',
   syncUser = '/act/process/extActProcess/doSyncUser',
-  allAPIList = '/compute/apiManage/list',
+  apiManageList = '/dataCenter/sys/apiMangage/list',
+  bathAddApiPerm = '/dataCenter/sys/apiMangage/bathAddApiPerm',
+  apiPermPagelist = '/dataCenter/sys/apiMangage/apiPermPagelist',
 }
 
 /**
- * 查询api列表
+ * 查询api
  * @param params
  */
-export const getAPILIst = (params) => {
+export const apiManageList = (params) =>
   defHttp.get({
-    url: Api.allAPIList,
+    url: Api.apiManageList,
+    params,
+  });
+/**
+ * api授权接口
+ * @param params
+ */
+export const bathAddApiPerm = (params) =>
+  defHttp.post({
+    url: Api.bathAddApiPerm,
+    params,
+  });
+/**
+ * 查询api已授权接口
+ * @param params
+ */
+export const apiPermPagelist = (params) =>
+  defHttp.get({
+    url: Api.apiPermPagelist,
     params,
   });
-};
 /**
  * 列表接口
  * @param params

+ 2 - 2
src/views/vent/monitorManager/deviceMonitor/components/device/index.vue

@@ -887,7 +887,7 @@ function getMonitor(flag?) {
     }
   }
 }
-
+let allRegulations: any[] | null = null;
 async function getDataSource() {
   if (deviceType.value && deviceType.value.startsWith('sys') && systemID.value) {
     const res = await list({ devicetype: 'sys', systemID: systemID.value });
@@ -1046,7 +1046,6 @@ async function getDataSource() {
               dataSource.value = data;
             }
           } else {
-            let allRegulations: any[] | null = null;
             let tableData: any[] = [];
             let noNetData: any[] = [];
             data.filter((el) => {
@@ -1061,6 +1060,7 @@ async function getDataSource() {
 
             // 首次请求获取去所有regulation数据
             if (allRegulations === null) {
+              console.log(allRegulations, 'sssssssss');
               const regulationRes = await getRegulation({
                 deviceKind: deviceType.value,
               });