diff --git a/src/common/router/index.ts b/src/common/router/index.ts
index a013e0f..09998c5 100644
--- a/src/common/router/index.ts
+++ b/src/common/router/index.ts
@@ -76,7 +76,7 @@ router.beforeEach((to, from) => {
} else {
return {
replace: true,
- name: 'role',
+ path: to.fullPath,
}
}
}
@@ -109,6 +109,7 @@ export function reloadRouter() {
routNames.push('menus')
routNames.push('user')
routNames.push('role')
+ routNames.push('dict')
if (Colls.isEmpty(routNames)) {
return false
diff --git a/src/components/a-icon/AIcon.tsx b/src/components/a-icon/AIcon.tsx
new file mode 100644
index 0000000..68f1a27
--- /dev/null
+++ b/src/components/a-icon/AIcon.tsx
@@ -0,0 +1,30 @@
+import '@/components/a-icon/iconfont.css'
+import {
+ type IconName,
+ icons,
+} from '@/components/a-icon/iconfont.ts'
+
+import {
+ computed,
+ defineComponent,
+} from 'vue'
+
+export default defineComponent(
+ (props, {attrs}) => {
+ const prefixText = icons.css_prefix_text
+ const fontFamily = icons.font_family
+ const icon = computed(() => {
+ return props.name == null ? [] : [ fontFamily, prefixText + props.name ]
+ })
+ return () => (<>>)
+ },
+ {
+ props: {
+ name: {
+ type: String as PropType,
+ required: false,
+ validator: (_: string) => true,
+ },
+ },
+ name: 'AIcon',
+ })
diff --git a/src/components/a-icon/iconfont.css b/src/components/a-icon/iconfont.css
new file mode 100644
index 0000000..1c67050
--- /dev/null
+++ b/src/components/a-icon/iconfont.css
@@ -0,0 +1,107 @@
+@font-face {
+ font-family: "iconfont"; /* Project id 4985351 */
+ src: url('@/components/a-icon/iconfont.woff2?t=1764810386158') format('woff2'),
+ url('@/components/a-icon/iconfont.woff?t=1764810386158') format('woff'),
+ url('@/components/a-icon/iconfont.ttf?t=1764810386158') format('truetype');
+}
+
+.iconfont {
+ font-family: "iconfont", serif !important;
+ font-size: 16px;
+ font-style: normal;
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+.icon-bianji:before {
+ content: "\e604";
+}
+
+.icon-koukuanliebiao:before {
+ content: "\e63b";
+}
+
+.icon-yuechongzhi:before {
+ content: "\e8f5";
+}
+
+.icon-shanchudingdan-mian:before {
+ content: "\e6d7";
+}
+
+.icon-quxiaodingdan:before {
+ content: "\e64a";
+}
+
+.icon-lishiguiji-lan:before {
+ content: "\e672";
+}
+
+.icon-guobangdanju:before {
+ content: "\e66c";
+}
+
+.icon-dianzixiaopiao:before {
+ content: "\e64d";
+}
+
+.icon-xiangqing:before {
+ content: "\e611";
+}
+
+.icon-guanliandanju:before {
+ content: "\e61d";
+}
+
+.icon-track:before {
+ content: "\e603";
+}
+
+.icon-guanliandanxuan:before {
+ content: "\e68f";
+}
+
+.icon-dingdanxiangqing:before {
+ content: "\e6bf";
+}
+
+.icon-tongzhi:before {
+ content: "\e86a";
+}
+
+.icon-yujingguanli:before {
+ content: "\e61b";
+}
+
+.icon-shujuguanli:before {
+ content: "\e70c";
+}
+
+.icon-jiaoseguanli:before {
+ content: "\e62f";
+}
+
+.icon-yingyongyonghuguanli:before {
+ content: "\e6aa";
+}
+
+.icon-shangpinguanli:before {
+ content: "\fcf3";
+}
+
+.icon-xitongguanli:before {
+ content: "\e85c";
+}
+
+.icon-pinleiguanli:before {
+ content: "\e63d";
+}
+
+.icon-qiyezhuce:before {
+ content: "\e6a1";
+}
+
+.icon-shenheguanli:before {
+ content: "\e639";
+}
+
diff --git a/src/components/a-icon/iconfont.ts b/src/components/a-icon/iconfont.ts
new file mode 100644
index 0000000..6bce07d
--- /dev/null
+++ b/src/components/a-icon/iconfont.ts
@@ -0,0 +1,181 @@
+export const icons = {
+ 'id': '4985351',
+ 'name': '再昇云',
+ 'font_family': 'iconfont',
+ 'css_prefix_text': 'icon-',
+ 'description': '',
+ 'glyphs': [
+ {
+ 'icon_id': '8582929',
+ 'name': '编辑/修改',
+ 'font_class': 'bianji',
+ 'unicode': 'e604',
+ 'unicode_decimal': 58884,
+ },
+ {
+ 'icon_id': '41408341',
+ 'name': '扣款',
+ 'font_class': 'koukuanliebiao',
+ 'unicode': 'e63b',
+ 'unicode_decimal': 58939,
+ },
+ {
+ 'icon_id': '33376724',
+ 'name': '余额充值',
+ 'font_class': 'yuechongzhi',
+ 'unicode': 'e8f5',
+ 'unicode_decimal': 59637,
+ },
+ {
+ 'icon_id': '6949389',
+ 'name': '删除订单;报表;清单',
+ 'font_class': 'shanchudingdan-mian',
+ 'unicode': 'e6d7',
+ 'unicode_decimal': 59095,
+ },
+ {
+ 'icon_id': '16695459',
+ 'name': '取消订单',
+ 'font_class': 'quxiaodingdan',
+ 'unicode': 'e64a',
+ 'unicode_decimal': 58954,
+ },
+ {
+ 'icon_id': '14443392',
+ 'name': '历史轨迹-蓝',
+ 'font_class': 'lishiguiji-lan',
+ 'unicode': 'e672',
+ 'unicode_decimal': 58994,
+ },
+ {
+ 'icon_id': '44180887',
+ 'name': '过磅单据',
+ 'font_class': 'guobangdanju',
+ 'unicode': 'e66c',
+ 'unicode_decimal': 58988,
+ },
+ {
+ 'icon_id': '26397534',
+ 'name': '电子小票',
+ 'font_class': 'dianzixiaopiao',
+ 'unicode': 'e64d',
+ 'unicode_decimal': 58957,
+ },
+ {
+ 'icon_id': '12814001',
+ 'name': '详情',
+ 'font_class': 'xiangqing',
+ 'unicode': 'e611',
+ 'unicode_decimal': 58897,
+ },
+ {
+ 'icon_id': '9777840',
+ 'name': '关联单据',
+ 'font_class': 'guanliandanju',
+ 'unicode': 'e61d',
+ 'unicode_decimal': 58909,
+ },
+ {
+ 'icon_id': '28095045',
+ 'name': '准运证',
+ 'font_class': 'track',
+ 'unicode': 'e603',
+ 'unicode_decimal': 58883,
+ },
+ {
+ 'icon_id': '18446165',
+ 'name': '关联单选',
+ 'font_class': 'guanliandanxuan',
+ 'unicode': 'e68f',
+ 'unicode_decimal': 59023,
+ },
+ {
+ 'icon_id': '8725687',
+ 'name': '订单详情',
+ 'font_class': 'dingdanxiangqing',
+ 'unicode': 'e6bf',
+ 'unicode_decimal': 59071,
+ },
+ {
+ 'icon_id': '23500943',
+ 'name': '通知',
+ 'font_class': 'tongzhi',
+ 'unicode': 'e86a',
+ 'unicode_decimal': 59498,
+ },
+ {
+ 'icon_id': '27250248',
+ 'name': '预警管理',
+ 'font_class': 'yujingguanli',
+ 'unicode': 'e61b',
+ 'unicode_decimal': 58907,
+ },
+ {
+ 'icon_id': '25301786',
+ 'name': '字典管理',
+ 'font_class': 'shujuguanli',
+ 'unicode': 'e70c',
+ 'unicode_decimal': 59148,
+ },
+ {
+ 'icon_id': '3590945',
+ 'name': '角色管理',
+ 'font_class': 'jiaoseguanli',
+ 'unicode': 'e62f',
+ 'unicode_decimal': 58927,
+ },
+ {
+ 'icon_id': '20853364',
+ 'name': '用户管理',
+ 'font_class': 'yingyongyonghuguanli',
+ 'unicode': 'e6aa',
+ 'unicode_decimal': 59050,
+ },
+ {
+ 'icon_id': '25007161',
+ 'name': '品类管理',
+ 'font_class': 'shangpinguanli',
+ 'unicode': 'fcf3',
+ 'unicode_decimal': 64755,
+ },
+ {
+ 'icon_id': '9206620',
+ 'name': '系统管理',
+ 'font_class': 'xitongguanli',
+ 'unicode': 'e85c',
+ 'unicode_decimal': 59484,
+ },
+ {
+ 'icon_id': '20136570',
+ 'name': '菜单管理',
+ 'font_class': 'pinleiguanli',
+ 'unicode': 'e63d',
+ 'unicode_decimal': 58941,
+ },
+ {
+ 'icon_id': '15689628',
+ 'name': '公司审核',
+ 'font_class': 'qiyezhuce',
+ 'unicode': 'e6a1',
+ 'unicode_decimal': 59041,
+ },
+ {
+ 'icon_id': '5468041',
+ 'name': '审核管理',
+ 'font_class': 'shenheguanli',
+ 'unicode': 'e639',
+ 'unicode_decimal': 58937,
+ },
+ ],
+} as const
+
+export type IconName = (typeof icons.glyphs)[number]['font_class']
+
+export interface IconGlyphs {
+ icon_id: string
+ name: string
+ font_class: IconName
+ unicode: string
+ unicode_decimal: number
+}
+
diff --git a/src/components/a-icon/iconfont.ttf b/src/components/a-icon/iconfont.ttf
new file mode 100644
index 0000000..7688a3e
Binary files /dev/null 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
new file mode 100644
index 0000000..91d3001
Binary files /dev/null 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
new file mode 100644
index 0000000..2ca6850
Binary files /dev/null and b/src/components/a-icon/iconfont.woff2 differ
diff --git a/src/components/page/Page.vue b/src/components/page/Page.vue
index 18d4080..b007303 100644
--- a/src/components/page/Page.vue
+++ b/src/components/page/Page.vue
@@ -14,8 +14,9 @@
width 100%;
overflow auto
padding 16px
+
box-sizing border-box
- box-shadow: rgba(0, 0, 0, 0.12) 0px 0px 12px 0px;
+ box-shadow: rgba(30, 35, 43, 0.16) 0px 2px 10px 0px;
background-color: white;
display flex
flex-direction column
diff --git a/src/dts/components.d.ts b/src/dts/components.d.ts
index fde5433..ea0a151 100644
--- a/src/dts/components.d.ts
+++ b/src/dts/components.d.ts
@@ -17,9 +17,11 @@ declare module 'vue' {
ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup']
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
+ ElCollapse: typeof import('element-plus/es')['ElCollapse']
ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
ElContainer: typeof import('element-plus/es')['ElContainer']
ElDialog: typeof import('element-plus/es')['ElDialog']
+ ElDivider: typeof import('element-plus/es')['ElDivider']
ElDropdown: typeof import('element-plus/es')['ElDropdown']
ElEmpty: typeof import('element-plus/es')['ElEmpty']
ElForm: typeof import('element-plus/es')['ElForm']
@@ -34,6 +36,7 @@ declare module 'vue' {
ElMain: typeof import('element-plus/es')['ElMain']
ElOption: typeof import('element-plus/es')['ElOption']
ElPagination: typeof import('element-plus/es')['ElPagination']
+ ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm']
ElSelect: typeof import('element-plus/es')['ElSelect']
ElSwitch: typeof import('element-plus/es')['ElSwitch']
ElTable: typeof import('element-plus/es')['ElTable']
@@ -61,9 +64,11 @@ declare global {
const ElButtonGroup: typeof import('element-plus/es')['ElButtonGroup']
const ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
const ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
+ const ElCollapse: typeof import('element-plus/es')['ElCollapse']
const ElConfigProvider: typeof import('element-plus/es')['ElConfigProvider']
const ElContainer: typeof import('element-plus/es')['ElContainer']
const ElDialog: typeof import('element-plus/es')['ElDialog']
+ const ElDivider: typeof import('element-plus/es')['ElDivider']
const ElDropdown: typeof import('element-plus/es')['ElDropdown']
const ElEmpty: typeof import('element-plus/es')['ElEmpty']
const ElForm: typeof import('element-plus/es')['ElForm']
@@ -78,6 +83,7 @@ declare global {
const ElMain: typeof import('element-plus/es')['ElMain']
const ElOption: typeof import('element-plus/es')['ElOption']
const ElPagination: typeof import('element-plus/es')['ElPagination']
+ const ElPopconfirm: typeof import('element-plus/es')['ElPopconfirm']
const ElSelect: typeof import('element-plus/es')['ElSelect']
const ElSwitch: typeof import('element-plus/es')['ElSwitch']
const ElTable: typeof import('element-plus/es')['ElTable']
diff --git a/src/pages/a-frame/AAside.tsx b/src/pages/a-frame/AAside.tsx
index 7f9583a..e6c7a54 100644
--- a/src/pages/a-frame/AAside.tsx
+++ b/src/pages/a-frame/AAside.tsx
@@ -8,6 +8,9 @@ import {
type MenuItemRegistered,
} from 'element-plus'
import { elIcons } from '@/common/element/element.ts'
+import AIcon from '@/components/a-icon/AIcon.tsx'
+import type { IconName } from '@/components/a-icon/iconfont.ts'
+import styles from '@/pages/a-frame/aaside.module.styl'
export interface Menu extends G.TreeNode {
// Id
@@ -35,7 +38,7 @@ export interface Menu extends G.TreeNode {
}
export default defineComponent(
- ({menus}, {emit}) => {
+ (props, {emit}) => {
const onMenuClick = (it: MenuItemRegistered) => emit('menuClick', it.index)
const renderMenu = (it: Menu) => {
let renderChildNode: (() => VNode[] | undefined) | undefined = undefined
@@ -47,7 +50,10 @@ export default defineComponent(
case 'Catalog': {
currentNode = (
{{
- title: () => {it.title},
+ title: () => (<>
+
+ {it.title}
+ >),
default: renderChildNode,
}}
)
@@ -64,7 +70,8 @@ export default defineComponent(
case 'Page': {
currentNode = (
{{
- default: () => {it.title},
+ title: () => {it.title},
+ default: () => ,
}}
)
break
@@ -77,12 +84,12 @@ export default defineComponent(
const isCollapse = ref(false)
return () => (<>
-