From 9d8ef3a592b3102c8d4133e601b31aacb91866f6 Mon Sep 17 00:00:00 2001 From: zhengyiming <540361168@qq.com> Date: 星期二, 05 八月 2025 10:34:54 +0800 Subject: [PATCH] fix: 修改功能模块 --- src/views/EnterpriseManage/components/AddOrEditEnterpriseView.vue | 6 src/services/api/resource.ts | 4 .eslintrc-auto-import.json | 1 src/services/api/typings.d.ts | 157 ++++++++++--- src/services/api/dictionary.ts | 21 + pnpm-lock.yaml | 40 --- src/services/api/menu.ts | 44 +++ /dev/null | 128 ----------- src/services/api/role.ts | 8 src/views/System/ModuleManage.vue | 131 ++++++----- auto-imports.d.ts | 4 src/views/System/types/index.ts | 9 src/constants/apiEnum.ts | 38 ++- src/views/DictionaryManage/SearchSetting.vue | 5 src/views/System/components/SubModuleEditDrawer.vue | 7 src/views/EnterpriseManage/EnterpriseManageList.vue | 5 src/services/api/auth.ts | 8 17 files changed, 298 insertions(+), 318 deletions(-) diff --git a/.eslintrc-auto-import.json b/.eslintrc-auto-import.json index 6e37fdd..5a4d108 100644 --- a/.eslintrc-auto-import.json +++ b/.eslintrc-auto-import.json @@ -22,6 +22,7 @@ "EnumMenuType": true, "EnumMenuVisitLevel": true, "EnumPagedListOrder": true, + "EnumRoleWebApiDataPower": true, "EnumUserType": true, "EnumWebApiMethod": true, "ExtractDefaultPropTypes": true, diff --git a/auto-imports.d.ts b/auto-imports.d.ts index 60138a0..19d3523 100644 --- a/auto-imports.d.ts +++ b/auto-imports.d.ts @@ -26,6 +26,7 @@ const EnumMenuType: typeof import('./src/constants/apiEnum')['EnumMenuType'] const EnumMenuVisitLevel: typeof import('./src/constants/apiEnum')['EnumMenuVisitLevel'] const EnumPagedListOrder: typeof import('./src/constants/apiEnum')['EnumPagedListOrder'] + const EnumRoleWebApiDataPower: typeof import('./src/constants/apiEnum')['EnumRoleWebApiDataPower'] const EnumUserType: typeof import('./src/constants/apiEnum')['EnumUserType'] const EnumWebApiMethod: typeof import('./src/constants/apiEnum')['EnumWebApiMethod'] const FastButtonMap: typeof import('./src/constants/module')['FastButtonMap'] @@ -156,7 +157,7 @@ export type { Component, Slot, Slots, ComponentPublicInstance, ComputedRef, DirectiveBinding, ExtractDefaultPropTypes, ExtractPropTypes, ExtractPublicPropTypes, InjectionKey, PropType, Ref, MaybeRef, MaybeRefOrGetter, VNode, WritableComputedRef } from 'vue' import('vue') // @ts-ignore - export type { EnumClientType, EnumMenuType, EnumMenuVisitLevel, EnumPagedListOrder, EnumUserType, EnumWebApiMethod } from './src/constants/apiEnum' + export type { EnumClientType, EnumMenuType, EnumMenuVisitLevel, EnumPagedListOrder, EnumRoleWebApiDataPower, EnumUserType, EnumWebApiMethod, EnumClientType, EnumMenuType, EnumMenuVisitLevel, EnumPagedListOrder, EnumRoleWebApiDataPower, EnumUserType, EnumWebApiMethod } from './src/constants/apiEnum' import('./src/constants/apiEnum') // @ts-ignore export type { FlexWorkerEleSignEnum, FlexTaskWorkerHireEnum, FlexWorkerEleSignEnum, FlexTaskWorkerHireEnum } from './src/constants/cPerson' @@ -210,6 +211,7 @@ readonly EnumMenuType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumMenuType']> readonly EnumMenuVisitLevel: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumMenuVisitLevel']> readonly EnumPagedListOrder: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumPagedListOrder']> + readonly EnumRoleWebApiDataPower: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumRoleWebApiDataPower']> readonly EnumUserType: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumUserType']> readonly EnumWebApiMethod: UnwrapRef<typeof import('./src/constants/apiEnum')['EnumWebApiMethod']> readonly FastButtonMap: UnwrapRef<typeof import('./src/constants/module')['FastButtonMap']> diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 5987774..050443d 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -21,7 +21,7 @@ version: 1.0.3(@bole-12333/chat-kit@1.0.1)(@tiptap/core@2.1.13)(@tiptap/extension-document@2.1.13)(@tiptap/extension-image@2.1.13)(@tiptap/extension-mention@2.1.13)(@tiptap/extension-paragraph@2.1.13)(@tiptap/extension-placeholder@2.1.13)(@tiptap/extension-text@2.1.13)(@tiptap/pm@2.1.13)(@tiptap/suggestion@2.1.13)(dayjs@1.11.6)(vue@3.5.11) '@bole-core/components': specifier: latest - version: 1.3.2(@bole-core/core@1.0.2)(@bole-core/sass-utils@0.0.1)(@element-plus/icons-vue@2.3.1)(@tanstack/vue-query@4.37.1)(@videojs-player/vue@1.0.0)(@vueuse/core@11.1.0)(@vueuse/shared@11.1.0)(dayjs@1.11.6)(element-plus@2.8.4)(lodash@4.17.21)(mitt@3.0.0)(senin-help@1.0.5)(senin-vue@1.0.4)(video.js@7.20.3)(vue-component-type-helpers@2.1.6)(vue@3.5.11) + version: link:../boledocs-vue/packages/components '@bole-core/core': specifier: latest version: 1.0.2(@ywwlmm/openapi@0.0.3)(ali-oss@6.21.0)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.8.4)(file-saver@2.0.5)(jszip@3.10.1)(lodash@4.17.21)(senior-request@1.0.1)(vue-router@4.4.5)(vue@3.5.11)(xlsx-style@0.8.13)(xlsx@0.18.5) @@ -2162,44 +2162,6 @@ '@tiptap/suggestion': 2.1.13(@tiptap/core@2.1.13)(@tiptap/pm@2.1.13) dayjs: 1.11.6 vue: 3.5.11(typescript@4.8.4) - dev: false - - /@bole-core/components@1.3.2(@bole-core/core@1.0.2)(@bole-core/sass-utils@0.0.1)(@element-plus/icons-vue@2.3.1)(@tanstack/vue-query@4.37.1)(@videojs-player/vue@1.0.0)(@vueuse/core@11.1.0)(@vueuse/shared@11.1.0)(dayjs@1.11.6)(element-plus@2.8.4)(lodash@4.17.21)(mitt@3.0.0)(senin-help@1.0.5)(senin-vue@1.0.4)(video.js@7.20.3)(vue-component-type-helpers@2.1.6)(vue@3.5.11): - resolution: {integrity: sha512-sMCgoaKtJi3nPP3MrMx5cs0IjI0Tbes3YJF1AHN3TItR549aYc+vb+mkU34MjWh7EzqTE40htPxJueAGT6tMWg==} - peerDependencies: - '@bole-core/core': '*' - '@bole-core/sass-utils': '*' - '@element-plus/icons-vue': '*' - '@tanstack/vue-query': '*' - '@videojs-player/vue': '*' - '@vueuse/core': '*' - '@vueuse/shared': '*' - dayjs: ^1.11.7 - element-plus: '*' - lodash: '*' - mitt: '*' - senin-help: '*' - senin-vue: '*' - video.js: '*' - vue: 3.5.11 - vue-component-type-helpers: ^2.1.6 - dependencies: - '@bole-core/core': 1.0.2(@ywwlmm/openapi@0.0.3)(ali-oss@6.21.0)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.8.4)(file-saver@2.0.5)(jszip@3.10.1)(lodash@4.17.21)(senior-request@1.0.1)(vue-router@4.4.5)(vue@3.5.11)(xlsx-style@0.8.13)(xlsx@0.18.5) - '@bole-core/sass-utils': 0.0.1(element-plus@2.8.4) - '@element-plus/icons-vue': 2.3.1(vue@3.5.11) - '@tanstack/vue-query': 4.37.1(vue@3.5.11) - '@videojs-player/vue': 1.0.0(@types/video.js@7.3.49)(video.js@7.20.3)(vue@3.5.11) - '@vueuse/core': 11.1.0(vue@3.5.11) - '@vueuse/shared': 11.1.0(vue@3.5.11) - dayjs: 1.11.6 - element-plus: 2.8.4(vue@3.5.11) - lodash: 4.17.21 - mitt: 3.0.0 - senin-help: 1.0.5(@tanstack/vue-query@4.37.1)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.8.4)(file-saver@2.0.5)(lodash@4.17.21)(semver@7.6.3)(vue@3.5.11)(xlsx-style@0.8.13)(xlsx@0.18.5) - senin-vue: 1.0.4(@tanstack/vue-query@4.37.1)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.8.4)(file-saver@2.0.5)(lodash@4.17.21)(mitt@3.0.0)(semver@7.6.3)(senin-help@1.0.5)(vue@3.5.11) - video.js: 7.20.3 - vue: 3.5.11(typescript@4.8.4) - vue-component-type-helpers: 2.1.6 dev: false /@bole-core/core@1.0.2(@ywwlmm/openapi@0.0.3)(ali-oss@6.21.0)(axios@1.7.7)(dayjs@1.11.6)(element-plus@2.8.4)(file-saver@2.0.5)(jszip@3.10.1)(lodash@4.17.21)(senior-request@1.0.1)(vue-router@4.4.5)(vue@3.5.11)(xlsx-style@0.8.13)(xlsx@0.18.5): diff --git a/src/components/Form/CheckboxWithCustomize.vue b/src/components/Form/CheckboxWithCustomize.vue deleted file mode 100644 index 84a71a4..0000000 --- a/src/components/Form/CheckboxWithCustomize.vue +++ /dev/null @@ -1,128 +0,0 @@ -<template> - <div class="checkbox-with-extra-wrapper"> - <ProFormCheckbox - v-model="innerModelValue" - :value-enum="checkList" - v-bind="$attrs" - ></ProFormCheckbox> - <div class="checkbox-with-extra-input"> - <el-input - class="checkbox-with-extra-input-view" - v-model.trim="state.customInputValue" - :placeholder="`璇疯緭鍏ユ柊${extraText}`" - :maxlength="15" - :validate-event="false" - /> - <el-button - class="checkbox-with-extra-input-button" - link - type="primary" - @click="handleAddExtra" - > - 鏂板{{ extraText }} <el-icon> <circle-plus /> </el-icon - ></el-button> - </div> - </div> -</template> - -<script setup lang="ts"> -import { ProFormCheckbox } from '@bole-core/components'; -import { Message } from '@bole-core/core'; -import _ from 'lodash'; -import { useSearchSettingType } from '@/hooks'; - -defineOptions({ - name: 'CheckboxWithCustomize', -}); - -type Props = { - modelValue: string[]; - extraText: string; - searchType: number; - cuntomizeSearchType: number; - belongType?: number; -}; - -const props = withDefaults(defineProps<Props>(), {}); -const state = reactive({ - customInputValue: '', -}); - -const { searchSettingTypeList: typeList } = useSearchSettingType({ - searchType: props.searchType, - belongType: props.belongType, -}); -const { searchSettingTypeList: cuntomizeList, refetchSearchSettingType } = useSearchSettingType({ - searchType: props.cuntomizeSearchType, - belongType: props.belongType, -}); - -const emit = defineEmits<{ - (e: 'update:modelValue', val: string[]): void; - (e: 'handleChange'): void; -}>(); - -const innerModelValue = computed({ - get() { - return props.modelValue; - }, - set(val) { - emit('update:modelValue', val); - }, -}); - -const checkList = computed(() => { - return typeList.value.concat(cuntomizeList.value); -}); - -const handleAddExtra = _.debounce( - async () => { - if (!state.customInputValue) { - Message.warnMessage(`璇疯緭鍏ユ柊${props.extraText}`); - return; - } - await createExtra(); - }, - 1000, - { - leading: true, - trailing: false, - } -); -async function createExtra() { - try { - // let params: API.CreateOrEditSearchInput = { - // searchType: props.cuntomizeSearchType, - // belongType: props.belongType, - // name: state.customInputValue, - // sort: cuntomizeList.value.length + 1, - // status: true, - // src: '', - // }; - // let res = await searchSettingServices.createOrEditSearchSetting(params); - // if (res) { - // refetchSearchSettingType(); - // } - } catch (error) {} -} -</script> - -<style lang="scss" scoped> -@use '@/style/common.scss' as *; - -.checkbox-with-extra-wrapper { - display: inline-flex; - align-items: flex-start; - width: 100%; - - .checkbox-with-extra-input { - display: inline-flex; - margin-left: 10px; - width: 250px; - - .checkbox-with-extra-input-view { - width: 150px; - } - } -} -</style> diff --git a/src/constants/apiEnum.ts b/src/constants/apiEnum.ts index eeb9c95..a1f0c28 100644 --- a/src/constants/apiEnum.ts +++ b/src/constants/apiEnum.ts @@ -41,6 +41,32 @@ Descending = 1, } +/** 璧勬簮鎺у埗鍣� */ +export enum EnumResourceController { + /**鏁版嵁瀛楀吀 */ + Dictionary = 0, + /**鐢ㄦ埛璁よ瘉 */ + Auth = 1, + /**鐢ㄦ埛鑿滃崟 */ + Menu = 2, + /**鐢ㄦ埛璧勬簮 */ + Resource = 3, + /**鐢ㄦ埛瑙掕壊 */ + Role = 4, +} + +/** 璧勬簮璇锋眰鏂瑰紡 */ +export enum EnumResourceMethod { + /**鏌ヨ */ + Get = 10, + /**鎻愪氦 */ + Post = 20, + /**淇敼 */ + Put = 30, + /**鍒犻櫎 */ + Delete = 40, +} + /** 瑙掕壊鎺ュ彛鏁版嵁鏉冮檺 */ export enum EnumRoleWebApiDataPower { /**鑷畾涔� */ @@ -65,16 +91,4 @@ Enterprise = 20, /**杩愯惀 */ Operation = 100, -} - -/** 鎺ュ彛璇锋眰鏂瑰紡 */ -export enum EnumWebApiMethod { - /**鏌ヨ */ - Get = 10, - /**鎻愪氦 */ - Post = 20, - /**淇敼 */ - Put = 30, - /**鍒犻櫎 */ - Delete = 40, } diff --git a/src/services/api/auth.ts b/src/services/api/auth.ts index 5c04818..ddc31b1 100644 --- a/src/services/api/auth.ts +++ b/src/services/api/auth.ts @@ -2,7 +2,7 @@ // @ts-ignore import { request } from '@/utils/request'; -/** 鑾峰彇闃块噷浜慜SS鎺堟潈淇℃伅 GET /api/user/auth/getAliyunOSSAcs */ +/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 GET /api/user/auth/getAliyunOSSAcs */ export async function getAliyunOSSAcs( // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄) params: API.APIgetAliyunOSSAcsParams, @@ -12,14 +12,14 @@ method: 'GET', params: { ...params, - query: undefined, - ...params['query'], + request: undefined, + ...params['request'], }, ...(options || {}), }); } -/** 瀵嗙爜鐧诲綍 POST /api/user/auth/passwordLogin */ +/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 POST /api/user/auth/passwordLogin */ export async function passwordLogin(body: API.PasswordLoginCommand, options?: API.RequestConfig) { return request<API.PasswordLoginCommandCallback>('/api/user/auth/passwordLogin', { method: 'POST', diff --git a/src/services/api/dictionary.ts b/src/services/api/dictionary.ts index 8ceca42..2ffaa0f 100644 --- a/src/services/api/dictionary.ts +++ b/src/services/api/dictionary.ts @@ -2,17 +2,20 @@ // @ts-ignore import { request } from '@/utils/request'; -/** 鑾峰彇瀛楀吀鏁版嵁鍒嗛〉鍒楄〃 POST /api/main/dictionary/getDictionaryDatas */ +/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 POST /api/main/dictionary/getDictionaryDatas */ export async function getDictionaryDatas( body: API.GetDictionaryDatasQuery, options?: API.RequestConfig ) { - return request<API.GetDictionaryDatasQueryResult>('/api/main/dictionary/getDictionaryDatas', { - method: 'POST', - headers: { - 'Content-Type': 'application/json-patch+json', - }, - data: body, - ...(options || {}), - }); + return request<API.PagedListQueryResultGetDictionaryDatasQueryResultItem>( + '/api/main/dictionary/getDictionaryDatas', + { + method: 'POST', + headers: { + 'Content-Type': 'application/json-patch+json', + }, + data: body, + ...(options || {}), + } + ); } diff --git a/src/services/api/menu.ts b/src/services/api/menu.ts index 04034d5..9823244 100644 --- a/src/services/api/menu.ts +++ b/src/services/api/menu.ts @@ -2,7 +2,7 @@ // @ts-ignore import { request } from '@/utils/request'; -/** 鍒犻櫎鑿滃崟 DELETE /api/user/menu/deleteMenu */ +/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 DELETE /api/user/menu/deleteMenu */ export async function deleteMenu(body: API.DeleteMenuCommand, options?: API.RequestConfig) { return request<number>('/api/user/menu/deleteMenu', { method: 'DELETE', @@ -14,7 +14,7 @@ }); } -/** 鏌ヨ鑿滃崟璇︽儏 GET /api/user/menu/getMenu */ +/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 GET /api/user/menu/getMenu */ export async function getMenu( // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄) params: API.APIgetMenuParams, @@ -29,7 +29,7 @@ }); } -/** 鏌ヨ鑿滃崟鍒楄〃 GET /api/user/menu/getMenus */ +/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 GET /api/user/menu/getMenus */ export async function getMenus( // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄) params: API.APIgetMenusParams, @@ -44,7 +44,7 @@ }); } -/** 淇濆瓨鑿滃崟 POST /api/user/menu/saveMenu */ +/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 POST /api/user/menu/saveMenu */ export async function saveMenu(body: API.SaveMenuCommand, options?: API.RequestConfig) { return request<string>('/api/user/menu/saveMenu', { method: 'POST', @@ -55,3 +55,39 @@ ...(options || {}), }); } + +/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 POST /api/user/menu/saveMenuButton */ +export async function saveMenuButton(body: API.SaveMenuButtonCommand, options?: API.RequestConfig) { + return request<string>('/api/user/menu/saveMenuButton', { + method: 'POST', + headers: { + 'Content-Type': 'application/json-patch+json', + }, + data: body, + ...(options || {}), + }); +} + +/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 POST /api/user/menu/saveMenuField */ +export async function saveMenuField(body: API.SaveMenuFieldCommand, options?: API.RequestConfig) { + return request<string>('/api/user/menu/saveMenuField', { + method: 'POST', + headers: { + 'Content-Type': 'application/json-patch+json', + }, + data: body, + ...(options || {}), + }); +} + +/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 PUT /api/user/menu/setMenuSwitch */ +export async function setMenuSwitch(body: API.SetMenuSwitchCommand, options?: API.RequestConfig) { + return request<number>('/api/user/menu/setMenuSwitch', { + method: 'PUT', + headers: { + 'Content-Type': 'application/json-patch+json', + }, + data: body, + ...(options || {}), + }); +} diff --git a/src/services/api/resource.ts b/src/services/api/resource.ts index dc3ef94..f01100b 100644 --- a/src/services/api/resource.ts +++ b/src/services/api/resource.ts @@ -2,7 +2,7 @@ // @ts-ignore import { request } from '@/utils/request'; -/** 鑾峰彇璧勬簮瀛楁 GET /api/user/resource/getResourceFields */ +/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 GET /api/user/resource/getResourceFields */ export async function getResourceFields( // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄) params: API.APIgetResourceFieldsParams, @@ -17,7 +17,7 @@ }); } -/** 鑾峰彇璧勬簮鍒楄〃 GET /api/user/resource/getResources */ +/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 GET /api/user/resource/getResources */ export async function getResources( // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄) params: API.APIgetResourcesParams, diff --git a/src/services/api/role.ts b/src/services/api/role.ts index 13b983d..765dcfe 100644 --- a/src/services/api/role.ts +++ b/src/services/api/role.ts @@ -2,7 +2,7 @@ // @ts-ignore import { request } from '@/utils/request'; -/** 鍒犻櫎瑙掕壊 DELETE /api/user/role/deleteRole */ +/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 DELETE /api/user/role/deleteRole */ export async function deleteRole(body: API.DeleteRoleCommand, options?: API.RequestConfig) { return request<number>('/api/user/role/deleteRole', { method: 'DELETE', @@ -14,7 +14,7 @@ }); } -/** 鏌ヨ瑙掕壊璇︽儏 GET /api/user/role/getRole */ +/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 GET /api/user/role/getRole */ export async function getRole( // 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄) params: API.APIgetRoleParams, @@ -29,7 +29,7 @@ }); } -/** 鏌ヨ瑙掕壊鍒楄〃 POST /api/user/role/getRoles */ +/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 POST /api/user/role/getRoles */ export async function getRoles(body: API.GetRolesQuery, options?: API.RequestConfig) { return request<API.PagedListQueryResultGetRolesQueryResultItem>('/api/user/role/getRoles', { method: 'POST', @@ -41,7 +41,7 @@ }); } -/** 淇濆瓨瑙掕壊 POST /api/user/role/saveRole */ +/** 姝ゅ鍚庣娌℃湁鎻愪緵娉ㄩ噴 POST /api/user/role/saveRole */ export async function saveRole(body: API.SaveRoleCommand, options?: API.RequestConfig) { return request<string>('/api/user/role/saveRole', { method: 'POST', diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts index 8510633..d97b45f 100644 --- a/src/services/api/typings.d.ts +++ b/src/services/api/typings.d.ts @@ -4,7 +4,8 @@ } interface APIgetAliyunOSSAcsParams { - query?: GetAliyunOSSAcsQuery; + /** 鑾峰彇闃块噷浜慜SS鎺堟潈淇℃伅 */ + request?: GetAliyunOSSAcsQuery; } interface APIgetMenuParams { @@ -29,10 +30,8 @@ } interface APIgetResourcesParams { - /** 寰湇鍔� */ - service?: string; /** 璇锋眰鏂瑰紡 */ - method?: EnumWebApiMethod; + method?: EnumResourceMethod; /** 鍏抽敭瀛� */ keywords?: string; /** 瑙掕壊Id */ @@ -88,6 +87,30 @@ Descending = 1, } + enum EnumResourceController { + /**鏁版嵁瀛楀吀 */ + Dictionary = 0, + /**鐢ㄦ埛璁よ瘉 */ + Auth = 1, + /**鐢ㄦ埛鑿滃崟 */ + Menu = 2, + /**鐢ㄦ埛璧勬簮 */ + Resource = 3, + /**鐢ㄦ埛瑙掕壊 */ + Role = 4, + } + + enum EnumResourceMethod { + /**鏌ヨ */ + Get = 10, + /**鎻愪氦 */ + Post = 20, + /**淇敼 */ + Put = 30, + /**鍒犻櫎 */ + Delete = 40, + } + enum EnumRoleWebApiDataPower { /**鑷畾涔� */ Custom = 1, @@ -112,17 +135,6 @@ Operation = 100, } - enum EnumWebApiMethod { - /**鏌ヨ */ - Get = 10, - /**鎻愪氦 */ - Post = 20, - /**淇敼 */ - Put = 30, - /**鍒犻櫎 */ - Delete = 40, - } - interface FriendlyResultGetAliyunOSSAcsQueryResult { /** 璺熻釜Id */ traceId?: string; @@ -131,24 +143,6 @@ /** 閿欒鐮� */ errorCode?: string; data?: GetAliyunOSSAcsQueryResult; - /** 鎵ц鎴愬姛 */ - success?: boolean; - /** 閿欒淇℃伅 */ - msg?: any; - /** 闄勫姞鏁版嵁 */ - extras?: any; - /** 鏃堕棿鎴� */ - timestamp?: number; - } - - interface FriendlyResultGetDictionaryDatasQueryResult { - /** 璺熻釜Id */ - traceId?: string; - /** 鐘舵�佺爜 */ - code?: number; - /** 閿欒鐮� */ - errorCode?: string; - data?: GetDictionaryDatasQueryResult; /** 鎵ц鎴愬姛 */ success?: boolean; /** 閿欒淇℃伅 */ @@ -290,6 +284,24 @@ timestamp?: number; } + interface FriendlyResultPagedListQueryResultGetDictionaryDatasQueryResultItem { + /** 璺熻釜Id */ + traceId?: string; + /** 鐘舵�佺爜 */ + code?: number; + /** 閿欒鐮� */ + errorCode?: string; + data?: PagedListQueryResultGetDictionaryDatasQueryResultItem; + /** 鎵ц鎴愬姛 */ + success?: boolean; + /** 閿欒淇℃伅 */ + msg?: any; + /** 闄勫姞鏁版嵁 */ + extras?: any; + /** 鏃堕棿鎴� */ + timestamp?: number; + } + interface FriendlyResultPagedListQueryResultGetRolesQueryResultItem { /** 璺熻釜Id */ traceId?: string; @@ -338,12 +350,6 @@ interface GetDictionaryDatasQuery { pageModel?: PagedListQueryPageModel; - } - - interface GetDictionaryDatasQueryResult { - pageModel?: PagedListQueryResultPageModel; - /** 鏁版嵁 */ - data?: GetDictionaryDatasQueryResultItem[]; } type GetDictionaryDatasQueryResultItem = Record<string, any>; @@ -476,19 +482,24 @@ id?: string; /** 鏄惁閫変腑锛堢敤浜庤鑹叉巿鏉冿級 */ isChecked?: boolean; - /** 寰湇鍔� */ - service?: string; + controller?: EnumResourceController; + /** 濮旀墭鍚嶇О */ + actionName?: string; /** 缂栧彿 */ code?: string; /** 鍚嶇О */ name?: string; - method?: EnumWebApiMethod; + method?: EnumResourceMethod; /** 璺敱 */ route?: string; /** 璇锋眰绫诲瀷鍚嶇О */ requestTypeName?: string; + /** 璇锋眰绫诲瀷鍏ㄥ悕 */ + requestTypeFullName?: string; /** 鍝嶅簲绫诲瀷鍚嶇О */ responseTypeName?: string; + /** 鍝嶅簲绫诲瀷鍏ㄥ悕 */ + responseTypeFullName?: string; } interface GetRoleQueryResult { @@ -544,6 +555,12 @@ order?: EnumPagedListOrder; } + interface PagedListQueryResultGetDictionaryDatasQueryResultItem { + pageModel?: PagedListQueryResultPageModel; + /** 鏁版嵁 */ + data?: GetDictionaryDatasQueryResultItem[]; + } + interface PagedListQueryResultGetRolesQueryResultItem { pageModel?: PagedListQueryResultPageModel; /** 鏁版嵁 */ @@ -577,6 +594,29 @@ accessToken?: string; /** 鍒锋柊浠ょ墝 */ refreshToken?: string; + } + + interface SaveMenuButtonCommand { + /** Id */ + id?: string; + /** 鑿滃崟Id */ + parentId?: string; + /** 缂栧彿 */ + code?: string; + /** 鍚嶇О */ + name?: string; + /** 鍒嗙粍鍚嶇О锛堢敤浜庢寜閽�/瀛楁锛� */ + group?: string; + /** 浣嶇疆锛堢敤浜庢寜閽級 */ + location?: string; + /** 鍥炬爣 */ + icon?: string; + /** 瀹藉害锛堢敤浜庢寜閽�/鍒�/鍏冪礌锛� */ + width?: string; + /** 鎺掑簭 */ + sort?: number; + /** 澶囨敞 */ + remark?: string; } interface SaveMenuCommand { @@ -656,6 +696,29 @@ fields?: SaveMenuCommandField[]; } + interface SaveMenuFieldCommand { + /** Id */ + id?: string; + /** 鑿滃崟Id */ + parentId?: string; + /** 缂栧彿 */ + code?: string; + /** 鍚嶇О */ + name?: string; + /** 鍒嗙粍鍚嶇О锛堢敤浜庢寜閽�/瀛楁锛� */ + group?: string; + /** 浣嶇疆锛堢敤浜庢寜閽級 */ + location?: string; + /** 鍥炬爣 */ + icon?: string; + /** 瀹藉害锛堢敤浜庢寜閽�/鍒�/鍏冪礌锛� */ + width?: string; + /** 鎺掑簭 */ + sort?: number; + /** 澶囨敞 */ + remark?: string; + } + interface SaveRoleCommand { /** Id */ id?: string; @@ -670,4 +733,14 @@ /** 璧勬簮 */ resources?: GetRoleQueryResultResource[]; } + + interface SetMenuSwitchCommand { + /** Id */ + ids?: string[]; + type?: EnumMenuType; + /** 鏄惁绂佺敤锛坣ull鏃朵笉鏇存柊锛� */ + isDisabled?: boolean; + /** 鏄惁缂撳瓨锛坣ull鏃朵笉鏇存柊锛� */ + isCache?: boolean; + } } diff --git a/src/views/DictionaryManage/SearchSetting.vue b/src/views/DictionaryManage/SearchSetting.vue index ebb9317..460cf06 100644 --- a/src/views/DictionaryManage/SearchSetting.vue +++ b/src/views/DictionaryManage/SearchSetting.vue @@ -88,7 +88,6 @@ import AddOrEditSearchSetting from './components/AddOrEditSearchSetting.vue'; import { convertApi2FormUrl } from '@/utils'; import { useQueryClient } from '@tanstack/vue-query'; -import { useSearchSettingType } from '@/hooks'; defineOptions({ name: 'SearchSetting', @@ -106,9 +105,7 @@ loading: true, }; const queryClient = useQueryClient(); -const { searchSettingTypeList: typeList } = useSearchSettingType({ - searchType: SearchType.IndustryCategory, -}); +const typeList = ref([]); const state = reactive({ ...BaseState }); onMounted(async () => { diff --git a/src/views/EnterpriseManage/EnterpriseManageList.vue b/src/views/EnterpriseManage/EnterpriseManageList.vue index b0f20e4..0e4796d 100644 --- a/src/views/EnterpriseManage/EnterpriseManageList.vue +++ b/src/views/EnterpriseManage/EnterpriseManageList.vue @@ -69,7 +69,6 @@ import ConfigureDialog from './components/ConfigureDialog.vue'; import { OrderInputType, Message } from '@bole-core/core'; import { useQueryClient } from '@tanstack/vue-query'; -import { useSearchSettingType } from '@/hooks'; defineOptions({ name: 'EnterpriseManageList', @@ -102,9 +101,7 @@ loading: true, }; const queryClient = useQueryClient(); -const { searchSettingTypeList: typeList } = useSearchSettingType({ - searchType: SearchType.IndustryCategory, -}); +const typeList = ref([]); const state = reactive({ ...BaseState }); diff --git a/src/views/EnterpriseManage/components/AddOrEditEnterpriseView.vue b/src/views/EnterpriseManage/components/AddOrEditEnterpriseView.vue index 2a0d609..84c2d09 100644 --- a/src/views/EnterpriseManage/components/AddOrEditEnterpriseView.vue +++ b/src/views/EnterpriseManage/components/AddOrEditEnterpriseView.vue @@ -196,7 +196,7 @@ } from '@bole-core/components'; import { FormRules, FormInstance } from 'element-plus'; import { SearchType } from '@/constants'; -import { useRouteView, useGlobalEventContext, GlobalEvent, useSearchSettingType } from '@/hooks'; +import { useRouteView, useGlobalEventContext, GlobalEvent } from '@/hooks'; import _ from 'lodash'; import { validateFormList, filterCN } from '@/utils'; import { Message, BoleRegExp } from '@bole-core/core'; @@ -224,9 +224,7 @@ const { closeViewPush } = useRouteView(); const eventContext = useGlobalEventContext(); -const { searchSettingTypeList: typeList } = useSearchSettingType({ - searchType: SearchType.IndustryCategory, -}); +const typeList = ref([]); const form = reactive({ id: '', diff --git a/src/views/System/ModuleManage.vue b/src/views/System/ModuleManage.vue index 5389d40..d07ec24 100644 --- a/src/views/System/ModuleManage.vue +++ b/src/views/System/ModuleManage.vue @@ -111,6 +111,7 @@ import _ from 'lodash'; import { useReset } from '@bole-core/core'; import * as menuServices from '@/services/api/menu'; +import { DrawerTableDataItem } from './types'; defineOptions({ name: 'ModuleManage', @@ -181,6 +182,7 @@ const BaseState = { loading: true, searchValue: '', + group: 'default', }; const state = reactive({ ...BaseState }); const moduleTreeStore = ref<TreeStore<TreeModuleDtoGroupDto>>(); @@ -210,9 +212,10 @@ //drawer const drawerVisible = ref(false); const currentDrawerModule = ref<API.GetMenuQueryResult>({}); + const drawerState = reactive<{ type: SubModuleType; - tableData: ValueOf<API.AllSubModule>; + tableData: DrawerTableDataItem[]; }>({ type: SubModuleType.PageButton, tableData: [], @@ -418,19 +421,36 @@ async function openDrawer(module: TreeModuleDtoGroupDto, type: SubModuleType) { try { drawerState.type = type; - currentDrawerModule.value = await getMenu(module.id); - await nextTick(); getBaseModuleGetAllSubModule(module, type); } catch (error) {} } async function getBaseModuleGetAllSubModule(module: TreeModuleDtoGroupDto, type: SubModuleType) { try { - const defaultGroup = currentDrawerModule.value.groups.find((g) => g.group === 'default') ?? {}; + const menu = await getMenu(module.id); + currentDrawerModule.value = menu; + const currentGroup = menu.groups.find((g) => g.group === state.group) ?? {}; if (type === SubModuleType.Column) { - drawerState.tableData = defaultGroup.fields ?? []; + drawerState.tableData = (currentGroup.fields ?? []).map((f) => ({ + enCode: f.code, + name: f.name, + sortCode: f.sort, + width: f.width, + isEdit: false, + isShow: false, + id: f.id, + })); } else { - drawerState.tableData = - defaultGroup.buttonLocations?.find((b) => b.location === SubModuleKey[type])?.buttons ?? []; + drawerState.tableData = ( + currentGroup.buttonLocations?.find((b) => b.location === SubModuleKey[type])?.buttons ?? [] + ).map((b) => ({ + enCode: b.code, + name: b.name, + sortCode: b.sort, + width: b.width, + isEdit: false, + isShow: false, + id: b.id, + })); } drawerVisible.value = true; } catch (error) {} @@ -441,17 +461,17 @@ enCode: '', name: '', sortCode: sortCode, - width: 0, + width: 0 as any as string, isEdit: true, - apiName: '', - realColumn: '', + // apiName: '', + // realColumn: '', isShow: true, }; drawerState.tableData?.push(baseData); } function getDefaultSortCode() { return drawerState.tableData.length > 0 - ? drawerState.tableData[drawerState.tableData.length - 1].sort + 1 + ? drawerState.tableData[drawerState.tableData.length - 1].sortCode + 1 : 0; } function handleBatchAddColumn(keys: string[]) { @@ -460,13 +480,13 @@ enCode: key, name: '', sortCode: sortCode + index, - width: 0, + width: 0 as any as string, isEdit: true, })); drawerState.tableData?.push(...baseDataList); } function handleAddFastBtn(fastBtn: FastBtn) { - let subModule: API.ModuleButtonDto | API.ModuleColumnDto = { + let subModule: DrawerTableDataItem = { enCode: fastBtn.enCode, name: fastBtn.name, sortCode: getDefaultSortCode(), @@ -477,37 +497,38 @@ } handleSaveSubModule(subModule); } -async function handleSaveSubModule(subModule: API.ModuleButtonDto | API.ModuleColumnDto) { +async function handleSaveSubModule(subModule: DrawerTableDataItem) { try { - let params = { - moduleId: currentDrawerModule.value.id, - enCode: subModule.enCode, + let params: API.SaveMenuFieldCommand = { + parentId: currentDrawerModule.value.id, + code: subModule.enCode, name: subModule.name, - sortCode: subModule.sortCode, + group: state.group, + // location: 'string', + width: subModule.width, + sort: subModule.sortCode, }; if (subModule.id) { - //@ts-ignore params.id = subModule.id; } if (drawerState.type === SubModuleType.Column) { - const _subModule = subModule as API.ModuleColumnDto; - params = { - ...params, - //@ts-ignore - width: _subModule.width, - apiName: _subModule.apiName, - realColumn: _subModule.realColumn, - isShow: _subModule.isShow, - }; + // const _subModule = subModule; + // params = { + // ...params, + // //@ts-ignore + // width: _subModule.width, + // // apiName: _subModule.apiName, + // // realColumn: _subModule.realColumn, + // // isShow: _subModule.isShow, + // }; } else { - //@ts-ignore - params.buttonType = drawerState.type; + params.location = SubModuleKey[drawerState.type]; } let res = null; if (drawerState.type === SubModuleType.Column) { - res = await baseModuleServices.addOrEditModuleColumn(params); + res = await menuServices.saveMenuField(params); } else { - res = await baseModuleServices.addOrEditModuleButton(params); + res = await menuServices.saveMenuButton(params); } if (res) { getBaseModuleGetAllSubModule(currentDrawerModule.value, drawerState.type); @@ -518,28 +539,25 @@ async function handelBatchSaveColumn() { try { if (drawerState.type === SubModuleType.Column) { - let columnModuleList = drawerState.tableData as (API.ModuleColumnDto & { isEdit: boolean })[]; //.filter((d) => d.isEdit); + let columnModuleList = drawerState.tableData; //.filter((d) => d.isEdit); if (columnModuleList.length > 0) { - let params = columnModuleList.map((columnModule) => { - let columnItem = { - moduleId: currentDrawerModule.value.id, - enCode: columnModule.enCode, - name: columnModule.name, - sortCode: columnModule.sortCode, - apiName: columnModule.apiName, - realColumn: columnModule.realColumn, - isShow: columnModule.isShow, - width: columnModule.width, - }; - if (columnModule.id) { - //@ts-ignore - columnItem.id = columnModule.id; + const groups = currentDrawerModule.value.groups.map((group) => { + if (group.group === state.group) { + group.fields == + columnModuleList.map((c) => ({ + code: c.enCode, + name: c.name, + width: c.width, + sort: c.sortCode, + })); } - return columnItem; + return group; }); - let res = await baseModuleServices.addModuleColumnList(params, { - getResponse: true, - }); + let params: API.SaveMenuCommand = { + ...currentDrawerModule.value, + groups: groups, + }; + const res = await menuServices.saveMenu(params); if (res) { getBaseModuleGetAllSubModule(currentDrawerModule.value, drawerState.type); Message.successMessage('淇濆瓨鎴愬姛'); @@ -549,15 +567,12 @@ } catch (error) {} } -async function handleDeleteSubModule(subModule: API.ModuleButtonDto | API.ModuleColumnDto) { +async function handleDeleteSubModule(subModule: DrawerTableDataItem) { try { await Message.deleteMessage(); - let res = null; - if (drawerState.type === SubModuleType.Column) { - res = await baseModuleServices.deleteModuleColumn({ id: subModule.id }); - } else { - res = await baseModuleServices.deleteModuleButton({ id: subModule.id }); - } + let res = await menuServices.deleteMenu({ + ids: [subModule.id], + }); if (res) { Message.successMessage('鍒犻櫎鎴愬姛'); getBaseModuleGetAllSubModule(currentDrawerModule.value, drawerState.type); diff --git a/src/views/System/components/SubModuleEditDrawer.vue b/src/views/System/components/SubModuleEditDrawer.vue index a39c1d7..91615c5 100644 --- a/src/views/System/components/SubModuleEditDrawer.vue +++ b/src/views/System/components/SubModuleEditDrawer.vue @@ -93,6 +93,7 @@ import { ProTableOperationBtn } from '@bole-core/components'; import { Message } from '@/utils'; import { ElMessageBox } from 'element-plus'; +import { DrawerTableDataItem } from '../types'; defineOptions({ name: 'SubModuleEditDrawer', @@ -102,7 +103,7 @@ modelValue: boolean; title: string; type: SubModuleType; - data: ValueOf<API.AllSubModule>; + data: DrawerTableDataItem[]; }; const props = withDefaults(defineProps<Props>(), { @@ -126,9 +127,9 @@ //鎵归噺娣诲姞 (e: 'onBatchAddColumn', keys: string[]): void; (e: 'onAddFastBtn', fastBtn: FastBtn): void; - (e: 'onSaveSubModule', subModule: API.ModuleButtonDto | API.ModuleColumnDto): void; + (e: 'onSaveSubModule', subModule: DrawerTableDataItem): void; (e: 'onBatchSaveColumn'): void; - (e: 'onDeleteSubModule', subModule: API.ModuleButtonDto | API.ModuleColumnDto): void; + (e: 'onDeleteSubModule', subModule: DrawerTableDataItem): void; }>(); const innerVisible = computed({ diff --git a/src/views/System/types/index.ts b/src/views/System/types/index.ts new file mode 100644 index 0000000..f1a7fe9 --- /dev/null +++ b/src/views/System/types/index.ts @@ -0,0 +1,9 @@ +export type DrawerTableDataItem = { + id?: string; + enCode: string; + name: string; + sortCode: number; + width?: string; + isEdit?: boolean; + isShow?: boolean; +}; -- Gitblit v1.9.1