From 841a0dabcbeab1eea8e05b74af16bdc471153a65 Mon Sep 17 00:00:00 2001 From: tanyp <742354529@qq.com> Date: Tue, 28 Mar 2023 09:22:21 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tansci-boot-ui/.env.development | 1 + tansci-boot-ui/.env.production | 1 + tansci-boot-ui/.gitignore | 14 ++ tansci-boot-ui/.npmrc | 2 + tansci-boot-ui/index.html | 13 ++ tansci-boot-ui/package.json | 31 ++++ tansci-boot-ui/public/favicon.ico | Bin 0 -> 4286 bytes tansci-boot-ui/src/App.vue | 5 + tansci-boot-ui/src/api/auth.ts | 52 ++++++ .../src/assets/image/login-icon.png | Bin 0 -> 94336 bytes tansci-boot-ui/src/assets/image/logo.png | Bin 0 -> 21352 bytes tansci-boot-ui/src/components/Submenu.vue | 25 +++ tansci-boot-ui/src/components/TabsMenu.vue | 158 +++++++++++++++++ .../src/components/layout/Index.vue | 153 +++++++++++++++++ tansci-boot-ui/src/composables/dark.ts | 4 + tansci-boot-ui/src/composables/index.ts | 1 + tansci-boot-ui/src/config/config.ts | 8 + tansci-boot-ui/src/env.d.ts | 8 + tansci-boot-ui/src/main.ts | 20 +++ tansci-boot-ui/src/router/common.ts | 24 +++ tansci-boot-ui/src/router/index.ts | 14 ++ tansci-boot-ui/src/router/routers.ts | 84 +++++++++ tansci-boot-ui/src/styles/element/dark.scss | 25 +++ tansci-boot-ui/src/styles/element/index.scss | 33 ++++ tansci-boot-ui/src/styles/index.scss | 51 ++++++ tansci-boot-ui/src/utils/request.ts | 61 +++++++ tansci-boot-ui/src/utils/status.ts | 42 +++++ tansci-boot-ui/src/views/Index.vue | 22 +++ tansci-boot-ui/src/views/common/404.vue | 5 + tansci-boot-ui/src/views/common/500.vue | 5 + tansci-boot-ui/src/views/common/Login.vue | 159 ++++++++++++++++++ tansci-boot-ui/src/views/system/Manu.vue | 5 + tansci-boot-ui/src/views/system/Org.vue | 5 + tansci-boot-ui/src/views/system/User.vue | 5 + tansci-boot-ui/tsconfig.json | 31 ++++ tansci-boot-ui/vite.config.ts | 43 +++++ 36 files changed, 1110 insertions(+) create mode 100644 tansci-boot-ui/.env.development create mode 100644 tansci-boot-ui/.env.production create mode 100644 tansci-boot-ui/.gitignore create mode 100644 tansci-boot-ui/.npmrc create mode 100644 tansci-boot-ui/index.html create mode 100644 tansci-boot-ui/package.json create mode 100644 tansci-boot-ui/public/favicon.ico create mode 100644 tansci-boot-ui/src/App.vue create mode 100644 tansci-boot-ui/src/api/auth.ts create mode 100644 tansci-boot-ui/src/assets/image/login-icon.png create mode 100644 tansci-boot-ui/src/assets/image/logo.png create mode 100644 tansci-boot-ui/src/components/Submenu.vue create mode 100644 tansci-boot-ui/src/components/TabsMenu.vue create mode 100644 tansci-boot-ui/src/components/layout/Index.vue create mode 100644 tansci-boot-ui/src/composables/dark.ts create mode 100644 tansci-boot-ui/src/composables/index.ts create mode 100644 tansci-boot-ui/src/config/config.ts create mode 100644 tansci-boot-ui/src/env.d.ts create mode 100644 tansci-boot-ui/src/main.ts create mode 100644 tansci-boot-ui/src/router/common.ts create mode 100644 tansci-boot-ui/src/router/index.ts create mode 100644 tansci-boot-ui/src/router/routers.ts create mode 100644 tansci-boot-ui/src/styles/element/dark.scss create mode 100644 tansci-boot-ui/src/styles/element/index.scss create mode 100644 tansci-boot-ui/src/styles/index.scss create mode 100644 tansci-boot-ui/src/utils/request.ts create mode 100644 tansci-boot-ui/src/utils/status.ts create mode 100644 tansci-boot-ui/src/views/Index.vue create mode 100644 tansci-boot-ui/src/views/common/404.vue create mode 100644 tansci-boot-ui/src/views/common/500.vue create mode 100644 tansci-boot-ui/src/views/common/Login.vue create mode 100644 tansci-boot-ui/src/views/system/Manu.vue create mode 100644 tansci-boot-ui/src/views/system/Org.vue create mode 100644 tansci-boot-ui/src/views/system/User.vue create mode 100644 tansci-boot-ui/tsconfig.json create mode 100644 tansci-boot-ui/vite.config.ts diff --git a/tansci-boot-ui/.env.development b/tansci-boot-ui/.env.development new file mode 100644 index 0000000..be64e7f --- /dev/null +++ b/tansci-boot-ui/.env.development @@ -0,0 +1 @@ +VITE_BASE_API = 'http://localhost:8081/' \ No newline at end of file diff --git a/tansci-boot-ui/.env.production b/tansci-boot-ui/.env.production new file mode 100644 index 0000000..be64e7f --- /dev/null +++ b/tansci-boot-ui/.env.production @@ -0,0 +1 @@ +VITE_BASE_API = 'http://localhost:8081/' \ No newline at end of file diff --git a/tansci-boot-ui/.gitignore b/tansci-boot-ui/.gitignore new file mode 100644 index 0000000..e6178df --- /dev/null +++ b/tansci-boot-ui/.gitignore @@ -0,0 +1,14 @@ +.vite-ssg-temp + +node_modules +.DS_Store +dist +dist-ssr +*.local + +# lock +yarn.lock +package-lock.json +pnpm-lock.yaml + +*.log diff --git a/tansci-boot-ui/.npmrc b/tansci-boot-ui/.npmrc new file mode 100644 index 0000000..cf04042 --- /dev/null +++ b/tansci-boot-ui/.npmrc @@ -0,0 +1,2 @@ +shamefully-hoist=true +strict-peer-dependencies=false diff --git a/tansci-boot-ui/index.html b/tansci-boot-ui/index.html new file mode 100644 index 0000000..7c81b02 --- /dev/null +++ b/tansci-boot-ui/index.html @@ -0,0 +1,13 @@ + + + + + + + Tansci Boot + + +
+ + + diff --git a/tansci-boot-ui/package.json b/tansci-boot-ui/package.json new file mode 100644 index 0000000..6488b7d --- /dev/null +++ b/tansci-boot-ui/package.json @@ -0,0 +1,31 @@ +{ + "name": "tansci-boot-ui", + "private": true, + "version": "1.0.0", + "scripts": { + "dev": "vite", + "build": "vite build", + "generate": "vite-ssg build", + "preview": "vite preview", + "typecheck": "vue-tsc --noEmit" + }, + "dependencies": { + "axios": "^1.3.4", + "element-plus": "^2.2.13", + "vue": "^3.2.36", + "vue-router": "^4.1.6" + }, + "devDependencies": { + "@iconify-json/ep": "^1.1.4", + "@types/node": "^18.14.0", + "@vitejs/plugin-vue": "^4.0.0", + "sass": "^1.52.1", + "typescript": "^4.7.2", + "unocss": "^0.49.7", + "unplugin-vue-components": "^0.24.0", + "vite": "^4.1.2", + "vite-ssg": "^0.22.1", + "vue-tsc": "^1.1.3" + }, + "license": "MIT" +} diff --git a/tansci-boot-ui/public/favicon.ico b/tansci-boot-ui/public/favicon.ico new file mode 100644 index 0000000000000000000000000000000000000000..9a616a288615a6bb117b4c5deb4b151800fd0b3a GIT binary patch literal 4286 zcmeHJ&C4la6d#{iP}jm;z3I(@cVR(Fva*u0vPKrNkd2*{jaXpePas*`Ec^i$q%26R z6bn);kqF7xxpSuIWyXx|y^U^pre{9R*YC`E&N8oc5kk4K2bVjz)7fUILE7K^;$ z4+aCUTCEf=V&hDuQoP}-RH_?n#1Dl+yy0uLS{lC7>EsRHZnx9$^?E&T_<=xxhOba4 z;Cw!_`fxZLpx5ic>2zY1<6_3+aT-46z>?46fp}>gW>2w~c z+|XyU8Q5$#SS%Jd^k+Zn^*SSdsZ@H_1Vkbc@Or&Z%YPRfkH?JonM~%p80&kjRs*3> z2*cr!RgQ_d-|s;xmC}3&hr>+bjI?sOOzG!xIYvGgQKQk&@Let!mm0-K|8e~>XY=_y zt4=bRq<0)YS=4hL}c3CxddHVfEiO(qk_WU@c@MI;h|*=&YrGz#5r_x@L( z`o^=yXf%RKr9$N^?)A8y!C(-4J|DQG%yVZ}Rd0 literal 0 HcmV?d00001 diff --git a/tansci-boot-ui/src/App.vue b/tansci-boot-ui/src/App.vue new file mode 100644 index 0000000..c314d67 --- /dev/null +++ b/tansci-boot-ui/src/App.vue @@ -0,0 +1,5 @@ + diff --git a/tansci-boot-ui/src/api/auth.ts b/tansci-boot-ui/src/api/auth.ts new file mode 100644 index 0000000..68d2a1e --- /dev/null +++ b/tansci-boot-ui/src/api/auth.ts @@ -0,0 +1,52 @@ +import request from '@/utils/request' + +// token key +const tokenKey:string = 'tansci_boot_token' + +// 获取token +export function getToken() { + return sessionStorage.getItem(tokenKey); +} + +// 存储token +export function setToken(token:string) { + sessionStorage.setItem(tokenKey, token); +} + +// 删除token +export function removeToken() { + sessionStorage.removeItem(tokenKey); +} + +// 登录 +export function login(data:any){ + return new Promise((resolve, reject) => { + request({ + url: '/system/security/login', + method: 'post', + data: { + username: data.username, + password: data.password, + code: data.code, + uuid: data.uuid + } + }).then((res:any) => { + var token = res.data + setToken(token) + resolve(token) + }).catch((e:any) => { + reject(e) + }) + }) +} + +// 登出 +export function logout(){ + request({ + url: '/system/security/logout', + method: 'get' + }).then(() => { + removeToken() + location.reload() + }) +} \ No newline at end of file diff --git a/tansci-boot-ui/src/assets/image/login-icon.png b/tansci-boot-ui/src/assets/image/login-icon.png new file mode 100644 index 0000000000000000000000000000000000000000..02b3640413844e8ac8b51fedcf98e117aceac6bd GIT binary patch literal 94336 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≷5kvCY*d-ir8 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 z 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 literal 0 HcmV?d00001 diff --git a/tansci-boot-ui/src/assets/image/logo.png b/tansci-boot-ui/src/assets/image/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..529f725d9224969700af4101e1a7f30f4e29deeb GIT binary patch literal 21352 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 NyLO{>*&5%S{}1tGM(qFq literal 0 HcmV?d00001 diff --git a/tansci-boot-ui/src/components/Submenu.vue b/tansci-boot-ui/src/components/Submenu.vue new file mode 100644 index 0000000..67c5367 --- /dev/null +++ b/tansci-boot-ui/src/components/Submenu.vue @@ -0,0 +1,25 @@ + + \ No newline at end of file diff --git a/tansci-boot-ui/src/components/TabsMenu.vue b/tansci-boot-ui/src/components/TabsMenu.vue new file mode 100644 index 0000000..ff6d845 --- /dev/null +++ b/tansci-boot-ui/src/components/TabsMenu.vue @@ -0,0 +1,158 @@ + + + \ No newline at end of file diff --git a/tansci-boot-ui/src/components/layout/Index.vue b/tansci-boot-ui/src/components/layout/Index.vue new file mode 100644 index 0000000..1ab5e11 --- /dev/null +++ b/tansci-boot-ui/src/components/layout/Index.vue @@ -0,0 +1,153 @@ + + + \ No newline at end of file diff --git a/tansci-boot-ui/src/composables/dark.ts b/tansci-boot-ui/src/composables/dark.ts new file mode 100644 index 0000000..5467599 --- /dev/null +++ b/tansci-boot-ui/src/composables/dark.ts @@ -0,0 +1,4 @@ +import { useDark, useToggle } from '@vueuse/core' + +export const isDark = useDark() +export const toggleDark = useToggle(isDark) diff --git a/tansci-boot-ui/src/composables/index.ts b/tansci-boot-ui/src/composables/index.ts new file mode 100644 index 0000000..e8d1566 --- /dev/null +++ b/tansci-boot-ui/src/composables/index.ts @@ -0,0 +1 @@ +export * from './dark' diff --git a/tansci-boot-ui/src/config/config.ts b/tansci-boot-ui/src/config/config.ts new file mode 100644 index 0000000..9dffdfc --- /dev/null +++ b/tansci-boot-ui/src/config/config.ts @@ -0,0 +1,8 @@ +// 全局不动配置项 只做导出不做修改 + +// 首页地址(默认) +export const HOME_URL: string = "/index"; + +// Tabs(黑名单地址,不需要添加到 tabs 的路由地址) +export const TABS_BLACK_LIST: string[] = ["/404", "/500", "/login"]; + diff --git a/tansci-boot-ui/src/env.d.ts b/tansci-boot-ui/src/env.d.ts new file mode 100644 index 0000000..2da5596 --- /dev/null +++ b/tansci-boot-ui/src/env.d.ts @@ -0,0 +1,8 @@ +/// + +declare module "*.vue" { + import { DefineComponent } from "vue"; + // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/ban-types + const component: DefineComponent<{}, {}, any>; + export default component; +} diff --git a/tansci-boot-ui/src/main.ts b/tansci-boot-ui/src/main.ts new file mode 100644 index 0000000..e722932 --- /dev/null +++ b/tansci-boot-ui/src/main.ts @@ -0,0 +1,20 @@ +import { createApp } from 'vue' +import App from './App.vue' +import router from './router' +import ElementPlus from 'element-plus' +import 'element-plus/dist/index.css' +import './styles/index.scss' +import * as ElIcons from '@element-plus/icons-vue' +import zhCn from 'element-plus/es/locale/lang/zh-cn' +import 'uno.css' + +const app = createApp(App) +app.use(router) +app.use(ElementPlus,{ + locale: zhCn, + size: 'default', +}) +for (const icon in ElIcons) { + app.component(icon, (ElIcons as any)[icon]) +} +app.mount('#app'); diff --git a/tansci-boot-ui/src/router/common.ts b/tansci-boot-ui/src/router/common.ts new file mode 100644 index 0000000..a13698d --- /dev/null +++ b/tansci-boot-ui/src/router/common.ts @@ -0,0 +1,24 @@ +export default[ + { + path: '/', + redirect: 'login', + }, + { + path: '/login', + name: 'login', + meta: {title: "登录"}, + component: () => import("@/views/common/Login.vue"), + }, + { + path: '/404', + name: '404', + meta: {title: "404"}, + component: () => import('@/views/common/404.vue') + }, + { + path: '/500', + name: '500', + meta: {title: "500"}, + component: () => import('@/views/common/500.vue') + } +] \ No newline at end of file diff --git a/tansci-boot-ui/src/router/index.ts b/tansci-boot-ui/src/router/index.ts new file mode 100644 index 0000000..2b33c7e --- /dev/null +++ b/tansci-boot-ui/src/router/index.ts @@ -0,0 +1,14 @@ +import { createRouter, createWebHistory } from "vue-router" + +import routers from './routers' + +import common from './common' +const router = createRouter({ + history: createWebHistory(), + routes: [ + ...common, + ...routers + ] +}) + +export default router \ No newline at end of file diff --git a/tansci-boot-ui/src/router/routers.ts b/tansci-boot-ui/src/router/routers.ts new file mode 100644 index 0000000..2e05cdd --- /dev/null +++ b/tansci-boot-ui/src/router/routers.ts @@ -0,0 +1,84 @@ +import Layout from '@/components/layout/Index.vue' +export default[ + { + path: '/index', + name: 'index', + type: 0, + icon: 'HomeFilled', + meta: { title: "首页" }, + component: () => Layout, + children: [ + { + path: '/index', + name: 'index', + type: 0, + icon: 'HomeFilled', + meta: { title: "首页" }, + component: () => import('@/views/Index.vue') + } + ] + }, + { + path: '/system', + name: 'system', + type: 0, + icon: 'Grid', + meta: { title: "系统管理" }, + children: [ + { + path: '/menu', + name: 'menu', + type: 0, + icon: 'Grid', + meta: { title: "菜单管理" }, + component: () => Layout, + children: [ + { + path: '/menu', + name: 'menu', + type: 0, + icon: 'Grid', + meta: { title: "菜单管理" }, + component: () => import('@/views/system/Manu.vue') + }, + ] + }, + { + path: '/org', + name: 'org', + type: 0, + icon: 'QuestionFilled', + meta: { title: "组织管理" }, + component: () => Layout, + children: [ + { + path: '/org', + name: 'org', + type: 0, + icon: 'QuestionFilled', + meta: { title: "组织管理" }, + component: () => import('@/views/system/Org.vue') + } + ] + }, + { + path: '/user', + name: 'user', + type: 0, + icon: 'QuestionFilled', + meta: { title: "用户管理" }, + component: () => Layout, + children: [ + { + path: '/user', + name: 'user', + type: 0, + icon: 'QuestionFilled', + meta: { title: "用户管理" }, + component: () => import('@/views/system/User.vue') + } + ] + }, + ] + }, +] \ No newline at end of file diff --git a/tansci-boot-ui/src/styles/element/dark.scss b/tansci-boot-ui/src/styles/element/dark.scss new file mode 100644 index 0000000..1203d7a --- /dev/null +++ b/tansci-boot-ui/src/styles/element/dark.scss @@ -0,0 +1,25 @@ +$--colors: ( + "primary": ( + "base": #2F9688, + ), + "success": ( + "base": #21ba45, + ), + "warning": ( + "base": #f2711c, + ), + "danger": ( + "base": #db2828, + ), + "error": ( + "base": #db2828, + ), + "info": ( + "base": #42b8dd, + ) +); + + +@forward "element-plus/theme-chalk/src/dark/var.scss" with ( + $colors: $--colors +); diff --git a/tansci-boot-ui/src/styles/element/index.scss b/tansci-boot-ui/src/styles/element/index.scss new file mode 100644 index 0000000..9c03b1e --- /dev/null +++ b/tansci-boot-ui/src/styles/element/index.scss @@ -0,0 +1,33 @@ +$--colors: ( + "primary": ( + "base": #2F9688, + ), + "success": ( + "base": #21ba45, + ), + "warning": ( + "base": #f2711c, + ), + "danger": ( + "base": #db2828, + ), + "error": ( + "base": #db2828, + ), + "info": ( + "base": #42b8dd, + ) +); + +@forward "element-plus/theme-chalk/src/mixins/config.scss" with ( + $namespace: "el" +); + +@forward "element-plus/theme-chalk/src/common/var.scss" with ( + $colors: $--colors, + $button-padding-horizontal: ("default": 50px) +); + +@use "element-plus/theme-chalk/src/index.scss" as *; + +@use "./dark.scss"; diff --git a/tansci-boot-ui/src/styles/index.scss b/tansci-boot-ui/src/styles/index.scss new file mode 100644 index 0000000..eb91280 --- /dev/null +++ b/tansci-boot-ui/src/styles/index.scss @@ -0,0 +1,51 @@ +// import dark theme +@use "element-plus/theme-chalk/src/dark/css-vars.scss" as *; + +:root { + // 主题 + --theme: #2F9688; + + // 局部背景 + --el-bg-color: #eff4f9; +} + +body { + font-family: "Helvetica Neue", Helvetica, "PingFang SC", "Hiragino Sans GB","Microsoft YaHei", "微软雅黑", Arial, sans-serif; + -webkit-font-smoothing: antialiased; + -moz-osx-font-smoothing: grayscale; + margin: 0; + padding: 0; + overflow: hidden; +} + +/** + * el-table 滚动条样式 + */ + .el-table__body-wrapper::-webkit-scrollbar { + width: 5px; + height: 1px; +} +.el-table__body-wrapper::-webkit-scrollbar-thumb { + background-color: #909399; + border-radius: 5px; +} +.el-table__body-wrapper::-webkit-scrollbar-track { + border-radius: 5px; + background: #ededed; +} + +/** +* 滚动条样式 +*/ +.scroll-div::-webkit-scrollbar{ + width: 5px; + height: 1px; +} +.scroll-div::-webkit-scrollbar-thumb { + border-radius: 5px; + background: #909399; +} +.scroll-div::-webkit-scrollbar-track { + border-radius: 5px; + background: #ededed; +} diff --git a/tansci-boot-ui/src/utils/request.ts b/tansci-boot-ui/src/utils/request.ts new file mode 100644 index 0000000..b3114b5 --- /dev/null +++ b/tansci-boot-ui/src/utils/request.ts @@ -0,0 +1,61 @@ +import axios, { AxiosInstance, AxiosRequestConfig, AxiosResponse } from 'axios' +import { showMessage } from './status' +import { ElMessage } from 'element-plus' +import { logout, getToken } from '@/api/auth' +import router from '../router' + +// 根据环境获得不同的代理模式 +const baseURL = import.meta.env.VITE_BASE_URL as string; +const axiosInstance: AxiosInstance = axios.create({ + baseURL: baseURL, + timeout: 30 * 1000, // 超时时间 + headers: { + 'Content-Type': 'application/json' + }, +}) + +// axios实例拦截请求 +axiosInstance.interceptors.request.use((config: AxiosRequestConfig) => { + // 设置token + if (getToken()) { + config.headers.Authorization = `Bearer ${getToken()}` + } + return config; + }, + (error: any) => { + return Promise.reject(error); + } +) + +// axios实例拦截响应 +axiosInstance.interceptors.response.use( + (response: AxiosResponse) => { + if (response.status === 200 && response.data.code == 200) { + return response; + } else { + ElMessage.warning(showMessage(response.status)); + if (response.data.code === 402) { + logout() + } + + if (response.data.code == 403 || response.data.code == 401){ + sessionStorage.clear(); + router.push({path: 'login'}); + } + return response; + } + }, + // 请求失败 + (error: any) => { + const {response} = error; + if (response) { + // 请求已发出,但是不在2xx的范围 + ElMessage.warning(showMessage(response.status)); + return Promise.reject(response.data); + } else { + ElMessage.warning('网络连接异常,请稍后再试!'); + } + } +) + +export default axiosInstance \ No newline at end of file diff --git a/tansci-boot-ui/src/utils/status.ts b/tansci-boot-ui/src/utils/status.ts new file mode 100644 index 0000000..e853e7c --- /dev/null +++ b/tansci-boot-ui/src/utils/status.ts @@ -0,0 +1,42 @@ +export const showMessage = (status:number|string) : string => { + let message:string = ""; + switch (status) { + case 400: + message = "请求错误(400)"; + break; + case 401: + // message = "未授权,请重新登录(401)"; + message = "用户名或密码错误"; + break; + case 403: + message = "拒绝访问(403)"; + break; + case 404: + message = "请求出错(404)"; + break; + case 408: + message = "请求超时(408)"; + break; + case 500: + message = "服务器错误(500)"; + break; + case 501: + message = "服务未实现(501)"; + break; + case 502: + message = "网络错误(502)"; + break; + case 503: + message = "服务不可用(503)"; + break; + case 504: + message = "网络超时(504)"; + break; + case 505: + message = "HTTP版本不受支持(505)"; + break; + default: + message = `未授权,请重新登录!`; + } + return `${message}`; +}; \ No newline at end of file diff --git a/tansci-boot-ui/src/views/Index.vue b/tansci-boot-ui/src/views/Index.vue new file mode 100644 index 0000000..248f498 --- /dev/null +++ b/tansci-boot-ui/src/views/Index.vue @@ -0,0 +1,22 @@ + + + \ No newline at end of file diff --git a/tansci-boot-ui/src/views/common/404.vue b/tansci-boot-ui/src/views/common/404.vue new file mode 100644 index 0000000..5da03b5 --- /dev/null +++ b/tansci-boot-ui/src/views/common/404.vue @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/tansci-boot-ui/src/views/common/500.vue b/tansci-boot-ui/src/views/common/500.vue new file mode 100644 index 0000000..0812692 --- /dev/null +++ b/tansci-boot-ui/src/views/common/500.vue @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/tansci-boot-ui/src/views/common/Login.vue b/tansci-boot-ui/src/views/common/Login.vue new file mode 100644 index 0000000..271adc1 --- /dev/null +++ b/tansci-boot-ui/src/views/common/Login.vue @@ -0,0 +1,159 @@ + + + diff --git a/tansci-boot-ui/src/views/system/Manu.vue b/tansci-boot-ui/src/views/system/Manu.vue new file mode 100644 index 0000000..39c495a --- /dev/null +++ b/tansci-boot-ui/src/views/system/Manu.vue @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/tansci-boot-ui/src/views/system/Org.vue b/tansci-boot-ui/src/views/system/Org.vue new file mode 100644 index 0000000..f27cf95 --- /dev/null +++ b/tansci-boot-ui/src/views/system/Org.vue @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/tansci-boot-ui/src/views/system/User.vue b/tansci-boot-ui/src/views/system/User.vue new file mode 100644 index 0000000..f27cf95 --- /dev/null +++ b/tansci-boot-ui/src/views/system/User.vue @@ -0,0 +1,5 @@ + \ No newline at end of file diff --git a/tansci-boot-ui/tsconfig.json b/tansci-boot-ui/tsconfig.json new file mode 100644 index 0000000..cda7b16 --- /dev/null +++ b/tansci-boot-ui/tsconfig.json @@ -0,0 +1,31 @@ +{ + "compilerOptions": { + "typeRoots": [ + "node_modules/@types", // 默认值 + "src/types" + ], + "baseUrl": "./", + "target": "esnext", + "useDefineForClassFields": true, + "module": "esnext", + "moduleResolution": "node", + "strict": true, + "jsx": "preserve", + "sourceMap": true, + "resolveJsonModule": true, + "esModuleInterop": true, + "lib": ["esnext", "dom"], + "paths": { + "@": ["src"], + "@/*": ["src/*"] + }, + "skipLibCheck": true + }, + "include": [ + "src/**/*.ts", + "src/**/*.d.ts", + "src/**/*.tsx", + "src/**/*.vue", + "src/**/**/*.vue" + ] +} diff --git a/tansci-boot-ui/vite.config.ts b/tansci-boot-ui/vite.config.ts new file mode 100644 index 0000000..533762d --- /dev/null +++ b/tansci-boot-ui/vite.config.ts @@ -0,0 +1,43 @@ +import { defineConfig } from 'vite' +import path from 'path' +import vue from '@vitejs/plugin-vue' +import Unocss from 'unocss/vite' +import { + presetAttributify, + presetIcons, + presetUno, + transformerDirectives, + transformerVariantGroup, +} from 'unocss' + +export default defineConfig({ + resolve: { + alias: { + '@': path.resolve(__dirname, 'src'), + }, + }, + css: { + preprocessorOptions: { + scss: { + additionalData: `@use "@/styles/element/index.scss" as *;`, + }, + }, + }, + plugins: [ + vue(), + Unocss({ + presets: [ + presetUno(), + presetAttributify(), + presetIcons({ + scale: 1.2, + warn: true, + }), + ], + transformers: [ + transformerDirectives(), + transformerVariantGroup(), + ] + }), + ] +})