新增前端vue
8
web-vue/web/.env
Normal file
@@ -0,0 +1,8 @@
|
||||
# 访问端口
|
||||
VITE_PORT = 3100
|
||||
|
||||
# 软件标题
|
||||
VITE_GLOB_APP_TITLE = JeeSite 快速开发平台
|
||||
|
||||
# 软件英文名(小写、全英文、无空格、无特殊字符)
|
||||
VITE_GLOB_APP_SHORT_NAME = jeesite
|
||||
24
web-vue/web/.env.development
Normal file
@@ -0,0 +1,24 @@
|
||||
# 访问项目的根路径
|
||||
VITE_PUBLIC_PATH = /
|
||||
|
||||
# 路由模式(true: history、false: hash)
|
||||
VITE_ROUTE_WEB_HISTORY = true
|
||||
|
||||
# 代理设置,可配置多个,不能换行,格式:[访问接口的根路径, 代理地址, 是否保持Host头]
|
||||
# VITE_PROXY = [["/js","https://vue.jeesite.com/js",true]]
|
||||
VITE_PROXY = [["/js","http://127.0.0.1:8980/js",false]]
|
||||
|
||||
# 是否删除 console 调试信息
|
||||
VITE_DROP_CONSOLE = false
|
||||
|
||||
# 访问接口的根路径(例如:https://vue.jeesite.com)建议为空
|
||||
VITE_GLOB_API_URL =
|
||||
|
||||
# 访问接口的前缀,在根路径之后
|
||||
VITE_GLOB_API_URL_PREFIX = /js
|
||||
|
||||
# 访问接口的管理基础路径
|
||||
VITE_GLOB_ADMIN_PATH = /a
|
||||
|
||||
# 文件预览类型(true、oss)
|
||||
VITE_FILE_PREVIEW = true
|
||||
30
web-vue/web/.env.production
Normal file
@@ -0,0 +1,30 @@
|
||||
# 访问项目的根路径
|
||||
VITE_PUBLIC_PATH = /
|
||||
|
||||
# 路由模式(true: history、false: hash)
|
||||
VITE_ROUTE_WEB_HISTORY = true
|
||||
|
||||
# 是否删除 console 调试信息
|
||||
VITE_DROP_CONSOLE = true
|
||||
|
||||
# 是否启用 gzip 或 brotli 压缩,多个使用 `,` 分隔
|
||||
# 支持选项: gzip | brotli | none
|
||||
VITE_BUILD_COMPRESS = 'none'
|
||||
|
||||
# 是否删除源文件时使用压缩,默认为 false
|
||||
VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE = false
|
||||
|
||||
# 访问接口的根路径(例如:https://vue.jeesite.com)建议为空
|
||||
VITE_GLOB_API_URL =
|
||||
|
||||
# 访问接口的前缀,在根路径之后
|
||||
VITE_GLOB_API_URL_PREFIX = /js
|
||||
|
||||
# 访问接口的管理基础路径
|
||||
VITE_GLOB_ADMIN_PATH = /a
|
||||
|
||||
# 文件预览类型(true、oss)
|
||||
VITE_FILE_PREVIEW = true
|
||||
|
||||
# 是否兼容内核比较低的浏览器(编译包会变大、影响打包速度)
|
||||
VITE_LEGACY = false
|
||||
33
web-vue/web/.env.tomcat
Normal file
@@ -0,0 +1,33 @@
|
||||
# 访问项目的根路径
|
||||
VITE_PUBLIC_PATH = /vuePath
|
||||
|
||||
# 打包编译发布路径
|
||||
VITE_OUTPUT_DIR = ../../jeesite-vue-dist/5.14.0/vue-dist/src/main/resources/vue-ui
|
||||
|
||||
# 路由模式(true: history、false: hash)
|
||||
VITE_ROUTE_WEB_HISTORY = true
|
||||
|
||||
# 是否删除 console 调试信息
|
||||
VITE_DROP_CONSOLE = true
|
||||
|
||||
# 是否启用 gzip 或 brotli 压缩,多个使用 `,` 分隔
|
||||
# 支持选项: gzip | brotli | none
|
||||
VITE_BUILD_COMPRESS = 'none'
|
||||
|
||||
# 是否删除源文件时使用压缩,默认为 false
|
||||
VITE_BUILD_COMPRESS_DELETE_ORIGIN_FILE = false
|
||||
|
||||
# 访问接口的根路径(例如:https://vue.jeesite.com)建议为空
|
||||
VITE_GLOB_API_URL =
|
||||
|
||||
# 访问接口的前缀,在根路径之后
|
||||
VITE_GLOB_API_URL_PREFIX =
|
||||
|
||||
# 访问接口的管理基础路径
|
||||
VITE_GLOB_ADMIN_PATH = /a
|
||||
|
||||
# 文件预览类型(true、oss)
|
||||
VITE_FILE_PREVIEW = true
|
||||
|
||||
# 是否兼容内核比较低的浏览器(编译包会变大、影响打包速度)
|
||||
VITE_LEGACY = false
|
||||
38
web-vue/web/api/sys/config.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
/**
|
||||
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
* No deletion without permission, or be held responsible to law.
|
||||
* @author ThinkGem
|
||||
*/
|
||||
import { defHttp } from '@jeesite/core/utils/http/axios';
|
||||
import { useGlobSetting } from '@jeesite/core/hooks/setting';
|
||||
import { BasicModel, Page } from '@jeesite/core/api/model/baseModel';
|
||||
|
||||
const { adminPath } = useGlobSetting();
|
||||
|
||||
export interface Config extends BasicModel<Config> {
|
||||
configName?: string; // 名称
|
||||
configKey?: string; // 参数键
|
||||
configValue?: string; // 参数值
|
||||
isSys?: string; // 系统内置(1是 0否)
|
||||
}
|
||||
|
||||
export const configList = (params?: Config | any) =>
|
||||
defHttp.get<Config>({ url: adminPath + '/sys/config/list', params });
|
||||
|
||||
export const configListData = (params?: Config | any) =>
|
||||
defHttp.post<Page<Config>>({ url: adminPath + '/sys/config/listData', params });
|
||||
|
||||
export const configForm = (params?: Config | any) =>
|
||||
defHttp.get<Config>({ url: adminPath + '/sys/config/form', params });
|
||||
|
||||
export const checkConfigKey = (oldConfigKey: string, configKey: string) =>
|
||||
defHttp.get<Config>({
|
||||
url: adminPath + '/sys/config/checkConfigKey',
|
||||
params: { oldConfigKey, configKey },
|
||||
});
|
||||
|
||||
export const configSave = (params?: any, data?: Config | any) =>
|
||||
defHttp.postJson<Config>({ url: adminPath + '/sys/config/save', params, data });
|
||||
|
||||
export const configDelete = (params?: Config | any) =>
|
||||
defHttp.get<Config>({ url: adminPath + '/sys/config/delete', params });
|
||||
38
web-vue/web/api/sys/log.ts
Normal file
@@ -0,0 +1,38 @@
|
||||
/**
|
||||
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
* No deletion without permission, or be held responsible to law.
|
||||
* @author ThinkGem
|
||||
*/
|
||||
import { defHttp } from '@jeesite/core/utils/http/axios';
|
||||
import { useGlobSetting } from '@jeesite/core/hooks/setting';
|
||||
import { BasicModel, Page } from '@jeesite/core/api/model/baseModel';
|
||||
|
||||
const { adminPath } = useGlobSetting();
|
||||
|
||||
export interface Log extends BasicModel<Log> {
|
||||
logTitle?: string; // 日志标题
|
||||
requestUri?: string; // 请求URI
|
||||
logType?: string; // 日志类型
|
||||
createBy?: string; // 操作用户编码
|
||||
createByName?: string; // 操作用户名称
|
||||
requestMethod?: string; // 操作方式
|
||||
requestParams?: string; // 操作提交的数据
|
||||
diffModifyData?: string; // 新旧数据比较结果
|
||||
bizType?: string; // 业务类型
|
||||
bizKey?: string; // 业务主键
|
||||
remoteAddr?: string; // 客户端IP
|
||||
serverAddr?: string; // 请求服务器地址
|
||||
isException?: string; // 是否异常
|
||||
exceptionInfo?: string; // 异常信息
|
||||
userAgent?: string; // 用户代理
|
||||
deviceName?: string; // 设备名称
|
||||
browserName?: string; // 浏览器名称
|
||||
executeTime?: number; // 响应时间
|
||||
}
|
||||
|
||||
export const logList = (params?: Log | any) => defHttp.get<Log>({ url: adminPath + '/sys/log/list', params });
|
||||
|
||||
export const logListData = (params?: Log | any) =>
|
||||
defHttp.post<Page<Log>>({ url: adminPath + '/sys/log/listData', params });
|
||||
|
||||
export const logForm = (params?: Log | any) => defHttp.get<Log>({ url: adminPath + '/sys/log/form', params });
|
||||
50
web-vue/web/api/sys/menu.ts
Normal file
@@ -0,0 +1,50 @@
|
||||
/**
|
||||
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
* No deletion without permission, or be held responsible to law.
|
||||
* @author ThinkGem
|
||||
*/
|
||||
import { defHttp } from '@jeesite/core/utils/http/axios';
|
||||
import { useGlobSetting } from '@jeesite/core/hooks/setting';
|
||||
import { TreeDataModel, TreeModel } from '@jeesite/core/api/model/baseModel';
|
||||
|
||||
const { adminPath } = useGlobSetting();
|
||||
|
||||
export interface Menu extends TreeModel<Menu> {
|
||||
menuCode?: string; // 菜单编码
|
||||
menuNameRaw?: string; // 菜单名称
|
||||
menuType?: string; // 菜单类型(1菜单 2权限)
|
||||
menuUrl?: string; // 菜单链接
|
||||
menuTarget?: string; // 目标窗口
|
||||
menuIcon?: string; // 菜单图标
|
||||
menuColor?: string; // 菜单颜色
|
||||
menuTitle?: string; // 菜单标题
|
||||
permission?: string; // 权限标识
|
||||
weight?: number; // 菜单权重(权重越大,表示菜单的重要性越大)
|
||||
isShow?: string; // 是否显示(1显示 0隐藏)
|
||||
sysCode?: string; // 归属系统(default:主导航菜单、mobileApp:APP菜单)
|
||||
moduleCodes?: string; // 归属模块(多个用逗号隔开)
|
||||
}
|
||||
|
||||
export const menuIndex = (params?: Menu | any) => defHttp.get<Menu>({ url: adminPath + '/sys/menu/index', params });
|
||||
|
||||
export const menuList = (params?: Menu | any) => defHttp.get<Menu>({ url: adminPath + '/sys/menu/list', params });
|
||||
|
||||
export const menuListData = (params?: Menu | any) =>
|
||||
defHttp.post<Menu[]>({ url: adminPath + '/sys/menu/listData', params });
|
||||
|
||||
export const menuForm = (params?: Menu | any) => defHttp.get<Menu>({ url: adminPath + '/sys/menu/form', params });
|
||||
|
||||
export const menuCreateNextNode = (params?: Menu | any) =>
|
||||
defHttp.get<Menu>({ url: adminPath + '/sys/menu/createNextNode', params });
|
||||
|
||||
export const menuSave = (params?: any, data?: Menu | any) =>
|
||||
defHttp.postJson<Menu>({ url: adminPath + '/sys/menu/save', params, data });
|
||||
|
||||
export const menuDisable = (params?: Menu | any) => defHttp.get<Menu>({ url: adminPath + '/sys/menu/disable', params });
|
||||
|
||||
export const menuEnable = (params?: Menu | any) => defHttp.get<Menu>({ url: adminPath + '/sys/menu/enable', params });
|
||||
|
||||
export const menuDelete = (params?: Menu | any) => defHttp.get<Menu>({ url: adminPath + '/sys/menu/delete', params });
|
||||
|
||||
export const menuTreeData = (params?: any) =>
|
||||
defHttp.get<TreeDataModel[]>({ url: adminPath + '/sys/menu/treeData', params });
|
||||
43
web-vue/web/api/sys/module.ts
Normal file
@@ -0,0 +1,43 @@
|
||||
/**
|
||||
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
* No deletion without permission, or be held responsible to law.
|
||||
* @author ThinkGem
|
||||
*/
|
||||
import { defHttp } from '@jeesite/core/utils/http/axios';
|
||||
import { useGlobSetting } from '@jeesite/core/hooks/setting';
|
||||
import { BasicModel, Page } from '@jeesite/core/api/model/baseModel';
|
||||
|
||||
const { adminPath } = useGlobSetting();
|
||||
|
||||
export interface Module extends BasicModel<Module> {
|
||||
moduleCode?: string; // 模块编码
|
||||
moduleName?: string; // 模块名称
|
||||
description?: string; // 模块描述
|
||||
mainClassName?: string; // 主类全名
|
||||
currentVersion?: string; // 当前版本
|
||||
upgradeInfo?: string; // 升级信息
|
||||
}
|
||||
|
||||
export const moduleList = (params?: Module | any) =>
|
||||
defHttp.get<Module>({ url: adminPath + '/sys/module/list', params });
|
||||
|
||||
export const moduleListData = (params?: Module | any) =>
|
||||
defHttp.post<Page<Module>>({ url: adminPath + '/sys/module/listData', params });
|
||||
|
||||
export const moduleSelectData = (params?: Module | any) =>
|
||||
defHttp.post<Recordable[]>({ url: adminPath + '/sys/module/selectData', params });
|
||||
|
||||
export const moduleForm = (params?: Module | any) =>
|
||||
defHttp.get<Module>({ url: adminPath + '/sys/module/form', params });
|
||||
|
||||
export const moduleSave = (params?: any, data?: Module | any) =>
|
||||
defHttp.postJson<Module>({ url: adminPath + '/sys/module/save', params, data });
|
||||
|
||||
export const moduleDisable = (params?: Module | any) =>
|
||||
defHttp.get<Module>({ url: adminPath + '/sys/module/disable', params });
|
||||
|
||||
export const moduleEnable = (params?: Module | any) =>
|
||||
defHttp.get<Module>({ url: adminPath + '/sys/module/enable', params });
|
||||
|
||||
export const moduleDelete = (params?: Module | any) =>
|
||||
defHttp.get<Module>({ url: adminPath + '/sys/module/delete', params });
|
||||
25
web-vue/web/api/sys/secAdmin.ts
Normal file
@@ -0,0 +1,25 @@
|
||||
/**
|
||||
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
* No deletion without permission, or be held responsible to law.
|
||||
* @author ThinkGem
|
||||
*/
|
||||
import { defHttp } from '@jeesite/core/utils/http/axios';
|
||||
import { useGlobSetting } from '@jeesite/core/hooks/setting';
|
||||
import { Page } from '@jeesite/core/api/model/baseModel';
|
||||
import { User } from '@jeesite/core/api/sys/user';
|
||||
|
||||
const { adminPath } = useGlobSetting();
|
||||
|
||||
export const secAdminList = (params?: User | any) =>
|
||||
defHttp.get<User>({ url: adminPath + '/sys/secAdmin/list', params });
|
||||
|
||||
export const secAdminListData = (params?: User | any) =>
|
||||
defHttp.post<Page<User>>({ url: adminPath + '/sys/secAdmin/listData', params });
|
||||
|
||||
export const secAdminForm = (params?: User | any) =>
|
||||
defHttp.get<User>({ url: adminPath + '/sys/secAdmin/form', params });
|
||||
|
||||
export const secAdminSave = (params?: any) => defHttp.post<User>({ url: adminPath + '/sys/secAdmin/save', params });
|
||||
|
||||
export const secAdminDelete = (params?: User | any) =>
|
||||
defHttp.get<User>({ url: adminPath + '/sys/secAdmin/delete', params });
|
||||
28
web-vue/web/index.html
Normal file
@@ -0,0 +1,28 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="zh" id="htmlRoot">
|
||||
<head>
|
||||
<meta charset="utf-8"><meta content="webkit" name="renderer"/><meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="keywords" content="PoweredByJeeSiteV5.0"/><meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate"/>
|
||||
<meta name="description" content="PoweredByJeeSiteV5.0"/><meta content="no-cache" http-equiv="Pragma"/><meta http-equiv="Expires" content="0"/>
|
||||
<meta name="viewport" content="width=device-width,initial-scale=1.0,minimum-scale=1.0,maximum-scale=1.0,user-scalable=0" />
|
||||
<title><%= VITE_GLOB_APP_TITLE %></title>
|
||||
<link rel="shortcut icon" href="/favicon.png" type="image/png" />
|
||||
<link rel="stylesheet" href="/resource/css/index.css">
|
||||
</head>
|
||||
<body>
|
||||
<script>if(navigator.userAgent.indexOf("MSIE")>0||navigator.userAgent.indexOf("rv:11")>0){alert('不支持 IE 访问,请使用现代浏览器访问。')};(()=>{var htmlRoot=document.getElementById('htmlRoot'),theme=window.localStorage.getItem('__APP__DARK__MODE__');if(htmlRoot&&theme){htmlRoot.setAttribute('data-theme',theme);theme=htmlRoot=null}})()</script>
|
||||
<div id="app">
|
||||
<div class="app-loading">
|
||||
<div class="app-loading-wrap">
|
||||
<img src="/resource/img/logo.png" class="app-loading-logo" alt="Logo" />
|
||||
<div class="app-loading-dots">
|
||||
<span class="dot dot-spin"><i></i><i></i><i></i><i></i></span>
|
||||
</div>
|
||||
<div class="app-loading-title"><%= VITE_GLOB_APP_TITLE %></div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<script type="module" src="/src/main.ts"></script>
|
||||
<script src="/resource/layer/layer.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
33
web-vue/web/package.json
Normal file
@@ -0,0 +1,33 @@
|
||||
{
|
||||
"name": "@jeesite/web",
|
||||
"version": "5.14.0",
|
||||
"private": true,
|
||||
"type": "module",
|
||||
"scripts": {
|
||||
"bootstrap": "pnpm install",
|
||||
"serve": "pnpm dev",
|
||||
"dev": "cross-env VITE_CJS_IGNORE_WARNING=true NODE_OPTIONS=--trace-deprecation vite dev",
|
||||
"build": "cross-env NODE_OPTIONS=--max_old_space_size=4096 vite build --mode production",
|
||||
"build:tomcat": "vite build --mode tomcat --emptyOutDir",
|
||||
"build:preview": "pnpm build && pnpm preview:dist",
|
||||
"report": "cross-env REPORT=true pnpm build",
|
||||
"preview": "pnpm build && pnpm preview:dist",
|
||||
"preview:dist": "vite preview --mode development --port 3100",
|
||||
"type:check": "vue-tsc --noEmit --skipLibCheck",
|
||||
"uninstall": "rimraf node_modules",
|
||||
"update": "ncu -u"
|
||||
},
|
||||
"homepage": "https://jeesite.com",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "https://gitee.com/thinkgem/jeesite-vue.git"
|
||||
},
|
||||
"bugs": {
|
||||
"url": "https://gitee.com/thinkgem/jeesite-vue/issues"
|
||||
},
|
||||
"author": {
|
||||
"name": "ThinkGem",
|
||||
"email": "thinkgem@163.com",
|
||||
"url": "https://gitee.com/thinkgem"
|
||||
}
|
||||
}
|
||||
BIN
web-vue/web/public/favicon.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
130
web-vue/web/public/resource/css/index.css
Normal file
@@ -0,0 +1,130 @@
|
||||
html[data-theme='dark'] body,
|
||||
html[data-theme='dark'] .app-loading {
|
||||
background-color: #2c344a;
|
||||
}
|
||||
|
||||
html[data-theme='dark'] .app-loading .app-loading-title {
|
||||
color: rgba(255, 255, 255, 0.75);
|
||||
}
|
||||
|
||||
body,
|
||||
.app-loading {
|
||||
background-color: #f4f7f9;
|
||||
}
|
||||
|
||||
.app-loading {
|
||||
display: flex;
|
||||
width: 100%;
|
||||
height: 100%;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.app-loading .app-loading-wrap {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
display: flex;
|
||||
-webkit-transform: translate3d(-50%, -50%, 0);
|
||||
transform: translate3d(-50%, -50%, 0);
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.app-loading .dots {
|
||||
display: flex;
|
||||
padding: 98px;
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.app-loading .app-loading-title {
|
||||
display: flex;
|
||||
margin-top: 30px;
|
||||
font-size: 30px;
|
||||
color: rgba(0, 0, 0, 0.85);
|
||||
justify-content: center;
|
||||
align-items: center;
|
||||
}
|
||||
|
||||
.app-loading .app-loading-logo {
|
||||
display: block;
|
||||
width: 90px;
|
||||
margin: 0 auto;
|
||||
margin-bottom: 20px;
|
||||
}
|
||||
|
||||
.dot {
|
||||
position: relative;
|
||||
display: inline-block;
|
||||
width: 48px;
|
||||
height: 48px;
|
||||
margin-top: 30px;
|
||||
font-size: 32px;
|
||||
transform: rotate(45deg);
|
||||
box-sizing: border-box;
|
||||
animation: antRotate 1.2s infinite linear;
|
||||
}
|
||||
|
||||
.dot i {
|
||||
position: absolute;
|
||||
display: block;
|
||||
width: 20px;
|
||||
height: 20px;
|
||||
background-color: #0065cc;
|
||||
border-radius: 100%;
|
||||
opacity: 0.3;
|
||||
transform: scale(0.75);
|
||||
animation: antSpinMove 1s infinite linear alternate;
|
||||
transform-origin: 50% 50%;
|
||||
}
|
||||
|
||||
.dot i:nth-child(1) {
|
||||
top: 0;
|
||||
left: 0;
|
||||
}
|
||||
|
||||
.dot i:nth-child(2) {
|
||||
top: 0;
|
||||
right: 0;
|
||||
-webkit-animation-delay: 0.4s;
|
||||
animation-delay: 0.4s;
|
||||
}
|
||||
|
||||
.dot i:nth-child(3) {
|
||||
right: 0;
|
||||
bottom: 0;
|
||||
-webkit-animation-delay: 0.8s;
|
||||
animation-delay: 0.8s;
|
||||
}
|
||||
|
||||
.dot i:nth-child(4) {
|
||||
bottom: 0;
|
||||
left: 0;
|
||||
-webkit-animation-delay: 1.2s;
|
||||
animation-delay: 1.2s;
|
||||
}
|
||||
@keyframes antRotate {
|
||||
to {
|
||||
-webkit-transform: rotate(405deg);
|
||||
transform: rotate(405deg);
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes antRotate {
|
||||
to {
|
||||
-webkit-transform: rotate(405deg);
|
||||
transform: rotate(405deg);
|
||||
}
|
||||
}
|
||||
@keyframes antSpinMove {
|
||||
to {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
@-webkit-keyframes antSpinMove {
|
||||
to {
|
||||
opacity: 1;
|
||||
}
|
||||
}
|
||||
1
web-vue/web/public/resource/img/icons/download-count.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 356.99 419.8"><defs><style>.cls-1{fill:#ffa546;}.cls-2{fill:#ff6059;opacity:0.4;}.cls-3{fill:#426572;}.cls-4{fill:#ffd947;}</style></defs><title>Asset 91</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M351,380.73v17.59a15.52,15.52,0,0,1-15.47,15.48H21.46A15.52,15.52,0,0,1,6,398.32V380.73a15.51,15.51,0,0,1,15.47-15.47H335.52A15.51,15.51,0,0,1,351,380.73Z"/><path class="cls-2" d="M351,406.85c0,3.95-7,7.19-15.47,7.19H21.46C13,414,6,410.8,6,406.85V380.73a15.51,15.51,0,0,1,15.47-15.47H37.66l3.44,25.27c0,4,7,7.2,15.47,7.2l283.72,12.44,7.38-2.28Z"/><path class="cls-3" d="M335.52,419.8H21.46A21.5,21.5,0,0,1,0,398.32V380.73a21.49,21.49,0,0,1,21.46-21.47H335.52A21.49,21.49,0,0,1,357,380.73v17.59a21.52,21.52,0,0,1-21.46,21.48ZM21.46,371.26A9.48,9.48,0,0,0,12,380.73v17.59a9.48,9.48,0,0,0,9.46,9.48H335.52a9.52,9.52,0,0,0,9.46-9.48V380.73a9.48,9.48,0,0,0-9.46-9.47Z"/><path class="cls-1" d="M247.93,138H233.23V41.7A35.7,35.7,0,0,0,197.53,6H159.45a35.7,35.7,0,0,0-35.7,35.7V138H109.06C80,138,61.84,169.48,76.37,194.64l34.72,60.13,30,52c16.6,28.76,58.12,28.76,74.72,0l30-52,34.72-60.13C295.14,169.48,277,138,247.93,138Z"/><path class="cls-2" d="M280.62,188l-34.73,60.13-30,52c-11.24,19.46-66.68,32.78-52.52,18.88,60.22-59.12,104.3-182.16,104.3-182.16A37.74,37.74,0,0,1,280.62,188Z"/><path class="cls-4" d="M192.3,6c-.22.23-.42.47-.63.72-38.92,45-18.36,116.49-42.85,170.71-10.14,22.45-29.18,41.51-52.15,49.48L78,194.64C63.52,169.48,81.67,138,110.72,138h14.7V41.7A35.7,35.7,0,0,1,161.12,6Z"/><path class="cls-3" d="M178.49,334.39h0a48.64,48.64,0,0,1-42.56-24.57L71.17,197.64A43.75,43.75,0,0,1,109.06,132h8.69V41.7A41.74,41.74,0,0,1,159.45,0h38.09a41.75,41.75,0,0,1,41.7,41.7V132h8.69a43.75,43.75,0,0,1,37.89,65.62L221,309.82A48.64,48.64,0,0,1,178.49,334.39ZM109.06,144a31.75,31.75,0,0,0-27.49,47.62l64.76,112.17a37.14,37.14,0,0,0,64.33,0l64.76-112.17A31.75,31.75,0,0,0,247.92,144H227.23V41.7A29.73,29.73,0,0,0,197.53,12H159.45a29.73,29.73,0,0,0-29.7,29.7V144Z"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 2.0 KiB |
|
After Width: | Height: | Size: 22 KiB |
|
After Width: | Height: | Size: 19 KiB |
|
After Width: | Height: | Size: 31 KiB |
|
After Width: | Height: | Size: 18 KiB |
|
After Width: | Height: | Size: 21 KiB |
|
After Width: | Height: | Size: 20 KiB |
1
web-vue/web/public/resource/img/icons/total-sales.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 445 271.8"><defs><style>.cls-1{fill:#32caf8;}.cls-2{fill:#00aaf8;opacity:0.5;}.cls-3{fill:#fff;}.cls-4{fill:#426572;}</style></defs><title>Asset 500</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><rect class="cls-1" x="6" y="8.17" width="433" height="259.8" rx="12" ry="12"/><path class="cls-2" d="M439,21.16V255a13,13,0,0,1-13,13H28.72l381-259.8H426A13,13,0,0,1,439,21.16Z"/><path class="cls-3" d="M328,33.24h88.92c3.86,0,3.87-6,0-6H328c-3.86,0-3.87,6,0,6Z"/><path class="cls-3" d="M283.49,33.24H312.6c3.86,0,3.87-6,0-6H283.49c-3.86,0-3.87,6,0,6Z"/><path class="cls-4" d="M427,271.8H18a18,18,0,0,1-18-18V18A18,18,0,0,1,18,0H427a18,18,0,0,1,18,18V253.8A18,18,0,0,1,427,271.8ZM18,12a6,6,0,0,0-6,6V253.8a6,6,0,0,0,6,6H427a6,6,0,0,0,6-6V18a6,6,0,0,0-6-6Z"/><rect class="cls-4" x="37.89" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="55.93" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="73.97" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="92.01" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="118.71" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="136.76" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="154.8" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="172.84" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="199.54" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="217.58" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="235.63" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="253.67" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="280.37" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="298.41" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="316.45" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="334.49" y="125.08" width="12" height="20.57"/><rect class="cls-4" x="43.89" y="177.53" width="161.29" height="12"/><rect class="cls-4" x="43.89" y="204.59" width="68.2" height="12"/><circle class="cls-3" cx="379.46" cy="207.35" r="23.82"/><rect class="cls-3" x="43.89" y="36.31" width="72.53" height="47.63" rx="12" ry="12"/><path class="cls-4" d="M104.42,88.86H55.89a18,18,0,0,1-18-18V47.23a18,18,0,0,1,18-18h48.53a18,18,0,0,1,18,18V70.86A18,18,0,0,1,104.42,88.86ZM55.89,41.23a6,6,0,0,0-6,6V70.86a6,6,0,0,0,6,6h48.53a6,6,0,0,0,6-6V47.23a6,6,0,0,0-6-6Z"/><path class="cls-4" d="M379.46,241.49a29.81,29.81,0,1,1,29.82-29.82A29.85,29.85,0,0,1,379.46,241.49Zm0-47.63a17.81,17.81,0,1,0,17.82,17.81A17.84,17.84,0,0,0,379.46,193.86Z"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 2.6 KiB |
1
web-vue/web/public/resource/img/icons/transaction.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 392.49 390.69"><defs><style>.cls-1{fill:#fff;}.cls-2{fill:#f3aa9f;}.cls-3{fill:#e1978f;}.cls-4,.cls-6{fill:#426572;}.cls-5{fill:#e1d2d5;}.cls-6{font-size:100.43px;font-family:Dosis-ExtraBold, Dosis;font-weight:700;}</style></defs><title>Asset 480</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><path class="cls-1" d="M383.9,162H199.69V2.19q4-.19,8.16-.19A176.87,176.87,0,0,1,383.9,162Z"/><path class="cls-2" d="M355.38,210a176.83,176.83,0,0,1-95.72,157.18l-.15.07A176.88,176.88,0,1,1,101.72,50.67l.15-.07a175.93,175.93,0,0,1,72.82-17.4V191H354.37A177.9,177.9,0,0,1,355.38,210Z"/><path class="cls-3" d="M357.53,212.16a176,176,0,0,1-17.44,76.66,1,1,0,0,1-.07.15A176.89,176.89,0,0,1,73.47,352.79l1.23.38q6,1.86,12.26,3.29A177,177,0,0,0,303.49,191h52.78A178.15,178.15,0,0,1,357.53,212.16Z"/><path class="cls-4" d="M182.85,390.69a182.87,182.87,0,0,1-84-345.31l.41-.2a180.59,180.59,0,0,1,75.13-20l6.27-.28V185H364.36l.51,5.44c.54,5.77.82,11.62.82,17.4a180.72,180.72,0,0,1-20.18,83.56c-.06.12-.12.26-.2.41a184.39,184.39,0,0,1-83,80.77l-.18.08,0,0A181.06,181.06,0,0,1,182.85,390.69ZM104.33,56.08A170.88,170.88,0,0,0,256.9,361.85l.17-.08,0,0a172.34,172.34,0,0,0,77.5-75.38l.15-.29a168.84,168.84,0,0,0,18.93-78.23c0-3.6-.11-7.23-.34-10.84H168.69V37.58a168.41,168.41,0,0,0-64.07,18.35Z"/><path class="cls-5" d="M382.9,158H309.11c-2.89-46.4-18.43-98.49-36.89-144.29l1.33.51a177.49,177.49,0,0,1,92.51,83.56A175.63,175.63,0,0,1,382.9,158Z"/><path class="cls-4" d="M392.49,172H195.69V.47L201.4.2C204.11.07,207,0,209.85,0a182.87,182.87,0,0,1,182,165.44Zm-184.8-12H379.18A170.89,170.89,0,0,0,209.85,12h-2.16Z"/><text class="cls-6" transform="translate(232.67 133.93)">%</text><path class="cls-1" d="M101.22,81.14a166.34,166.34,0,0,1,34.83-18c3.58-1.34,2-7.14-1.6-5.79A172.89,172.89,0,0,0,98.19,76c-3.18,2.15-.18,7.35,3,5.18Z"/><path class="cls-1" d="M36.28,166.34c2.62-8.63,6.74-16.94,11.05-24.83A180.58,180.58,0,0,1,87.86,91.34c2.93-2.52-1.33-6.75-4.24-4.24-23.3,20.06-44.07,47.84-53.12,77.65-1.12,3.7,4.67,5.29,5.79,1.6Z"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 2.1 KiB |
1
web-vue/web/public/resource/img/icons/visit-count.svg
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 419.23 419.23"><defs><style>.cls-1{fill:#fbc907;}.cls-2{fill:#f3a70f;}.cls-3{fill:#426572;}.cls-4,.cls-9{fill:#fff;}.cls-5{fill:#e8e8e8;}.cls-6{fill:#dadada;}.cls-7{opacity:0.1;}.cls-8{fill:#55e0ff;}.cls-9{opacity:0.4;}</style></defs><title>Asset 510</title><g id="Layer_2" data-name="Layer 2"><g id="Layer_1-2" data-name="Layer 1"><circle class="cls-1" cx="210.66" cy="209.62" r="203.61"/><path class="cls-2" d="M27.21,209.62A203.61,203.61,0,0,1,220.72,6.26q-5-.25-10.08-.25C98.19,4.86,6.11,95.09,5,207.54S94.05,412.07,206.5,413.21q2.07,0,4.13,0,5.06,0,10.08-.25A203.61,203.61,0,0,1,27.21,209.62Z"/><path class="cls-3" d="M209.61,419.23C94,419.23,0,325.19,0,209.61S94,0,209.61,0,419.23,94,419.23,209.61,325.19,419.23,209.61,419.23Zm0-407.23C100.65,12,12,100.65,12,209.61s88.65,197.61,197.61,197.61,197.61-88.65,197.61-197.61S318.58,12,209.61,12Z"/><path class="cls-4" d="M111.69,60.1a195,195,0,0,1,41.08-21.2c3.59-1.34,2-7.14-1.6-5.79a201.47,201.47,0,0,0-42.51,21.8c-3.18,2.15-.18,7.35,3,5.18Z"/><path class="cls-4" d="M35.09,160.61c3.09-10.2,8-20,13.05-29.32A212.37,212.37,0,0,1,95.87,72.18c2.93-2.52-1.33-6.75-4.24-4.24A217.08,217.08,0,0,0,43,128.26C37.63,138,32.54,148.34,29.31,159c-1.12,3.7,4.67,5.29,5.79,1.6Z"/><circle class="cls-5" cx="211.45" cy="212.12" r="156.89"/><path class="cls-6" d="M67.05,232.07a156.89,156.89,0,0,1,283.33-92.82A156.91,156.91,0,1,0,85,304.92,156.19,156.19,0,0,1,67.05,232.07Z"/><path class="cls-5" d="M211.32,152.25h0a9.16,9.16,0,0,1,9.16,9.16V210.5a9.16,9.16,0,0,1-9.16,9.16h0a9.16,9.16,0,0,1-9.16-9.16V161.41A9.16,9.16,0,0,1,211.32,152.25Z"/><circle class="cls-5" cx="211.14" cy="221.32" r="15.94"/><path class="cls-3" d="M210.48,92.62c6.29,0,6.29-9.77,0-9.77S204.19,92.62,210.48,92.62Z"/><path class="cls-3" d="M210.48,343.89c6.29,0,6.29-9.77,0-9.77S204.19,343.89,210.48,343.89Z"/><path class="cls-3" d="M339.84,218.25c6.29,0,6.29-9.77,0-9.77S333.55,218.25,339.84,218.25Z"/><path class="cls-3" d="M81.13,218.25c6.29,0,6.29-9.77,0-9.77S74.84,218.25,81.13,218.25Z"/><path class="cls-3" d="M205.56,153.32h0a9.16,9.16,0,0,1,9.16,9.16v49.09a9.16,9.16,0,0,1-9.16,9.16h0a9.16,9.16,0,0,1-9.16-9.16V162.49A9.16,9.16,0,0,1,205.56,153.32Z"/><circle class="cls-3" cx="205.38" cy="221.15" r="15.94"/><path class="cls-3" d="M135.78,272.58l135.16-89.89L290.11,170c5.22-3.46.33-11.94-4.92-8.44L150,251.4l-19.17,12.74C125.64,267.6,130.52,276.08,135.78,272.58Z"/><g class="cls-7"><ellipse class="cls-8" cx="210.2" cy="211.21" rx="156.89" ry="154.23"/></g><path class="cls-9" d="M243.13,60.17,84.37,301.88a162.18,162.18,0,0,1-18.58-47.29L193.5,60.21a153.88,153.88,0,0,1,49.67,0Z"/><path class="cls-9" d="M289.69,72.6,115.93,325.78a155.09,155.09,0,0,1-14.77-15L270,64.76A155.38,155.38,0,0,1,289.69,72.6Z"/><path class="cls-9" d="M362.16,171.75h0L232.51,360.68h0a160.93,160.93,0,0,1-42.54.43L346.63,132.84A151.63,151.63,0,0,1,362.16,171.75Z"/><path class="cls-3" d="M210.12,369.75c-89.82,0-162.89-71.88-162.89-160.23S120.31,49.29,210.12,49.29,373,121.17,373,209.52,299.94,369.75,210.12,369.75Zm0-308.46c-83.2,0-150.89,66.5-150.89,148.23s67.69,148.23,150.89,148.23S361,291.25,361,209.52,293.32,61.29,210.12,61.29Z"/></g></g></svg>
|
||||
|
After Width: | Height: | Size: 3.1 KiB |
BIN
web-vue/web/public/resource/img/logo.png
Normal file
|
After Width: | Height: | Size: 7.2 KiB |
BIN
web-vue/web/public/resource/img/pwa-192x192.png
Normal file
|
After Width: | Height: | Size: 7.5 KiB |
BIN
web-vue/web/public/resource/img/pwa-512x512.png
Normal file
|
After Width: | Height: | Size: 40 KiB |
3
web-vue/web/public/resource/layer/layer.js
Normal file
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="close" width="18" height="18" preserveAspectRatio="xMidYMid meet" viewBox="0 0 1024 1024"><path fill="#666" d="m563.8 512l262.5-312.9c4.4-5.2.7-13.1-6.1-13.1h-79.8c-4.7 0-9.2 2.1-12.3 5.7L511.6 449.8L295.1 191.7c-3-3.6-7.5-5.7-12.3-5.7H203c-6.8 0-10.5 7.9-6.1 13.1L459.4 512L196.9 824.9A7.95 7.95 0 0 0 203 838h79.8c4.7 0 9.2-2.1 12.3-5.7l216.5-258.1l216.5 258.1c3 3.6 7.5 5.7 12.3 5.7h79.8c6.8 0 10.5-7.9 6.1-13.1L563.8 512z"></path></svg>
|
||||
|
After Width: | Height: | Size: 560 B |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="full-1" width="18" height="18" preserveAspectRatio="xMidYMid meet" viewBox="0 0 1024 1024"><path d="M290 236.4l43.9-43.9a8.01 8.01 0 0 0-4.7-13.6L169 160c-5.1-.6-9.5 3.7-8.9 8.9L179 329.1c.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L370 423.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L290 236.4zm352.7 187.3c3.1 3.1 8.2 3.1 11.3 0l133.7-133.6l43.7 43.7a8.01 8.01 0 0 0 13.6-4.7L863.9 169c.6-5.1-3.7-9.5-8.9-8.9L694.8 179c-6.6.8-9.4 8.9-4.7 13.6l43.9 43.9L600.3 370a8.03 8.03 0 0 0 0 11.3l42.4 42.4zM845 694.9c-.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L654 600.3a8.03 8.03 0 0 0-11.3 0l-42.4 42.3a8.03 8.03 0 0 0 0 11.3L734 787.6l-43.9 43.9a8.01 8.01 0 0 0 4.7 13.6L855 864c5.1.6 9.5-3.7 8.9-8.9L845 694.9zm-463.7-94.6a8.03 8.03 0 0 0-11.3 0L236.3 733.9l-43.7-43.7a8.01 8.01 0 0 0-13.6 4.7L160.1 855c-.6 5.1 3.7 9.5 8.9 8.9L329.2 845c6.6-.8 9.4-8.9 4.7-13.6L290 787.6L423.7 654c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.4z" fill="#666"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
@@ -0,0 +1 @@
|
||||
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" aria-hidden="true" role="img" class="full-2" width="18" height="18" preserveAspectRatio="xMidYMid meet" viewBox="0 0 1024 1024"><path d="M391 240.9c-.8-6.6-8.9-9.4-13.6-4.7l-43.7 43.7L200 146.3a8.03 8.03 0 0 0-11.3 0l-42.4 42.3a8.03 8.03 0 0 0 0 11.3L280 333.6l-43.9 43.9a8.01 8.01 0 0 0 4.7 13.6L401 410c5.1.6 9.5-3.7 8.9-8.9L391 240.9zm10.1 373.2L240.8 633c-6.6.8-9.4 8.9-4.7 13.6l43.9 43.9L146.3 824a8.03 8.03 0 0 0 0 11.3l42.4 42.3c3.1 3.1 8.2 3.1 11.3 0L333.7 744l43.7 43.7A8.01 8.01 0 0 0 391 783l18.9-160.1c.6-5.1-3.7-9.4-8.8-8.8zm221.8-204.2L783.2 391c6.6-.8 9.4-8.9 4.7-13.6L744 333.6L877.7 200c3.1-3.1 3.1-8.2 0-11.3l-42.4-42.3a8.03 8.03 0 0 0-11.3 0L690.3 279.9l-43.7-43.7a8.01 8.01 0 0 0-13.6 4.7L614.1 401c-.6 5.2 3.7 9.5 8.8 8.9zM744 690.4l43.9-43.9a8.01 8.01 0 0 0-4.7-13.6L623 614c-5.1-.6-9.5 3.7-8.9 8.9L633 783.1c.8 6.6 8.9 9.4 13.6 4.7l43.7-43.7L824 877.7c3.1 3.1 8.2 3.1 11.3 0l42.4-42.3c3.1-3.1 3.1-8.2 0-11.3L744 690.4z" fill="#666"></path></svg>
|
||||
|
After Width: | Height: | Size: 1.0 KiB |
BIN
web-vue/web/public/resource/layer/theme/default/icon-ext.png
Normal file
|
After Width: | Height: | Size: 5.8 KiB |
BIN
web-vue/web/public/resource/layer/theme/default/icon.png
Normal file
|
After Width: | Height: | Size: 14 KiB |
157
web-vue/web/public/resource/layer/theme/default/layer.css
Normal file
@@ -0,0 +1,157 @@
|
||||
html #layuicss-layer{display:none;position:absolute;width:1989px;}
|
||||
|
||||
.layui-layer-shade, .layui-layer{position:fixed;_position:absolute;pointer-events:auto;}
|
||||
.layui-layer-shade{top:0;left:0;width:100%;height:100%;_height:expression(document.body.offsetHeight+"px");}
|
||||
.layui-layer{-webkit-overflow-scrolling:touch;}
|
||||
.layui-layer{top:150px;left:0;margin:0;padding:0;background-color:#fff;-webkit-background-clip:content;border-radius:8px;box-shadow:1px 1px 50px rgba(0,0,0,.3);}
|
||||
.layui-layer-close{position:absolute;}
|
||||
.layui-layer-content{position:relative;overflow:hidden;}
|
||||
.layui-layer-border{border:1px solid #B2B2B2;border:1px solid rgba(0,0,0,.1);box-shadow:1px 1px 5px rgba(0,0,0,.2);}
|
||||
.layui-layer-load{background:url(loading-1.gif) #eee center center no-repeat;}
|
||||
.layui-layer-ico{ background:url(icon.png) no-repeat;}
|
||||
.layui-layer-dialog .layui-layer-ico,
|
||||
.layui-layer-setwin a,
|
||||
.layui-layer-btn a{display:inline-block;*display:inline;*zoom:1;vertical-align:top;}
|
||||
|
||||
.layui-layer-move{display:none;position:fixed;*position:absolute;left:0px;top:0px;width:100%;height:100%;cursor:move;opacity:0;filter:alpha(opacity=0);background-color:#fff;z-index:2147483647;}
|
||||
.layui-layer-resize{position:absolute;width:15px;height:15px;right:0;bottom:0;cursor:se-resize;}
|
||||
|
||||
.layer-anim{-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.3s;animation-duration:.3s;}
|
||||
|
||||
@-webkit-keyframes layer-bounceIn {
|
||||
0% {opacity:0;-webkit-transform:scale(.5);transform:scale(.5)}
|
||||
100% {opacity:1;-webkit-transform:scale(1);transform:scale(1)}
|
||||
}
|
||||
@keyframes layer-bounceIn {
|
||||
0% {opacity:0;-webkit-transform:scale(.5);-ms-transform:scale(.5);transform:scale(.5)}
|
||||
100% {opacity:1;-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1)}
|
||||
}
|
||||
.layer-anim-00{-webkit-animation-name:layer-bounceIn;animation-name:layer-bounceIn}
|
||||
|
||||
@-webkit-keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInDown{0%{opacity:0;-webkit-transform:scale(.1) translateY(-2000px);-ms-transform:scale(.1) translateY(-2000px);transform:scale(.1) translateY(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateY(60px);-ms-transform:scale(.475) translateY(60px);transform:scale(.475) translateY(60px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-01{-webkit-animation-name:layer-zoomInDown;animation-name:layer-zoomInDown}
|
||||
@-webkit-keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);transform:translateY(0)}}@keyframes layer-fadeInUpBig{0%{opacity:0;-webkit-transform:translateY(2000px);-ms-transform:translateY(2000px);transform:translateY(2000px)}100%{opacity:1;-webkit-transform:translateY(0);-ms-transform:translateY(0);transform:translateY(0)}}.layer-anim-02{-webkit-animation-name:layer-fadeInUpBig;animation-name:layer-fadeInUpBig}
|
||||
@-webkit-keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}@keyframes layer-zoomInLeft{0%{opacity:0;-webkit-transform:scale(.1) translateX(-2000px);-ms-transform:scale(.1) translateX(-2000px);transform:scale(.1) translateX(-2000px);-webkit-animation-timing-function:ease-in-out;animation-timing-function:ease-in-out}60%{opacity:1;-webkit-transform:scale(.475) translateX(48px);-ms-transform:scale(.475) translateX(48px);transform:scale(.475) translateX(48px);-webkit-animation-timing-function:ease-out;animation-timing-function:ease-out}}.layer-anim-03{-webkit-animation-name:layer-zoomInLeft;animation-name:layer-zoomInLeft}
|
||||
@-webkit-keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}}@keyframes layer-rollIn{0%{opacity:0;-webkit-transform:translateX(-100%) rotate(-120deg);-ms-transform:translateX(-100%) rotate(-120deg);transform:translateX(-100%) rotate(-120deg)}100%{opacity:1;-webkit-transform:translateX(0px) rotate(0deg);-ms-transform:translateX(0px) rotate(0deg);transform:translateX(0px) rotate(0deg)}}.layer-anim-04{-webkit-animation-name:layer-rollIn;animation-name:layer-rollIn}
|
||||
@keyframes layer-fadeIn{0%{opacity:0}100%{opacity:1}}.layer-anim-05{-webkit-animation-name:layer-fadeIn;animation-name:layer-fadeIn}
|
||||
@-webkit-keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);transform:translateX(10px)}}@keyframes layer-shake{0%,100%{-webkit-transform:translateX(0);-ms-transform:translateX(0);transform:translateX(0)}10%,30%,50%,70%,90%{-webkit-transform:translateX(-10px);-ms-transform:translateX(-10px);transform:translateX(-10px)}20%,40%,60%,80%{-webkit-transform:translateX(10px);-ms-transform:translateX(10px);transform:translateX(10px)}}.layer-anim-06{-webkit-animation-name:layer-shake;animation-name:layer-shake}@-webkit-keyframes fadeIn{0%{opacity:0}100%{opacity:1}}
|
||||
|
||||
.layui-layer-title{padding:0 80px 0 20px;height:50px;line-height:50px;border-bottom:1px solid #F0F0F0;font-size:14px;color:#333;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;border-radius:8px 8px 0 0;}
|
||||
.layui-layer-setwin{position:absolute;right:20px;*right:0;top:20px;font-size:0;line-height:initial;}
|
||||
.layui-layer-setwin a{position:relative;width:16px;height:16px;margin-left:19px;font-size:12px;_overflow:hidden;}
|
||||
.layui-layer-setwin .layui-layer-min{display:none!important}
|
||||
.layui-layer-setwin .layui-layer-min cite{position:absolute;width:14px;height:2px;left:0;top:50%;margin-top:-1px;background-color:#888;cursor:pointer;_overflow:hidden;}
|
||||
.layui-layer-setwin .layui-layer-min:hover cite{background-color:#2D93CA;}
|
||||
.layui-layer-setwin .layui-layer-max{background:url(full-1.svg) center;}
|
||||
.layui-layer-setwin .layui-layer-max:hover{background-size:19px;}
|
||||
.layui-layer-setwin .layui-layer-maxmin{background:url(full-2.svg) center;}
|
||||
.layui-layer-setwin .layui-layer-maxmin:hover{background-size:19px;}
|
||||
.layui-layer-setwin .layui-layer-close1{background:url(close.svg) center;cursor:pointer;}
|
||||
.layui-layer-setwin .layui-layer-close1:hover{background-size:19px;}
|
||||
.layui-layer-setwin .layui-layer-close2{position:absolute;right:-28px;top:-28px;width:30px;height:30px; margin-left:0;background-position:-149px -31px;*right:-18px;_display:none;}
|
||||
.layui-layer-setwin .layui-layer-close2:hover{ background-position:-180px -31px;}
|
||||
|
||||
.layui-layer-btn{text-align:right;padding:0 15px 12px;pointer-events:auto;user-select:none;-webkit-user-select:none;}
|
||||
.layui-layer-btn a{height:28px;line-height:28px;margin:5px 5px 0;padding:0 15px;border:1px solid #dedede;background-color:#fff;color:#333;border-radius:8px;font-weight:400;cursor:pointer;text-decoration:none;}
|
||||
.layui-layer-btn a:hover{opacity:0.9;text-decoration:none;}
|
||||
.layui-layer-btn a:active{opacity:0.8;}
|
||||
.layui-layer-btn .layui-layer-btn0{border-color:#1E9FFF;background-color:#1E9FFF;color:#fff;}
|
||||
.layui-layer-btn-l{text-align:left;}
|
||||
.layui-layer-btn-c{text-align:center;}
|
||||
|
||||
.layui-layer-dialog{min-width:300px;}
|
||||
.layui-layer-dialog .layui-layer-content{position:relative;padding:20px;line-height:24px;word-break:break-all;overflow:hidden;font-size:14px;overflow-x:hidden;overflow-y:auto;}
|
||||
.layui-layer-dialog .layui-layer-content .layui-layer-ico{position:absolute;top:29px;left:22px;_left:-40px;width:30px;height:30px;}
|
||||
.layui-layer-ico1{background-position:-30px 0 }
|
||||
.layui-layer-ico2{background-position:-60px 0;}
|
||||
.layui-layer-ico3{background-position:-90px 0;}
|
||||
.layui-layer-ico4{background-position:-120px 0;}
|
||||
.layui-layer-ico5{background-position:-150px 0;}
|
||||
.layui-layer-ico6{background-position:-180px 0;}
|
||||
.layui-layer-rim{border:6px solid #8D8D8D;border:6px solid rgba(0,0,0,.3);border-radius:5px;box-shadow:none;}
|
||||
.layui-layer-msg{min-width:180px;border:1px solid #D3D4D3;box-shadow:none;}
|
||||
.layui-layer-hui{min-width:100px; background-color:#000;filter:alpha(opacity=60);background-color:rgba(0,0,0,0.6);color:#fff;border:none;}
|
||||
.layui-layer-hui .layui-layer-content{padding:12px 25px;text-align:center;}
|
||||
.layui-layer-dialog .layui-layer-padding{padding:30px 30px 30px 70px;text-align:left;}
|
||||
.layui-layer-page .layui-layer-content{position:relative;overflow:auto;}
|
||||
.layui-layer-page .layui-layer-btn,.layui-layer-iframe .layui-layer-btn{padding-top:10px;}
|
||||
.layui-layer-nobg{background:none;}
|
||||
.layui-layer-iframe iframe{display:block;width:100%;border-radius:8px;}
|
||||
|
||||
.layui-layer-loading{border-radius:100%;background:none; box-shadow:none; border:none;}
|
||||
.layui-layer-loading .layui-layer-content{width:60px;height:24px;background:url(loading-0.gif) no-repeat;}
|
||||
.layui-layer-loading .layui-layer-loading1{width:37px;height:37px;background:url(loading-1.gif) no-repeat;}
|
||||
.layui-layer-loading .layui-layer-loading2, .layui-layer-ico16{width:32px;height:32px;background:url(loading-2.gif) no-repeat;}
|
||||
.layui-layer-tips{background:none;box-shadow:none;border:none;}
|
||||
.layui-layer-tips .layui-layer-content{position:relative;overflow:visible;line-height:22px;min-width:12px;padding:8px 15px;font-size:12px;_float:left;border-radius:8px;box-shadow:1px 1px 3px rgba(0,0,0,.2);background-color:#000;color:#fff;}
|
||||
.layui-layer-tips .layui-layer-close{right:-2px;top:-1px;}
|
||||
.layui-layer-tips i.layui-layer-TipsG{ position:absolute; width:0;height:0;border-width:8px;border-color:transparent;border-style:dashed;*overflow:hidden;}
|
||||
.layui-layer-tips i.layui-layer-TipsT, .layui-layer-tips i.layui-layer-TipsB{left:5px;border-right-style:solid;border-right-color:#000;}
|
||||
.layui-layer-tips i.layui-layer-TipsT{bottom:-8px;}
|
||||
.layui-layer-tips i.layui-layer-TipsB{top:-8px;}
|
||||
.layui-layer-tips i.layui-layer-TipsR, .layui-layer-tips i.layui-layer-TipsL{top:5px;border-bottom-style:solid;border-bottom-color:#000;}
|
||||
.layui-layer-tips i.layui-layer-TipsR{left:-8px;}
|
||||
.layui-layer-tips i.layui-layer-TipsL{right:-8px;}
|
||||
|
||||
.layui-layer-lan[type="dialog"]{min-width:280px;}
|
||||
.layui-layer-lan .layui-layer-title{background:#4476A7;color:#fff;border:none;}
|
||||
.layui-layer-lan .layui-layer-btn{padding:5px 10px 10px;text-align:right;border-top:1px solid #E9E7E7}
|
||||
.layui-layer-lan .layui-layer-btn a{background:#fff;border-color:#E9E7E7;color:#333;}
|
||||
.layui-layer-lan .layui-layer-btn .layui-layer-btn1{background:#C9C5C5;}
|
||||
.layui-layer-molv .layui-layer-title{background:#009f95;color:#fff;border:none;}
|
||||
.layui-layer-molv .layui-layer-btn a{background:#009f95;border-color:#009f95;}
|
||||
.layui-layer-molv .layui-layer-btn .layui-layer-btn1{background:#92B8B1;}
|
||||
|
||||
.layui-layer-iconext{background:url(icon-ext.png) no-repeat;}
|
||||
|
||||
.layui-layer-prompt .layui-layer-input{display:block;width:260px;height:36px;margin:0 auto;line-height:30px;padding-left:10px;border:1px solid #e6e6e6;color:#333;}
|
||||
.layui-layer-prompt textarea.layui-layer-input{width:300px;height:100px;line-height:20px;padding:6px 10px;}
|
||||
.layui-layer-prompt .layui-layer-content{padding:20px;}
|
||||
.layui-layer-prompt .layui-layer-btn{padding-top:0;}
|
||||
|
||||
.layui-layer-tab{box-shadow:1px 1px 50px rgba(0,0,0,.4);}
|
||||
.layui-layer-tab .layui-layer-title{padding-left:0;overflow:visible;}
|
||||
.layui-layer-tab .layui-layer-title span{position:relative;float:left;min-width:80px;max-width:300px;padding:0 20px;text-align:center;cursor:default;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;cursor:pointer;}
|
||||
.layui-layer-tab .layui-layer-title span.layui-this{height:51px;border-left:1px solid #eee;border-right:1px solid #eee;background-color:#fff;z-index:10;}
|
||||
.layui-layer-tab .layui-layer-title span:first-child{border-left:none;}
|
||||
.layui-layer-tabmain{line-height:24px;clear:both;}
|
||||
.layui-layer-tabmain .layui-layer-tabli{display:none;}
|
||||
.layui-layer-tabmain .layui-layer-tabli.layui-this{display:block;}
|
||||
|
||||
.layui-layer-photos{background:none;box-shadow:none;}
|
||||
.layui-layer-photos .layui-layer-content{overflow:hidden;text-align:center;}
|
||||
.layui-layer-photos .layui-layer-phimg img{position:relative;width:100%;display:inline-block;*display:inline;*zoom:1;vertical-align:top;}
|
||||
.layui-layer-imgprev, .layui-layer-imgnext{position:fixed;top:50%;width:27px;_width:44px;height:44px; margin-top:-22px;outline:none;}
|
||||
.layui-layer-imgprev{left:30px;background-position:-5px -5px;_background-position:-70px -5px;}
|
||||
.layui-layer-imgprev:hover{background-position:-33px -5px;_background-position:-120px -5px;}
|
||||
.layui-layer-imgnext{right:30px;_right:8px;background-position:-5px -50px;_background-position:-70px -50px;}
|
||||
.layui-layer-imgnext:hover{background-position:-33px -50px;_background-position:-120px -50px;}
|
||||
.layui-layer-imgbar{position:fixed;left:0;right:0;bottom:0;width:100%;height:40px;line-height:40px;background-color:#000\9;filter:Alpha(opacity=60);background-color:rgba(2,0,0,.35);color:#fff;text-overflow:ellipsis;overflow:hidden;white-space:nowrap;font-size:0;}
|
||||
.layui-layer-imgtit *{display:inline-block;*display:inline;*zoom:1;vertical-align:top;font-size:12px;}
|
||||
.layui-layer-imgtit a{max-width:65%; text-overflow:ellipsis;overflow:hidden;white-space:nowrap;color:#fff;}
|
||||
.layui-layer-imgtit a:hover{color:#fff;text-decoration:underline;}
|
||||
.layui-layer-imgtit em{padding-left:10px;font-style:normal;}
|
||||
|
||||
@-webkit-keyframes layer-bounceOut {
|
||||
100% {opacity:0;-webkit-transform:scale(.7);transform:scale(.7)}
|
||||
30% {-webkit-transform:scale(1.05);transform:scale(1.05)}
|
||||
0% {-webkit-transform:scale(1);transform:scale(1);}
|
||||
}
|
||||
@keyframes layer-bounceOut {
|
||||
100% {opacity:0;-webkit-transform:scale(.7);-ms-transform:scale(.7);transform:scale(.7);}
|
||||
30% {-webkit-transform:scale(1.05);-ms-transform:scale(1.05);transform:scale(1.05);}
|
||||
0% {-webkit-transform:scale(1);-ms-transform:scale(1);transform:scale(1);}
|
||||
}
|
||||
.layer-anim-close{-webkit-animation-name:layer-bounceOut;animation-name:layer-bounceOut;-webkit-animation-fill-mode:both;animation-fill-mode:both;-webkit-animation-duration:.2s;animation-duration:.2s;}
|
||||
|
||||
.layui-layer-title {font-size:16px;background:#fff;height:52px;line-height:52px;}
|
||||
.layui-layer-page .layui-layer-content {overflow-x:hidden;}
|
||||
.layui-layer-page .layui-layer-content .form-file{padding-top:4px;}
|
||||
.layui-layer-page .layui-layer-btn, .layui-layer-iframe .layui-layer-btn {padding-top:3px;padding-bottom:10px;}
|
||||
.layui-layer-btn .layui-layer-btn0{border-color:#1e5edb;background-color:#1e5edb;}
|
||||
.layui-layer-btn a {height:auto;padding:1px 12px;margin-right:4px;font-size:14px;background-color:#f4f4f4;}
|
||||
.layui-layer.toast-top-full-width {min-width:60%;}
|
||||
|
||||
html.dark .layui-layer {background:#1a1a1a!important;color:#ddd!important;}
|
||||
html.dark .layui-layer-title {background:#262626!important;border-bottom-color:#484848!important;color:#bcbcbc!important;}
|
||||
html.dark .layui-layer-btn a {background-color:#444!important;border-color:#444!important;color:#b5b5b5!important;}
|
||||
html.dark .layui-layer-btn .layui-layer-btn0 {background-color:#1e5edb!important;border-color:#1e5edb!important;}
|
||||
BIN
web-vue/web/public/resource/layer/theme/default/loading-0.gif
Normal file
|
After Width: | Height: | Size: 5.7 KiB |
BIN
web-vue/web/public/resource/layer/theme/default/loading-1.gif
Normal file
|
After Width: | Height: | Size: 701 B |
BIN
web-vue/web/public/resource/layer/theme/default/loading-2.gif
Normal file
|
After Width: | Height: | Size: 1.7 KiB |
1
web-vue/web/public/timestamp.txt
Normal file
@@ -0,0 +1 @@
|
||||
1
|
||||
47
web-vue/web/src/App.vue
Normal file
@@ -0,0 +1,47 @@
|
||||
<template>
|
||||
<StyleProvider hash-priority="high" :transformers="[legacyLogicalPropertiesTransformer]">
|
||||
<ConfigProvider :locale="getAntdLocale" :theme="getTheme">
|
||||
<AppProvider prefixCls="jeesite">
|
||||
<RouterView />
|
||||
</AppProvider>
|
||||
</ConfigProvider>
|
||||
</StyleProvider>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { computed, unref } from 'vue';
|
||||
import { StyleProvider, legacyLogicalPropertiesTransformer, ConfigProvider, theme } from 'ant-design-vue';
|
||||
import { AppProvider } from '@jeesite/core/components/Application';
|
||||
import { useRootSetting } from '@jeesite/core/hooks/setting/useRootSetting';
|
||||
import { ThemeEnum } from '@jeesite/core/enums/appEnum';
|
||||
import { useLocale } from '@jeesite/core/locales/useLocale';
|
||||
import { useTitle } from '@jeesite/core/hooks/web/useTitle';
|
||||
import { darkPrimaryColor } from '@jeesite/vite/theme/themeConfig';
|
||||
import 'dayjs/locale/zh-cn';
|
||||
|
||||
// support Multi-language
|
||||
const { getAntdLocale } = useLocale();
|
||||
const { getDarkMode, getThemeColor } = useRootSetting();
|
||||
|
||||
const getTheme = computed(() => {
|
||||
const isDark = unref(getDarkMode) === ThemeEnum.DARK;
|
||||
return {
|
||||
algorithm: isDark ? theme.darkAlgorithm : theme.defaultAlgorithm,
|
||||
token: {
|
||||
colorPrimary: isDark ? darkPrimaryColor : unref(getThemeColor),
|
||||
colorLink: isDark ? darkPrimaryColor : unref(getThemeColor),
|
||||
colorInfo: isDark ? darkPrimaryColor : unref(getThemeColor),
|
||||
},
|
||||
};
|
||||
});
|
||||
|
||||
// Listening to page changes and dynamically changing site titles
|
||||
useTitle();
|
||||
</script>
|
||||
<style lang="less">
|
||||
body {
|
||||
line-height: 1.5715;
|
||||
font-family:
|
||||
-apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, 'Noto Sans', sans-serif,
|
||||
'Apple Color Emoji', 'Segoe UI Emoji', 'Segoe UI Symbol', 'Noto Color Emoji';
|
||||
}
|
||||
</style>
|
||||
70
web-vue/web/src/main.ts
Normal file
@@ -0,0 +1,70 @@
|
||||
/**
|
||||
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
* No deletion without permission, or be held responsible to law.
|
||||
* @author ThinkGem
|
||||
*/
|
||||
import 'virtual:uno.css';
|
||||
import 'ant-design-vue/dist/reset.css';
|
||||
import '@jeesite/core/design/index.less';
|
||||
|
||||
import App from './App.vue';
|
||||
import { createApp } from 'vue';
|
||||
import { isDevMode } from '@jeesite/core/utils/env';
|
||||
import { registerGlobComp } from '@jeesite/core/components/registerGlobComp';
|
||||
import { initAppConfigStore } from '@jeesite/core/logics/initAppConfig';
|
||||
import { setupErrorHandle } from '@jeesite/core/logics/error-handle';
|
||||
import { setupGlobDirectives } from '@jeesite/core/directives';
|
||||
import { setupI18n } from '@jeesite/core/locales/setupI18n';
|
||||
import { setupRouter, router } from '@jeesite/core/router';
|
||||
import { setupRouterGuard } from '@jeesite/core/router/guard';
|
||||
import { setupStore } from '@jeesite/core/store';
|
||||
import { setupDForm } from '@jeesite/dfm';
|
||||
|
||||
async function bootstrap() {
|
||||
const app = createApp(App);
|
||||
|
||||
// Configure store
|
||||
setupStore(app);
|
||||
|
||||
// Initialize internal system configuration
|
||||
initAppConfigStore();
|
||||
|
||||
// Register global components
|
||||
registerGlobComp(app);
|
||||
|
||||
// Multilingual configuration
|
||||
// Asynchronous case: language files may be obtained from the server side
|
||||
await setupI18n(app);
|
||||
|
||||
// Configure routing
|
||||
setupRouter(app);
|
||||
|
||||
// router-guard
|
||||
setupRouterGuard(router);
|
||||
|
||||
// Register global directive
|
||||
setupGlobDirectives(app);
|
||||
|
||||
// Configure global error handling
|
||||
setupErrorHandle(app);
|
||||
|
||||
// https://next.router.vuejs.org/api/#isready
|
||||
// await router.isReady();
|
||||
|
||||
// Dynamic Form
|
||||
setupDForm();
|
||||
|
||||
app.mount('#app');
|
||||
}
|
||||
|
||||
// 仅开发模式显示
|
||||
if (!isDevMode()) {
|
||||
console.log(
|
||||
'%c JeeSite %c快速开发平台 \n%c 用心去做我们的快速开发平台,用心去帮助我们的客户!让您用着省心的平台。\n 您的一个关注,就是对我们最大的支持: https://gitee.com/thinkgem/jeesite-vue (请点 star 收藏我们)\n 免费 QQ 技术交流群: 127515876、209330483、223507718、709534275、730390092、1373527、183903863(外包) \n 免费 微信 技术交流群: http://s.jeesite.com 如果加不上,可添加 微信 jeesitex 邀请您进群。%c\n ',
|
||||
'font-family:"Helvetica Neue",Helvetica,Arial,sans-serif;font-size:39px;color:#0f87e8;-webkit-text-fill-color:#0f87e8;-webkit-text-stroke:1px #0f87e8;',
|
||||
'font-size:24px;color:#aaa;',
|
||||
'font-size:14px;color:#888;',
|
||||
'font-size:12px;',
|
||||
);
|
||||
}
|
||||
bootstrap().then();
|
||||
19
web-vue/web/tsconfig.json
Normal file
@@ -0,0 +1,19 @@
|
||||
{
|
||||
"extends": "../tsconfig.json",
|
||||
"compilerOptions": {
|
||||
"baseUrl": ".",
|
||||
"paths": {
|
||||
"@jeesite/web/*": ["./*"]
|
||||
}
|
||||
},
|
||||
"include": [
|
||||
"./**/*.ts",
|
||||
"./**/*.tsx",
|
||||
"./**/*.vue"
|
||||
],
|
||||
"exclude": [
|
||||
"node_modules",
|
||||
"vite.config.ts",
|
||||
"dist"
|
||||
]
|
||||
}
|
||||
3
web-vue/web/uno.config.ts
Normal file
@@ -0,0 +1,3 @@
|
||||
import UnoConfig from '../uno.config';
|
||||
|
||||
export default UnoConfig;
|
||||
39
web-vue/web/vite.config.ts
Normal file
@@ -0,0 +1,39 @@
|
||||
/**
|
||||
* Copyright (c) 2013-Now http://jeesite.com All rights reserved.
|
||||
* No deletion without permission, or be held responsible to law.
|
||||
* @author ThinkGem
|
||||
*/
|
||||
import type { UserConfig, ConfigEnv } from 'vite';
|
||||
import { defineConfig, loadEnv } from 'vite';
|
||||
import path from 'path';
|
||||
import {
|
||||
createBuildOptions,
|
||||
createCSSOptions,
|
||||
createDefineOptions,
|
||||
createEsBuildOptions,
|
||||
createServerOptions,
|
||||
createVitePlugins,
|
||||
wrapperEnv,
|
||||
} from '@jeesite/vite';
|
||||
|
||||
export default defineConfig(async ({ command, mode }: ConfigEnv) => {
|
||||
const root = process.cwd();
|
||||
const isBuild = command === 'build';
|
||||
const viteEnv = wrapperEnv(loadEnv(mode, root));
|
||||
const config: UserConfig = {
|
||||
root,
|
||||
base: viteEnv.VITE_PUBLIC_PATH,
|
||||
define: await createDefineOptions(),
|
||||
plugins: createVitePlugins(isBuild, viteEnv),
|
||||
server: createServerOptions(viteEnv),
|
||||
esbuild: createEsBuildOptions(viteEnv),
|
||||
build: createBuildOptions(viteEnv),
|
||||
css: createCSSOptions(),
|
||||
resolve: {
|
||||
alias: {
|
||||
'@jeesite/web': path.resolve(__dirname, './'),
|
||||
},
|
||||
},
|
||||
};
|
||||
return config;
|
||||
});
|
||||