后端将mysql改成了达梦数据库,前端增加了微应用集成框架
This commit is contained in:
parent
cc5b16673c
commit
6a0a4626fb
@ -0,0 +1,6 @@
|
|||||||
|
- [x] Host 已集成 Wujie,且可挂载名为 `process` 的子应用
|
||||||
|
- [x] 子应用 `frontend-process` 可独立启动并访问 `/process/antd-demo`
|
||||||
|
- [x] Host 访问 `/process/antd-demo` 时能显示子应用 Demo 内容
|
||||||
|
- [x] Host 开发代理 `/process/**` 已配置并可正常加载子应用资源
|
||||||
|
- [x] Demo 页面可从 Host 菜单访问(至少静态路由可见)
|
||||||
|
- [x] 本次变更未引入任何敏感信息(密码、私钥、token)到仓库
|
||||||
60
.trae/specs/implement-wujie-microfrontend-demo/spec.md
Normal file
60
.trae/specs/implement-wujie-microfrontend-demo/spec.md
Normal file
@ -0,0 +1,60 @@
|
|||||||
|
# Wujie 微前端双栈并存接入 Spec
|
||||||
|
|
||||||
|
## Why
|
||||||
|
现有系统前端(Element Plus)已稳定具备登录、菜单与权限管理能力,但后续业务模块计划采用 Ant Design Vue。需要通过微前端方式实现双栈并存,避免一次性迁移带来的回归风险,并支持业务模块按菜单集成展示。
|
||||||
|
|
||||||
|
## What Changes
|
||||||
|
- 明确采用 Wujie 作为微前端方案(Host=Element Plus,SubApp=Ant Design Vue)。
|
||||||
|
- 新增 `frontend-process` 子应用:提供 `AntD Demo` 页面与 `manifest.json`(路由、权限码、入口信息)。
|
||||||
|
- 在 `front-system`(当前仓库 `frontend`)集成 Wujie:新增一个 Host 页面(`/process/antd-demo`)用于挂载子应用。
|
||||||
|
- Host 开发代理:本地将 `/process/**` 代理到子应用 dev server,实现“同域路径”联调。
|
||||||
|
- **BREAKING**:无(仅新增能力与页面)。
|
||||||
|
|
||||||
|
## Impact
|
||||||
|
- Affected specs:
|
||||||
|
- 微前端集成(Host + SubApp)
|
||||||
|
- 路由与菜单展示
|
||||||
|
- 本地联调与部署路径约定(同域 `/process/`)
|
||||||
|
- Affected code:
|
||||||
|
- Host:`frontend/src/main.ts`、`frontend/src/router/index.ts`、`frontend/vite.config.ts`、新增 `frontend/src/views/process/antd-demo.vue`
|
||||||
|
- SubApp:新增 `frontend-process/**`
|
||||||
|
- 文档基线:`系统前端框架及集成方案.md`(不在本变更中修改其内容,仅作为实现依据)
|
||||||
|
|
||||||
|
## ADDED Requirements
|
||||||
|
|
||||||
|
### Requirement: Wujie Host 集成
|
||||||
|
系统 SHALL 在 Host(front-system)中集成 Wujie,并提供可通过路由访问的挂载页面,用于展示 `front-process` 子应用内容。
|
||||||
|
|
||||||
|
#### Scenario: 打开 AntD Demo(开发态)
|
||||||
|
- **GIVEN** Host 与 SubApp 均在本地启动
|
||||||
|
- **WHEN** 用户在 Host 中访问 `/process/antd-demo`
|
||||||
|
- **THEN** Host 页面中出现 Wujie 容器并成功加载子应用入口 `/process/`
|
||||||
|
- **AND** 子应用展示 Ant Design Vue 组件示例(按钮、表格等)
|
||||||
|
|
||||||
|
### Requirement: 子应用 Demo 页面
|
||||||
|
系统 SHALL 提供 `frontend-process` 子应用,并包含一个可访问的 Demo 页面(`/process/antd-demo`)用于验证 Ant Design Vue 在微前端容器中正常渲染。
|
||||||
|
|
||||||
|
#### Scenario: 子应用独立运行(开发态)
|
||||||
|
- **WHEN** 直接访问 `http://localhost:5174/process/antd-demo`(或等价本地地址)
|
||||||
|
- **THEN** 能看到 “Ant Design Vue Demo(front-process)” 标题与示例组件
|
||||||
|
|
||||||
|
### Requirement: 本地同域联调代理
|
||||||
|
系统 SHALL 在 Host Vite dev server 中提供 `/process/**` 的代理转发到子应用 dev server,以实现同域路径加载。
|
||||||
|
|
||||||
|
#### Scenario: Host 以同域路径加载子应用
|
||||||
|
- **WHEN** Host 页面请求 `/process/` 及其静态资源
|
||||||
|
- **THEN** 请求被代理到子应用 dev server(端口 5174)
|
||||||
|
|
||||||
|
### Requirement: 菜单可集成展示(Demo 级别)
|
||||||
|
系统 SHALL 使 Demo 页面可在 Host 菜单体系中被访问(可先以静态路由方式呈现,后续再与后端动态菜单配置联动)。
|
||||||
|
|
||||||
|
#### Scenario: 菜单访问
|
||||||
|
- **WHEN** 用户在 Host 菜单点击“AntD Demo”
|
||||||
|
- **THEN** 跳转到 `/process/antd-demo` 并展示子应用内容
|
||||||
|
|
||||||
|
## MODIFIED Requirements
|
||||||
|
无。
|
||||||
|
|
||||||
|
## REMOVED Requirements
|
||||||
|
无。
|
||||||
|
|
||||||
26
.trae/specs/implement-wujie-microfrontend-demo/tasks.md
Normal file
26
.trae/specs/implement-wujie-microfrontend-demo/tasks.md
Normal file
@ -0,0 +1,26 @@
|
|||||||
|
# Tasks
|
||||||
|
- [x] Task 1: 对齐方案与现状代码
|
||||||
|
- [x] 核对 Host 与 SubApp 的目录结构、路由前缀 `/process/`、端口约定(5173/5174)
|
||||||
|
- [x] 核对 `系统前端框架及集成方案.md` 与实现差异并记录需要补齐项
|
||||||
|
|
||||||
|
- [x] Task 2: 完成 frontend-process 子应用 Demo
|
||||||
|
- [x] 初始化 `frontend-process`(Vite + Vue3)
|
||||||
|
- [x] 引入 Ant Design Vue 并提供 `/process/antd-demo` Demo 页面
|
||||||
|
- [x] 添加 `public/manifest.json`,声明 `entry/routeBase/routes`
|
||||||
|
|
||||||
|
- [x] Task 3: 在 Host(frontend)集成 Wujie 并提供挂载页
|
||||||
|
- [x] 安装并注册 `wujie` / `wujie-vue3`
|
||||||
|
- [x] 新增 Host 页面 `/process/antd-demo`:使用 Wujie 挂载子应用入口
|
||||||
|
- [x] 为 Host 路由与菜单增加 Demo 入口(最小可用:静态路由显示在侧边栏)
|
||||||
|
|
||||||
|
- [x] Task 4: 开发态同域代理与联调验证
|
||||||
|
- [x] Host Vite dev server 增加 `/process/**` → `http://localhost:5174` 代理
|
||||||
|
- [x] 启动 Host 与 SubApp 并验证 Demo 页面渲染、按钮可交互
|
||||||
|
|
||||||
|
- [x] Task 5: 最小化回归与文档补齐
|
||||||
|
- [x] 记录“运行方式/端口/访问路径”的操作说明
|
||||||
|
- [x] 确认不引入敏感信息与硬编码密钥
|
||||||
|
|
||||||
|
# Task Dependencies
|
||||||
|
- Task 3 depends on Task 2
|
||||||
|
- Task 4 depends on Task 2 and Task 3
|
||||||
6
.vscode/launch.json
vendored
6
.vscode/launch.json
vendored
@ -16,6 +16,12 @@
|
|||||||
"${workspaceFolder}/backend/target/classes",
|
"${workspaceFolder}/backend/target/classes",
|
||||||
"${workspaceFolder}/backend/target/dependency/*"
|
"${workspaceFolder}/backend/target/dependency/*"
|
||||||
],
|
],
|
||||||
|
"env": {
|
||||||
|
"DB_MASTER_PASSWORD": "Dm123456",
|
||||||
|
"DB_SLAVE_PASSWORD": "Dm123456",
|
||||||
|
"JASYPT_PASSWORD": "salt",
|
||||||
|
"RSA_PRIVATE_KEY": "MIIBUwIBADANBgkqhkiG9w0BAQEFAASCAT0wggE5AgEAAkEA0vfvyTdGJkdbHkB8mp0f3FE0GYP3AYPaJF7jUd1M0XxFSE2ceK3k2kw20YvQ09NJKk+OMjWQl9WitG9pB6tSCQIDAQABAkA2SimBrWC2/wvauBuYqjCFwLvYiRYqZKThUS3MZlebXJiLB+Ue/gUifAAKIg1avttUZsHBHrop4qfJCwAI0+YRAiEA+W3NK/RaXtnRqmoUUkb59zsZUBLpvZgQPfj1MhyHDz0CIQDYhsAhPJ3mgS64NbUZmGWuuNKp5coY2GIj/zYDMJp6vQIgUueLFXv/eZ1ekgz2Oi67MNCk5jeTF2BurZqNLR3MSmUCIFT3Q6uHMtsB9Eha4u7hS31tj1UWE+D+ADzp59MGnoftAiBeHT7gDMuqeJHPL4b+kC+gzV4FGTfhR9q3tTbklZkD2A=="
|
||||||
|
},
|
||||||
"args": [
|
"args": [
|
||||||
"--spring.profiles.active=dev"
|
"--spring.profiles.active=dev"
|
||||||
],
|
],
|
||||||
|
|||||||
@ -3,7 +3,7 @@ param(
|
|||||||
[int]$DB_PORT = 3306,
|
[int]$DB_PORT = 3306,
|
||||||
[string]$DB_NAME = 'frameworkdb2023',
|
[string]$DB_NAME = 'frameworkdb2023',
|
||||||
[string]$DB_USER = 'root',
|
[string]$DB_USER = 'root',
|
||||||
[string]$DB_PASSWORD = 'ylfw20230626@'
|
[string]$DB_PASSWORD = $env:DB_PASSWORD
|
||||||
)
|
)
|
||||||
|
|
||||||
# 确保输出目录存在
|
# 确保输出目录存在
|
||||||
|
|||||||
BIN
backend/db-init/scripts/imp_exp_20260325172625.dmp
Normal file
BIN
backend/db-init/scripts/imp_exp_20260325172625.dmp
Normal file
Binary file not shown.
@ -3,7 +3,7 @@ param(
|
|||||||
[int]$DB_PORT = 3306,
|
[int]$DB_PORT = 3306,
|
||||||
[string]$DB_NAME = 'frameworkdb2025',
|
[string]$DB_NAME = 'frameworkdb2025',
|
||||||
[string]$DB_USER = 'root',
|
[string]$DB_USER = 'root',
|
||||||
[string]$DB_PASSWORD = 'ylfw20230626@'
|
[string]$DB_PASSWORD = $env:DB_PASSWORD
|
||||||
)
|
)
|
||||||
|
|
||||||
$ErrorActionPreference = 'Stop'
|
$ErrorActionPreference = 'Stop'
|
||||||
|
|||||||
@ -77,7 +77,7 @@ param(
|
|||||||
[int]$DB_PORT = 3306,
|
[int]$DB_PORT = 3306,
|
||||||
[string]$DB_NAME = "frameworkdb2025",
|
[string]$DB_NAME = "frameworkdb2025",
|
||||||
[string]$DB_USER = "root",
|
[string]$DB_USER = "root",
|
||||||
[string]$DB_PASSWORD = "ylfw20230626@"
|
[string]$DB_PASSWORD = $env:DB_PASSWORD
|
||||||
)
|
)
|
||||||
|
|
||||||
$env:MYSQL_PWD = $DB_PASSWORD
|
$env:MYSQL_PWD = $DB_PASSWORD
|
||||||
@ -97,7 +97,7 @@ param(
|
|||||||
[int]$DB_PORT = 3306,
|
[int]$DB_PORT = 3306,
|
||||||
[string]$DB_NAME = "platform",
|
[string]$DB_NAME = "platform",
|
||||||
[string]$DB_USER = "root",
|
[string]$DB_USER = "root",
|
||||||
[string]$DB_PASSWORD = "root"
|
[string]$DB_PASSWORD = $env:DB_PASSWORD
|
||||||
)
|
)
|
||||||
|
|
||||||
$env:MYSQL_PWD = $DB_PASSWORD
|
$env:MYSQL_PWD = $DB_PASSWORD
|
||||||
|
|||||||
@ -157,6 +157,14 @@
|
|||||||
<scope>runtime</scope>
|
<scope>runtime</scope>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
|
<!-- 达梦 DM8 JDBC(驱动类:dm.jdbc.driver.DmDriver) -->
|
||||||
|
<dependency>
|
||||||
|
<groupId>com.dameng</groupId>
|
||||||
|
<artifactId>DmJdbcDriver18</artifactId>
|
||||||
|
<version>8.1.2.79</version>
|
||||||
|
<scope>runtime</scope>
|
||||||
|
</dependency>
|
||||||
|
|
||||||
<!-- sqlite-jdbc数据库 -->
|
<!-- sqlite-jdbc数据库 -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.xerial</groupId>
|
<groupId>org.xerial</groupId>
|
||||||
|
|||||||
@ -18,7 +18,7 @@ import java.io.Serializable;
|
|||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@TableName("rca_dictionary")
|
@TableName("RCA_DICTIONARY")
|
||||||
public class Dictionary implements Serializable {
|
public class Dictionary implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|||||||
@ -23,7 +23,7 @@ import lombok.EqualsAndHashCode;
|
|||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@TableName("sys_message")
|
@TableName("SYS_MESSAGE")
|
||||||
public class Message implements Serializable {
|
public class Message implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|||||||
@ -23,7 +23,7 @@ import lombok.EqualsAndHashCode;
|
|||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@TableName("sys_quartz_job")
|
@TableName("SYS_QUARTZ_JOB")
|
||||||
public class QuartzJob implements Serializable {
|
public class QuartzJob implements Serializable {
|
||||||
|
|
||||||
public static final String JOB_KEY = "JOB_KEY";
|
public static final String JOB_KEY = "JOB_KEY";
|
||||||
|
|||||||
@ -17,7 +17,7 @@ import java.sql.Timestamp;
|
|||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@TableName("sys_config")
|
@TableName("SYS_CONFIG")
|
||||||
public class SysConfig implements Serializable {
|
public class SysConfig implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package com.yfd.platform.system.domain;
|
|||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
@ -18,6 +19,7 @@ import java.io.Serializable;
|
|||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
@TableName("SYS_DICTIONARY")
|
||||||
public class SysDictionary implements Serializable {
|
public class SysDictionary implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
@ -31,25 +33,25 @@ public class SysDictionary implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 字典类型 00-系统内置 01-用户配置
|
* 字典类型 00-系统内置 01-用户配置
|
||||||
*/
|
*/
|
||||||
@TableField("dicttype")
|
@TableField("DICTTYPE")
|
||||||
private String dictType;
|
private String dictType;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 顺序号
|
* 顺序号
|
||||||
*/
|
*/
|
||||||
@TableField("orderno")
|
@TableField("ORDERNO")
|
||||||
private Integer orderNo;
|
private Integer orderNo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 字典编码
|
* 字典编码
|
||||||
*/
|
*/
|
||||||
@TableField("dictcode")
|
@TableField("DICTCODE")
|
||||||
private String dictCode;
|
private String dictCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 字典名称
|
* 字典名称
|
||||||
*/
|
*/
|
||||||
@TableField("dictname")
|
@TableField("DICTNAME")
|
||||||
private String dictName;
|
private String dictName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package com.yfd.platform.system.domain;
|
|||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
|
|
||||||
@ -18,6 +19,7 @@ import java.io.Serializable;
|
|||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
@TableName("SYS_DICTIONARY_ITEMS")
|
||||||
public class SysDictionaryItems implements Serializable {
|
public class SysDictionaryItems implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
@ -31,31 +33,31 @@ public class SysDictionaryItems implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 对应字典ID
|
* 对应字典ID
|
||||||
*/
|
*/
|
||||||
@TableField("dictid")
|
@TableField("DICTID")
|
||||||
private String dictId;
|
private String dictId;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 顺序号
|
* 顺序号
|
||||||
*/
|
*/
|
||||||
@TableField("orderno")
|
@TableField("ORDERNO")
|
||||||
private Integer orderNo;
|
private Integer orderNo;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项编码
|
* 项编码
|
||||||
*/
|
*/
|
||||||
@TableField("itemcode")
|
@TableField("ITEMCODE")
|
||||||
private String itemCode;
|
private String itemCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 项名称
|
* 项名称
|
||||||
*/
|
*/
|
||||||
@TableField("dictname")
|
@TableField("DICTNAME")
|
||||||
private String dictName;
|
private String dictName;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 父项编码
|
* 父项编码
|
||||||
*/
|
*/
|
||||||
@TableField("parentcode")
|
@TableField("PARENTCODE")
|
||||||
private String parentCode;
|
private String parentCode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -3,6 +3,7 @@ package com.yfd.platform.system.domain;
|
|||||||
import com.baomidou.mybatisplus.annotation.IdType;
|
import com.baomidou.mybatisplus.annotation.IdType;
|
||||||
import com.baomidou.mybatisplus.annotation.TableField;
|
import com.baomidou.mybatisplus.annotation.TableField;
|
||||||
import com.baomidou.mybatisplus.annotation.TableId;
|
import com.baomidou.mybatisplus.annotation.TableId;
|
||||||
|
import com.baomidou.mybatisplus.annotation.TableName;
|
||||||
import lombok.Data;
|
import lombok.Data;
|
||||||
import lombok.EqualsAndHashCode;
|
import lombok.EqualsAndHashCode;
|
||||||
import lombok.NoArgsConstructor;
|
import lombok.NoArgsConstructor;
|
||||||
@ -22,6 +23,7 @@ import java.time.LocalDateTime;
|
|||||||
@Data
|
@Data
|
||||||
@NoArgsConstructor
|
@NoArgsConstructor
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
|
@TableName("SYS_LOG")
|
||||||
public class SysLog implements Serializable {
|
public class SysLog implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
@ -29,13 +31,13 @@ public class SysLog implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* ID
|
* ID
|
||||||
*/
|
*/
|
||||||
@TableId(value = "id", type = IdType.AUTO)
|
@TableId(value = "ID", type = IdType.AUTO)
|
||||||
private Long id;
|
private Long id;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 用户账号
|
* 用户账号
|
||||||
*/
|
*/
|
||||||
@TableField("usercode")
|
@TableField("USERCODE")
|
||||||
private String usercode;
|
private String usercode;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -46,7 +48,7 @@ public class SysLog implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 操作类型 00-登录 01-新增 02-修改 03-删除 06-查询 09其他
|
* 操作类型 00-登录 01-新增 02-修改 03-删除 06-查询 09其他
|
||||||
*/
|
*/
|
||||||
@TableField("opttype")
|
@TableField("OPTTYPE")
|
||||||
private String opttype;
|
private String opttype;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -72,13 +74,13 @@ public class SysLog implements Serializable {
|
|||||||
/**
|
/**
|
||||||
* 创建时间
|
* 创建时间
|
||||||
*/
|
*/
|
||||||
@TableField("logtime")
|
@TableField("LOGTIME")
|
||||||
private Timestamp logtime;
|
private Timestamp logtime;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 请求IP
|
* 请求IP
|
||||||
*/
|
*/
|
||||||
@TableField("requestip")
|
@TableField("REQUESTIP")
|
||||||
private String requestip;
|
private String requestip;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@ -19,7 +19,7 @@ import java.util.List;
|
|||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@TableName("sys_menu")
|
@TableName("SYS_MENU")
|
||||||
public class SysMenu implements Serializable {
|
public class SysMenu implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|||||||
@ -17,7 +17,7 @@ import java.sql.Timestamp;
|
|||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@TableName("sys_organization")
|
@TableName("SYS_ORGANIZATION")
|
||||||
public class SysOrganization implements Serializable {
|
public class SysOrganization implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|||||||
@ -17,7 +17,7 @@ import java.sql.Timestamp;
|
|||||||
*/
|
*/
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@TableName("sys_role")
|
@TableName("SYS_ROLE")
|
||||||
public class SysRole implements Serializable {
|
public class SysRole implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|||||||
@ -18,7 +18,7 @@ import java.sql.Timestamp;
|
|||||||
|
|
||||||
@Data
|
@Data
|
||||||
@EqualsAndHashCode(callSuper = false)
|
@EqualsAndHashCode(callSuper = false)
|
||||||
@TableName("sys_user")
|
@TableName("SYS_USER")
|
||||||
public class SysUser implements Serializable {
|
public class SysUser implements Serializable {
|
||||||
|
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|||||||
@ -9,14 +9,14 @@ spring:
|
|||||||
type: com.alibaba.druid.pool.DruidDataSource
|
type: com.alibaba.druid.pool.DruidDataSource
|
||||||
druid:
|
druid:
|
||||||
master:
|
master:
|
||||||
driverClassName: com.mysql.cj.jdbc.Driver
|
driverClassName: dm.jdbc.driver.DmDriver
|
||||||
url: "${DB_MASTER_URL:jdbc:mysql://localhost:3306/wppdb?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true}"
|
url: "${DB_MASTER_URL:jdbc:dm://localhost:5236/WPPDB}"
|
||||||
username: "${DB_MASTER_USERNAME:root}"
|
username: "${DB_MASTER_USERNAME:WPPDB}"
|
||||||
password: "${DB_MASTER_PASSWORD:}"
|
password: "${DB_MASTER_PASSWORD:}"
|
||||||
slave:
|
slave:
|
||||||
driverClassName: com.mysql.cj.jdbc.Driver
|
driverClassName: dm.jdbc.driver.DmDriver
|
||||||
url: "${DB_SLAVE_URL:jdbc:mysql://localhost:3306/wppdb?useUnicode=true&characterEncoding=UTF8&rewriteBatchedStatements=true}"
|
url: "${DB_SLAVE_URL:jdbc:dm://localhost:5236/WPPDB}"
|
||||||
username: "${DB_SLAVE_USERNAME:root}"
|
username: "${DB_SLAVE_USERNAME:WPPDB}"
|
||||||
password: "${DB_SLAVE_PASSWORD:}"
|
password: "${DB_SLAVE_PASSWORD:}"
|
||||||
|
|
||||||
mvc:
|
mvc:
|
||||||
|
|||||||
390
db.sql
Normal file
390
db.sql
Normal file
@ -0,0 +1,390 @@
|
|||||||
|
CREATE TABLE WPPDB.PROJECT
|
||||||
|
(
|
||||||
|
PROJECT_ID CHAR(36 CHAR) NOT NULL,
|
||||||
|
CODE VARCHAR(20 CHAR) NOT NULL,
|
||||||
|
NAME VARCHAR(200 CHAR) NOT NULL,
|
||||||
|
DESCRIPTION TEXT,
|
||||||
|
TOPOLOGY CLOB,
|
||||||
|
CREATED_AT TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP(),
|
||||||
|
UPDATED_AT TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP(),
|
||||||
|
MODIFIER VARCHAR(40 CHAR),
|
||||||
|
NOT CLUSTER PRIMARY KEY(PROJECT_ID),
|
||||||
|
CONSTRAINT CODE UNIQUE(CODE)) STORAGE(ON MAIN, CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON COLUMN WPPDB.PROJECT.CODE IS '项目编号';
|
||||||
|
COMMENT ON COLUMN WPPDB.PROJECT.CREATED_AT IS '创建时间';
|
||||||
|
COMMENT ON COLUMN WPPDB.PROJECT.DESCRIPTION IS '项目描述';
|
||||||
|
COMMENT ON COLUMN WPPDB.PROJECT.MODIFIER IS '最近修改者';
|
||||||
|
COMMENT ON COLUMN WPPDB.PROJECT.NAME IS '项目名称';
|
||||||
|
COMMENT ON COLUMN WPPDB.PROJECT.PROJECT_ID IS '项目主键';
|
||||||
|
COMMENT ON COLUMN WPPDB.PROJECT.TOPOLOGY IS '项目拓扑关系';
|
||||||
|
COMMENT ON COLUMN WPPDB.PROJECT.UPDATED_AT IS '修改时间';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE WPPDB.SYS_CONFIG
|
||||||
|
(
|
||||||
|
ID VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
SYSNAME VARCHAR(200 CHAR),
|
||||||
|
WELCOME VARCHAR(500 CHAR),
|
||||||
|
FUNCATION CLOB,
|
||||||
|
REMARK CLOB,
|
||||||
|
VERSIONINFO CLOB,
|
||||||
|
LASTMODIFYDATE TIMESTAMP(0),
|
||||||
|
CUSTOM1 VARCHAR(100 CHAR),
|
||||||
|
CUSTOM2 VARCHAR(100 CHAR),
|
||||||
|
CUSTOM3 VARCHAR(100 CHAR),
|
||||||
|
NOT CLUSTER PRIMARY KEY(ID)) STORAGE(ON MAIN, CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON TABLE WPPDB.SYS_CONFIG IS '系统全局配置';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_CONFIG.CUSTOM1 IS '备用1';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_CONFIG.CUSTOM2 IS '备用2';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_CONFIG.CUSTOM3 IS '备用3';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_CONFIG.FUNCATION IS '系统功能介绍';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_CONFIG.ID IS 'id';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_CONFIG.LASTMODIFYDATE IS '最近修改日期';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_CONFIG.REMARK IS '备注';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_CONFIG.SYSNAME IS '系统名称';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_CONFIG.VERSIONINFO IS '版本信息';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_CONFIG.WELCOME IS '欢迎词';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE WPPDB.SYS_DICTIONARY
|
||||||
|
(
|
||||||
|
ID VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
DICTTYPE VARCHAR(20 CHAR) DEFAULT '00' NOT NULL,
|
||||||
|
ORDERNO INT NOT NULL,
|
||||||
|
DICTCODE VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
DICTNAME VARCHAR(100 CHAR) NOT NULL,
|
||||||
|
CUSTOM1 VARCHAR(1000 CHAR),
|
||||||
|
CUSTOM2 VARCHAR(100 CHAR),
|
||||||
|
CUSTOM3 CLOB,
|
||||||
|
NOT CLUSTER PRIMARY KEY(ID)) STORAGE(ON MAIN, CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON TABLE WPPDB.SYS_DICTIONARY IS '数据字典表';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_DICTIONARY.CUSTOM1 IS '备用1';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_DICTIONARY.CUSTOM2 IS '备用2';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_DICTIONARY.CUSTOM3 IS '备用3';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_DICTIONARY.DICTCODE IS '字典编码';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_DICTIONARY.DICTNAME IS '字典名称';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_DICTIONARY.DICTTYPE IS '字典类型 00-系统内置 01-用户配置';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_DICTIONARY.ID IS 'id';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_DICTIONARY.ORDERNO IS '顺序号';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE WPPDB.SYS_DICTIONARY_ITEMS
|
||||||
|
(
|
||||||
|
ID VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
DICTID VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
ORDERNO INT NOT NULL,
|
||||||
|
ITEMCODE VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
DICTNAME VARCHAR(100 CHAR) NOT NULL,
|
||||||
|
PARENTCODE VARCHAR(40 CHAR) DEFAULT '',
|
||||||
|
CUSTOM1 VARCHAR(1000 CHAR),
|
||||||
|
CUSTOM2 VARCHAR(100 CHAR),
|
||||||
|
CUSTOM3 CLOB,
|
||||||
|
NOT CLUSTER PRIMARY KEY(ID)) STORAGE(ON MAIN, CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON TABLE WPPDB.SYS_DICTIONARY_ITEMS IS '数据字典明细';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_DICTIONARY_ITEMS.CUSTOM1 IS '备用1';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_DICTIONARY_ITEMS.CUSTOM2 IS '备用2';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_DICTIONARY_ITEMS.CUSTOM3 IS '备用3';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_DICTIONARY_ITEMS.DICTID IS '对应字典ID';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_DICTIONARY_ITEMS.DICTNAME IS '项名称';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_DICTIONARY_ITEMS.ID IS 'id';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_DICTIONARY_ITEMS.ITEMCODE IS '项编码';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_DICTIONARY_ITEMS.ORDERNO IS '顺序号';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_DICTIONARY_ITEMS.PARENTCODE IS '父项编码';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE WPPDB.SYS_LOG
|
||||||
|
(
|
||||||
|
ID BIGINT AUTO_INCREMENT NOT NULL,
|
||||||
|
USERCODE VARCHAR(200 CHAR),
|
||||||
|
USERNAME VARCHAR(200 CHAR),
|
||||||
|
OPTTYPE VARCHAR(20 CHAR),
|
||||||
|
MODULE VARCHAR(200 CHAR),
|
||||||
|
DESCRIPTION VARCHAR(400 CHAR),
|
||||||
|
METHOD VARCHAR(200 CHAR),
|
||||||
|
PARAMS TEXT,
|
||||||
|
LOGTIME TIMESTAMP(0),
|
||||||
|
REQUESTIP VARCHAR(200 CHAR),
|
||||||
|
BROWSER VARCHAR(200 CHAR),
|
||||||
|
NOT CLUSTER PRIMARY KEY(ID)) STORAGE(ON MAIN, CLUSTERBTR) AUTO_INCREMENT = 3455487;
|
||||||
|
|
||||||
|
COMMENT ON TABLE WPPDB.SYS_LOG IS '系统操作日志';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_LOG.BROWSER IS '浏览器类型';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_LOG.DESCRIPTION IS '日志描述';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_LOG.ID IS 'ID';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_LOG.LOGTIME IS '创建时间';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_LOG.METHOD IS '操作方法';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_LOG.MODULE IS '模块名称';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_LOG.OPTTYPE IS '操作类型 00-登录 01-新增 02-修改 03-删除 06-查询 09其他';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_LOG.PARAMS IS '方法参数';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_LOG.REQUESTIP IS '请求IP';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_LOG.USERCODE IS '用户账号';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_LOG.USERNAME IS '用户名称';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE OR REPLACE INDEX WPPDB.LOG_CREATE_TIME_INDEX ON WPPDB.SYS_LOG(LOGTIME ASC) STORAGE(ON MAIN, CLUSTERBTR) WITHOUT CLU_REC_ADDR ;
|
||||||
|
CREATE OR REPLACE INDEX WPPDB.INX_LOG_TYPE ON WPPDB.SYS_LOG(OPTTYPE ASC) STORAGE(ON MAIN, CLUSTERBTR) WITHOUT CLU_REC_ADDR ;
|
||||||
|
|
||||||
|
CREATE TABLE WPPDB.SYS_MENU
|
||||||
|
(
|
||||||
|
ID VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
SYSTEMCODE VARCHAR(2 CHAR) NOT NULL,
|
||||||
|
TYPE VARCHAR(2 CHAR) NOT NULL,
|
||||||
|
CODE VARCHAR(20 CHAR) NOT NULL,
|
||||||
|
NAME VARCHAR(100 CHAR) NOT NULL,
|
||||||
|
ICON VARCHAR(100 CHAR),
|
||||||
|
ISLINK VARCHAR(2 CHAR),
|
||||||
|
OPTURL VARCHAR(200 CHAR),
|
||||||
|
PERMISSION VARCHAR(100 CHAR),
|
||||||
|
PARENTID VARCHAR(40 CHAR),
|
||||||
|
ORDERNO INT,
|
||||||
|
ISDISPLAY VARCHAR(2 CHAR),
|
||||||
|
LASTMODIFIER VARCHAR(40 CHAR),
|
||||||
|
LASTMODIFYDATE TIMESTAMP(0),
|
||||||
|
CUSTOM1 VARCHAR(100 CHAR),
|
||||||
|
CUSTOM2 VARCHAR(100 CHAR),
|
||||||
|
CUSTOM3 VARCHAR(100 CHAR),
|
||||||
|
NOT CLUSTER PRIMARY KEY(ID)) STORAGE(ON MAIN, CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON TABLE WPPDB.SYS_MENU IS '菜单及按钮';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MENU.CODE IS '在系统内自动生成';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MENU.CUSTOM1 IS '备用1';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MENU.CUSTOM2 IS '备用2';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MENU.CUSTOM3 IS '备用3';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MENU.ICON IS '图标地址';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MENU.ID IS 'id';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MENU.ISDISPLAY IS '0-不显示 1-显示';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MENU.ISLINK IS '是否外链';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MENU.LASTMODIFIER IS '最近修改者';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MENU.LASTMODIFYDATE IS '最近修改日期';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MENU.NAME IS '名称';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MENU.OPTURL IS '内部模块路径或者外链地址';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MENU.ORDERNO IS '排序号';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MENU.PARENTID IS '顶级为0';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MENU.PERMISSION IS '权限控制标识';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MENU.SYSTEMCODE IS '1-web 2-pad 3-mobile';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MENU.TYPE IS '0-目录 1-菜单 2-按钮';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE WPPDB.SYS_MESSAGE
|
||||||
|
(
|
||||||
|
ID VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
CREATETIME TIMESTAMP(0) NOT NULL,
|
||||||
|
TYPE VARCHAR(2 CHAR) NOT NULL,
|
||||||
|
TITLE VARCHAR(100 CHAR) NOT NULL,
|
||||||
|
CONTENT VARCHAR(400 CHAR) NOT NULL,
|
||||||
|
SENDER_NAME VARCHAR(40 CHAR),
|
||||||
|
RECEIVER_CODES VARCHAR(1000 CHAR),
|
||||||
|
RECEIVER_NAMES VARCHAR(1000 CHAR),
|
||||||
|
STATUS VARCHAR(2 CHAR) DEFAULT '1' NOT NULL,
|
||||||
|
VALIDPERIOD INT DEFAULT 24,
|
||||||
|
READTIME TIMESTAMP(0),
|
||||||
|
CUSTOM1 VARCHAR(100 CHAR),
|
||||||
|
CUSTOM2 VARCHAR(100 CHAR),
|
||||||
|
CUSTOM3 VARCHAR(100 CHAR),
|
||||||
|
NOT CLUSTER PRIMARY KEY(ID)) STORAGE(ON MAIN, CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON TABLE WPPDB.SYS_MESSAGE IS '消息通知';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MESSAGE.CONTENT IS '消息内容';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MESSAGE.CREATETIME IS '创建时间:排序';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MESSAGE.CUSTOM1 IS '备用1';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MESSAGE.CUSTOM2 IS '备用2';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MESSAGE.CUSTOM3 IS '备用3';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MESSAGE.ID IS 'ID';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MESSAGE.READTIME IS '已阅时间';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MESSAGE.RECEIVER_CODES IS '接收者代码 人员账号列表';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MESSAGE.RECEIVER_NAMES IS '接收者名称:为空 即为所有人,人员名称列表';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MESSAGE.SENDER_NAME IS '发送者名称,定时器,人员';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MESSAGE.STATUS IS '状态:1、初始创建 2-消息已阅 9-消息过期';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MESSAGE.TITLE IS '消息标题';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MESSAGE.TYPE IS '消息类型:1-定时任务 2-工作流触发 3-人工触发';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_MESSAGE.VALIDPERIOD IS '有效期:小时';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE WPPDB.SYS_ORGANIZATION
|
||||||
|
(
|
||||||
|
ID VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
ORGTYPE VARCHAR(2 CHAR) NOT NULL,
|
||||||
|
ORGCODE VARCHAR(20 CHAR) NOT NULL,
|
||||||
|
ORGNAME VARCHAR(100 CHAR) NOT NULL,
|
||||||
|
PARENTID VARCHAR(40 CHAR),
|
||||||
|
MANAGER VARCHAR(40 CHAR),
|
||||||
|
ISVAILD VARCHAR(2 CHAR) DEFAULT '1' NOT NULL,
|
||||||
|
DESCRIPTION VARCHAR(1000 CHAR),
|
||||||
|
LASTMODIFIER VARCHAR(40 CHAR),
|
||||||
|
LASTMODIFYDATE TIMESTAMP(0),
|
||||||
|
CUSTOM1 VARCHAR(100 CHAR),
|
||||||
|
CUSTOM2 VARCHAR(100 CHAR),
|
||||||
|
CUSTOM3 VARCHAR(100 CHAR),
|
||||||
|
NOT CLUSTER PRIMARY KEY(ID)) STORAGE(ON MAIN, CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON TABLE WPPDB.SYS_ORGANIZATION IS '系统组织框架';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ORGANIZATION.CUSTOM1 IS '备用1';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ORGANIZATION.CUSTOM2 IS '备用2';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ORGANIZATION.CUSTOM3 IS '备用3';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ORGANIZATION.DESCRIPTION IS '描述';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ORGANIZATION.ID IS 'id';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ORGANIZATION.ISVAILD IS '1-是 0-否';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ORGANIZATION.LASTMODIFIER IS '最近修改者';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ORGANIZATION.LASTMODIFYDATE IS '最近修改日期';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ORGANIZATION.MANAGER IS '组织负责人';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ORGANIZATION.ORGCODE IS '两位一级';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ORGANIZATION.ORGNAME IS '组织名称';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ORGANIZATION.ORGTYPE IS '1-公司 -2-部门';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ORGANIZATION.PARENTID IS '上级id';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE WPPDB.SYS_QUARTZ_JOB
|
||||||
|
(
|
||||||
|
ID VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
ORDERNO INT NOT NULL,
|
||||||
|
JOB_NAME VARCHAR(200 CHAR) NOT NULL,
|
||||||
|
JOB_CLASS VARCHAR(200 CHAR) NOT NULL,
|
||||||
|
JOB_METHOD VARCHAR(200 CHAR),
|
||||||
|
JOB_CRON VARCHAR(300 CHAR),
|
||||||
|
JOB_PARAMS VARCHAR(200 CHAR),
|
||||||
|
DESCRIPTION VARCHAR(400 CHAR),
|
||||||
|
STATUS VARCHAR(2 CHAR) DEFAULT '1' NOT NULL,
|
||||||
|
LASTMODIFIER VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
LASTMODIFYDATE TIMESTAMP(0) NOT NULL,
|
||||||
|
CUSTOM1 VARCHAR(100 CHAR),
|
||||||
|
CUSTOM2 VARCHAR(100 CHAR),
|
||||||
|
CUSTOM3 VARCHAR(100 CHAR),
|
||||||
|
NOT CLUSTER PRIMARY KEY(ID)) STORAGE(ON MAIN, CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON TABLE WPPDB.SYS_QUARTZ_JOB IS '定时任务';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_QUARTZ_JOB.CUSTOM1 IS '备用1';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_QUARTZ_JOB.CUSTOM2 IS '备用2';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_QUARTZ_JOB.CUSTOM3 IS '备用3';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_QUARTZ_JOB.DESCRIPTION IS '任务描述';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_QUARTZ_JOB.ID IS 'ID';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_QUARTZ_JOB.JOB_CLASS IS '执行类名称';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_QUARTZ_JOB.JOB_CRON IS '时间周期表达式';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_QUARTZ_JOB.JOB_METHOD IS '执行方法名称';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_QUARTZ_JOB.JOB_NAME IS '任务名称';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_QUARTZ_JOB.JOB_PARAMS IS '方法参数';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_QUARTZ_JOB.LASTMODIFIER IS '最近修改者';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_QUARTZ_JOB.LASTMODIFYDATE IS '最近修改日期';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_QUARTZ_JOB.ORDERNO IS '排序号';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_QUARTZ_JOB.STATUS IS '状态:0-暂停、1-启用';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE WPPDB.SYS_ROLE
|
||||||
|
(
|
||||||
|
ID VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
ROLECODE VARCHAR(3 CHAR) NOT NULL,
|
||||||
|
ROLENAME VARCHAR(100 CHAR) NOT NULL,
|
||||||
|
LEVEL VARCHAR(2 CHAR) NOT NULL,
|
||||||
|
DESCRIPTION VARCHAR(1000 CHAR),
|
||||||
|
ORGSCOPE VARCHAR(1000 CHAR),
|
||||||
|
OPTSCOPE VARCHAR(2000 CHAR),
|
||||||
|
BUSSCOPE VARCHAR(2000 CHAR),
|
||||||
|
ISVAILD VARCHAR(2 CHAR) DEFAULT '1' NOT NULL,
|
||||||
|
LASTMODIFIER VARCHAR(40 CHAR),
|
||||||
|
LASTMODIFYDATE TIMESTAMP(0),
|
||||||
|
CUSTOM1 VARCHAR(100 CHAR),
|
||||||
|
CUSTOM2 VARCHAR(100 CHAR),
|
||||||
|
CUSTOM3 VARCHAR(100 CHAR),
|
||||||
|
NOT CLUSTER PRIMARY KEY(ID)) STORAGE(ON MAIN, CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON TABLE WPPDB.SYS_ROLE IS '系统角色';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ROLE.BUSSCOPE IS 'json格式自定义业务范围';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ROLE.CUSTOM1 IS '备用1';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ROLE.CUSTOM2 IS '备用2';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ROLE.CUSTOM3 IS '备用3';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ROLE.DESCRIPTION IS '描述';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ROLE.ID IS 'id';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ROLE.ISVAILD IS '1-是 0-否';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ROLE.LASTMODIFIER IS '最近修改者';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ROLE.LASTMODIFYDATE IS '最近修改日期';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ROLE.LEVEL IS '1-超级管理员 2-单位管理员 3-普通用户';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ROLE.OPTSCOPE IS '多个操作代码(菜单、按钮)';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ROLE.ORGSCOPE IS 'org1,org2';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ROLE.ROLECODE IS '系统生成,三位编号';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ROLE.ROLENAME IS '角色名称';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE WPPDB.SYS_ROLE_MENU
|
||||||
|
(
|
||||||
|
ID VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
ROLEID VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
MENUID VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
NOT CLUSTER PRIMARY KEY(ID)) STORAGE(ON MAIN, CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON TABLE WPPDB.SYS_ROLE_MENU IS '系统角色权限对照';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ROLE_MENU.ID IS 'id';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ROLE_MENU.MENUID IS '权限id';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ROLE_MENU.ROLEID IS '角色id';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE WPPDB.SYS_ROLE_USERS
|
||||||
|
(
|
||||||
|
ID VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
ROLEID VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
USERID VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
NOT CLUSTER PRIMARY KEY(ID)) STORAGE(ON MAIN, CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON TABLE WPPDB.SYS_ROLE_USERS IS '系统角色用户对照';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ROLE_USERS.ID IS 'id';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ROLE_USERS.ROLEID IS '角色id';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_ROLE_USERS.USERID IS '用户id';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE WPPDB.SYS_USER
|
||||||
|
(
|
||||||
|
ID VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
USERTYPE VARCHAR(20 CHAR) DEFAULT '' NOT NULL,
|
||||||
|
USERNAME VARCHAR(100 CHAR) NOT NULL,
|
||||||
|
NICKNAME VARCHAR(255 CHAR) NOT NULL,
|
||||||
|
PASSWORD VARCHAR(200 CHAR),
|
||||||
|
SEX VARCHAR(2 CHAR),
|
||||||
|
EMAIL VARCHAR(100 CHAR),
|
||||||
|
PHONE VARCHAR(20 CHAR),
|
||||||
|
AVATAR VARCHAR(100 CHAR),
|
||||||
|
ORGID VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
STATUS VARCHAR(2 CHAR) DEFAULT '1' NOT NULL,
|
||||||
|
PWDRESETTIME TIMESTAMP(0),
|
||||||
|
LASTMODIFIER VARCHAR(40 CHAR),
|
||||||
|
LASTMODIFYDATE TIMESTAMP(0),
|
||||||
|
CUSTOM1 VARCHAR(100 CHAR),
|
||||||
|
CUSTOM2 VARCHAR(100 CHAR),
|
||||||
|
CUSTOM3 VARCHAR(100 CHAR),
|
||||||
|
NOT CLUSTER PRIMARY KEY(ID)) STORAGE(ON MAIN, CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON TABLE WPPDB.SYS_USER IS '系统用户';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_USER.AVATAR IS '用户头像';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_USER.CUSTOM1 IS '备用1';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_USER.CUSTOM2 IS '备用2';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_USER.CUSTOM3 IS '备用3';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_USER.EMAIL IS '邮箱';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_USER.ID IS 'id';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_USER.LASTMODIFIER IS '最近修改者';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_USER.LASTMODIFYDATE IS '最近修改日期';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_USER.NICKNAME IS '用户昵称(中文)';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_USER.ORGID IS '所属组织';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_USER.PASSWORD IS '登录密码';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_USER.PHONE IS '手机号';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_USER.PWDRESETTIME IS '密码修改时间';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_USER.SEX IS '性别 0-男 1-女';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_USER.STATUS IS '1-有效 0-停用';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_USER.USERNAME IS '用户名称(账号)';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_USER.USERTYPE IS '用户类型 0-管理员 1-普通用户';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE WPPDB.SYS_USER_MENU
|
||||||
|
(
|
||||||
|
USERID VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
MENUID VARCHAR(40 CHAR),
|
||||||
|
ORDERNO INT,
|
||||||
|
OPTURL VARCHAR(200 CHAR)) STORAGE(ON MAIN, CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_USER_MENU.MENUID IS '权限id';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_USER_MENU.OPTURL IS '内部模块路径或者外链地址';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_USER_MENU.ORDERNO IS '排序号';
|
||||||
|
COMMENT ON COLUMN WPPDB.SYS_USER_MENU.USERID IS '用户id';
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
389
db.sql.bak
Normal file
389
db.sql.bak
Normal file
@ -0,0 +1,389 @@
|
|||||||
|
CREATE TABLE "WPPDB"."project"
|
||||||
|
(
|
||||||
|
"project_id" CHAR(36 CHAR) NOT NULL,
|
||||||
|
"code" VARCHAR(20 CHAR) NOT NULL,
|
||||||
|
"name" VARCHAR(200 CHAR) NOT NULL,
|
||||||
|
"description" TEXT,
|
||||||
|
"topology" CLOB,
|
||||||
|
"created_at" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP(),
|
||||||
|
"updated_at" TIMESTAMP(0) DEFAULT CURRENT_TIMESTAMP(),
|
||||||
|
"modifier" VARCHAR(40 CHAR),
|
||||||
|
NOT CLUSTER PRIMARY KEY("project_id"),
|
||||||
|
CONSTRAINT "code" UNIQUE("code")) STORAGE(ON "MAIN", CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON COLUMN WPPDB."project"."code" IS '项目编号';
|
||||||
|
COMMENT ON COLUMN WPPDB."project"."created_at" IS '创建时间';
|
||||||
|
COMMENT ON COLUMN WPPDB."project"."description" IS '项目描述';
|
||||||
|
COMMENT ON COLUMN WPPDB."project"."modifier" IS '最近修改者';
|
||||||
|
COMMENT ON COLUMN WPPDB."project"."name" IS '项目名称';
|
||||||
|
COMMENT ON COLUMN WPPDB."project"."project_id" IS '项目主键';
|
||||||
|
COMMENT ON COLUMN WPPDB."project"."topology" IS '项目拓扑关系';
|
||||||
|
COMMENT ON COLUMN WPPDB."project"."updated_at" IS '修改时间';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE "WPPDB"."sys_config"
|
||||||
|
(
|
||||||
|
"id" VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
"sysname" VARCHAR(200 CHAR),
|
||||||
|
"welcome" VARCHAR(500 CHAR),
|
||||||
|
"funcation" CLOB,
|
||||||
|
"remark" CLOB,
|
||||||
|
"versioninfo" CLOB,
|
||||||
|
"lastmodifydate" TIMESTAMP(0),
|
||||||
|
"custom1" VARCHAR(100 CHAR),
|
||||||
|
"custom2" VARCHAR(100 CHAR),
|
||||||
|
"custom3" VARCHAR(100 CHAR),
|
||||||
|
NOT CLUSTER PRIMARY KEY("id")) STORAGE(ON "MAIN", CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON TABLE WPPDB."sys_config" IS '系统全局配置';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_config"."custom1" IS '备用1';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_config"."custom2" IS '备用2';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_config"."custom3" IS '备用3';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_config"."funcation" IS '系统功能介绍';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_config"."id" IS 'id';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_config"."lastmodifydate" IS '最近修改日期';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_config"."remark" IS '备注';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_config"."sysname" IS '系统名称';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_config"."versioninfo" IS '版本信息';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_config"."welcome" IS '欢迎词';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE "WPPDB"."sys_dictionary"
|
||||||
|
(
|
||||||
|
"id" VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
"dicttype" VARCHAR(20 CHAR) DEFAULT '00' NOT NULL,
|
||||||
|
"orderno" INT NOT NULL,
|
||||||
|
"dictcode" VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
"dictname" VARCHAR(100 CHAR) NOT NULL,
|
||||||
|
"custom1" VARCHAR(1000 CHAR),
|
||||||
|
"custom2" VARCHAR(100 CHAR),
|
||||||
|
"custom3" CLOB,
|
||||||
|
NOT CLUSTER PRIMARY KEY("id")) STORAGE(ON "MAIN", CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON TABLE WPPDB."sys_dictionary" IS '数据字典表';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_dictionary"."custom1" IS '备用1';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_dictionary"."custom2" IS '备用2';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_dictionary"."custom3" IS '备用3';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_dictionary"."dictcode" IS '字典编码';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_dictionary"."dictname" IS '字典名称';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_dictionary"."dicttype" IS '字典类型 00-系统内置 01-用户配置';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_dictionary"."id" IS 'id';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_dictionary"."orderno" IS '顺序号';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE "WPPDB"."sys_dictionary_items"
|
||||||
|
(
|
||||||
|
"id" VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
"dictid" VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
"orderno" INT NOT NULL,
|
||||||
|
"itemcode" VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
"dictname" VARCHAR(100 CHAR) NOT NULL,
|
||||||
|
"parentcode" VARCHAR(40 CHAR) DEFAULT '',
|
||||||
|
"custom1" VARCHAR(1000 CHAR),
|
||||||
|
"custom2" VARCHAR(100 CHAR),
|
||||||
|
"custom3" CLOB,
|
||||||
|
NOT CLUSTER PRIMARY KEY("id")) STORAGE(ON "MAIN", CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON TABLE WPPDB."sys_dictionary_items" IS '数据字典明细';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_dictionary_items"."custom1" IS '备用1';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_dictionary_items"."custom2" IS '备用2';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_dictionary_items"."custom3" IS '备用3';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_dictionary_items"."dictid" IS '对应字典ID';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_dictionary_items"."dictname" IS '项名称';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_dictionary_items"."id" IS 'id';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_dictionary_items"."itemcode" IS '项编码';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_dictionary_items"."orderno" IS '顺序号';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_dictionary_items"."parentcode" IS '父项编码';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE "WPPDB"."sys_log"
|
||||||
|
(
|
||||||
|
"id" BIGINT AUTO_INCREMENT NOT NULL,
|
||||||
|
"usercode" VARCHAR(200 CHAR),
|
||||||
|
"username" VARCHAR(200 CHAR),
|
||||||
|
"opttype" VARCHAR(20 CHAR),
|
||||||
|
"module" VARCHAR(200 CHAR),
|
||||||
|
"description" VARCHAR(400 CHAR),
|
||||||
|
"method" VARCHAR(200 CHAR),
|
||||||
|
"params" TEXT,
|
||||||
|
"logtime" TIMESTAMP(0),
|
||||||
|
"requestip" VARCHAR(200 CHAR),
|
||||||
|
"browser" VARCHAR(200 CHAR),
|
||||||
|
NOT CLUSTER PRIMARY KEY("id")) STORAGE(ON "MAIN", CLUSTERBTR) AUTO_INCREMENT = 3455487;
|
||||||
|
|
||||||
|
COMMENT ON TABLE WPPDB."sys_log" IS '系统操作日志';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_log"."browser" IS '浏览器类型';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_log"."description" IS '日志描述';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_log"."id" IS 'ID';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_log"."logtime" IS '创建时间';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_log"."method" IS '操作方法';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_log"."module" IS '模块名称';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_log"."opttype" IS '操作类型 00-登录 01-新增 02-修改 03-删除 06-查询 09其他';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_log"."params" IS '方法参数';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_log"."requestip" IS '请求IP';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_log"."usercode" IS '用户账号';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_log"."username" IS '用户名称';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE OR REPLACE INDEX "WPPDB"."log_create_time_index" ON "WPPDB"."sys_log"("logtime" ASC) STORAGE(ON "MAIN", CLUSTERBTR) WITHOUT CLU_REC_ADDR ;
|
||||||
|
CREATE OR REPLACE INDEX "WPPDB"."inx_log_type" ON "WPPDB"."sys_log"("opttype" ASC) STORAGE(ON "MAIN", CLUSTERBTR) WITHOUT CLU_REC_ADDR ;
|
||||||
|
|
||||||
|
CREATE TABLE "WPPDB"."sys_menu"
|
||||||
|
(
|
||||||
|
"id" VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
"systemcode" VARCHAR(2 CHAR) NOT NULL,
|
||||||
|
"type" VARCHAR(2 CHAR) NOT NULL,
|
||||||
|
"code" VARCHAR(20 CHAR) NOT NULL,
|
||||||
|
"name" VARCHAR(100 CHAR) NOT NULL,
|
||||||
|
"icon" VARCHAR(100 CHAR),
|
||||||
|
"islink" VARCHAR(2 CHAR),
|
||||||
|
"opturl" VARCHAR(200 CHAR),
|
||||||
|
"permission" VARCHAR(100 CHAR),
|
||||||
|
"parentid" VARCHAR(40 CHAR),
|
||||||
|
"orderno" INT,
|
||||||
|
"isdisplay" VARCHAR(2 CHAR),
|
||||||
|
"lastmodifier" VARCHAR(40 CHAR),
|
||||||
|
"lastmodifydate" TIMESTAMP(0),
|
||||||
|
"custom1" VARCHAR(100 CHAR),
|
||||||
|
"custom2" VARCHAR(100 CHAR),
|
||||||
|
"custom3" VARCHAR(100 CHAR),
|
||||||
|
NOT CLUSTER PRIMARY KEY("id")) STORAGE(ON "MAIN", CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON TABLE WPPDB."sys_menu" IS '菜单及按钮';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_menu"."code" IS '在系统内自动生成';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_menu"."custom1" IS '备用1';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_menu"."custom2" IS '备用2';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_menu"."custom3" IS '备用3';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_menu"."icon" IS '图标地址';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_menu"."id" IS 'id';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_menu"."isdisplay" IS '0-不显示 1-显示';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_menu"."islink" IS '是否外链';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_menu"."lastmodifier" IS '最近修改者';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_menu"."lastmodifydate" IS '最近修改日期';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_menu"."name" IS '名称';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_menu"."opturl" IS '内部模块路径或者外链地址';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_menu"."orderno" IS '排序号';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_menu"."parentid" IS '顶级为0';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_menu"."permission" IS '权限控制标识';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_menu"."systemcode" IS '1-web 2-pad 3-mobile';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_menu"."type" IS '0-目录 1-菜单 2-按钮';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE "WPPDB"."sys_message"
|
||||||
|
(
|
||||||
|
"id" VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
"createtime" TIMESTAMP(0) NOT NULL,
|
||||||
|
"type" VARCHAR(2 CHAR) NOT NULL,
|
||||||
|
"title" VARCHAR(100 CHAR) NOT NULL,
|
||||||
|
"content" VARCHAR(400 CHAR) NOT NULL,
|
||||||
|
"sender_name" VARCHAR(40 CHAR),
|
||||||
|
"receiver_codes" VARCHAR(1000 CHAR),
|
||||||
|
"receiver_names" VARCHAR(1000 CHAR),
|
||||||
|
"status" VARCHAR(2 CHAR) DEFAULT '1' NOT NULL,
|
||||||
|
"validperiod" INT DEFAULT 24,
|
||||||
|
"readtime" TIMESTAMP(0),
|
||||||
|
"custom1" VARCHAR(100 CHAR),
|
||||||
|
"custom2" VARCHAR(100 CHAR),
|
||||||
|
"custom3" VARCHAR(100 CHAR),
|
||||||
|
NOT CLUSTER PRIMARY KEY("id")) STORAGE(ON "MAIN", CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON TABLE WPPDB."sys_message" IS '消息通知';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_message"."content" IS '消息内容';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_message"."createtime" IS '创建时间:排序';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_message"."custom1" IS '备用1';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_message"."custom2" IS '备用2';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_message"."custom3" IS '备用3';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_message"."id" IS 'ID';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_message"."readtime" IS '已阅时间';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_message"."receiver_codes" IS '接收者代码 人员账号列表';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_message"."receiver_names" IS '接收者名称:为空 即为所有人,人员名称列表';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_message"."sender_name" IS '发送者名称,定时器,人员';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_message"."status" IS '状态:1、初始创建 2-消息已阅 9-消息过期';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_message"."title" IS '消息标题';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_message"."type" IS '消息类型:1-定时任务 2-工作流触发 3-人工触发';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_message"."validperiod" IS '有效期:小时';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE "WPPDB"."sys_organization"
|
||||||
|
(
|
||||||
|
"id" VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
"orgtype" VARCHAR(2 CHAR) NOT NULL,
|
||||||
|
"orgcode" VARCHAR(20 CHAR) NOT NULL,
|
||||||
|
"orgname" VARCHAR(100 CHAR) NOT NULL,
|
||||||
|
"parentid" VARCHAR(40 CHAR),
|
||||||
|
"manager" VARCHAR(40 CHAR),
|
||||||
|
"isvaild" VARCHAR(2 CHAR) DEFAULT '1' NOT NULL,
|
||||||
|
"description" VARCHAR(1000 CHAR),
|
||||||
|
"lastmodifier" VARCHAR(40 CHAR),
|
||||||
|
"lastmodifydate" TIMESTAMP(0),
|
||||||
|
"custom1" VARCHAR(100 CHAR),
|
||||||
|
"custom2" VARCHAR(100 CHAR),
|
||||||
|
"custom3" VARCHAR(100 CHAR),
|
||||||
|
NOT CLUSTER PRIMARY KEY("id")) STORAGE(ON "MAIN", CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON TABLE WPPDB."sys_organization" IS '系统组织框架';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_organization"."custom1" IS '备用1';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_organization"."custom2" IS '备用2';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_organization"."custom3" IS '备用3';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_organization"."description" IS '描述';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_organization"."id" IS 'id';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_organization"."isvaild" IS '1-是 0-否';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_organization"."lastmodifier" IS '最近修改者';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_organization"."lastmodifydate" IS '最近修改日期';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_organization"."manager" IS '组织负责人';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_organization"."orgcode" IS '两位一级';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_organization"."orgname" IS '组织名称';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_organization"."orgtype" IS '1-公司 -2-部门';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_organization"."parentid" IS '上级id';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE "WPPDB"."sys_quartz_job"
|
||||||
|
(
|
||||||
|
"id" VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
"orderno" INT NOT NULL,
|
||||||
|
"job_name" VARCHAR(200 CHAR) NOT NULL,
|
||||||
|
"job_class" VARCHAR(200 CHAR) NOT NULL,
|
||||||
|
"job_method" VARCHAR(200 CHAR),
|
||||||
|
"job_cron" VARCHAR(300 CHAR),
|
||||||
|
"job_params" VARCHAR(200 CHAR),
|
||||||
|
"description" VARCHAR(400 CHAR),
|
||||||
|
"status" VARCHAR(2 CHAR) DEFAULT '1' NOT NULL,
|
||||||
|
"lastmodifier" VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
"lastmodifydate" TIMESTAMP(0) NOT NULL,
|
||||||
|
"custom1" VARCHAR(100 CHAR),
|
||||||
|
"custom2" VARCHAR(100 CHAR),
|
||||||
|
"custom3" VARCHAR(100 CHAR),
|
||||||
|
NOT CLUSTER PRIMARY KEY("id")) STORAGE(ON "MAIN", CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON TABLE WPPDB."sys_quartz_job" IS '定时任务';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_quartz_job"."custom1" IS '备用1';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_quartz_job"."custom2" IS '备用2';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_quartz_job"."custom3" IS '备用3';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_quartz_job"."description" IS '任务描述';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_quartz_job"."id" IS 'ID';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_quartz_job"."job_class" IS '执行类名称';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_quartz_job"."job_cron" IS '时间周期表达式';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_quartz_job"."job_method" IS '执行方法名称';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_quartz_job"."job_name" IS '任务名称';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_quartz_job"."job_params" IS '方法参数';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_quartz_job"."lastmodifier" IS '最近修改者';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_quartz_job"."lastmodifydate" IS '最近修改日期';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_quartz_job"."orderno" IS '排序号';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_quartz_job"."status" IS '状态:0-暂停、1-启用';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE "WPPDB"."sys_role"
|
||||||
|
(
|
||||||
|
"id" VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
"rolecode" VARCHAR(3 CHAR) NOT NULL,
|
||||||
|
"rolename" VARCHAR(100 CHAR) NOT NULL,
|
||||||
|
"level" VARCHAR(2 CHAR) NOT NULL,
|
||||||
|
"description" VARCHAR(1000 CHAR),
|
||||||
|
"orgscope" VARCHAR(1000 CHAR),
|
||||||
|
"optscope" VARCHAR(2000 CHAR),
|
||||||
|
"busscope" VARCHAR(2000 CHAR),
|
||||||
|
"isvaild" VARCHAR(2 CHAR) DEFAULT '1' NOT NULL,
|
||||||
|
"lastmodifier" VARCHAR(40 CHAR),
|
||||||
|
"lastmodifydate" TIMESTAMP(0),
|
||||||
|
"custom1" VARCHAR(100 CHAR),
|
||||||
|
"custom2" VARCHAR(100 CHAR),
|
||||||
|
"custom3" VARCHAR(100 CHAR),
|
||||||
|
NOT CLUSTER PRIMARY KEY("id")) STORAGE(ON "MAIN", CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON TABLE WPPDB."sys_role" IS '系统角色';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_role"."busscope" IS 'json格式自定义业务范围';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_role"."custom1" IS '备用1';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_role"."custom2" IS '备用2';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_role"."custom3" IS '备用3';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_role"."description" IS '描述';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_role"."id" IS 'id';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_role"."isvaild" IS '1-是 0-否';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_role"."lastmodifier" IS '最近修改者';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_role"."lastmodifydate" IS '最近修改日期';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_role"."level" IS '1-超级管理员 2-单位管理员 3-普通用户';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_role"."optscope" IS '多个操作代码(菜单、按钮)';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_role"."orgscope" IS 'org1,org2';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_role"."rolecode" IS '系统生成,三位编号';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_role"."rolename" IS '角色名称';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE "WPPDB"."sys_role_menu"
|
||||||
|
(
|
||||||
|
"id" VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
"roleid" VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
"menuid" VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
NOT CLUSTER PRIMARY KEY("id")) STORAGE(ON "MAIN", CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON TABLE WPPDB."sys_role_menu" IS '系统角色权限对照';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_role_menu"."id" IS 'id';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_role_menu"."menuid" IS '权限id';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_role_menu"."roleid" IS '角色id';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE "WPPDB"."sys_role_users"
|
||||||
|
(
|
||||||
|
"id" VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
"roleid" VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
"userid" VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
NOT CLUSTER PRIMARY KEY("id")) STORAGE(ON "MAIN", CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON TABLE WPPDB."sys_role_users" IS '系统角色用户对照';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_role_users"."id" IS 'id';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_role_users"."roleid" IS '角色id';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_role_users"."userid" IS '用户id';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE "WPPDB"."sys_user"
|
||||||
|
(
|
||||||
|
"id" VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
"usertype" VARCHAR(20 CHAR) DEFAULT '' NOT NULL,
|
||||||
|
"username" VARCHAR(100 CHAR) NOT NULL,
|
||||||
|
"nickname" VARCHAR(255 CHAR) NOT NULL,
|
||||||
|
"password" VARCHAR(200 CHAR),
|
||||||
|
"sex" VARCHAR(2 CHAR),
|
||||||
|
"email" VARCHAR(100 CHAR),
|
||||||
|
"phone" VARCHAR(20 CHAR),
|
||||||
|
"avatar" VARCHAR(100 CHAR),
|
||||||
|
"orgid" VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
"status" VARCHAR(2 CHAR) DEFAULT '1' NOT NULL,
|
||||||
|
"pwdresettime" TIMESTAMP(0),
|
||||||
|
"lastmodifier" VARCHAR(40 CHAR),
|
||||||
|
"lastmodifydate" TIMESTAMP(0),
|
||||||
|
"custom1" VARCHAR(100 CHAR),
|
||||||
|
"custom2" VARCHAR(100 CHAR),
|
||||||
|
"custom3" VARCHAR(100 CHAR),
|
||||||
|
NOT CLUSTER PRIMARY KEY("id")) STORAGE(ON "MAIN", CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON TABLE WPPDB."sys_user" IS '系统用户';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_user"."avatar" IS '用户头像';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_user"."custom1" IS '备用1';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_user"."custom2" IS '备用2';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_user"."custom3" IS '备用3';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_user"."email" IS '邮箱';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_user"."id" IS 'id';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_user"."lastmodifier" IS '最近修改者';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_user"."lastmodifydate" IS '最近修改日期';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_user"."nickname" IS '用户昵称(中文)';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_user"."orgid" IS '所属组织';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_user"."password" IS '登录密码';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_user"."phone" IS '手机号';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_user"."pwdresettime" IS '密码修改时间';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_user"."sex" IS '性别 0-男 1-女';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_user"."status" IS '1-有效 0-停用';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_user"."username" IS '用户名称(账号)';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_user"."usertype" IS '用户类型 0-管理员 1-普通用户';
|
||||||
|
|
||||||
|
|
||||||
|
CREATE TABLE "WPPDB"."sys_user_menu"
|
||||||
|
(
|
||||||
|
"userid" VARCHAR(40 CHAR) NOT NULL,
|
||||||
|
"menuid" VARCHAR(40 CHAR),
|
||||||
|
"orderno" INT,
|
||||||
|
"opturl" VARCHAR(200 CHAR)) STORAGE(ON "MAIN", CLUSTERBTR) ;
|
||||||
|
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_user_menu"."menuid" IS '权限id';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_user_menu"."opturl" IS '内部模块路径或者外链地址';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_user_menu"."orderno" IS '排序号';
|
||||||
|
COMMENT ON COLUMN WPPDB."sys_user_menu"."userid" IS '用户id';
|
||||||
|
|
||||||
|
|
||||||
3
frontend-process/.npmrc
Normal file
3
frontend-process/.npmrc
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
registry=https://registry.npmmirror.com
|
||||||
|
fetch-retries=5
|
||||||
|
strict-peer-dependencies=false
|
||||||
13
frontend-process/index.html
Normal file
13
frontend-process/index.html
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
<!doctype html>
|
||||||
|
<html lang="zh-CN">
|
||||||
|
<head>
|
||||||
|
<meta charset="UTF-8" />
|
||||||
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
|
<title>front-process</title>
|
||||||
|
</head>
|
||||||
|
<body>
|
||||||
|
<div id="app"></div>
|
||||||
|
<script type="module" src="/src/main.ts"></script>
|
||||||
|
</body>
|
||||||
|
</html>
|
||||||
|
|
||||||
22
frontend-process/package.json
Normal file
22
frontend-process/package.json
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
{
|
||||||
|
"name": "front-process",
|
||||||
|
"private": true,
|
||||||
|
"version": "0.1.0",
|
||||||
|
"scripts": {
|
||||||
|
"dev": "vite --port 5174 --strictPort",
|
||||||
|
"build": "vue-tsc --noEmit && vite build",
|
||||||
|
"preview": "vite preview --port 5174 --strictPort"
|
||||||
|
},
|
||||||
|
"dependencies": {
|
||||||
|
"ant-design-vue": "^4.2.6",
|
||||||
|
"vue": "^3.2.40",
|
||||||
|
"vue-router": "^4.1.6"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/node": "^16.11.7",
|
||||||
|
"@vitejs/plugin-vue": "^4.0.0",
|
||||||
|
"typescript": "^4.7.4",
|
||||||
|
"vite": "^4.0.3",
|
||||||
|
"vue-tsc": "^0.35.0"
|
||||||
|
}
|
||||||
|
}
|
||||||
794
frontend-process/pnpm-lock.yaml
Normal file
794
frontend-process/pnpm-lock.yaml
Normal file
@ -0,0 +1,794 @@
|
|||||||
|
lockfileVersion: '9.0'
|
||||||
|
|
||||||
|
settings:
|
||||||
|
autoInstallPeers: true
|
||||||
|
excludeLinksFromLockfile: false
|
||||||
|
|
||||||
|
importers:
|
||||||
|
|
||||||
|
.:
|
||||||
|
dependencies:
|
||||||
|
ant-design-vue:
|
||||||
|
specifier: ^4.2.6
|
||||||
|
version: 4.2.6(vue@3.5.30(typescript@4.9.5))
|
||||||
|
vue:
|
||||||
|
specifier: ^3.2.40
|
||||||
|
version: 3.5.30(typescript@4.9.5)
|
||||||
|
vue-router:
|
||||||
|
specifier: ^4.1.6
|
||||||
|
version: 4.6.4(vue@3.5.30(typescript@4.9.5))
|
||||||
|
devDependencies:
|
||||||
|
'@types/node':
|
||||||
|
specifier: ^16.11.7
|
||||||
|
version: 16.18.126
|
||||||
|
'@vitejs/plugin-vue':
|
||||||
|
specifier: ^4.0.0
|
||||||
|
version: 4.6.2(vite@4.5.14(@types/node@16.18.126))(vue@3.5.30(typescript@4.9.5))
|
||||||
|
typescript:
|
||||||
|
specifier: ^4.7.4
|
||||||
|
version: 4.9.5
|
||||||
|
vite:
|
||||||
|
specifier: ^4.0.3
|
||||||
|
version: 4.5.14(@types/node@16.18.126)
|
||||||
|
vue-tsc:
|
||||||
|
specifier: ^0.35.0
|
||||||
|
version: 0.35.2(typescript@4.9.5)
|
||||||
|
|
||||||
|
packages:
|
||||||
|
|
||||||
|
'@ant-design/colors@6.0.0':
|
||||||
|
resolution: {integrity: sha512-qAZRvPzfdWHtfameEGP2Qvuf838NhergR35o+EuVyB5XvSA98xod5r4utvi4TJ3ywmevm290g9nsCG5MryrdWQ==}
|
||||||
|
|
||||||
|
'@ant-design/icons-svg@4.4.2':
|
||||||
|
resolution: {integrity: sha512-vHbT+zJEVzllwP+CM+ul7reTEfBR0vgxFe7+lREAsAA7YGsYpboiq2sQNeQeRvh09GfQgs/GyFEvZpJ9cLXpXA==}
|
||||||
|
|
||||||
|
'@ant-design/icons-vue@7.0.1':
|
||||||
|
resolution: {integrity: sha512-eCqY2unfZK6Fe02AwFlDHLfoyEFreP6rBwAZMIJ1LugmfMiVgwWDYlp1YsRugaPtICYOabV1iWxXdP12u9U43Q==}
|
||||||
|
peerDependencies:
|
||||||
|
vue: '>=3.0.3'
|
||||||
|
|
||||||
|
'@babel/helper-string-parser@7.27.1':
|
||||||
|
resolution: {integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==}
|
||||||
|
engines: {node: '>=6.9.0'}
|
||||||
|
|
||||||
|
'@babel/helper-validator-identifier@7.28.5':
|
||||||
|
resolution: {integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==}
|
||||||
|
engines: {node: '>=6.9.0'}
|
||||||
|
|
||||||
|
'@babel/parser@7.29.2':
|
||||||
|
resolution: {integrity: sha512-4GgRzy/+fsBa72/RZVJmGKPmZu9Byn8o4MoLpmNe1m8ZfYnz5emHLQz3U4gLud6Zwl0RZIcgiLD7Uq7ySFuDLA==}
|
||||||
|
engines: {node: '>=6.0.0'}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
|
'@babel/runtime@7.29.2':
|
||||||
|
resolution: {integrity: sha512-JiDShH45zKHWyGe4ZNVRrCjBz8Nh9TMmZG1kh4QTK8hCBTWBi8Da+i7s1fJw7/lYpM4ccepSNfqzZ/QvABBi5g==}
|
||||||
|
engines: {node: '>=6.9.0'}
|
||||||
|
|
||||||
|
'@babel/types@7.29.0':
|
||||||
|
resolution: {integrity: sha512-LwdZHpScM4Qz8Xw2iKSzS+cfglZzJGvofQICy7W7v4caru4EaAmyUuO6BGrbyQ2mYV11W0U8j5mBhd14dd3B0A==}
|
||||||
|
engines: {node: '>=6.9.0'}
|
||||||
|
|
||||||
|
'@ctrl/tinycolor@3.6.1':
|
||||||
|
resolution: {integrity: sha512-SITSV6aIXsuVNV3f3O0f2n/cgyEDWoSqtZMYiAmcsYHydcKrOz3gUxB/iXd/Qf08+IZX4KpgNbvUdMBmWz+kcA==}
|
||||||
|
engines: {node: '>=10'}
|
||||||
|
|
||||||
|
'@emotion/hash@0.9.2':
|
||||||
|
resolution: {integrity: sha512-MyqliTZGuOm3+5ZRSaaBGP3USLw6+EGykkwZns2EPC5g8jJ4z9OrdZY9apkl3+UP9+sdz76YYkwCKP5gh8iY3g==}
|
||||||
|
|
||||||
|
'@emotion/unitless@0.8.1':
|
||||||
|
resolution: {integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==}
|
||||||
|
|
||||||
|
'@esbuild/android-arm64@0.18.20':
|
||||||
|
resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [android]
|
||||||
|
|
||||||
|
'@esbuild/android-arm@0.18.20':
|
||||||
|
resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [arm]
|
||||||
|
os: [android]
|
||||||
|
|
||||||
|
'@esbuild/android-x64@0.18.20':
|
||||||
|
resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [android]
|
||||||
|
|
||||||
|
'@esbuild/darwin-arm64@0.18.20':
|
||||||
|
resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [darwin]
|
||||||
|
|
||||||
|
'@esbuild/darwin-x64@0.18.20':
|
||||||
|
resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [darwin]
|
||||||
|
|
||||||
|
'@esbuild/freebsd-arm64@0.18.20':
|
||||||
|
resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [freebsd]
|
||||||
|
|
||||||
|
'@esbuild/freebsd-x64@0.18.20':
|
||||||
|
resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [freebsd]
|
||||||
|
|
||||||
|
'@esbuild/linux-arm64@0.18.20':
|
||||||
|
resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@esbuild/linux-arm@0.18.20':
|
||||||
|
resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [arm]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@esbuild/linux-ia32@0.18.20':
|
||||||
|
resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [ia32]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@esbuild/linux-loong64@0.18.20':
|
||||||
|
resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [loong64]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@esbuild/linux-mips64el@0.18.20':
|
||||||
|
resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [mips64el]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@esbuild/linux-ppc64@0.18.20':
|
||||||
|
resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [ppc64]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@esbuild/linux-riscv64@0.18.20':
|
||||||
|
resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [riscv64]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@esbuild/linux-s390x@0.18.20':
|
||||||
|
resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [s390x]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@esbuild/linux-x64@0.18.20':
|
||||||
|
resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [linux]
|
||||||
|
|
||||||
|
'@esbuild/netbsd-x64@0.18.20':
|
||||||
|
resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [netbsd]
|
||||||
|
|
||||||
|
'@esbuild/openbsd-x64@0.18.20':
|
||||||
|
resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [openbsd]
|
||||||
|
|
||||||
|
'@esbuild/sunos-x64@0.18.20':
|
||||||
|
resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [sunos]
|
||||||
|
|
||||||
|
'@esbuild/win32-arm64@0.18.20':
|
||||||
|
resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [arm64]
|
||||||
|
os: [win32]
|
||||||
|
|
||||||
|
'@esbuild/win32-ia32@0.18.20':
|
||||||
|
resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [ia32]
|
||||||
|
os: [win32]
|
||||||
|
|
||||||
|
'@esbuild/win32-x64@0.18.20':
|
||||||
|
resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
cpu: [x64]
|
||||||
|
os: [win32]
|
||||||
|
|
||||||
|
'@jridgewell/sourcemap-codec@1.5.5':
|
||||||
|
resolution: {integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==}
|
||||||
|
|
||||||
|
'@simonwep/pickr@1.8.2':
|
||||||
|
resolution: {integrity: sha512-/l5w8BIkrpP6n1xsetx9MWPWlU6OblN5YgZZphxan0Tq4BByTCETL6lyIeY8lagalS2Nbt4F2W034KHLIiunKA==}
|
||||||
|
|
||||||
|
'@types/node@16.18.126':
|
||||||
|
resolution: {integrity: sha512-OTcgaiwfGFBKacvfwuHzzn1KLxH/er8mluiy8/uM3sGXHaRe73RrSIj01jow9t4kJEW633Ov+cOexXeiApTyAw==}
|
||||||
|
|
||||||
|
'@vitejs/plugin-vue@4.6.2':
|
||||||
|
resolution: {integrity: sha512-kqf7SGFoG+80aZG6Pf+gsZIVvGSCKE98JbiWqcCV9cThtg91Jav0yvYFC9Zb+jKetNGF6ZKeoaxgZfND21fWKw==}
|
||||||
|
engines: {node: ^14.18.0 || >=16.0.0}
|
||||||
|
peerDependencies:
|
||||||
|
vite: ^4.0.0 || ^5.0.0
|
||||||
|
vue: ^3.2.25
|
||||||
|
|
||||||
|
'@volar/code-gen@0.35.2':
|
||||||
|
resolution: {integrity: sha512-MoZHuNnPfUWnCNkQUI5+U+gvLTxrU+XlCTusdNOTFYUUAa+M68MH0RxFIS9Ybj4uAUWTcZx0Ow1q5t/PZozo+Q==}
|
||||||
|
|
||||||
|
'@volar/source-map@0.35.2':
|
||||||
|
resolution: {integrity: sha512-PFHh9wN/qMkOWYyvmB8ckvIzolrpNOvK5EBdxxdTpiPJhfYjW82rMDBnYf6RxCe7yQxrUrmve6BWVO7flxWNVQ==}
|
||||||
|
|
||||||
|
'@volar/vue-code-gen@0.35.2':
|
||||||
|
resolution: {integrity: sha512-8H6P8EtN06eSVGjtcJhGqZzFIg6/nWoHVOlnhc5vKqC7tXwpqPbyMQae0tO7pLBd5qSb/dYU5GQcBAHsi2jgyA==}
|
||||||
|
deprecated: 'WARNING: This project has been renamed to @vue/language-core. Install using @vue/language-core instead.'
|
||||||
|
|
||||||
|
'@volar/vue-typescript@0.35.2':
|
||||||
|
resolution: {integrity: sha512-PZI6Urb+Vr5Dvgf9xysM8X7TP09inWDy1wjDtprBoBhxS7r0Dg3V0qZuJa7sSGz7M0QMa5R/CBaZPhlxFCfJBw==}
|
||||||
|
deprecated: 'WARNING: This project has been renamed to @vue/typescript. Install using @vue/typescript instead.'
|
||||||
|
|
||||||
|
'@vue/compiler-core@3.5.30':
|
||||||
|
resolution: {integrity: sha512-s3DfdZkcu/qExZ+td75015ljzHc6vE+30cFMGRPROYjqkroYI5NV2X1yAMX9UeyBNWB9MxCfPcsjpLS11nzkkw==}
|
||||||
|
|
||||||
|
'@vue/compiler-dom@3.5.30':
|
||||||
|
resolution: {integrity: sha512-eCFYESUEVYHhiMuK4SQTldO3RYxyMR/UQL4KdGD1Yrkfdx4m/HYuZ9jSfPdA+nWJY34VWndiYdW/wZXyiPEB9g==}
|
||||||
|
|
||||||
|
'@vue/compiler-sfc@3.5.30':
|
||||||
|
resolution: {integrity: sha512-LqmFPDn89dtU9vI3wHJnwaV6GfTRD87AjWpTWpyrdVOObVtjIuSeZr181z5C4PmVx/V3j2p+0f7edFKGRMpQ5A==}
|
||||||
|
|
||||||
|
'@vue/compiler-ssr@3.5.30':
|
||||||
|
resolution: {integrity: sha512-NsYK6OMTnx109PSL2IAyf62JP6EUdk4Dmj6AkWcJGBvN0dQoMYtVekAmdqgTtWQgEJo+Okstbf/1p7qZr5H+bA==}
|
||||||
|
|
||||||
|
'@vue/devtools-api@6.6.4':
|
||||||
|
resolution: {integrity: sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==}
|
||||||
|
|
||||||
|
'@vue/reactivity@3.5.30':
|
||||||
|
resolution: {integrity: sha512-179YNgKATuwj9gB+66snskRDOitDiuOZqkYia7mHKJaidOMo/WJxHKF8DuGc4V4XbYTJANlfEKb0yxTQotnx4Q==}
|
||||||
|
|
||||||
|
'@vue/runtime-core@3.5.30':
|
||||||
|
resolution: {integrity: sha512-e0Z+8PQsUTdwV8TtEsLzUM7SzC7lQwYKePydb7K2ZnmS6jjND+WJXkmmfh/swYzRyfP1EY3fpdesyYoymCzYfg==}
|
||||||
|
|
||||||
|
'@vue/runtime-dom@3.5.30':
|
||||||
|
resolution: {integrity: sha512-2UIGakjU4WSQ0T4iwDEW0W7vQj6n7AFn7taqZ9Cvm0Q/RA2FFOziLESrDL4GmtI1wV3jXg5nMoJSYO66egDUBw==}
|
||||||
|
|
||||||
|
'@vue/server-renderer@3.5.30':
|
||||||
|
resolution: {integrity: sha512-v+R34icapydRwbZRD0sXwtHqrQJv38JuMB4JxbOxd8NEpGLny7cncMp53W9UH/zo4j8eDHjQ1dEJXwzFQknjtQ==}
|
||||||
|
peerDependencies:
|
||||||
|
vue: 3.5.30
|
||||||
|
|
||||||
|
'@vue/shared@3.5.30':
|
||||||
|
resolution: {integrity: sha512-YXgQ7JjaO18NeK2K9VTbDHaFy62WrObMa6XERNfNOkAhD1F1oDSf3ZJ7K6GqabZ0BvSDHajp8qfS5Sa2I9n8uQ==}
|
||||||
|
|
||||||
|
ant-design-vue@4.2.6:
|
||||||
|
resolution: {integrity: sha512-t7eX13Yj3i9+i5g9lqFyYneoIb3OzTvQjq9Tts1i+eiOd3Eva/6GagxBSXM1fOCjqemIu0FYVE1ByZ/38epR3Q==}
|
||||||
|
engines: {node: '>=12.22.0'}
|
||||||
|
peerDependencies:
|
||||||
|
vue: '>=3.2.0'
|
||||||
|
|
||||||
|
array-tree-filter@2.1.0:
|
||||||
|
resolution: {integrity: sha512-4ROwICNlNw/Hqa9v+rk5h22KjmzB1JGTMVKP2AKJBOCgb0yL0ASf0+YvCcLNNwquOHNX48jkeZIJ3a+oOQqKcw==}
|
||||||
|
|
||||||
|
async-validator@4.2.5:
|
||||||
|
resolution: {integrity: sha512-7HhHjtERjqlNbZtqNqy2rckN/SpOOlmDliet+lP7k+eKZEjPk3DgyeU9lIXLdeLz0uBbbVp+9Qdow9wJWgwwfg==}
|
||||||
|
|
||||||
|
compute-scroll-into-view@1.0.20:
|
||||||
|
resolution: {integrity: sha512-UCB0ioiyj8CRjtrvaceBLqqhZCVP+1B8+NWQhmdsm0VXOJtobBCf1dBQmebCCo34qZmUwZfIH2MZLqNHazrfjg==}
|
||||||
|
|
||||||
|
core-js@3.49.0:
|
||||||
|
resolution: {integrity: sha512-es1U2+YTtzpwkxVLwAFdSpaIMyQaq0PBgm3YD1W3Qpsn1NAmO3KSgZfu+oGSWVu6NvLHoHCV/aYcsE5wiB7ALg==}
|
||||||
|
|
||||||
|
csstype@3.2.3:
|
||||||
|
resolution: {integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==}
|
||||||
|
|
||||||
|
dayjs@1.11.20:
|
||||||
|
resolution: {integrity: sha512-YbwwqR/uYpeoP4pu043q+LTDLFBLApUP6VxRihdfNTqu4ubqMlGDLd6ErXhEgsyvY0K6nCs7nggYumAN+9uEuQ==}
|
||||||
|
|
||||||
|
dom-align@1.12.4:
|
||||||
|
resolution: {integrity: sha512-R8LUSEay/68zE5c8/3BDxiTEvgb4xZTF0RKmAHfiEVN3klfIpXfi2/QCoiWPccVQ0J/ZGdz9OjzL4uJEP/MRAw==}
|
||||||
|
|
||||||
|
dom-scroll-into-view@2.0.1:
|
||||||
|
resolution: {integrity: sha512-bvVTQe1lfaUr1oFzZX80ce9KLDlZ3iU+XGNE/bz9HnGdklTieqsbmsLHe+rT2XWqopvL0PckkYqN7ksmm5pe3w==}
|
||||||
|
|
||||||
|
entities@7.0.1:
|
||||||
|
resolution: {integrity: sha512-TWrgLOFUQTH994YUyl1yT4uyavY5nNB5muff+RtWaqNVCAK408b5ZnnbNAUEWLTCpum9w6arT70i1XdQ4UeOPA==}
|
||||||
|
engines: {node: '>=0.12'}
|
||||||
|
|
||||||
|
esbuild@0.18.20:
|
||||||
|
resolution: {integrity: sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==}
|
||||||
|
engines: {node: '>=12'}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
|
estree-walker@2.0.2:
|
||||||
|
resolution: {integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==}
|
||||||
|
|
||||||
|
fsevents@2.3.3:
|
||||||
|
resolution: {integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==}
|
||||||
|
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
|
||||||
|
os: [darwin]
|
||||||
|
|
||||||
|
is-plain-object@3.0.1:
|
||||||
|
resolution: {integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==}
|
||||||
|
engines: {node: '>=0.10.0'}
|
||||||
|
|
||||||
|
js-tokens@4.0.0:
|
||||||
|
resolution: {integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==}
|
||||||
|
|
||||||
|
lodash-es@4.17.23:
|
||||||
|
resolution: {integrity: sha512-kVI48u3PZr38HdYz98UmfPnXl2DXrpdctLrFLCd3kOx1xUkOmpFPx7gCWWM5MPkL/fD8zb+Ph0QzjGFs4+hHWg==}
|
||||||
|
|
||||||
|
lodash@4.17.23:
|
||||||
|
resolution: {integrity: sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==}
|
||||||
|
|
||||||
|
loose-envify@1.4.0:
|
||||||
|
resolution: {integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
|
magic-string@0.30.21:
|
||||||
|
resolution: {integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==}
|
||||||
|
|
||||||
|
nanoid@3.3.11:
|
||||||
|
resolution: {integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==}
|
||||||
|
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
|
nanopop@2.4.2:
|
||||||
|
resolution: {integrity: sha512-NzOgmMQ+elxxHeIha+OG/Pv3Oc3p4RU2aBhwWwAqDpXrdTbtRylbRLQztLy8dMMwfl6pclznBdfUhccEn9ZIzw==}
|
||||||
|
|
||||||
|
picocolors@1.1.1:
|
||||||
|
resolution: {integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==}
|
||||||
|
|
||||||
|
postcss@8.5.8:
|
||||||
|
resolution: {integrity: sha512-OW/rX8O/jXnm82Ey1k44pObPtdblfiuWnrd8X7GJ7emImCOstunGbXUpp7HdBrFQX6rJzn3sPT397Wp5aCwCHg==}
|
||||||
|
engines: {node: ^10 || ^12 || >=14}
|
||||||
|
|
||||||
|
resize-observer-polyfill@1.5.1:
|
||||||
|
resolution: {integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==}
|
||||||
|
|
||||||
|
rollup@3.30.0:
|
||||||
|
resolution: {integrity: sha512-kQvGasUgN+AlWGliFn2POSajRQEsULVYFGTvOZmK06d7vCD+YhZztt70kGk3qaeAXeWYL5eO7zx+rAubBc55eA==}
|
||||||
|
engines: {node: '>=14.18.0', npm: '>=8.0.0'}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
|
scroll-into-view-if-needed@2.2.31:
|
||||||
|
resolution: {integrity: sha512-dGCXy99wZQivjmjIqihaBQNjryrz5rueJY7eHfTdyWEiR4ttYpsajb14rn9s5d4DY4EcY6+4+U/maARBXJedkA==}
|
||||||
|
|
||||||
|
shallow-equal@1.2.1:
|
||||||
|
resolution: {integrity: sha512-S4vJDjHHMBaiZuT9NPb616CSmLf618jawtv3sufLl6ivK8WocjAo58cXwbRV1cgqxH0Qbv+iUt6m05eqEa2IRA==}
|
||||||
|
|
||||||
|
source-map-js@1.2.1:
|
||||||
|
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
|
||||||
|
engines: {node: '>=0.10.0'}
|
||||||
|
|
||||||
|
stylis@4.3.6:
|
||||||
|
resolution: {integrity: sha512-yQ3rwFWRfwNUY7H5vpU0wfdkNSnvnJinhF9830Swlaxl03zsOjCfmX0ugac+3LtK0lYSgwL/KXc8oYL3mG4YFQ==}
|
||||||
|
|
||||||
|
throttle-debounce@5.0.2:
|
||||||
|
resolution: {integrity: sha512-B71/4oyj61iNH0KeCamLuE2rmKuTO5byTOSVwECM5FA7TiAiAW+UqTKZ9ERueC4qvgSttUhdmq1mXC3kJqGX7A==}
|
||||||
|
engines: {node: '>=12.22'}
|
||||||
|
|
||||||
|
typescript@4.9.5:
|
||||||
|
resolution: {integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==}
|
||||||
|
engines: {node: '>=4.2.0'}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
|
vite@4.5.14:
|
||||||
|
resolution: {integrity: sha512-+v57oAaoYNnO3hIu5Z/tJRZjq5aHM2zDve9YZ8HngVHbhk66RStobhb1sqPMIPEleV6cNKYK4eGrAbE9Ulbl2g==}
|
||||||
|
engines: {node: ^14.18.0 || >=16.0.0}
|
||||||
|
hasBin: true
|
||||||
|
peerDependencies:
|
||||||
|
'@types/node': '>= 14'
|
||||||
|
less: '*'
|
||||||
|
lightningcss: ^1.21.0
|
||||||
|
sass: '*'
|
||||||
|
stylus: '*'
|
||||||
|
sugarss: '*'
|
||||||
|
terser: ^5.4.0
|
||||||
|
peerDependenciesMeta:
|
||||||
|
'@types/node':
|
||||||
|
optional: true
|
||||||
|
less:
|
||||||
|
optional: true
|
||||||
|
lightningcss:
|
||||||
|
optional: true
|
||||||
|
sass:
|
||||||
|
optional: true
|
||||||
|
stylus:
|
||||||
|
optional: true
|
||||||
|
sugarss:
|
||||||
|
optional: true
|
||||||
|
terser:
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
vue-router@4.6.4:
|
||||||
|
resolution: {integrity: sha512-Hz9q5sa33Yhduglwz6g9skT8OBPii+4bFn88w6J+J4MfEo4KRRpmiNG/hHHkdbRFlLBOqxN8y8gf2Fb0MTUgVg==}
|
||||||
|
peerDependencies:
|
||||||
|
vue: ^3.5.0
|
||||||
|
|
||||||
|
vue-tsc@0.35.2:
|
||||||
|
resolution: {integrity: sha512-aqY16VlODHzqtKGUkqdumNpH+s5ABCkufRyvMKQlL/mua+N2DfSVnHufzSNNUMr7vmOO0YsNg27jsspBMq4iGA==}
|
||||||
|
hasBin: true
|
||||||
|
peerDependencies:
|
||||||
|
typescript: '*'
|
||||||
|
|
||||||
|
vue-types@3.0.2:
|
||||||
|
resolution: {integrity: sha512-IwUC0Aq2zwaXqy74h4WCvFCUtoV0iSWr0snWnE9TnU18S66GAQyqQbRf2qfJtUuiFsBf6qp0MEwdonlwznlcrw==}
|
||||||
|
engines: {node: '>=10.15.0'}
|
||||||
|
peerDependencies:
|
||||||
|
vue: ^3.0.0
|
||||||
|
|
||||||
|
vue@3.5.30:
|
||||||
|
resolution: {integrity: sha512-hTHLc6VNZyzzEH/l7PFGjpcTvUgiaPK5mdLkbjrTeWSRcEfxFrv56g/XckIYlE9ckuobsdwqd5mk2g1sBkMewg==}
|
||||||
|
peerDependencies:
|
||||||
|
typescript: '*'
|
||||||
|
peerDependenciesMeta:
|
||||||
|
typescript:
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
warning@4.0.3:
|
||||||
|
resolution: {integrity: sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==}
|
||||||
|
|
||||||
|
snapshots:
|
||||||
|
|
||||||
|
'@ant-design/colors@6.0.0':
|
||||||
|
dependencies:
|
||||||
|
'@ctrl/tinycolor': 3.6.1
|
||||||
|
|
||||||
|
'@ant-design/icons-svg@4.4.2': {}
|
||||||
|
|
||||||
|
'@ant-design/icons-vue@7.0.1(vue@3.5.30(typescript@4.9.5))':
|
||||||
|
dependencies:
|
||||||
|
'@ant-design/colors': 6.0.0
|
||||||
|
'@ant-design/icons-svg': 4.4.2
|
||||||
|
vue: 3.5.30(typescript@4.9.5)
|
||||||
|
|
||||||
|
'@babel/helper-string-parser@7.27.1': {}
|
||||||
|
|
||||||
|
'@babel/helper-validator-identifier@7.28.5': {}
|
||||||
|
|
||||||
|
'@babel/parser@7.29.2':
|
||||||
|
dependencies:
|
||||||
|
'@babel/types': 7.29.0
|
||||||
|
|
||||||
|
'@babel/runtime@7.29.2': {}
|
||||||
|
|
||||||
|
'@babel/types@7.29.0':
|
||||||
|
dependencies:
|
||||||
|
'@babel/helper-string-parser': 7.27.1
|
||||||
|
'@babel/helper-validator-identifier': 7.28.5
|
||||||
|
|
||||||
|
'@ctrl/tinycolor@3.6.1': {}
|
||||||
|
|
||||||
|
'@emotion/hash@0.9.2': {}
|
||||||
|
|
||||||
|
'@emotion/unitless@0.8.1': {}
|
||||||
|
|
||||||
|
'@esbuild/android-arm64@0.18.20':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/android-arm@0.18.20':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/android-x64@0.18.20':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/darwin-arm64@0.18.20':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/darwin-x64@0.18.20':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/freebsd-arm64@0.18.20':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/freebsd-x64@0.18.20':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/linux-arm64@0.18.20':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/linux-arm@0.18.20':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/linux-ia32@0.18.20':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/linux-loong64@0.18.20':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/linux-mips64el@0.18.20':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/linux-ppc64@0.18.20':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/linux-riscv64@0.18.20':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/linux-s390x@0.18.20':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/linux-x64@0.18.20':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/netbsd-x64@0.18.20':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/openbsd-x64@0.18.20':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/sunos-x64@0.18.20':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/win32-arm64@0.18.20':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/win32-ia32@0.18.20':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@esbuild/win32-x64@0.18.20':
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
'@jridgewell/sourcemap-codec@1.5.5': {}
|
||||||
|
|
||||||
|
'@simonwep/pickr@1.8.2':
|
||||||
|
dependencies:
|
||||||
|
core-js: 3.49.0
|
||||||
|
nanopop: 2.4.2
|
||||||
|
|
||||||
|
'@types/node@16.18.126': {}
|
||||||
|
|
||||||
|
'@vitejs/plugin-vue@4.6.2(vite@4.5.14(@types/node@16.18.126))(vue@3.5.30(typescript@4.9.5))':
|
||||||
|
dependencies:
|
||||||
|
vite: 4.5.14(@types/node@16.18.126)
|
||||||
|
vue: 3.5.30(typescript@4.9.5)
|
||||||
|
|
||||||
|
'@volar/code-gen@0.35.2':
|
||||||
|
dependencies:
|
||||||
|
'@volar/source-map': 0.35.2
|
||||||
|
|
||||||
|
'@volar/source-map@0.35.2': {}
|
||||||
|
|
||||||
|
'@volar/vue-code-gen@0.35.2':
|
||||||
|
dependencies:
|
||||||
|
'@volar/code-gen': 0.35.2
|
||||||
|
'@volar/source-map': 0.35.2
|
||||||
|
'@vue/compiler-core': 3.5.30
|
||||||
|
'@vue/compiler-dom': 3.5.30
|
||||||
|
'@vue/shared': 3.5.30
|
||||||
|
|
||||||
|
'@volar/vue-typescript@0.35.2':
|
||||||
|
dependencies:
|
||||||
|
'@volar/code-gen': 0.35.2
|
||||||
|
'@volar/source-map': 0.35.2
|
||||||
|
'@volar/vue-code-gen': 0.35.2
|
||||||
|
'@vue/compiler-sfc': 3.5.30
|
||||||
|
'@vue/reactivity': 3.5.30
|
||||||
|
|
||||||
|
'@vue/compiler-core@3.5.30':
|
||||||
|
dependencies:
|
||||||
|
'@babel/parser': 7.29.2
|
||||||
|
'@vue/shared': 3.5.30
|
||||||
|
entities: 7.0.1
|
||||||
|
estree-walker: 2.0.2
|
||||||
|
source-map-js: 1.2.1
|
||||||
|
|
||||||
|
'@vue/compiler-dom@3.5.30':
|
||||||
|
dependencies:
|
||||||
|
'@vue/compiler-core': 3.5.30
|
||||||
|
'@vue/shared': 3.5.30
|
||||||
|
|
||||||
|
'@vue/compiler-sfc@3.5.30':
|
||||||
|
dependencies:
|
||||||
|
'@babel/parser': 7.29.2
|
||||||
|
'@vue/compiler-core': 3.5.30
|
||||||
|
'@vue/compiler-dom': 3.5.30
|
||||||
|
'@vue/compiler-ssr': 3.5.30
|
||||||
|
'@vue/shared': 3.5.30
|
||||||
|
estree-walker: 2.0.2
|
||||||
|
magic-string: 0.30.21
|
||||||
|
postcss: 8.5.8
|
||||||
|
source-map-js: 1.2.1
|
||||||
|
|
||||||
|
'@vue/compiler-ssr@3.5.30':
|
||||||
|
dependencies:
|
||||||
|
'@vue/compiler-dom': 3.5.30
|
||||||
|
'@vue/shared': 3.5.30
|
||||||
|
|
||||||
|
'@vue/devtools-api@6.6.4': {}
|
||||||
|
|
||||||
|
'@vue/reactivity@3.5.30':
|
||||||
|
dependencies:
|
||||||
|
'@vue/shared': 3.5.30
|
||||||
|
|
||||||
|
'@vue/runtime-core@3.5.30':
|
||||||
|
dependencies:
|
||||||
|
'@vue/reactivity': 3.5.30
|
||||||
|
'@vue/shared': 3.5.30
|
||||||
|
|
||||||
|
'@vue/runtime-dom@3.5.30':
|
||||||
|
dependencies:
|
||||||
|
'@vue/reactivity': 3.5.30
|
||||||
|
'@vue/runtime-core': 3.5.30
|
||||||
|
'@vue/shared': 3.5.30
|
||||||
|
csstype: 3.2.3
|
||||||
|
|
||||||
|
'@vue/server-renderer@3.5.30(vue@3.5.30(typescript@4.9.5))':
|
||||||
|
dependencies:
|
||||||
|
'@vue/compiler-ssr': 3.5.30
|
||||||
|
'@vue/shared': 3.5.30
|
||||||
|
vue: 3.5.30(typescript@4.9.5)
|
||||||
|
|
||||||
|
'@vue/shared@3.5.30': {}
|
||||||
|
|
||||||
|
ant-design-vue@4.2.6(vue@3.5.30(typescript@4.9.5)):
|
||||||
|
dependencies:
|
||||||
|
'@ant-design/colors': 6.0.0
|
||||||
|
'@ant-design/icons-vue': 7.0.1(vue@3.5.30(typescript@4.9.5))
|
||||||
|
'@babel/runtime': 7.29.2
|
||||||
|
'@ctrl/tinycolor': 3.6.1
|
||||||
|
'@emotion/hash': 0.9.2
|
||||||
|
'@emotion/unitless': 0.8.1
|
||||||
|
'@simonwep/pickr': 1.8.2
|
||||||
|
array-tree-filter: 2.1.0
|
||||||
|
async-validator: 4.2.5
|
||||||
|
csstype: 3.2.3
|
||||||
|
dayjs: 1.11.20
|
||||||
|
dom-align: 1.12.4
|
||||||
|
dom-scroll-into-view: 2.0.1
|
||||||
|
lodash: 4.17.23
|
||||||
|
lodash-es: 4.17.23
|
||||||
|
resize-observer-polyfill: 1.5.1
|
||||||
|
scroll-into-view-if-needed: 2.2.31
|
||||||
|
shallow-equal: 1.2.1
|
||||||
|
stylis: 4.3.6
|
||||||
|
throttle-debounce: 5.0.2
|
||||||
|
vue: 3.5.30(typescript@4.9.5)
|
||||||
|
vue-types: 3.0.2(vue@3.5.30(typescript@4.9.5))
|
||||||
|
warning: 4.0.3
|
||||||
|
|
||||||
|
array-tree-filter@2.1.0: {}
|
||||||
|
|
||||||
|
async-validator@4.2.5: {}
|
||||||
|
|
||||||
|
compute-scroll-into-view@1.0.20: {}
|
||||||
|
|
||||||
|
core-js@3.49.0: {}
|
||||||
|
|
||||||
|
csstype@3.2.3: {}
|
||||||
|
|
||||||
|
dayjs@1.11.20: {}
|
||||||
|
|
||||||
|
dom-align@1.12.4: {}
|
||||||
|
|
||||||
|
dom-scroll-into-view@2.0.1: {}
|
||||||
|
|
||||||
|
entities@7.0.1: {}
|
||||||
|
|
||||||
|
esbuild@0.18.20:
|
||||||
|
optionalDependencies:
|
||||||
|
'@esbuild/android-arm': 0.18.20
|
||||||
|
'@esbuild/android-arm64': 0.18.20
|
||||||
|
'@esbuild/android-x64': 0.18.20
|
||||||
|
'@esbuild/darwin-arm64': 0.18.20
|
||||||
|
'@esbuild/darwin-x64': 0.18.20
|
||||||
|
'@esbuild/freebsd-arm64': 0.18.20
|
||||||
|
'@esbuild/freebsd-x64': 0.18.20
|
||||||
|
'@esbuild/linux-arm': 0.18.20
|
||||||
|
'@esbuild/linux-arm64': 0.18.20
|
||||||
|
'@esbuild/linux-ia32': 0.18.20
|
||||||
|
'@esbuild/linux-loong64': 0.18.20
|
||||||
|
'@esbuild/linux-mips64el': 0.18.20
|
||||||
|
'@esbuild/linux-ppc64': 0.18.20
|
||||||
|
'@esbuild/linux-riscv64': 0.18.20
|
||||||
|
'@esbuild/linux-s390x': 0.18.20
|
||||||
|
'@esbuild/linux-x64': 0.18.20
|
||||||
|
'@esbuild/netbsd-x64': 0.18.20
|
||||||
|
'@esbuild/openbsd-x64': 0.18.20
|
||||||
|
'@esbuild/sunos-x64': 0.18.20
|
||||||
|
'@esbuild/win32-arm64': 0.18.20
|
||||||
|
'@esbuild/win32-ia32': 0.18.20
|
||||||
|
'@esbuild/win32-x64': 0.18.20
|
||||||
|
|
||||||
|
estree-walker@2.0.2: {}
|
||||||
|
|
||||||
|
fsevents@2.3.3:
|
||||||
|
optional: true
|
||||||
|
|
||||||
|
is-plain-object@3.0.1: {}
|
||||||
|
|
||||||
|
js-tokens@4.0.0: {}
|
||||||
|
|
||||||
|
lodash-es@4.17.23: {}
|
||||||
|
|
||||||
|
lodash@4.17.23: {}
|
||||||
|
|
||||||
|
loose-envify@1.4.0:
|
||||||
|
dependencies:
|
||||||
|
js-tokens: 4.0.0
|
||||||
|
|
||||||
|
magic-string@0.30.21:
|
||||||
|
dependencies:
|
||||||
|
'@jridgewell/sourcemap-codec': 1.5.5
|
||||||
|
|
||||||
|
nanoid@3.3.11: {}
|
||||||
|
|
||||||
|
nanopop@2.4.2: {}
|
||||||
|
|
||||||
|
picocolors@1.1.1: {}
|
||||||
|
|
||||||
|
postcss@8.5.8:
|
||||||
|
dependencies:
|
||||||
|
nanoid: 3.3.11
|
||||||
|
picocolors: 1.1.1
|
||||||
|
source-map-js: 1.2.1
|
||||||
|
|
||||||
|
resize-observer-polyfill@1.5.1: {}
|
||||||
|
|
||||||
|
rollup@3.30.0:
|
||||||
|
optionalDependencies:
|
||||||
|
fsevents: 2.3.3
|
||||||
|
|
||||||
|
scroll-into-view-if-needed@2.2.31:
|
||||||
|
dependencies:
|
||||||
|
compute-scroll-into-view: 1.0.20
|
||||||
|
|
||||||
|
shallow-equal@1.2.1: {}
|
||||||
|
|
||||||
|
source-map-js@1.2.1: {}
|
||||||
|
|
||||||
|
stylis@4.3.6: {}
|
||||||
|
|
||||||
|
throttle-debounce@5.0.2: {}
|
||||||
|
|
||||||
|
typescript@4.9.5: {}
|
||||||
|
|
||||||
|
vite@4.5.14(@types/node@16.18.126):
|
||||||
|
dependencies:
|
||||||
|
esbuild: 0.18.20
|
||||||
|
postcss: 8.5.8
|
||||||
|
rollup: 3.30.0
|
||||||
|
optionalDependencies:
|
||||||
|
'@types/node': 16.18.126
|
||||||
|
fsevents: 2.3.3
|
||||||
|
|
||||||
|
vue-router@4.6.4(vue@3.5.30(typescript@4.9.5)):
|
||||||
|
dependencies:
|
||||||
|
'@vue/devtools-api': 6.6.4
|
||||||
|
vue: 3.5.30(typescript@4.9.5)
|
||||||
|
|
||||||
|
vue-tsc@0.35.2(typescript@4.9.5):
|
||||||
|
dependencies:
|
||||||
|
'@volar/vue-typescript': 0.35.2
|
||||||
|
typescript: 4.9.5
|
||||||
|
|
||||||
|
vue-types@3.0.2(vue@3.5.30(typescript@4.9.5)):
|
||||||
|
dependencies:
|
||||||
|
is-plain-object: 3.0.1
|
||||||
|
vue: 3.5.30(typescript@4.9.5)
|
||||||
|
|
||||||
|
vue@3.5.30(typescript@4.9.5):
|
||||||
|
dependencies:
|
||||||
|
'@vue/compiler-dom': 3.5.30
|
||||||
|
'@vue/compiler-sfc': 3.5.30
|
||||||
|
'@vue/runtime-dom': 3.5.30
|
||||||
|
'@vue/server-renderer': 3.5.30(vue@3.5.30(typescript@4.9.5))
|
||||||
|
'@vue/shared': 3.5.30
|
||||||
|
optionalDependencies:
|
||||||
|
typescript: 4.9.5
|
||||||
|
|
||||||
|
warning@4.0.3:
|
||||||
|
dependencies:
|
||||||
|
loose-envify: 1.4.0
|
||||||
14
frontend-process/public/manifest.json
Normal file
14
frontend-process/public/manifest.json
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
{
|
||||||
|
"name": "process",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"entry": "/process/",
|
||||||
|
"routeBase": "/process",
|
||||||
|
"routes": [
|
||||||
|
{
|
||||||
|
"path": "/process/antd-demo",
|
||||||
|
"title": "AntD Demo",
|
||||||
|
"perm": "process:demo:view"
|
||||||
|
}
|
||||||
|
]
|
||||||
|
}
|
||||||
|
|
||||||
4
frontend-process/src/App.vue
Normal file
4
frontend-process/src/App.vue
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
<template>
|
||||||
|
<router-view />
|
||||||
|
</template>
|
||||||
|
|
||||||
8
frontend-process/src/main.ts
Normal file
8
frontend-process/src/main.ts
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
import { createApp } from 'vue';
|
||||||
|
import App from './App.vue';
|
||||||
|
import router from './router';
|
||||||
|
import Antd from 'ant-design-vue';
|
||||||
|
import 'ant-design-vue/dist/reset.css';
|
||||||
|
|
||||||
|
createApp(App).use(router).use(Antd).mount('#app');
|
||||||
|
|
||||||
19
frontend-process/src/router/index.ts
Normal file
19
frontend-process/src/router/index.ts
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
import { createRouter, createWebHistory, RouteRecordRaw } from 'vue-router';
|
||||||
|
import Demo from '../views/Demo.vue';
|
||||||
|
|
||||||
|
const routes: RouteRecordRaw[] = [
|
||||||
|
{
|
||||||
|
path: '/',
|
||||||
|
redirect: '/antd-demo'
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/antd-demo',
|
||||||
|
component: Demo
|
||||||
|
}
|
||||||
|
];
|
||||||
|
|
||||||
|
export default createRouter({
|
||||||
|
history: createWebHistory('/process/'),
|
||||||
|
routes
|
||||||
|
});
|
||||||
|
|
||||||
49
frontend-process/src/views/Demo.vue
Normal file
49
frontend-process/src/views/Demo.vue
Normal file
@ -0,0 +1,49 @@
|
|||||||
|
<template>
|
||||||
|
<div style="padding: 24px">
|
||||||
|
<a-typography-title :level="3" style="margin: 0 0 12px 0">
|
||||||
|
Ant Design Vue Demo(front-process)
|
||||||
|
</a-typography-title>
|
||||||
|
|
||||||
|
<a-alert
|
||||||
|
message="该页面由 front-system 通过 Wujie 挂载展示"
|
||||||
|
type="success"
|
||||||
|
show-icon
|
||||||
|
style="margin-bottom: 16px"
|
||||||
|
/>
|
||||||
|
|
||||||
|
<a-space>
|
||||||
|
<a-button type="primary" @click="onClick">AntD 按钮</a-button>
|
||||||
|
<a-tag color="blue">Vue3 + Vite</a-tag>
|
||||||
|
<a-tag color="green">Ant Design Vue</a-tag>
|
||||||
|
</a-space>
|
||||||
|
|
||||||
|
<a-divider />
|
||||||
|
|
||||||
|
<a-card title="示例表格" :bordered="false">
|
||||||
|
<a-table :columns="columns" :data-source="data" :pagination="false" row-key="id" />
|
||||||
|
</a-card>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
import type { TableColumnsType } from 'ant-design-vue';
|
||||||
|
import { message } from 'ant-design-vue';
|
||||||
|
|
||||||
|
type Row = { id: number; name: string; status: string };
|
||||||
|
|
||||||
|
const columns: TableColumnsType<Row> = [
|
||||||
|
{ title: 'ID', dataIndex: 'id', key: 'id', width: 80 },
|
||||||
|
{ title: '名称', dataIndex: 'name', key: 'name' },
|
||||||
|
{ title: '状态', dataIndex: 'status', key: 'status', width: 120 }
|
||||||
|
];
|
||||||
|
|
||||||
|
const data: Row[] = [
|
||||||
|
{ id: 1, name: '流程A', status: '启用' },
|
||||||
|
{ id: 2, name: '流程B', status: '停用' }
|
||||||
|
];
|
||||||
|
|
||||||
|
function onClick() {
|
||||||
|
message.success('Ant Design Vue 组件工作正常');
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
19
frontend-process/tsconfig.json
Normal file
19
frontend-process/tsconfig.json
Normal file
@ -0,0 +1,19 @@
|
|||||||
|
{
|
||||||
|
"compilerOptions": {
|
||||||
|
"target": "ES2020",
|
||||||
|
"useDefineForClassFields": true,
|
||||||
|
"module": "ESNext",
|
||||||
|
"moduleResolution": "Bundler",
|
||||||
|
"strict": true,
|
||||||
|
"jsx": "preserve",
|
||||||
|
"resolveJsonModule": true,
|
||||||
|
"isolatedModules": true,
|
||||||
|
"esModuleInterop": true,
|
||||||
|
"lib": ["ES2020", "DOM", "DOM.Iterable"],
|
||||||
|
"skipLibCheck": true,
|
||||||
|
"types": ["vite/client"],
|
||||||
|
"noEmit": true
|
||||||
|
},
|
||||||
|
"include": ["src/**/*.ts", "src/**/*.d.ts", "src/**/*.tsx", "src/**/*.vue"]
|
||||||
|
}
|
||||||
|
|
||||||
13
frontend-process/vite.config.ts
Normal file
13
frontend-process/vite.config.ts
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
import { defineConfig } from 'vite';
|
||||||
|
import vue from '@vitejs/plugin-vue';
|
||||||
|
|
||||||
|
export default defineConfig({
|
||||||
|
base: '/process/',
|
||||||
|
plugins: [vue()],
|
||||||
|
server: {
|
||||||
|
host: '0.0.0.0',
|
||||||
|
port: 5174,
|
||||||
|
strictPort: true
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
@ -1,3 +1,3 @@
|
|||||||
registry=https://registry.npmjs.org
|
registry=https://registry.npmmirror.com
|
||||||
fetch-retries=5
|
fetch-retries=5
|
||||||
strict-peer-dependencies=false
|
strict-peer-dependencies=false
|
||||||
@ -32,7 +32,9 @@
|
|||||||
"vue": "^3.2.40",
|
"vue": "^3.2.40",
|
||||||
"vue-i18n": "^9.1.9",
|
"vue-i18n": "^9.1.9",
|
||||||
"vue-router": "^4.1.6",
|
"vue-router": "^4.1.6",
|
||||||
"vuedraggable": "^2.24.3"
|
"vuedraggable": "^2.24.3",
|
||||||
|
"wujie": "^1.0.24",
|
||||||
|
"wujie-vue3": "^1.0.24"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@commitlint/cli": "^16.2.3",
|
"@commitlint/cli": "^16.2.3",
|
||||||
|
|||||||
@ -77,6 +77,12 @@ importers:
|
|||||||
vuedraggable:
|
vuedraggable:
|
||||||
specifier: ^2.24.3
|
specifier: ^2.24.3
|
||||||
version: 2.24.3
|
version: 2.24.3
|
||||||
|
wujie:
|
||||||
|
specifier: ^1.0.24
|
||||||
|
version: 1.0.29
|
||||||
|
wujie-vue3:
|
||||||
|
specifier: ^1.0.24
|
||||||
|
version: 1.0.29(vue@3.5.24(typescript@4.9.5))
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@commitlint/cli':
|
'@commitlint/cli':
|
||||||
specifier: ^16.2.3
|
specifier: ^16.2.3
|
||||||
@ -3286,6 +3292,14 @@ packages:
|
|||||||
wrappy@1.0.2:
|
wrappy@1.0.2:
|
||||||
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
|
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
|
||||||
|
|
||||||
|
wujie-vue3@1.0.29:
|
||||||
|
resolution: {integrity: sha512-OGt5Veyq/DtmFzHQCANmv8nZgu877u7ZjS5qjFpSrtKARKhLjID3x99D40a4pb3Kj5UmRatkV5Gn5hqOWpziZQ==}
|
||||||
|
peerDependencies:
|
||||||
|
vue: ^3.0.0
|
||||||
|
|
||||||
|
wujie@1.0.29:
|
||||||
|
resolution: {integrity: sha512-u7PmBT4l5ov7ciwmZNG8DLIRKrYrnXDa0LnAFgRQikJ/ZrVZYzzSNz6duzEJoj8/o46dnMy/g9Hh/PBYGbgFUw==}
|
||||||
|
|
||||||
y18n@5.0.8:
|
y18n@5.0.8:
|
||||||
resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
|
resolution: {integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
@ -6747,6 +6761,15 @@ snapshots:
|
|||||||
|
|
||||||
wrappy@1.0.2: {}
|
wrappy@1.0.2: {}
|
||||||
|
|
||||||
|
wujie-vue3@1.0.29(vue@3.5.24(typescript@4.9.5)):
|
||||||
|
dependencies:
|
||||||
|
vue: 3.5.24(typescript@4.9.5)
|
||||||
|
wujie: 1.0.29
|
||||||
|
|
||||||
|
wujie@1.0.29:
|
||||||
|
dependencies:
|
||||||
|
'@babel/runtime': 7.28.4
|
||||||
|
|
||||||
y18n@5.0.8: {}
|
y18n@5.0.8: {}
|
||||||
|
|
||||||
yallist@4.0.0: {}
|
yallist@4.0.0: {}
|
||||||
|
|||||||
@ -17,6 +17,7 @@ import i18n from '@/lang/index';
|
|||||||
import '@/styles/index.scss';
|
import '@/styles/index.scss';
|
||||||
import 'element-plus/theme-chalk/index.css';
|
import 'element-plus/theme-chalk/index.css';
|
||||||
//import 'element-plus/theme-chalk/dark/css-vars.css';
|
//import 'element-plus/theme-chalk/dark/css-vars.css';
|
||||||
|
import WujieVue from 'wujie-vue3';
|
||||||
|
|
||||||
const app = createApp(App);
|
const app = createApp(App);
|
||||||
// 自定义指令
|
// 自定义指令
|
||||||
@ -38,5 +39,6 @@ app
|
|||||||
.component('Pagination', Pagination)
|
.component('Pagination', Pagination)
|
||||||
.use(router)
|
.use(router)
|
||||||
.use(ElementPlus)
|
.use(ElementPlus)
|
||||||
|
.use(WujieVue)
|
||||||
.use(i18n)
|
.use(i18n)
|
||||||
.mount('#app');
|
.mount('#app');
|
||||||
|
|||||||
@ -12,6 +12,10 @@ const permissionStore = usePermissionStoreHook();
|
|||||||
// 白名单路由
|
// 白名单路由
|
||||||
const whiteList = ['/login'];
|
const whiteList = ['/login'];
|
||||||
|
|
||||||
|
if (import.meta.env.DEV) {
|
||||||
|
whiteList.push('/process/antd-demo');
|
||||||
|
}
|
||||||
|
|
||||||
router.beforeEach(async (to, from, next) => {
|
router.beforeEach(async (to, from, next) => {
|
||||||
NProgress.start();
|
NProgress.start();
|
||||||
const userStore = useUserStoreHook();
|
const userStore = useUserStoreHook();
|
||||||
|
|||||||
@ -52,6 +52,21 @@ export const constantRoutes: RouteRecordRaw[] = [
|
|||||||
meta: { hidden: true }
|
meta: { hidden: true }
|
||||||
},
|
},
|
||||||
]
|
]
|
||||||
|
},
|
||||||
|
{
|
||||||
|
path: '/process',
|
||||||
|
opturl: '/process',
|
||||||
|
component: Layout,
|
||||||
|
redirect: '/process/antd-demo',
|
||||||
|
children: [
|
||||||
|
{
|
||||||
|
path: 'antd-demo',
|
||||||
|
opturl: '/process/antd-demo',
|
||||||
|
component: () => import('@/views/process/antd-demo.vue'),
|
||||||
|
name: 'AntD Demo',
|
||||||
|
meta: { title: 'AntD Demo' }
|
||||||
|
}
|
||||||
|
]
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
10
frontend/src/views/process/antd-demo.vue
Normal file
10
frontend/src/views/process/antd-demo.vue
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
<template>
|
||||||
|
<div style="height: 100%">
|
||||||
|
<WujieVue name="process" :url="entryUrl" :sync="true" />
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script setup lang="ts">
|
||||||
|
const entryUrl = import.meta.env.VITE_PROCESS_ENTRY || '/process/';
|
||||||
|
</script>
|
||||||
|
|
||||||
@ -31,6 +31,10 @@ export default ({ mode }: ConfigEnv): UserConfig => {
|
|||||||
changeOrigin: true,
|
changeOrigin: true,
|
||||||
rewrite: path =>
|
rewrite: path =>
|
||||||
path.replace(new RegExp('^' + env.VITE_APP_BASE_API), '')
|
path.replace(new RegExp('^' + env.VITE_APP_BASE_API), '')
|
||||||
|
},
|
||||||
|
'/process': {
|
||||||
|
target: 'http://localhost:5174',
|
||||||
|
changeOrigin: true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
|||||||
225
系统前端框架及集成方案.md
Normal file
225
系统前端框架及集成方案.md
Normal file
@ -0,0 +1,225 @@
|
|||||||
|
# 系统前端框架及集成方案(微前端:Wujie,双栈并存)
|
||||||
|
|
||||||
|
## 1. 背景与目标
|
||||||
|
|
||||||
|
### 1.1 背景
|
||||||
|
- 现有 `front-system`:基于 Vue3 + Vite + Element Plus,已完成登录、首页布局、菜单框架、权限管理配置等平台能力。
|
||||||
|
- 计划新增 `front-process`:基于 Vue3 + Vite + Ant Design Vue,承载“全过程平台”的业务模块开发。
|
||||||
|
- 诉求:业务模块页面能够被集成到 `front-system` 的菜单体系中,在同一系统壳内统一展示与导航。
|
||||||
|
- 约束:不要求子应用独立部署到不同域名(允许同域名不同路径)。
|
||||||
|
|
||||||
|
### 1.2 总体目标
|
||||||
|
- 双栈并存:`front-system` 使用 Element Plus;`front-process` 使用 Ant Design Vue。
|
||||||
|
- 平台壳统一:登录、鉴权、菜单、导航、用户态由 `front-system` 统一提供。
|
||||||
|
- 业务独立迭代:`front-process` 可独立开发、独立构建、独立发布(至少独立产物与版本),但最终可同域名部署。
|
||||||
|
- 集成稳定:支持深链接/刷新不 404;支持主/子应用通信;支持权限控制与菜单动态加载。
|
||||||
|
|
||||||
|
### 1.3 非目标(明确不做)
|
||||||
|
- 不在同一个页面/同一个组件树内混用 Element Plus 与 Ant Design Vue 的核心表单/表格/弹窗(避免样式与交互冲突)。
|
||||||
|
- 不追求主/子应用“运行时共享同一个 Vue 实例”这一类高复杂度共享(除非后续明确要求并引入更强的共享机制)。
|
||||||
|
|
||||||
|
## 2. 总体架构
|
||||||
|
|
||||||
|
### 2.1 角色划分
|
||||||
|
- Host(主应用):`front-system`
|
||||||
|
- 职责:登录、token 生命周期、用户信息、权限与菜单、系统配置、统一布局(header/sidebar/tabs)、全局路由守卫。
|
||||||
|
- 职责:提供微前端容器,负责挂载/卸载子应用。
|
||||||
|
- SubApp(子应用):`front-process`
|
||||||
|
- 职责:全过程业务模块页面与路由、业务页面内的权限展示(按钮/菜单项可见性)以及业务接口调用。
|
||||||
|
- 约束:不自行实现登录与 token 刷新;不与 Host 的存储策略强耦合(通过 Host SDK 读取)。
|
||||||
|
|
||||||
|
### 2.2 路由策略(同域名)
|
||||||
|
- 约定统一路由前缀:
|
||||||
|
- Host 自己页面:`/login`、`/system/**`、`/`(首页等)
|
||||||
|
- SubApp 页面前缀:`/process/**`
|
||||||
|
- Host 在路由命中 `/process/**` 时:
|
||||||
|
- 渲染“微前端容器页”(仅保留壳:菜单/页签/面包屑等)
|
||||||
|
- 将当前路径转发给子应用(由子应用 router 接管内部视图)
|
||||||
|
|
||||||
|
### 2.3 菜单与权限模型
|
||||||
|
- 菜单数据由 Host 统一维护(系统权限管理模块)。
|
||||||
|
- Host 菜单支持两类节点:
|
||||||
|
- Host 页面:`type=host`,如 `/system/role`
|
||||||
|
- 子应用页面:`type=micro`,如 `/process/order/list`,并包含 `app=process`
|
||||||
|
- 权限判断:
|
||||||
|
- Host:用于决定“菜单是否出现/路由是否允许进入”。
|
||||||
|
- SubApp:用于按钮/页面内部功能点可见性(通过 Host SDK 获取权限集合)。
|
||||||
|
|
||||||
|
## 3. 技术选型:Wujie(已选定)
|
||||||
|
|
||||||
|
### 3.1 选型结论
|
||||||
|
- 本方案明确选用:Wujie(Vue3 + Vite 场景)。
|
||||||
|
- 目标:在 `front-system`(Element Plus)不大改动的前提下,接入 `front-process`(Ant Design Vue)并进行样式隔离与生命周期治理。
|
||||||
|
|
||||||
|
### 3.2 选型理由
|
||||||
|
- 接入路径更直接:同域名、路由前缀、容器挂载属于 Wujie 的典型场景。
|
||||||
|
- 隔离能力更容易落地:可选 Shadow DOM/样式隔离能力,更适配现有 Host 中 Tailwind 与 Element Plus 全局样式覆盖的现状。
|
||||||
|
|
||||||
|
### 3.3 统一要求
|
||||||
|
- 明确“接入协议”(路由、菜单、鉴权、通信)并版本化。
|
||||||
|
- 子应用必须在容器内可重复 mount/unmount,不泄露全局事件、定时器、全局样式。
|
||||||
|
|
||||||
|
## 4. 仓库与工程结构建议
|
||||||
|
|
||||||
|
### 4.1 当前仓库结构(建议演进)
|
||||||
|
建议把前端拆为两个目录(可在同仓库内):
|
||||||
|
```
|
||||||
|
WholeProcessPlatform/
|
||||||
|
frontend-system/ # Host:Element Plus
|
||||||
|
frontend-process/ # SubApp:Ant Design Vue
|
||||||
|
backend/ # Spring Boot
|
||||||
|
```
|
||||||
|
|
||||||
|
如果短期不希望移动目录,也可以先在现有 `frontend/` 基础上复制一份 `frontend-process/`,逐步迁移到标准结构。
|
||||||
|
|
||||||
|
### 4.2 子应用产物与路径约定(同域名)
|
||||||
|
- Host 发布到:`/`(例如 `https://example.com/`)
|
||||||
|
- SubApp 发布到:`/process/`(例如 `https://example.com/process/`)
|
||||||
|
- 子应用构建时必须配置:
|
||||||
|
- `base: '/process/'`
|
||||||
|
- 资源路径、路由刷新策略与后端 rewrite 一致
|
||||||
|
|
||||||
|
## 5. 接入协议(核心:可迭代)
|
||||||
|
|
||||||
|
### 5.1 子应用 Manifest(推荐)
|
||||||
|
Host 通过一个标准 manifest 获取子应用信息,避免硬编码:
|
||||||
|
`GET /process/manifest.json`(同域名静态文件或接口均可)
|
||||||
|
|
||||||
|
示例:
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"name": "process",
|
||||||
|
"version": "1.0.0",
|
||||||
|
"entry": "/process/",
|
||||||
|
"routeBase": "/process",
|
||||||
|
"routes": [
|
||||||
|
{ "path": "/process/order/list", "title": "订单列表", "perm": "process:order:list" }
|
||||||
|
]
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
Host 使用方式:
|
||||||
|
- 菜单配置模块把 `perm/path/title/app` 写入系统菜单表。
|
||||||
|
- 或者 Host 启动时拉取 manifest,生成“可选菜单项”供管理员配置。
|
||||||
|
|
||||||
|
### 5.2 Host SDK(推荐:共享通信与鉴权)
|
||||||
|
提供一个统一 SDK(同仓库内共享文件或独立包),子应用只能通过 SDK 获取宿主能力。
|
||||||
|
|
||||||
|
接口建议(最小闭环):
|
||||||
|
- `getToken(): string | null`
|
||||||
|
- `getUser(): { id: string; username: string; roles: string[]; perms: string[] } | null`
|
||||||
|
- `hasPerm(code: string): boolean`
|
||||||
|
- `onAuthChanged(cb): () => void`
|
||||||
|
- `navigate(path: string): void`(由 Host 控制主路由)
|
||||||
|
- `getAppConfig(): Record<string, any>`
|
||||||
|
|
||||||
|
通信方式建议:
|
||||||
|
- 同窗口同域名:优先使用自定义事件(`window.dispatchEvent(new CustomEvent(...))`)或轻量事件总线。
|
||||||
|
- 避免子应用直接读写 Host 的 pinia/vuex store(强耦合)。
|
||||||
|
|
||||||
|
### 5.3 鉴权约定
|
||||||
|
- token 统一由 Host 管理:登录、刷新、退出、失效重登。
|
||||||
|
- 子应用请求后端 API 的 token 获取:
|
||||||
|
- `Authorization: Bearer <token>` 由子应用拦截器从 Host SDK 注入。
|
||||||
|
- 子应用不得自行实现登录页面与 token 刷新逻辑(避免双重刷新与状态打架)。
|
||||||
|
|
||||||
|
## 6. 样式隔离与 UI 共存策略(关键风险治理)
|
||||||
|
|
||||||
|
### 6.1 原则
|
||||||
|
- Host(Element Plus)与 SubApp(AntD)在同一 DOM 上下文时,必须最小化全局样式污染。
|
||||||
|
- 禁止在子应用里全局覆盖宿主样式(也不建议在宿主覆盖子应用)。
|
||||||
|
|
||||||
|
### 6.2 治理手段
|
||||||
|
- 选择 wujie 时:
|
||||||
|
- 优先开启样式隔离能力(根据实际接入方式选择 Shadow DOM 或样式沙箱)。
|
||||||
|
- Tailwind 风险:
|
||||||
|
- Host 当前使用 Tailwind 全局注入时,会影响子应用的基础样式(尤其 preflight/base)。
|
||||||
|
- 建议后续收敛:对子应用范围做隔离,或在 Host 中通过约定限制 tailwind base 的影响范围。
|
||||||
|
- 弹层与 z-index:
|
||||||
|
- AntD 与 Element Plus 都有 modal/message/notification。
|
||||||
|
- 约定:子应用弹层仅覆盖子应用容器;宿主弹层覆盖全局;避免跨应用调用对方 UI 弹层。
|
||||||
|
|
||||||
|
## 7. 本地开发联调模式(Dev)
|
||||||
|
|
||||||
|
### 7.1 端口约定(示例)
|
||||||
|
- backend:`8093`
|
||||||
|
- Host(front-system):`5173`
|
||||||
|
- SubApp(front-process):`5174`
|
||||||
|
|
||||||
|
### 7.2 代理与同域策略
|
||||||
|
由于“不要求独立域名”,本地开发仍建议通过代理实现“看起来同域”:
|
||||||
|
- Host dev server 代理:
|
||||||
|
- `/api` → `http://localhost:8093`
|
||||||
|
- `/process/` → `http://localhost:5174/`(子应用 dev server)
|
||||||
|
|
||||||
|
这样 Host 在开发态加载子应用时仍以 `/process/` 作为 entry,最大程度贴近生产路径。
|
||||||
|
|
||||||
|
## 7.3 Demo 联调(本仓库)
|
||||||
|
- Host(system)菜单项:`/process/antd-demo`
|
||||||
|
- 子应用(process)入口:`/process/`(由 Host 通过 Wujie 挂载)
|
||||||
|
- 本地启动顺序:
|
||||||
|
- 前置:Node.js 建议 18+(推荐 20+),pnpm 建议 9+(若本机 pnpm 版本过旧,可使用 `npx -y pnpm@9.15.4 ...` 代替 `pnpm ...`)
|
||||||
|
- 启动 `frontend-process`(子应用,端口 5174):
|
||||||
|
- `cd frontend-process && pnpm install && pnpm dev`
|
||||||
|
- 启动 `front-system`(Host,当前仓库的 `frontend`,端口 5173/自动找可用端口):
|
||||||
|
- `cd frontend && pnpm install && pnpm dev`
|
||||||
|
- 在 Host 菜单中进入“AntD Demo”页面进行验证
|
||||||
|
|
||||||
|
## 8. 生产部署方案(同域名)
|
||||||
|
|
||||||
|
### 8.1 Nginx(推荐)
|
||||||
|
- Host 静态文件:`/` 指向 host dist
|
||||||
|
- SubApp 静态文件:`/process/` 指向 subapp dist
|
||||||
|
- 后端接口:`/api/` 反向代理到 Spring Boot
|
||||||
|
- 路由刷新:对 `/` 和 `/process/` 分别做 fallback 到对应的 `index.html`
|
||||||
|
|
||||||
|
### 8.2 Spring Boot 静态资源(可行但需约束)
|
||||||
|
如果用 Spring Boot 统一承载静态资源:
|
||||||
|
- Host 构建产物放入 `backend/src/main/resources/static/`
|
||||||
|
- SubApp 构建产物放入 `backend/src/main/resources/static/process/`
|
||||||
|
- 需确保:
|
||||||
|
- Host 与 SubApp 的资源路径不冲突
|
||||||
|
- Spring MVC 对前端路由做 rewrite(尤其 `/process/**` 刷新)
|
||||||
|
|
||||||
|
## 9. 迭代计划(按里程碑)
|
||||||
|
|
||||||
|
### M1:微前端骨架(1 条链路跑通)
|
||||||
|
- Host 增加微前端容器页 `/process/**`
|
||||||
|
- SubApp 实现最小页面(例如 `/process/health`)
|
||||||
|
- Host 菜单可配置一个子应用菜单项并打开该页面
|
||||||
|
- Host SDK:实现 `getToken/getUser/hasPerm/navigate`
|
||||||
|
|
||||||
|
### M2:权限与菜单联动
|
||||||
|
- 菜单管理支持 `type=micro` 与 `app=process`
|
||||||
|
- 子应用按 `perm` 做按钮级展示
|
||||||
|
- 深链接与刷新校验通过(直接打开 `/process/**`)
|
||||||
|
|
||||||
|
### M3:工程治理
|
||||||
|
- 样式隔离策略固化(shadow dom / css sandbox)
|
||||||
|
- 错误边界:子应用加载失败时 Host 给出可恢复提示
|
||||||
|
- 性能优化:按路由懒加载子应用、预加载关键模块
|
||||||
|
|
||||||
|
## 10. 风险清单与应对
|
||||||
|
|
||||||
|
### 10.1 路由刷新 404
|
||||||
|
- 风险:/process/** 刷新时服务端不 rewrite 到 index.html。
|
||||||
|
- 应对:Nginx 或 Spring Boot rewrite 规则必须补齐,并对 Host/SubApp 各自生效。
|
||||||
|
|
||||||
|
### 10.2 鉴权状态不一致
|
||||||
|
- 风险:子应用自行刷新 token 或自行维护登录态。
|
||||||
|
- 应对:只允许 Host 管理 token;子应用通过 SDK 读取并订阅变更。
|
||||||
|
|
||||||
|
### 10.3 样式污染与弹层冲突
|
||||||
|
- 风险:Tailwind base、全局 reset、z-index。
|
||||||
|
- 应对:隔离策略 + 约定弹层边界 + 视觉回归检查。
|
||||||
|
|
||||||
|
### 10.4 版本错配
|
||||||
|
- 风险:Host 菜单/协议升级,子应用未同步。
|
||||||
|
- 应对:manifest 版本化;Host 对协议做兼容或强制版本一致发布。
|
||||||
|
|
||||||
|
## 11. 最小验收标准(可作为迭代验收)
|
||||||
|
- 登录成功后,Host 菜单可进入 `/process/**` 页面并正常展示子应用内容。
|
||||||
|
- 浏览器刷新 `/process/**` 不 404。
|
||||||
|
- 子应用通过 Host SDK 获取 token 调用后端 API 成功。
|
||||||
|
- Host 退出登录后,子应用自动感知并回到登录页(由 Host 控制导航)。
|
||||||
|
- 子应用异常(加载失败/运行时错误)不会导致 Host 白屏,Host 能提示并支持重试。
|
||||||
BIN
系统前端框架及集成方案.pdf
Normal file
BIN
系统前端框架及集成方案.pdf
Normal file
Binary file not shown.
Loading…
Reference in New Issue
Block a user