diff --git a/admin-web/src/components/Layout.vue b/admin-web/src/components/Layout.vue
index 598843d..15444aa 100644
--- a/admin-web/src/components/Layout.vue
+++ b/admin-web/src/components/Layout.vue
@@ -27,11 +27,27 @@
入站流程
+
+ 流程追踪
+
+
+ 消息测试
+
+
+ 租户管理
+
+
+ 用户管理
+
@@ -41,8 +57,17 @@
diff --git a/admin-web/src/main.ts b/admin-web/src/main.ts
index 5496f34..4440bd0 100644
--- a/admin-web/src/main.ts
+++ b/admin-web/src/main.ts
@@ -1,4 +1,5 @@
import { createApp } from 'vue'
+import { createPinia } from 'pinia'
import ElementPlus from 'element-plus'
import 'element-plus/dist/index.css'
import './style.css'
@@ -6,6 +7,7 @@ import App from './App.vue'
import router from './router'
const app = createApp(App)
+app.use(createPinia())
app.use(ElementPlus)
app.use(router)
app.mount('#app')
diff --git a/admin-web/src/router/index.ts b/admin-web/src/router/index.ts
index 050f7a9..9b7d78a 100644
--- a/admin-web/src/router/index.ts
+++ b/admin-web/src/router/index.ts
@@ -8,8 +8,19 @@ import Person from '../views/Person.vue'
import Tag from '../views/Tag.vue'
import SendRecord from '../views/SendRecord.vue'
import InboundFlow from '../views/InboundFlow.vue'
+import FlowTrace from '../views/FlowTrace.vue'
+import MessageTest from '../views/MessageTest.vue'
+import TenantManagement from '../views/TenantManagement.vue'
+import UserManagement from '../views/UserManagement.vue'
+import Login from '../views/Login.vue'
+import { useAuthStore } from '../stores/auth'
const routes = [
+ {
+ path: '/login',
+ component: Login,
+ meta: { public: true },
+ },
{
path: '/',
component: Layout,
@@ -23,6 +34,10 @@ const routes = [
{ path: 'tag', component: Tag, meta: { title: '标签' } },
{ path: 'send-record', component: SendRecord, meta: { title: '发送记录' } },
{ path: 'inbound-flow', component: InboundFlow, meta: { title: '入站流程' } },
+ { path: 'flow-trace', component: FlowTrace, meta: { title: '流程追踪' } },
+ { path: 'message-test', component: MessageTest, meta: { title: '消息测试' } },
+ { path: 'tenant-management', component: TenantManagement, meta: { title: '租户管理' } },
+ { path: 'user-management', component: UserManagement, meta: { title: '用户管理' } },
],
},
]
@@ -32,4 +47,17 @@ const router = createRouter({
routes,
})
+router.beforeEach((to, from, next) => {
+ const authStore = useAuthStore()
+ const isPublic = to.meta?.public === true
+
+ if (!isPublic && !authStore.isLoggedIn) {
+ next('/login')
+ } else if (to.path === '/login' && authStore.isLoggedIn) {
+ next('/dashboard')
+ } else {
+ next()
+ }
+})
+
export default router
diff --git a/admin-web/src/stores/auth.ts b/admin-web/src/stores/auth.ts
new file mode 100644
index 0000000..8ee8c1f
--- /dev/null
+++ b/admin-web/src/stores/auth.ts
@@ -0,0 +1,31 @@
+import { defineStore } from 'pinia'
+import { ref, computed } from 'vue'
+
+export const useAuthStore = defineStore('auth', () => {
+ const token = ref(localStorage.getItem('mci-token') || '')
+ const tenantCode = ref(localStorage.getItem('mci-tenant-code') || '')
+ const username = ref('')
+ const roleCodes = ref([])
+
+ const isLoggedIn = computed(() => !!token.value)
+
+ function setAuth(t: string, tc: string, user: string, roles: string[]) {
+ token.value = t
+ tenantCode.value = tc
+ username.value = user
+ roleCodes.value = roles
+ localStorage.setItem('mci-token', t)
+ localStorage.setItem('mci-tenant-code', tc)
+ }
+
+ function clearAuth() {
+ token.value = ''
+ tenantCode.value = ''
+ username.value = ''
+ roleCodes.value = []
+ localStorage.removeItem('mci-token')
+ localStorage.removeItem('mci-tenant-code')
+ }
+
+ return { token, tenantCode, username, roleCodes, isLoggedIn, setAuth, clearAuth }
+})
diff --git a/admin-web/src/views/FlowTrace.vue b/admin-web/src/views/FlowTrace.vue
new file mode 100644
index 0000000..ae8e5f8
--- /dev/null
+++ b/admin-web/src/views/FlowTrace.vue
@@ -0,0 +1,5 @@
+
+
+
流程追踪
+
+
diff --git a/admin-web/src/views/Login.vue b/admin-web/src/views/Login.vue
new file mode 100644
index 0000000..f8eb947
--- /dev/null
+++ b/admin-web/src/views/Login.vue
@@ -0,0 +1,110 @@
+
+
+
+
+ Sino MCI 管理后台
+
+
+
+
+
+
+
+
+
+
+
+
+ 登录
+
+
+
+
+
+
+
+
+
diff --git a/admin-web/src/views/MessageTest.vue b/admin-web/src/views/MessageTest.vue
new file mode 100644
index 0000000..564feb3
--- /dev/null
+++ b/admin-web/src/views/MessageTest.vue
@@ -0,0 +1,5 @@
+
+
+
消息测试
+
+
diff --git a/admin-web/src/views/TenantManagement.vue b/admin-web/src/views/TenantManagement.vue
new file mode 100644
index 0000000..3a79991
--- /dev/null
+++ b/admin-web/src/views/TenantManagement.vue
@@ -0,0 +1,5 @@
+
+
+
租户管理
+
+
diff --git a/admin-web/src/views/UserManagement.vue b/admin-web/src/views/UserManagement.vue
new file mode 100644
index 0000000..1168f11
--- /dev/null
+++ b/admin-web/src/views/UserManagement.vue
@@ -0,0 +1,5 @@
+
+
+
用户管理
+
+