zhangzihan 1 年之前
父節點
當前提交
99a78ed04b

+ 1 - 1
.env-config.ts

@@ -4,7 +4,7 @@ type ServiceEnv = Record<ServiceEnvType, ServiceEnvConfig>;
 /** 不同请求服务的环境配置 */
 /** 不同请求服务的环境配置 */
 const serviceEnv: ServiceEnv = {
 const serviceEnv: ServiceEnv = {
   dev: {
   dev: {
-    url: 'http://localhost:8080'
+    url: 'http://eas-api.edu.koobietech.com'
   },
   },
   test: {
   test: {
     url: 'http://localhost:8080'
     url: 'http://localhost:8080'

+ 1 - 0
eas_webadmin

@@ -0,0 +1 @@
+Subproject commit 596dc7e3452282ead1b7a52a465a98b0c27b3028

+ 5 - 0
pnpm-lock.yaml

@@ -1,5 +1,9 @@
 lockfileVersion: '6.0'
 lockfileVersion: '6.0'
 
 
+settings:
+  autoInstallPeers: true
+  excludeLinksFromLockfile: false
+
 patchedDependencies:
 patchedDependencies:
   mockjs@1.1.0:
   mockjs@1.1.0:
     hash: zljuuegabo7mnbroxnwxab3e2u
     hash: zljuuegabo7mnbroxnwxab3e2u
@@ -7921,6 +7925,7 @@ packages:
   /iconv-lite@0.6.3:
   /iconv-lite@0.6.3:
     resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
     resolution: {integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==}
     engines: {node: '>=0.10.0'}
     engines: {node: '>=0.10.0'}
+    requiresBuild: true
     dependencies:
     dependencies:
       safer-buffer: 2.1.2
       safer-buffer: 2.1.2
     dev: true
     dev: true

+ 2 - 0
src/App.vue

@@ -19,7 +19,9 @@ import { watch } from 'vue';
 import { useRoute } from 'vue-router';
 import { useRoute } from 'vue-router';
 import { dateZhCN, zhCN } from 'naive-ui';
 import { dateZhCN, zhCN } from 'naive-ui';
 import { useI18n } from 'vue-i18n';
 import { useI18n } from 'vue-i18n';
+// eslint-disable-next-line import/no-unresolved
 import { subscribeStore, useThemeStore } from '@/store';
 import { subscribeStore, useThemeStore } from '@/store';
+// eslint-disable-next-line import/no-unresolved
 import { useGlobalEvents } from '@/composables';
 import { useGlobalEvents } from '@/composables';
 
 
 const theme = useThemeStore();
 const theme = useThemeStore();

+ 1 - 0
src/composables/layout.ts

@@ -1,5 +1,6 @@
 import { computed } from 'vue';
 import { computed } from 'vue';
 import { breakpointsTailwind, useBreakpoints } from '@vueuse/core';
 import { breakpointsTailwind, useBreakpoints } from '@vueuse/core';
+// eslint-disable-next-line import/no-unresolved
 import { useAppStore, useThemeStore } from '@/store';
 import { useAppStore, useThemeStore } from '@/store';
 
 
 type LayoutMode = 'vertical' | 'horizontal';
 type LayoutMode = 'vertical' | 'horizontal';

+ 1 - 0
src/service/api/management.ts

@@ -1,3 +1,4 @@
+// eslint-disable-next-line import/no-unresolved
 import { adapter } from '@/utils';
 import { adapter } from '@/utils';
 import { mockRequest } from '../request';
 import { mockRequest } from '../request';
 import { adapterOfFetchUserList } from './management.adapter';
 import { adapterOfFetchUserList } from './management.adapter';

+ 39 - 0
src/service/api/user.ts

@@ -0,0 +1,39 @@
+import { request } from '../request';
+// 参数接口
+export interface QueryParams {
+  id?: number;
+  name?: string;
+  description?: string;
+  isActive?: Record<string, unknown>;
+  createTime?: Record<string, unknown>;
+  modifyTime?: Record<string, unknown>;
+  createUid?: number;
+  disabled?: string;
+}
+
+// 响应接口
+export interface QueryRes {
+  status: boolean;
+  msg: string;
+  data: Record<string, unknown>;
+  total: number;
+}
+
+/**
+ * 查询权限
+ * @param {string} pageNum
+ * @param {string} pageSize
+ * @param {object} params EasSysPermission
+ * @param {number} params.id ID
+ * @param {string} params.name 权限名称
+ * @param {string} params.description 权限描述
+ * @param {object} params.isActive 是否激活
+ * @param {object} params.createTime 创建时间
+ * @param {object} params.modifyTime 修改时间
+ * @param {number} params.createUid 创建用户ID
+ * @param {string} params.disabled 状态
+ * @returns
+ */
+export function query(pageNum: number | undefined, pageSize: number | undefined, params: QueryParams) {
+  return request.post(`/permission/query?pageNum=${pageNum}&pageSize=${pageSize}`, params);
+}

+ 3 - 1
src/service/request/index.ts

@@ -1,5 +1,7 @@
-import { getServiceEnvConfig } from '~/.env-config';
+// eslint-disable-next-line import/no-unresolved
 import { createRequest } from './request';
 import { createRequest } from './request';
+// eslint-disable-next-line import/no-unresolved
+import { getServiceEnvConfig } from '~/.env-config';
 
 
 const { url, proxyPattern } = getServiceEnvConfig(import.meta.env);
 const { url, proxyPattern } = getServiceEnvConfig(import.meta.env);
 
 

+ 4 - 2
src/service/request/instance.ts

@@ -1,5 +1,6 @@
 import axios from 'axios';
 import axios from 'axios';
 import type { AxiosResponse, AxiosError, AxiosInstance, AxiosRequestConfig } from 'axios';
 import type { AxiosResponse, AxiosError, AxiosInstance, AxiosRequestConfig } from 'axios';
+// eslint-disable-next-line import/no-unresolved
 import { REFRESH_TOKEN_CODE } from '@/config';
 import { REFRESH_TOKEN_CODE } from '@/config';
 import {
 import {
   localStg,
   localStg,
@@ -8,6 +9,7 @@ import {
   handleResponseError,
   handleResponseError,
   handleServiceResult,
   handleServiceResult,
   transformRequestData
   transformRequestData
+  // eslint-disable-next-line import/no-unresolved
 } from '@/utils';
 } from '@/utils';
 import { handleRefreshToken } from './helpers';
 import { handleRefreshToken } from './helpers';
 
 
@@ -63,9 +65,9 @@ export default class CustomAxiosInstance {
         const { status } = response;
         const { status } = response;
         if (status === 200 || status < 300 || status === 304) {
         if (status === 200 || status < 300 || status === 304) {
           const backend = response.data;
           const backend = response.data;
-          const { codeKey, dataKey, successCode } = this.backendConfig;
+          const { codeKey, dataKey } = this.backendConfig;
           // 请求成功
           // 请求成功
-          if (backend[codeKey] === successCode) {
+          if (backend.msg === '操作成功') {
             return handleServiceResult(null, backend[dataKey]);
             return handleServiceResult(null, backend[dataKey]);
           }
           }
 
 

+ 1 - 0
src/service/request/request.ts

@@ -1,6 +1,7 @@
 import { ref } from 'vue';
 import { ref } from 'vue';
 import type { Ref } from 'vue';
 import type { Ref } from 'vue';
 import type { AxiosInstance, AxiosRequestConfig } from 'axios';
 import type { AxiosInstance, AxiosRequestConfig } from 'axios';
+// eslint-disable-next-line import/no-unresolved
 import { useBoolean, useLoading } from '@/hooks';
 import { useBoolean, useLoading } from '@/hooks';
 import CustomAxiosInstance from './instance';
 import CustomAxiosInstance from './instance';
 
 

+ 1 - 0
src/settings/theme.ts

@@ -4,6 +4,7 @@ import {
   themeTabModeOptions,
   themeTabModeOptions,
   themeHorizontalMenuPositionOptions,
   themeHorizontalMenuPositionOptions,
   themeAnimateModeOptions
   themeAnimateModeOptions
+  // eslint-disable-next-line import/no-unresolved
 } from '@/constants';
 } from '@/constants';
 import jsonSetting from './theme.json';
 import jsonSetting from './theme.json';
 
 

+ 4 - 0
src/views/_builtin/login/components/pwd-login/index.vue

@@ -38,9 +38,13 @@
 <script setup lang="ts">
 <script setup lang="ts">
 import { reactive, ref } from 'vue';
 import { reactive, ref } from 'vue';
 import type { FormInst, FormRules } from 'naive-ui';
 import type { FormInst, FormRules } from 'naive-ui';
+// eslint-disable-next-line import/no-unresolved
 import { loginModuleLabels } from '@/constants';
 import { loginModuleLabels } from '@/constants';
+// eslint-disable-next-line import/no-unresolved
 import { useAuthStore } from '@/store';
 import { useAuthStore } from '@/store';
+// eslint-disable-next-line import/no-unresolved
 import { useRouterPush } from '@/composables';
 import { useRouterPush } from '@/composables';
+// eslint-disable-next-line import/no-unresolved
 import { formRules } from '@/utils';
 import { formRules } from '@/utils';
 import { OtherAccount } from './components';
 import { OtherAccount } from './components';
 
 

+ 3 - 0
src/views/_builtin/login/components/register-user/index.vue

@@ -29,8 +29,11 @@
 <script lang="ts" setup>
 <script lang="ts" setup>
 import { reactive, ref, toRefs } from 'vue';
 import { reactive, ref, toRefs } from 'vue';
 import type { FormInst, FormRules } from 'naive-ui';
 import type { FormInst, FormRules } from 'naive-ui';
+// eslint-disable-next-line import/no-unresolved
 import { useRouterPush } from '@/composables';
 import { useRouterPush } from '@/composables';
+// eslint-disable-next-line import/no-unresolved
 import { useSmsCode } from '@/hooks';
 import { useSmsCode } from '@/hooks';
+// eslint-disable-next-line import/no-unresolved
 import { formRules, getConfirmPwdRule } from '@/utils';
 import { formRules, getConfirmPwdRule } from '@/utils';
 
 
 const { toLoginModule } = useRouterPush();
 const { toLoginModule } = useRouterPush();

+ 3 - 0
src/views/_builtin/login/components/reset-pwd/index.vue

@@ -28,8 +28,11 @@
 <script lang="ts" setup>
 <script lang="ts" setup>
 import { reactive, ref, toRefs } from 'vue';
 import { reactive, ref, toRefs } from 'vue';
 import type { FormInst, FormRules } from 'naive-ui';
 import type { FormInst, FormRules } from 'naive-ui';
+// eslint-disable-next-line import/no-unresolved
 import { useRouterPush } from '@/composables';
 import { useRouterPush } from '@/composables';
+// eslint-disable-next-line import/no-unresolved
 import { useSmsCode } from '@/hooks';
 import { useSmsCode } from '@/hooks';
+// eslint-disable-next-line import/no-unresolved
 import { formRules, getConfirmPwdRule } from '@/utils';
 import { formRules, getConfirmPwdRule } from '@/utils';
 
 
 const { toLoginModule } = useRouterPush();
 const { toLoginModule } = useRouterPush();

+ 4 - 0
src/views/_builtin/login/index.vue

@@ -28,9 +28,13 @@
 <script setup lang="ts">
 <script setup lang="ts">
 import { computed } from 'vue';
 import { computed } from 'vue';
 import type { Component } from 'vue';
 import type { Component } from 'vue';
+// eslint-disable-next-line import/no-unresolved
 import { loginModuleLabels } from '@/constants';
 import { loginModuleLabels } from '@/constants';
+// eslint-disable-next-line import/no-unresolved
 import { useThemeStore } from '@/store';
 import { useThemeStore } from '@/store';
+// eslint-disable-next-line import/no-unresolved
 import { useAppInfo } from '@/composables';
 import { useAppInfo } from '@/composables';
+// eslint-disable-next-line import/no-unresolved
 import { getColorPalette, mixColor } from '@/utils';
 import { getColorPalette, mixColor } from '@/utils';
 import { BindWechat, CodeLogin, LoginBg, PwdLogin, Register, ResetPwd } from './components';
 import { BindWechat, CodeLogin, LoginBg, PwdLogin, Register, ResetPwd } from './components';
 
 

+ 97 - 2
src/views/management/auth/index.vue

@@ -1,7 +1,102 @@
 <template>
 <template>
-  <div>权限管理</div>
+  <div class="h-full overflow-hidden">
+    <n-card title="权限管理" :bordered="false" class="rounded-16px shadow-sm">
+      <n-space class="pb-12px" justify="space-between">
+        <n-space>
+          <n-button type="primary">
+            <icon-ic-round-plus class="mr-4px text-20px" />
+            新增
+          </n-button>
+          <n-button type="error">
+            <icon-ic-round-delete class="mr-4px text-20px" />
+            删除
+          </n-button>
+          <n-button type="success">
+            <icon-uil:export class="mr-4px text-20px" />
+            导出Excel
+          </n-button>
+        </n-space>
+        <n-space align="center" :size="18">
+          <n-button size="small" type="primary">
+            <icon-mdi-refresh class="mr-4px text-16px" :class="{ 'animate-spin': false }" />
+            刷新表格
+          </n-button>
+          <column-setting v-model:columns="columns" />
+        </n-space>
+      </n-space>
+      <n-data-table :columns="columns" :data="tableData" :pagination="pagination" />
+    </n-card>
+  </div>
 </template>
 </template>
 
 
-<script setup lang="tsx"></script>
+<script setup lang="ts">
+import { ref, reactive } from 'vue';
+import type { Ref } from 'vue';
+import type { DataTableColumns, PaginationProps } from 'naive-ui';
+import { query } from '../../../service/api/user';
+import type { QueryParams } from '~/src/service/api/user';
 
 
+const queryInfo: QueryParams = {};
+
+const pagination: PaginationProps = reactive({
+  page: 1,
+  pageSize: 10,
+  showSizePicker: true,
+  pageSizes: [10, 15, 20, 25, 30],
+  onChange: (page: number) => {
+    pagination.page = page;
+  },
+  onUpdatePageSize: (pageSize: number) => {
+    pagination.pageSize = pageSize;
+    pagination.page = 1;
+  }
+});
+
+const tableData = ref<QueryParams[] | null>([]);
+
+query(pagination.page, pagination.pageSize, queryInfo).then(result => {
+  tableData.value = result.data as [];
+});
+const columns: Ref<DataTableColumns<QueryParams>> = ref([
+  {
+    type: 'selection',
+    align: 'center'
+  },
+  {
+    key: 'id',
+    title: 'ID',
+    align: 'center'
+  },
+  {
+    key: 'name',
+    title: '名称',
+    align: 'center'
+  },
+  {
+    key: 'description',
+    title: '描述',
+    align: 'center'
+  },
+  {
+    key: 'isActive',
+    title: '是否激活',
+    align: 'center'
+  },
+  {
+    key: 'modifyTime',
+    title: '修改时间',
+    align: 'center'
+  },
+  {
+    key: 'createUid',
+    title: '创建用户ID',
+    align: 'center'
+  },
+  {
+    key: 'disabled',
+    title: '状态',
+    align: 'center'
+  }
+]) as Ref<DataTableColumns<QueryParams>>;
+</script>
 <style scoped></style>
 <style scoped></style>

+ 2 - 0
src/views/management/user/components/table-action-modal.vue

@@ -34,7 +34,9 @@
 <script setup lang="ts">
 <script setup lang="ts">
 import { ref, computed, reactive, watch } from 'vue';
 import { ref, computed, reactive, watch } from 'vue';
 import type { FormInst, FormItemRule } from 'naive-ui';
 import type { FormInst, FormItemRule } from 'naive-ui';
+// eslint-disable-next-line import/no-unresolved
 import { genderOptions, userStatusOptions } from '@/constants';
 import { genderOptions, userStatusOptions } from '@/constants';
+// eslint-disable-next-line import/no-unresolved
 import { formRules, createRequiredFormRule } from '@/utils';
 import { formRules, createRequiredFormRule } from '@/utils';
 
 
 export interface Props {
 export interface Props {

+ 3 - 0
src/views/management/user/index.vue

@@ -35,8 +35,11 @@ import { reactive, ref } from 'vue';
 import type { Ref } from 'vue';
 import type { Ref } from 'vue';
 import { NButton, NPopconfirm, NSpace, NTag } from 'naive-ui';
 import { NButton, NPopconfirm, NSpace, NTag } from 'naive-ui';
 import type { DataTableColumns, PaginationProps } from 'naive-ui';
 import type { DataTableColumns, PaginationProps } from 'naive-ui';
+// eslint-disable-next-line import/no-unresolved
 import { genderLabels, userStatusLabels } from '@/constants';
 import { genderLabels, userStatusLabels } from '@/constants';
+// eslint-disable-next-line import/no-unresolved
 import { fetchUserList } from '@/service';
 import { fetchUserList } from '@/service';
+// eslint-disable-next-line import/no-unresolved
 import { useBoolean, useLoading } from '@/hooks';
 import { useBoolean, useLoading } from '@/hooks';
 import TableActionModal from './components/table-action-modal.vue';
 import TableActionModal from './components/table-action-modal.vue';
 import type { ModalType } from './components/table-action-modal.vue';
 import type { ModalType } from './components/table-action-modal.vue';

+ 1 - 0
src/views/plugin/charts/echarts/index.vue

@@ -28,6 +28,7 @@
 import { onUnmounted, ref } from 'vue';
 import { onUnmounted, ref } from 'vue';
 import type { Ref } from 'vue';
 import type { Ref } from 'vue';
 import { graphic } from 'echarts';
 import { graphic } from 'echarts';
+// eslint-disable-next-line import/no-unresolved
 import { type ECOption, useEcharts } from '@/composables';
 import { type ECOption, useEcharts } from '@/composables';
 
 
 const pieOptions = ref<ECOption>({
 const pieOptions = ref<ECOption>({

+ 1 - 1
tsconfig.json

@@ -18,7 +18,7 @@
       "~/*": ["./*"],
       "~/*": ["./*"],
       "@/*": ["./src/*"]
       "@/*": ["./src/*"]
     },
     },
-    "types": ["vite/client", "node", "unplugin-icons/types/vue", "naive-ui/volar"]
+    "types": ["vite/client", "node", "unplugin-icons/types/vue", "naive-ui/volar", "vue"]
   },
   },
   "exclude": ["node_modules", "dist"]
   "exclude": ["node_modules", "dist"]
 }
 }