diff --git a/src/components/a-drop-table/ADropTable.vue b/src/components/a-drop-table/ADropTable.vue index ab9fc7e..007cdd3 100644 --- a/src/components/a-drop-table/ADropTable.vue +++ b/src/components/a-drop-table/ADropTable.vue @@ -1,13 +1,14 @@ @@ -145,13 +151,19 @@ const displayData = computed(() => { placement="bottom" trigger="click" @visible-change="visibleChangeHandler"> - - - + - + + + +import ADropTable from '@/components/a-drop-table/ADropTable.vue' +import { + type IconName, + icons, +} from '@/components/a-icon/iconfont.ts' +import AIcon from '@/components/a-icon/AIcon.vue' +import Strings from '@/common/utils/strings.ts' + +const model = defineModel() +const dropTableLoader = (param: { keywords: string } & G.PageParam) => { + const dataList = icons.glyphs + .filter(it => it.name.toLowerCase().includes(param.keywords.toLowerCase()) || it.font_class.toLowerCase().includes(param.keywords.toLowerCase())) + .sort((a, b) => a.unicode_decimal - b.unicode_decimal) + return Promise.resolve({ + current: param.current!, + size: param.size, + pages: Math.ceil(dataList.length / param.size!), + total: dataList.length, + records: dataList + .filter((_, i) => { + return i >= (param.current! - 1) * param.size! && i < param.current! * param.size! + }) + .map(it => ({ + id: it.font_class, + ...it, + })), + } as G.PageResult) +} + + + + + + diff --git a/src/components/a-icon/iconfont.css b/src/components/a-icon/iconfont.css index 05f5f2a..1a046b9 100644 --- a/src/components/a-icon/iconfont.css +++ b/src/components/a-icon/iconfont.css @@ -1,8 +1,8 @@ @font-face { font-family: "iconfont"; /* 项目名称 再昇云 */ - src: url('@/components/a-icon/iconfont.woff2?t=1771989909326') format('woff2'), - url('@/components/a-icon/iconfont.woff?t=1771989909326') format('woff'), - url('@/components/a-icon/iconfont.ttf?t=1771989909326') format('truetype'); + src: url('@/components/a-icon/iconfont.woff2?t=1772264126793') format('woff2'), + url('@/components/a-icon/iconfont.woff?t=1772264126793') format('woff'), + url('@/components/a-icon/iconfont.ttf?t=1772264126793') format('truetype'); } .iconfont { @@ -13,6 +13,38 @@ -moz-osx-font-smoothing: grayscale; } +.icon-yulan:before { + content: "\e668"; +} + +.icon-putongzhihang:before { + content: "\e663"; +} + +.icon-zhihangjilu:before { + content: "\e892"; +} + +.icon-xitongguanli1:before { + content: "\e6ae"; +} + +.icon-API:before { + content: "\e740"; +} + +.icon-bianma:before { + content: "\e772"; +} + +.icon-caidan:before { + content: "\e662"; +} + +.icon-gongnengquanxian:before { + content: "\e661"; +} + .icon-zhongzhimima:before { content: "\e660"; } diff --git a/src/components/a-icon/iconfont.json b/src/components/a-icon/iconfont.json index af10f47..283ba65 100644 --- a/src/components/a-icon/iconfont.json +++ b/src/components/a-icon/iconfont.json @@ -5,6 +5,62 @@ "css_prefix_text": "icon-", "description": "", "glyphs": [ + { + "icon_id": "7450656", + "name": "预览", + "font_class": "yulan", + "unicode": "e668", + "unicode_decimal": 58984 + }, + { + "icon_id": "11493961", + "name": "普通执行", + "font_class": "putongzhihang", + "unicode": "e663", + "unicode_decimal": 58979 + }, + { + "icon_id": "44782561", + "name": "执行记录", + "font_class": "zhihangjilu", + "unicode": "e892", + "unicode_decimal": 59538 + }, + { + "icon_id": "12884221", + "name": "系统管理", + "font_class": "xitongguanli1", + "unicode": "e6ae", + "unicode_decimal": 59054 + }, + { + "icon_id": "3351180", + "name": "API", + "font_class": "API", + "unicode": "e740", + "unicode_decimal": 59200 + }, + { + "icon_id": "19105727", + "name": "编码", + "font_class": "bianma", + "unicode": "e772", + "unicode_decimal": 59250 + }, + { + "icon_id": "7155218", + "name": "菜单", + "font_class": "caidan", + "unicode": "e662", + "unicode_decimal": 58978 + }, + { + "icon_id": "12820163", + "name": "功能权限", + "font_class": "gongnengquanxian", + "unicode": "e661", + "unicode_decimal": 58977 + }, { "icon_id": "524416", "name": "重置密码", diff --git a/src/components/a-icon/iconfont.ts b/src/components/a-icon/iconfont.ts index cbb95d9..5e01e16 100644 --- a/src/components/a-icon/iconfont.ts +++ b/src/components/a-icon/iconfont.ts @@ -5,6 +5,62 @@ export const icons = { 'css_prefix_text': 'icon-', 'description': '', 'glyphs': [ + { + 'icon_id': '7450656', + 'name': '预览', + 'font_class': 'yulan', + 'unicode': 'e668', + 'unicode_decimal': 58984, + }, + { + 'icon_id': '11493961', + 'name': '普通执行', + 'font_class': 'putongzhihang', + 'unicode': 'e663', + 'unicode_decimal': 58979, + }, + { + 'icon_id': '44782561', + 'name': '执行记录', + 'font_class': 'zhihangjilu', + 'unicode': 'e892', + 'unicode_decimal': 59538, + }, + { + 'icon_id': '12884221', + 'name': '系统管理', + 'font_class': 'xitongguanli1', + 'unicode': 'e6ae', + 'unicode_decimal': 59054, + }, + { + 'icon_id': '3351180', + 'name': 'API', + 'font_class': 'API', + 'unicode': 'e740', + 'unicode_decimal': 59200, + }, + { + 'icon_id': '19105727', + 'name': '编码', + 'font_class': 'bianma', + 'unicode': 'e772', + 'unicode_decimal': 59250, + }, + { + 'icon_id': '7155218', + 'name': '菜单', + 'font_class': 'caidan', + 'unicode': 'e662', + 'unicode_decimal': 58978, + }, + { + 'icon_id': '12820163', + 'name': '功能权限', + 'font_class': 'gongnengquanxian', + 'unicode': 'e661', + 'unicode_decimal': 58977, + }, { 'icon_id': '524416', 'name': '重置密码', diff --git a/src/components/a-icon/iconfont.ttf b/src/components/a-icon/iconfont.ttf index ba9b6e8..e5aaabc 100644 Binary files a/src/components/a-icon/iconfont.ttf and b/src/components/a-icon/iconfont.ttf differ diff --git a/src/components/a-icon/iconfont.woff b/src/components/a-icon/iconfont.woff index 3cff0b0..0b7850c 100644 Binary files a/src/components/a-icon/iconfont.woff and b/src/components/a-icon/iconfont.woff differ diff --git a/src/components/a-icon/iconfont.woff2 b/src/components/a-icon/iconfont.woff2 index b69b719..392663c 100644 Binary files a/src/components/a-icon/iconfont.woff2 and b/src/components/a-icon/iconfont.woff2 differ diff --git a/src/components/a-page/a-table-page/ATablePage.tsx b/src/components/a-page/a-table-page/ATablePage.tsx index 701da61..ccc4c8b 100644 --- a/src/components/a-page/a-table-page/ATablePage.tsx +++ b/src/components/a-page/a-table-page/ATablePage.tsx @@ -102,6 +102,7 @@ interface FormPropsType { * @param param 查询条件 */ paging: (param: P) => Promise>> + list?: (param: P) => Promise> /** * 导出函数 * @param param 查询条件 @@ -329,9 +330,19 @@ const component = defineComponent( loading.value = false }) return + } else if (props.searchForm.list != null) { + props.searchForm.list(formData.$clone() as P) + .then(res => { + const records = res.data ?? ([] as T[]) + tableData.$reset(records) + }) + .finally(() => { + loading.value = false + }) + return } } - expose({doSearch}) + expose({doSearch, tableData}) const showHighFormHandle = () => { showHighForm.value = !showHighForm.value formData.$reset() @@ -634,7 +645,7 @@ const component = defineComponent( } , [ [ ElLoading.directive, loading.value ] ]) } - (formData as G.PageParam).current = val} @@ -645,7 +656,7 @@ const component = defineComponent( total={totalCount.value} background={true} layout="total, prev, pager, next, sizes, jumper" - onChange={doSearch}/> + onChange={doSearch}/> : <>} { slots?.default?.() } @@ -658,8 +669,9 @@ const component = defineComponent( }, ) -export interface ATablePageInstance extends InstanceType { +export interface ATablePageInstance extends InstanceType { doSearch: () => void + tableData: T[] } export default component diff --git a/src/dts/components.d.ts b/src/dts/components.d.ts index 0f866c9..578a46e 100644 --- a/src/dts/components.d.ts +++ b/src/dts/components.d.ts @@ -33,6 +33,7 @@ declare module 'vue' { ElFormItem: typeof import('element-plus/es')['ElFormItem'] ElHeader: typeof import('element-plus/es')['ElHeader'] ElIcon: typeof import('element-plus/es')['ElIcon'] + ElIconArrowRight: typeof import('@element-plus/icons-vue')['ArrowRight'] ElIconCircleClose: typeof import('@element-plus/icons-vue')['CircleClose'] ElIconPicture: typeof import('@element-plus/icons-vue')['Picture'] ElIconPlus: typeof import('@element-plus/icons-vue')['Plus'] @@ -91,6 +92,7 @@ declare global { const ElFormItem: typeof import('element-plus/es')['ElFormItem'] const ElHeader: typeof import('element-plus/es')['ElHeader'] const ElIcon: typeof import('element-plus/es')['ElIcon'] + const ElIconArrowRight: typeof import('@element-plus/icons-vue')['ArrowRight'] const ElIconCircleClose: typeof import('@element-plus/icons-vue')['CircleClose'] const ElIconPicture: typeof import('@element-plus/icons-vue')['Picture'] const ElIconPlus: typeof import('@element-plus/icons-vue')['Plus'] diff --git a/src/pages/gds/goods-category/GoodsCategoryForm.vue b/src/pages/gds/goods-category/GoodsCategoryForm.vue index 6d2cd57..2ae40cb 100644 --- a/src/pages/gds/goods-category/GoodsCategoryForm.vue +++ b/src/pages/gds/goods-category/GoodsCategoryForm.vue @@ -19,7 +19,7 @@ - + diff --git a/src/pages/gds/goods/GoodsForm.vue b/src/pages/gds/goods/GoodsForm.vue index dce67d9..a96f3c4 100644 --- a/src/pages/gds/goods/GoodsForm.vue +++ b/src/pages/gds/goods/GoodsForm.vue @@ -115,7 +115,6 @@ const formPanelIns = useTemplateRef('formPanel') const uploaderIns = useTemplateRef>('uploader') const status = ref<'add' | 'modify'>('add') const formPanelProps = buildFormPanelProps({ - // title: status.value === 'add' ? '新建产品' : '修改产品', detailsLoader(id?: string) { if (Strings.isBlank(id)) { status.value = 'add' diff --git a/src/pages/sys/endpoint/Endpoint.vue b/src/pages/sys/endpoint/Endpoint.vue index f276e2d..644041d 100644 --- a/src/pages/sys/endpoint/Endpoint.vue +++ b/src/pages/sys/endpoint/Endpoint.vue @@ -1,13 +1,11 @@ diff --git a/src/pages/sys/endpoint/EndpointForm.vue b/src/pages/sys/endpoint/EndpointForm.vue index ad7ee2b..5bacd8c 100644 --- a/src/pages/sys/endpoint/EndpointForm.vue +++ b/src/pages/sys/endpoint/EndpointForm.vue @@ -1,163 +1,139 @@ diff --git a/src/pages/sys/gen/tpl/Tpl.vue b/src/pages/sys/gen/tpl/Tpl.vue index 9cd06b8..9921ce9 100644 --- a/src/pages/sys/gen/tpl/Tpl.vue +++ b/src/pages/sys/gen/tpl/Tpl.vue @@ -1,19 +1,16 @@ diff --git a/src/pages/sys/menus/menu-api.ts b/src/pages/sys/menus/menu-api.ts index 5efef21..6436767 100644 --- a/src/pages/sys/menus/menu-api.ts +++ b/src/pages/sys/menus/menu-api.ts @@ -8,7 +8,7 @@ export default { return get>('/menu/page_list', data) }, paging(data: MenuTypes.SearchForm & G.PageParam) { - return get>('/menu/page_list', data) + return get>('/menu/paging', data) }, list(data?: MenuTypes.SearchForm | null) { return get('/menu/list_all', data) diff --git a/src/pages/sys/menus/menu.d.ts b/src/pages/sys/menus/menu.d.ts index 3874573..d46582f 100644 --- a/src/pages/sys/menus/menu.d.ts +++ b/src/pages/sys/menus/menu.d.ts @@ -26,6 +26,7 @@ declare global { // 面包路径 breadcrumb?: string[] menuCategory?: MenuCategory + hasChildren?: boolean children?: SysMenu[] } diff --git a/src/pages/sys/role/BindRes.vue b/src/pages/sys/role/BindRes.vue index e1a1004..78df423 100644 --- a/src/pages/sys/role/BindRes.vue +++ b/src/pages/sys/role/BindRes.vue @@ -1,7 +1,6 @@ - + diff --git a/src/pages/sys/role/RoleForm.vue b/src/pages/sys/role/RoleForm.vue index 42f5aab..e5ff624 100644 --- a/src/pages/sys/role/RoleForm.vue +++ b/src/pages/sys/role/RoleForm.vue @@ -1,91 +1,77 @@