This commit is contained in:
ktianc 2023-09-22 15:22:55 +08:00
parent 61961b60c6
commit 91cb952f0c
797 changed files with 39517 additions and 10415 deletions

213
README.md
View File

@ -28,10 +28,11 @@ Kinit 是一套全部开源的快速开发平台,毫无保留给个人及企
- PC端采用 [vue-element-plus-admin](https://gitee.com/kailong110120130/vue-element-plus-admin) 、[Vue3](https://cn.vuejs.org/guide/introduction.html)、[Element Plus](https://element-plus.gitee.io/zh-CN/guide/design.html)、[TypeScript](https://www.tslang.cn/)等主流技术开发; - PC端采用 [vue-element-plus-admin](https://gitee.com/kailong110120130/vue-element-plus-admin) 、[Vue3](https://cn.vuejs.org/guide/introduction.html)、[Element Plus](https://element-plus.gitee.io/zh-CN/guide/design.html)、[TypeScript](https://www.tslang.cn/)等主流技术开发;
- 移动端采用 [uni-app](https://uniapp.dcloud.net.cn/component/)[Vue2](https://v2.cn.vuejs.org/v2/guide/)[uView 2](https://www.uviewui.com/components/intro.html)为主要技术开发; - 移动端采用 [uni-app](https://uniapp.dcloud.net.cn/component/)[Vue2](https://v2.cn.vuejs.org/v2/guide/)[uView 2](https://www.uviewui.com/components/intro.html)为主要技术开发;
- 后端加入 [Typer](https://typer.tiangolo.com/) 命令行应用,简单化数据初始化,数据表模型迁移等操作; - 后端加入 [Typer](https://typer.tiangolo.com/) 命令行应用,简单化数据初始化,数据表模型迁移等操作;
- 加入定时任务功能,采用 [APScheduler](https://github.com/agronholm/apscheduler) 定时任务框架 + [Redis](https://redis.io/) 消息队列 + [MongoDB](https://www.mongodb.com/) 持久存储; - 加入定时任务功能,采用 [APScheduler](https://github.com/agronholm/apscheduler) 定时任务框架 + [Redis](https://redis.io/) 消息队列 + [MongoDB](https://www.mongodb.com/) 持久存储;
- 权限认证使用[(哈希)密码和 JWT Bearer 令牌的 OAuth2](https://fastapi.tiangolo.com/zh/tutorial/security/oauth2-jwt/),支持多终端认证系统。 - 权限认证使用[(哈希)密码和 JWT Bearer 令牌的 OAuth2](https://fastapi.tiangolo.com/zh/tutorial/security/oauth2-jwt/),支持多终端认证系统。
- 支持加载动态权限菜单,多方式轻松权限控制,按钮级别权限控制。 - 支持加载动态权限菜单,多方式轻松权限控制,按钮级别权限控制。
- 已加入常见的 [MySQL](https://www.mysql.com/) + [MongoDB](https://www.mongodb.com/) + [Redis](https://redis.io/) 数据库异步操作。 - 已加入常见的 [MySQL](https://www.mysql.com/) + [MongoDB](https://www.mongodb.com/) + [Redis](https://redis.io/) 数据库异步操作。
- 支持 [docker-compose](https://docs.docker.com/compose/) 部署方式
- 开箱即用的中后台解决方案,可以用来作为新项目的启动模版,也可用于学习参考。并且时刻关注着最新技术动向,尽可能的第一时间更新。 - 开箱即用的中后台解决方案,可以用来作为新项目的启动模版,也可用于学习参考。并且时刻关注着最新技术动向,尽可能的第一时间更新。
- 与 [vue-element-plus-admin](https://gitee.com/kailong110120130/vue-element-plus-admin) 前端框架时刻保持同步更新。 - 与 [vue-element-plus-admin](https://gitee.com/kailong110120130/vue-element-plus-admin) 前端框架时刻保持同步更新。
@ -43,8 +44,6 @@ Kinit 是一套全部开源的快速开发平台,毫无保留给个人及企
[django-vue-admin](https://gitee.com/liqianglog/django-vue-admin)django-vue-admin 是一个优秀的基于 Django 开发后台管理系统 [django-vue-admin](https://gitee.com/liqianglog/django-vue-admin)django-vue-admin 是一个优秀的基于 Django 开发后台管理系统
[Ant Design Pro](https://preview.pro.ant.design/dashboard/analysis):开箱即用的中台前端/设计解决方案
[小诺开源技术 (xiaonuo.vip)](https://www.xiaonuo.vip/):国内首个国密前后端分离快速开发平台 [小诺开源技术 (xiaonuo.vip)](https://www.xiaonuo.vip/):国内首个国密前后端分离快速开发平台
## 在线体验 ## 在线体验
@ -98,6 +97,8 @@ github地址https://github.com/vvandk/kinit
- [x] 用户分布:接入高德地图显示各地区用户分布情况 - [x] 用户分布:接入高德地图显示各地区用户分布情况
- [x] 数据概览:提供两种数据统计展示模板,更直观的查看数据统计情况
- [x] 智慧大屏:大屏展示`办公室空气质量实时检测`数据分析 - [x] 智慧大屏:大屏展示`办公室空气质量实时检测`数据分析
- [x] 登录日志:用户登录日志记录和查询。 - [x] 登录日志:用户登录日志记录和查询。
@ -108,14 +109,6 @@ github地址https://github.com/vvandk/kinit
- [x] 导入导出:灵活支持数据导入导出功能 - [x] 导入导出:灵活支持数据导入导出功能
- [x] 简单适配手机端:
1. 工作台招呼语一行显示,多余显示省略号
2. 查询框宽度统一,需手动调整(强迫症建议)
3. 分页符更新,电脑端与手机端分页功能不同
4. 表格工具栏更新,手机端取消文字显示
5. 表格操作按钮多的时候自动叠起
- [x] 已加入常见的`Redis``MySQL``MongoDB`数据库异步操作。 - [x] 已加入常见的`Redis``MySQL``MongoDB`数据库异步操作。
- [x] 命令行操作:新加入 `Typer` 命令行应用,简单化数据初始化,数据表模型迁移。 - [x] 命令行操作:新加入 `Typer` 命令行应用,简单化数据初始化,数据表模型迁移。
@ -154,9 +147,7 @@ github地址https://github.com/vvandk/kinit
- [Es6+](https://gitee.com/link?target=http%3A%2F%2Fes6.ruanyifeng.com%2F) - 熟悉 es6 基本语法 - [Es6+](https://gitee.com/link?target=http%3A%2F%2Fes6.ruanyifeng.com%2F) - 熟悉 es6 基本语法
- [Vue-Router-Next](https://gitee.com/link?target=https%3A%2F%2Fnext.router.vuejs.org%2F) - 熟悉 vue-router 基本使用 - [Vue-Router-Next](https://gitee.com/link?target=https%3A%2F%2Fnext.router.vuejs.org%2F) - 熟悉 vue-router 基本使用
- [Element-Plus](https://gitee.com/link?target=https%3A%2F%2Felement-plus.org%2F) - element-plus 基本使用 - [Element-Plus](https://gitee.com/link?target=https%3A%2F%2Felement-plus.org%2F) - element-plus 基本使用
- [Mock.js](https://gitee.com/link?target=https%3A%2F%2Fgithub.com%2Fnuysoft%2FMock) - mockjs 基本语法
- [vue3-json-viewer](https://gitee.com/isfive/vue3-json-viewer)简单易用的json内容展示组件,适配vue3和vite。 - [vue3-json-viewer](https://gitee.com/isfive/vue3-json-viewer)简单易用的json内容展示组件,适配vue3和vite。
- [SortableJS/vue.draggable.next](https://github.com/SortableJS/vue.draggable.next)Vue 组件 Vue.js 3.0 允许拖放和与视图模型数组同步。
- [高德地图API (amap.com)](https://lbs.amap.com/api/jsapi-v2/guide/webcli/map-vue1):地图 JSAPI 2.0 是高德开放平台免费提供的第四代 Web 地图渲染引擎。 - [高德地图API (amap.com)](https://lbs.amap.com/api/jsapi-v2/guide/webcli/map-vue1):地图 JSAPI 2.0 是高德开放平台免费提供的第四代 Web 地图渲染引擎。
### 移动端 ### 移动端
@ -201,7 +192,16 @@ Redis (推荐使用最新稳定版)
pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/ pip3 install -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
``` ```
2. 修改项目数据库配置信息 2. 修改项目环境配置
修改 `application/settings.py` 文件
```python
"""安全警告: 不要在生产中打开调试运行!"""
DEBUG = True # 如果当前为开发环境则改为 True如果为生产环境则改为 False
```
3. 修改项目数据库配置信息
`application/config` 目录中 `application/config` 目录中
@ -273,7 +273,7 @@ Redis (推荐使用最新稳定版)
sqlalchemy.url = sqlalchemy.url = mysql+pymysql://root:123456@127.0.0.1/kinit sqlalchemy.url = sqlalchemy.url = mysql+pymysql://root:123456@127.0.0.1/kinit
``` ```
3. 创建数据库 4. 创建数据库
``` ```
mysql> create database kinit; # 创建数据库 mysql> create database kinit; # 创建数据库
@ -281,7 +281,7 @@ Redis (推荐使用最新稳定版)
mysql> set names utf8; # 设置编码 mysql> set names utf8; # 设置编码
``` ```
4. 初始化数据库数据 5. 初始化数据库数据
``` ```
# 项目根目录下执行,需提前创建好数据库 # 项目根目录下执行,需提前创建好数据库
@ -295,7 +295,7 @@ Redis (推荐使用最新稳定版)
python3 main.py init --env dev python3 main.py init --env dev
``` ```
5. 修改项目基本配置信息 6. 修改项目基本配置信息
修改数据库表 - vadmin_system_settings 中的关键信息 修改数据库表 - vadmin_system_settings 中的关键信息
@ -322,7 +322,7 @@ Redis (推荐使用最新稳定版)
email_port email_port
``` ```
6. 启动 7. 启动
``` ```
# 进入项目根目录下执行 # 进入项目根目录下执行
@ -402,6 +402,165 @@ pnpm run build:pro
- 账号:`15020221010` 密码:`kinit2022` - 账号:`15020221010` 密码:`kinit2022`
- 接口地址http://localhost:9000/docs (默认为此地址,如有修改请按照配置文件) - 接口地址http://localhost:9000/docs (默认为此地址,如有修改请按照配置文件)
## Docker Compose 生产环境部署
### 准备工作
1. 获取代码
```
git clone https://gitee.com/ktianc/kinit.git
```
2. 修改项目环境配置:
1. 修改 API 端:
文件路径为:`kinit-api/application/settings.py`
```python
"""安全警告: 不要在生产中打开调试运行!"""
DEBUG = False # 生产环境应该改为 False
```
2. 修改定时任务端:
文件路径为:`kinit-task/application/settings.py`
```python
"""安全警告: 不要在生产中打开调试运行!"""
DEBUG = False # 生产环境应该改为 False
```
3. 如果已有 Mysql 或者 Redis 或者 MongoDB 数据库,请修改如下内容,如果没有则不需要修改:
1. 修改 API 端配置文件:
文件路径为:`kinit-api/application/config/production.py`
```python
"""
Mysql 数据库配置项
连接引擎官方文档https://www.osgeo.cn/sqlalchemy/core/engines.html
数据库链接配置说明mysql+asyncmy://数据库用户名:数据库密码@数据库地址:数据库端口/数据库名称
"""
SQLALCHEMY_DATABASE_URL = "mysql+asyncmy://root:123456@177.8.0.7:3306/kinit"
"""
Redis 数据库配置
格式:"redis://:密码@地址:端口/数据库名称"
"""
REDIS_DB_ENABLE = True
REDIS_DB_URL = "redis://:123456@177.8.0.5:6379/1"
"""
MongoDB 数据库配置
格式mongodb://用户名:密码@地址:端口/?authSource=数据库名称
"""
MONGO_DB_ENABLE = True
MONGO_DB_NAME = "kinit"
MONGO_DB_URL = f"mongodb://kinit:123456@177.8.0.6:27017/?authSource={MONGO_DB_NAME}"
```
2. 修改定时任务配置文件
文件路径为:`kinit-task/application/config/production.py`
```python
"""
Redis 数据库配置
与接口是同一个数据库
格式:"redis://:密码@地址:端口/数据库名称"
"""
REDIS_DB_ENABLE = True
REDIS_DB_URL = "redis://:123456@177.8.0.5:6379/1"
"""
MongoDB 数据库配置
与接口是同一个数据库
格式mongodb://用户名:密码@地址:端口/?authSource=数据库名称
"""
MONGO_DB_ENABLE = True
MONGO_DB_NAME = "kinit"
MONGO_DB_URL = f"mongodb://kinit:123456@177.8.0.6:27017/?authSource={MONGO_DB_NAME}"
```
3. 将已有的数据库在 `docker-compose.yml` 文件中注释
4. 配置阿里云 OSS 与 IP 解析接口地址(可选)
文件路径:`kinit-api/application/config/production.py`
```python
"""
阿里云对象存储OSS配置
阿里云账号AccessKey拥有所有API的访问权限风险很高。强烈建议您创建并使用RAM用户进行API访问或日常运维请登录RAM控制台创建RAM用户。
yourEndpoint填写Bucket所在地域对应的Endpoint。以华东1杭州为例Endpoint填写为https://oss-cn-hangzhou.aliyuncs.com。
* [accessKeyId] {String}通过阿里云控制台创建的AccessKey。
* [accessKeySecret] {String}通过阿里云控制台创建的AccessSecret。
* [bucket] {String}通过控制台或PutBucket创建的bucket。
* [endpoint] {String}bucket所在的区域 默认oss-cn-hangzhou。
"""
ALIYUN_OSS = {
"accessKeyId": "accessKeyId",
"accessKeySecret": "accessKeySecret",
"endpoint": "endpoint",
"bucket": "bucket",
"baseUrl": "baseUrl"
}
"""
获取IP地址归属地
文档https://user.ip138.com/ip/doc
"""
IP_PARSE_ENABLE = False
IP_PARSE_TOKEN = "IP_PARSE_TOKEN"
```
5. 前端项目打包:
```shell
cd kinit-admin
# 安装依赖包
pnpm install
# 打包
pnpm run build:pro
```
### 启动并初始化项目
```shell
# 启动并创建所有容器
docker-compose up -d
# 初始化数据
docker-compose exec kinit-api python3 main.py init
# 重启所有容器
docker-compose restart
# 其他命令:
# 停止所有容器
docker-compose down
# 查看所有容器状态
docker-compose ps -a
```
### 访问项目
- 访问地址http://localhost (默认为此地址,如有修改请按照配置文件)
- 账号:`15020221010` 密码:`kinit2022`
- 接口地址http://localhost:9000/docs (默认为此地址,如有修改请按照配置文件)
## 如何贡献 ## 如何贡献
你可以[提一个 issue](https://gitee.com/link?target=https%3A%2F%2Fgithub.com%2Fkailong321200875%2Fvue-element-plus-admin%2Fissues%2Fnew) 或者提交一个 Pull Request。 你可以[提一个 issue](https://gitee.com/link?target=https%3A%2F%2Fgithub.com%2Fkailong321200875%2Fvue-element-plus-admin%2Fissues%2Fnew) 或者提交一个 Pull Request。
@ -414,24 +573,6 @@ pnpm run build:pro
4. 推送您的分支: `git push origin feat/xxxx` 4. 推送您的分支: `git push origin feat/xxxx`
5. 提交 `pull request` 5. 提交 `pull request`
## Git 贡献提交规范
- `feat` 新功能
- `fix` 修补 bug
- `docs` 文档
- `style` 格式、样式(不影响代码运行的变动)
- `refactor` 重构(即不是新增功能,也不是修改 BUG 的代码)
- `perf` 优化相关,比如提升性能、体验
- `test` 添加测试
- `build` 编译相关的修改,对项目构建或者依赖的改动
- `ci` 持续集成修改
- `chore` 构建过程或辅助工具的变动
- `revert` 回滚到上一个版本
- `workflow` 工作流改进
- `mod` 不确定分类的修改
- `wip` 开发中
- `types` 类型
## 浏览器支持 ## 浏览器支持
本地开发推荐使用 `Chrome 80+` 浏览器 本地开发推荐使用 `Chrome 80+` 浏览器

117
docker-compose.yml Normal file
View File

@ -0,0 +1,117 @@
version: "3"
services:
kinit-api:
container_name: kinit-api
restart: always
ports:
- "9000:9000"
expose:
- "9000"
build:
context: ./
dockerfile: ./docker_env/kinit-api/Dockerfile
environment:
TZ: "Asia/Shanghai"
volumes:
- ./kinit-api:/app
networks:
kinit_network:
ipv4_address: "177.8.0.2"
kinit-admin:
container_name: kinit-admin
restart: always
ports:
- "80:80"
expose:
- "80"
image: nginx:latest
environment:
TZ: "Asia/Shanghai"
volumes:
- ./docker_env/kinit-admin/nginx/nginx.conf:/etc/nginx/nginx.conf
- ./:/usr/share/nginx/html
networks:
kinit_network:
ipv4_address: "177.8.0.3"
kinit-task:
container_name: kinit-task
restart: always
build:
context: ./
dockerfile: ./docker_env/kinit-task/Dockerfile
environment:
TZ: "Asia/Shanghai"
volumes:
- ./kinit-task:/app
networks:
kinit_network:
ipv4_address: "177.8.0.4"
kinit-redis:
container_name: kinit-redis
restart: always
image: redis:latest
ports:
- "6379:6379"
expose:
- "6379"
volumes:
- ./docker_env/redis/conf/redis.conf:/etc/redis/redis.conf
environment:
TZ: "Asia/Shanghai"
networks:
kinit_network:
ipv4_address: "177.8.0.5"
command: redis-server /etc/redis/redis.conf
kinit-mongo:
container_name: kinit-mongo
restart: always
image: mongo:latest
ports:
- "27017:27017"
expose:
- "27017"
volumes:
- ./docker_env/mongo/data:/data/db
- ./docker_env/mongo/log:/data/log
- ./docker_env/mongo/init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js # 挂载初始化脚本
environment:
MONGO_INITDB_ROOT_USERNAME: admin # root 用户名
MONGO_INITDB_ROOT_PASSWORD: 123456 # root 用户密码
TZ: "Asia/Shanghai" # 设置时区
networks:
kinit_network:
ipv4_address: "177.8.0.6"
command: mongod --auth --bind_ip 0.0.0.0 # 启用身份验证和允许从任何IP连接
kinit-mysql:
container_name: kinit-mysql
restart: always
image: mysql:latest
ports:
- "3306:3306"
expose:
- "3306"
volumes:
- ./docker_env/mysql/conf:/etc/mysql/conf.d
- ./docker_env/mysql/data:/var/lib/mysql
- ./docker_env/mysql/logs:/logs
environment:
TZ: "Asia/Shanghai"
MYSQL_ROOT_PASSWORD: "123456"
MYSQL_DATABASE: "kinit"
networks:
kinit_network:
ipv4_address: "177.8.0.7"
networks:
kinit_network:
driver: bridge
ipam:
driver: default
config:
- subnet: "177.8.0.0/16"
gateway: "177.8.0.1"

View File

@ -0,0 +1,88 @@
# For more information on configuration, see:
# * Official English Documentation: http://nginx.org/en/docs/
# * Official Russian Documentation: http://nginx.org/ru/docs/
user nginx;
worker_processes auto;
error_log /var/log/nginx/error.log;
pid /run/nginx.pid;
# Load dynamic modules. See /usr/share/doc/nginx/README.dynamic.
include /usr/share/nginx/modules/*.conf;
events {
worker_connections 1024;
}
http {
log_format main '$remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for"';
access_log /var/log/nginx/access.log main;
sendfile on;
tcp_nopush on;
tcp_nodelay on;
keepalive_timeout 65;
types_hash_max_size 4096;
include /etc/nginx/mime.types;
default_type application/octet-stream;
server
{
listen 80;
server_name localhost;
client_max_body_size 100M;
location / {
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
set_real_ip_from 0.0.0.0/0;
real_ip_header X-Forwarded-For;
root /usr/share/nginx/html/kinit-admin/dist-pro;
index index.html;
try_files $uri $uri/ /index.html; # 防止刷新报404
}
location /api/ {
proxy_http_version 1.1;
proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Nginx-Proxy true;
set_real_ip_from 0.0.0.0/0;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
proxy_connect_timeout 600s;
proxy_read_timeout 600s;
proxy_send_timeout 600s;
real_ip_header X-Forwarded-For;
rewrite ^/api/(.*)$ /$1 break; #重写
proxy_pass http://177.8.0.2:9000/; # 设置代理服务器的协议和地址
}
location /media/ {
alias /usr/share/nginx/html/kinit-api/static/;
}
location /temp/ {
alias /usr/share/nginx/html/kinit-api/temp/;
}
location ~ /openapi\.json$ {
proxy_pass http://177.8.0.2:9000;
}
location @router {
rewrite ^.*$ /index.html break;
}
}
}

View File

@ -0,0 +1,9 @@
FROM python:3.10
COPY ./kinit-api/requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
WORKDIR /app
CMD [ "python", "main.py", "run"]

View File

@ -0,0 +1,9 @@
FROM python:3.10
COPY ./kinit-task/requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt -i https://mirrors.aliyun.com/pypi/simple/
WORKDIR /app
CMD [ "python", "main.py"]

View File

@ -0,0 +1,7 @@
db = db.getSiblingDB('kinit'); // 切换到要创建的数据库
db.createUser({
user: 'kinit',
pwd: '123456',
roles: ["readWrite", "dbAdmin"]
});

File diff suppressed because it is too large Load Diff

View File

@ -1,7 +1,10 @@
# 环境 # 环境
NODE_ENV=development NODE_ENV=development
# 访问基础路径 # 接口前缀
VITE_API_BASE_PATH=dev
# 打包路径
VITE_BASE_PATH=/ VITE_BASE_PATH=/
# 是否删除debugger # 是否删除debugger
@ -13,7 +16,7 @@ VITE_DROP_CONSOLE=false
# 是否sourcemap # 是否sourcemap
VITE_SOURCEMAP=true VITE_SOURCEMAP=true
# 打包输出路径 # 输出路径
VITE_OUT_DIR=dist-dev VITE_OUT_DIR=dist-dev
# 标题 # 标题

View File

@ -1,7 +1,10 @@
# 环境 # 环境
NODE_ENV=production NODE_ENV=production
# 访问基础路径 # 接口前缀
VITE_API_BASE_PATH=pro
# 打包路径
VITE_BASE_PATH=/ VITE_BASE_PATH=/
# 是否删除debugger # 是否删除debugger
@ -13,7 +16,7 @@ VITE_DROP_CONSOLE=true
# 是否sourcemap # 是否sourcemap
VITE_SOURCEMAP=false VITE_SOURCEMAP=false
# 打包输出路径 # 输出路径
VITE_OUT_DIR=dist-pro VITE_OUT_DIR=dist-pro
# 标题 # 标题

View File

@ -24,6 +24,7 @@ module.exports = defineConfig({
'plugin:prettier/recommended' 'plugin:prettier/recommended'
], ],
rules: { rules: {
'vue/no-setup-props-destructure': 'off',
'vue/script-setup-uses-vars': 'error', 'vue/script-setup-uses-vars': 'error',
'vue/no-reserved-component-names': 'off', 'vue/no-reserved-component-names': 'off',
'@typescript-eslint/ban-ts-ignore': 'off', '@typescript-eslint/ban-ts-ignore': 'off',

View File

@ -1,130 +0,0 @@
name: Automerge
on:
pull_request:
types:
- labeled
- unlabeled
- synchronize
- opened
- edited
- ready_for_review
- reopened
- unlocked
pull_request_review:
types:
- submitted
status: {}
jobs:
# 合并发布版本的 pr 到 master
auto-merge:
runs-on: ubuntu-latest
steps:
- name: Automerge
uses: 'pascalgn/automerge-action@v0.14.3'
env:
GITHUB_TOKEN: '${{ secrets.TOKEN }}'
MERGE_LABELS: ''
MERGE_FILTER_AUTHOR: 'kailong321200875'
push-to-gh-pages:
needs: [auto-merge]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Pnpm
uses: pnpm/action-setup@v2
with:
version: latest
- name: use Node.js 16
uses: actions/setup-node@v2.1.2
with:
node-version: '16.x'
- name: Set SSH Environment
env:
DOCS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
run: |
mkdir -p ~/.ssh/
echo "$ACTIONS_DEPLOY_KEY" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com > ~/.ssh/known_hosts
chmod 700 ~/.ssh && chmod 600 ~/.ssh/*
git config --local user.email "321200875@qq.com"
git config --local user.name "kailong321200875"
# 发布到 github
- name: Build Github
run: |
pnpm install --no-frozen-lockfile
pnpm run build:pro
- name: Deploy Github
uses: peaceiris/actions-gh-pages@v3
with:
deploy_key: ${{secrets.ACTIONS_DEPLOY_KEY}}
publish_branch: gh-pages
publish_dir: ./dist-pro
force_orphan: true
cname: element-plus-admin.cn
push-to-gh-pages-gitee:
needs: [auto-merge]
runs-on: ubuntu-latest
steps:
- name: Checkout
uses: actions/checkout@v2
- name: Setup Pnpm
uses: pnpm/action-setup@v2
with:
version: latest
- name: use Node.js 16
uses: actions/setup-node@v2.1.2
with:
node-version: '16.x'
- name: Set SSH Environment
env:
DOCS_DEPLOY_KEY: ${{ secrets.ACTIONS_DEPLOY_KEY }}
run: |
mkdir -p ~/.ssh/
echo "$ACTIONS_DEPLOY_KEY" > ~/.ssh/id_rsa
chmod 600 ~/.ssh/id_rsa
ssh-keyscan github.com > ~/.ssh/known_hosts
chmod 700 ~/.ssh && chmod 600 ~/.ssh/*
git config --local user.email "321200875@qq.com"
git config --local user.name "kailong321200875"
- name: Build Gitee
run: |
pnpm install --no-frozen-lockfile
pnpm run build:gitee
# 发布到 gitee
- name: Deploy Gitee
uses: peaceiris/actions-gh-pages@v3
with:
deploy_key: ${{secrets.ACTIONS_DEPLOY_KEY}}
publish_branch: gh-pages-gitee
publish_dir: ./dist-pro
force_orphan: true
- name: Sync Github Repos To Gitee # 名字随便起
uses: Yikun/hub-mirror-action@v1.1 # 使用Yikun/hub-mirror-action
with:
src: github/kailong321200875 # 源端账户名(github)
dst: gitee/kailong110120130 # 目的端账户名(gitee)
dst_key: ${{ secrets.ACTIONS_DEPLOY_KEY }} # SSH密钥对中的私钥
dst_token: ${{ secrets.GITEE_TOKEN }} # Gitee账户的私人令牌
account_type: user # 账户类型
clone_style: 'https' # 使用https方式进行clone也可以使用ssh
debug: true # 启用后会显示所有执行命令
force_update: true # 启用后,强制同步,即强制覆盖目的端仓库
static_list: 'vue-element-plus-admin' # 静态同步列表,在此填写需要同步的仓库名称,可填写多个
timeout: '600s' # git超时设置超时后会自动重试git操作

View File

@ -1,25 +0,0 @@
on:
push:
branches:
- master
jobs:
contrib-readme-en-job:
runs-on: ubuntu-latest
name: A job to automate contrib in readme
steps:
- name: Contribute List
uses: akhilmhdh/contributors-readme-action@v2.3.4
env:
GITHUB_TOKEN: ${{ secrets.CONTRIBUTORS_TOKEN }}
contrib-readme-job:
runs-on: ubuntu-latest
name: A job to automate contrib in readme.zh-CN
steps:
- name: Contribute List
uses: akhilmhdh/contributors-readme-action@v2.3.4
with:
readme_path: README.zh-CN.md
env:
GITHUB_TOKEN: ${{ secrets.CONTRIBUTORS_TOKEN }}

View File

@ -1,18 +0,0 @@
on:
push:
branches:
- master
name: Release
jobs:
release-please:
runs-on: ubuntu-latest
steps:
- uses: GoogleCloudPlatform/release-please-action@v3
id: release
with:
token: ${{ secrets.TOKEN }}
release-type: node
package-name: standard-version
changelog-types: '[{"type": "types", "section":"Types", "hidden": false},{"type": "revert", "section":"Reverts", "hidden": false},{"type": "feat", "section": "Features", "hidden": false},{"type": "fix", "section": "Bug Fixes", "hidden": false},{"type": "improvement", "section": "Feature Improvements", "hidden": false},{"type": "docs", "section":"Docs", "hidden": false},{"type": "style", "section":"Styling", "hidden": false},{"type": "refactor", "section":"Code Refactoring", "hidden": false},{"type": "perf", "section":"Performance Improvements", "hidden": false},{"type": "test", "section":"Tests", "hidden": false},{"type": "build", "section":"Build System", "hidden": false},{"type": "ci", "section":"CI", "hidden":false}]'

View File

@ -1,4 +0,0 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
pnpm commitlint --edit "$1"

View File

@ -1,9 +0,0 @@
module.exports = {
'*.{js,jsx,ts,tsx}': ['eslint --fix', 'prettier --write'],
'{!(package)*.json,*.code-snippets,.!(browserslist)*rc}': ['prettier --write--parser json'],
'package.json': ['prettier --write'],
'*.vue': ['prettier --write', 'stylelint --fix'],
'*.{scss,less,styl,css,html}': ['stylelint --fix', 'prettier --write'],
'*.md': ['prettier --write'],
'*.hbs': ['prettier --write']
}

View File

@ -1,8 +0,0 @@
#!/bin/sh
. "$(dirname "$0")/_/husky.sh"
[ -n "$CI" ] && exit 0
# Format and submit code according to lintstagedrc.js configuration
npm run ts:check
npm run lint:lint-staged

View File

@ -5,14 +5,14 @@
"source.fixAll.eslint": true "source.fixAll.eslint": true
}, },
"[vue]": { "[vue]": {
"editor.defaultFormatter": "Vue.volar" "editor.defaultFormatter": "rvest.vs-code-prettier-eslint"
}, },
"i18n-ally.localesPaths": ["src/locales"], "i18n-ally.localesPaths": ["src/locales"],
"i18n-ally.keystyle": "nested", "i18n-ally.keystyle": "nested",
"i18n-ally.sortKeys": true, "i18n-ally.sortKeys": true,
"i18n-ally.namespace": false, "i18n-ally.namespace": false,
"i18n-ally.enabledParsers": ["ts"], "i18n-ally.enabledParsers": ["ts"],
"i18n-ally.sourceLanguage": "en", "i18n-ally.sourceLanguage": "zh-CN",
"i18n-ally.displayLanguage": "zh-CN", "i18n-ally.displayLanguage": "zh-CN",
"i18n-ally.enabledFrameworks": ["vue", "react"], "i18n-ally.enabledFrameworks": ["vue", "react"],
"god.tsconfig": "./tsconfig.json" "god.tsconfig": "./tsconfig.json"

File diff suppressed because it is too large Load Diff

View File

@ -2,12 +2,21 @@
vue-element-plus-admin 是一个基于 `element-plus` 免费开源的中后台模版。使用了最新的`vue3``vite4``TypeScript`等主流技术开发,开箱即用的中后台前端解决方案,可以用来作为项目的启动模版,也可用于学习参考。并且时刻关注着最新技术动向,尽可能的第一时间更新。 vue-element-plus-admin 是一个基于 `element-plus` 免费开源的中后台模版。使用了最新的`vue3``vite4``TypeScript`等主流技术开发,开箱即用的中后台前端解决方案,可以用来作为项目的启动模版,也可用于学习参考。并且时刻关注着最新技术动向,尽可能的第一时间更新。
## 介绍
vue-element-plus-admin 是一个基于 `element-plus` 免费开源的中后台模版。使用了最新的`vue3``vite``TypeScript`等主流技术开发,开箱即用的中后台前端解决方案,可以用来作为项目的启动模版,也可用于学习参考。并且时刻关注着最新技术动向,尽可能的第一时间更新。
vue-element-plus-admin 的定位是后台集成方案,不太适合当基础模板来进行二次开发。因为集成了很多你可能用不到的功能,会造成不少的代码冗余。如果你的项目不关注这方面的问题,也可以直接基于它进行二次开发。
如需要基础模版,请切换到 `mini` 分支,`mini` 只简单集成了一些如:布局、动态菜单等常用布局功能,更适合开发者进行二次开发。
## 特性 ## 特性
- **最新技术栈**:使用 Vue3/vite4 等前端前沿技术开发 - **最新技术栈**:使用 Vue3/vite4 等前端前沿技术开发
- **TypeScript**: 应用程序级 JavaScript 的语言 - **TypeScript**: 应用程序级 JavaScript 的语言
- **主题**: 可配置的主题 - **主题**: 可配置的主题
- **国际化**:内置完善的国际化方案 - **国际化**:内置完善的国际化方案
- **自定义数据** 内置 Mock 数据方案
- **权限** 内置完善的动态路由权限生成方案 - **权限** 内置完善的动态路由权限生成方案
- **组件** 二次封装了多个常用的组件 - **组件** 二次封装了多个常用的组件
- **示例** 内置丰富的示例 - **示例** 内置丰富的示例
@ -17,11 +26,9 @@ vue-element-plus-admin 是一个基于 `element-plus` 免费开源的中后台
- [vue-element-plus-admin](https://element-plus-admin.cn/) - 完整版 github 站点 - [vue-element-plus-admin](https://element-plus-admin.cn/) - 完整版 github 站点
- [vue-element-plus-admin](https://kailong110120130.gitee.io/vue-element-plus-admin) - 完整版 gitee 站点 - [vue-element-plus-admin](https://kailong110120130.gitee.io/vue-element-plus-admin) - 完整版 gitee 站点
帐号:**admin/admin test/test** 帐号:**admin/admin**
`admin` 帐号用于模拟服务端控制权限,服务端返回什么就渲染什么 在线例子默认不适用菜单过滤,而是直接使用静态路由表
`test` 帐号用于模拟前端控制权限,服务端只返回需要显示的菜单 key前端进行匹配渲染
## 文档 ## 文档
@ -32,7 +39,7 @@ vue-element-plus-admin 是一个基于 `element-plus` 免费开源的中后台
## 前序准备 ## 前序准备
- [node](http://nodejs.org/) 和 [git](https://git-scm.com/) - 项目开发环境 - [node](http://nodejs.org/) 和 [git](https://git-scm.com/) - 项目开发环境
- [Vite](https://vitejs.dev/) - 熟悉 vite 特性 - [Vite4](https://vitejs.dev/) - 熟悉 vite 特性
- [Vue3](https://v3.vuejs.org/) - 熟悉 Vue 基础语法 - [Vue3](https://v3.vuejs.org/) - 熟悉 Vue 基础语法
- [TypeScript](https://www.typescriptlang.org/) - 熟悉 `TypeScript` 基本语法 - [TypeScript](https://www.typescriptlang.org/) - 熟悉 `TypeScript` 基本语法
- [Es6+](http://es6.ruanyifeng.com/) - 熟悉 es6 基本语法 - [Es6+](http://es6.ruanyifeng.com/) - 熟悉 es6 基本语法
@ -51,12 +58,6 @@ git clone https://github.com/kailong321200875/vue-element-plus-admin.git
- 安装依赖 - 安装依赖
```bash ```bash
临时修改
pnpm --registry https://registry.npm.taobao.org install any-touch
持久使用
pnpm config set registry https://registry.npm.taobao.org
cd vue-element-plus-admin cd vue-element-plus-admin
pnpm install pnpm install

View File

@ -1,28 +0,0 @@
module.exports = {
extends: ['@commitlint/config-conventional'],
rules: {
'type-enum': [
2,
'always',
[
'feat', // 新功能(feature)
'fix', // 修补bug
'docs', // 文档(documentation)
'style', // 格式样式(不影响代码运行的变动)
'refactor', // 重构(即不是新增功能也不是修改BUG的代码)
'perf', // 优化相关比如提升性能体验
'test', // 添加测试
'ci', // 持续集成修改
'chore', // 构建过程或辅助工具的变动
'revert', // 回滚到上一个版本
'workflow', // 工作流改进
'mod', // 不确定分类的修改
'wip', // 开发中
'types', // 类型修改
'release' // 版本发布
]
],
'subject-full-stop': [0, 'never'],
'subject-case': [0, 'never']
}
}

View File

@ -0,0 +1 @@
import{_ as r}from"./Error.vue_vue_type_script_setup_true_lang-35cdf1c0.js";import{e as s,K as o,o as t,l as e,k as p}from"./index-9da7d198.js";import"./el-button-8f21380c.js";import"./use-form-item-8b7f5d34.js";import"./use-form-common-props-9d083c67.js";import"./index-cde97138.js";const m=s({__name:"403",setup(s){const{push:m}=o(),a=()=>{m("/")};return(s,o)=>(t(),e(p(r),{type:"403",onErrorClick:a}))}});export{m as default};

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 13 KiB

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 13 KiB

View File

@ -0,0 +1 @@
import{_ as r}from"./Error.vue_vue_type_script_setup_true_lang-35cdf1c0.js";import{e as s,K as o,o as t,l as e,k as m}from"./index-9da7d198.js";import"./el-button-8f21380c.js";import"./use-form-item-8b7f5d34.js";import"./use-form-common-props-9d083c67.js";import"./index-cde97138.js";const p=s({__name:"404",setup(s){const{push:p}=o(),a=()=>{p("/")};return(s,o)=>(t(),e(m(r),{onErrorClick:a}))}});export{p as default};

View File

@ -0,0 +1 @@
import{_ as r}from"./Error.vue_vue_type_script_setup_true_lang-35cdf1c0.js";import{e as s,K as o,o as t,l as e,k as p}from"./index-9da7d198.js";import"./el-button-8f21380c.js";import"./use-form-item-8b7f5d34.js";import"./use-form-common-props-9d083c67.js";import"./index-cde97138.js";const m=s({__name:"500",setup(s){const{push:m}=o(),a=()=>{m("/")};return(s,o)=>(t(),e(p(r),{type:"500",onErrorClick:a}))}});export{m as default};

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 19 KiB

View File

@ -0,0 +1 @@
import{_ as e}from"./Agreement.vue_vue_type_script_setup_true_lang-6427a6dd.js";import"./index-9da7d198.js";import"./el-button-8f21380c.js";import"./use-form-item-8b7f5d34.js";import"./use-form-common-props-9d083c67.js";import"./index-cde97138.js";import"./style.css_vue_type_style_index_0_src_true_lang-0e7f3b44.js";export{e as default};

View File

@ -0,0 +1 @@
import{e,W as a,r as s,o as r,j as t,x as l,k as o,y as n,m as u,N as i,a3 as c,ai as d,dF as m,P as _}from"./index-9da7d198.js";import{E as f}from"./el-button-8f21380c.js";import{_ as p}from"./style.css_vue_type_style_index_0_src_true_lang-0e7f3b44.js";const y={class:"mt-10px",style:{float:"right"}},g=e({__name:"Agreement",props:{tabId:a.number},setup(e){const a=e,g=s(),b=s(""),v=async()=>{const e=await d({tab_id:a.tabId});e&&(b.value=e.data.web_agreement||"")},w=s(!1),k=async()=>{w.value=!0;try{const e=s({});if(e.value=await m({web_agreement:b.value}),e.value)return v(),_.success("更新成功")}finally{w.value=!1}},x={customAlert:(e,a)=>{switch(a){case"success":_.success(e);break;case"info":default:_.info(e);break;case"warning":_.warning(e);break;case"error":_.error(e)}},autoFocus:!0,scroll:!0,readOnly:!1,uploadImgShowBase64:!0};return v(),(e,a)=>(r(),t(c,null,[l(o(p),{modelValue:b.value,"onUpdate:modelValue":a[0]||(a[0]=e=>b.value=e),ref_key:"editorRef",ref:g,editorId:"web_agreement",editorConfig:x},null,8,["modelValue"]),n("div",y,[l(o(f),{loading:w.value,type:"primary",onClick:k},{default:u((()=>[i("立即保存")])),_:1},8,["loading"])])],64))}});export{g as _};

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
:export{namespace:v;elNamespace:el}#data-view{width:100%;height:100%;background-color:#030409;color:#fff}#data-view #dv-full-screen-container{background-image:url(/assets/bg-2b98324a.png);background-size:100% 100%;box-shadow:0 0 3px #00f;display:flex;flex-direction:column}

View File

@ -0,0 +1 @@
import{_ as e}from"./Finance.vue_vue_type_script_setup_true_lang-3fb27710.js";import{e as s,r as t,o,j as r,x as a,m as i,k as p}from"./index-9da7d198.js";import{a as m,E as l}from"./el-tab-pane-5d623fbd.js";import{_ as u}from"./User.vue_vue_type_script_setup_true_lang-356c0f0a.js";import"./el-col-d9273186.js";import"./el-divider-fc00d058.js";import"./el-skeleton-item-c29f45f2.js";import"./el-table-column-102f47a6.js";import"./el-popper-2fae9050.js";import"./isNil-1f22f7b0.js";import"./index-cde97138.js";import"./use-form-common-props-9d083c67.js";import"./el-tag-aef2ce12.js";import"./index-13d6a136.js";import"./event-5568c9d8.js";import"./use-form-item-8b7f5d34.js";import"./debounce-778af7ed.js";import"./el-tooltip-4ed993c7.js";import"./el-input-26eda071.js";import"./el-date-picker-f32b0b71.js";import"./el-button-8f21380c.js";import"./Echart.vue_vue_type_script_setup_true_lang-94a01568.js";import"./strings-e2e316bd.js";import"./vnode-ae242abb.js";const n={class:"p-5"},j=s({name:"DashboardAnalysis",__name:"Analysis",setup(s){const j=t("user");return(s,t)=>(o(),r("div",n,[a(p(l),{modelValue:j.value,"onUpdate:modelValue":t[0]||(t[0]=e=>j.value=e)},{default:i((()=>[a(p(m),{label:"财务分析",name:"finance",lazy:!0},{default:i((()=>[a(e)])),_:1}),a(p(m),{label:"客户分析",name:"user",lazy:!0},{default:i((()=>[a(u)])),_:1})])),_:1},8,["modelValue"])]))}});export{j as default};

View File

@ -0,0 +1 @@
:export{namespace:v;elNamespace:el}.system-settings-basic-image-uploader .logo-image{width:178px;height:178px;display:block}.system-settings-basic-image-uploader .ico-image{width:100px;height:100px;display:block}.system-settings-basic-image-uploader .el-upload{border:1px dashed var(--el-border-color);border-radius:6px;cursor:pointer;position:relative;overflow:hidden;transition:var(--el-transition-duration-fast)}.system-settings-basic-image-uploader .el-upload:hover{border-color:var(--el-color-primary)}.system-settings-basic-image-uploader .el-icon.logo-image-uploader-icon{font-size:28px;color:#8c939d;width:178px;height:178px;text-align:center}.system-settings-basic-image-uploader .el-icon.ico-image-uploader-icon{font-size:28px;color:#8c939d;width:100px;height:100px;text-align:center}

View File

@ -0,0 +1 @@
import{_ as s}from"./Basic.vue_vue_type_style_index_0_lang-7f68abc2.js";import"./useForm-ecbcdb43.js";import"./index-9da7d198.js";import"./el-col-d9273186.js";import"./el-tooltip-4ed993c7.js";import"./el-popper-2fae9050.js";import"./isNil-1f22f7b0.js";import"./index-cde97138.js";import"./use-form-common-props-9d083c67.js";import"./el-input-26eda071.js";import"./event-5568c9d8.js";import"./use-form-item-8b7f5d34.js";import"./el-tag-aef2ce12.js";import"./index-13d6a136.js";import"./el-checkbox-group-b617b779.js";import"./el-button-8f21380c.js";import"./el-date-picker-f32b0b71.js";import"./debounce-778af7ed.js";import"./el-switch-7720805d.js";import"./el-divider-fc00d058.js";import"./el-progress-69812d34.js";import"./style.css_vue_type_style_index_0_src_true_lang-0e7f3b44.js";import"./index-14d9f390.js";import"./strings-e2e316bd.js";import"./index-4dbb39b8.js";import"./useValidator-e352e7a8.js";export{s as default};

View File

@ -0,0 +1 @@
import{u as e,F as a}from"./useForm-ecbcdb43.js";import{e as o,W as s,A as t,M as l,x as i,E as r,ak as n,N as p,a3 as c,r as m,P as d,dF as u,o as g,l as b,k as f,S as w,ai as _}from"./index-9da7d198.js";import{E as h}from"./el-button-8f21380c.js";import{E as y}from"./el-progress-69812d34.js";import{u as P}from"./useValidator-e352e7a8.js";const I=o({__name:"Basic",props:{tabId:s.number},setup(o){const s=o,{required:I}=P(),{getStorage:v}=w(),x=t(),O=v(x.getToken),j=l([{field:"web_title",label:"系统标题",colProps:{span:24},component:"Input",componentProps:{style:{width:"500px"}}},{field:"web_logo",label:"系统 LOGO",colProps:{span:24},formItemProps:{slots:{default:e=>i(y,{class:"system-settings-basic-image-uploader",action:"/api/vadmin/system/upload/image/to/local",data:{path:"system"},"show-file-list":!1,"before-upload":e=>{const a=["image/jpeg","image/gif","image/png"].includes(e.type),o=e.size/1024/1024<5;return a||d.error("上传LOGO图片必须是 JPG/GIF/PNG/ 格式!"),o||d.error("上传LOGO图片大小不能超过 5MB!"),a&&o},"on-success":a=>{200===a.code?e.web_logo=a.data.remote_path:d.error(a.message)},accept:"image/jpeg,image/gif,image/png",name:"file",headers:{Authorization:O}},{default:()=>[e.web_logo?i("img",{src:e.web_logo,class:"logo-image"},null):i(r,{class:"logo-image-uploader-icon"},{default:()=>[i(n,{icon:"akar-icons:plus",size:23},null)]})]})}}},{field:"web_desc",label:"系统描述",colProps:{span:24},component:"Input",componentProps:{rows:4,type:"textarea",style:{width:"500px"}}},{field:"web_ico",label:"ICO 图标",colProps:{span:24},formItemProps:{slots:{default:e=>i(y,{class:"system-settings-basic-image-uploader",action:"/api/vadmin/system/upload/image/to/local",data:{path:"system"},"show-file-list":!1,"before-upload":e=>{const a=["image/x-icon"].includes(e.type),o=e.size/1024/1024<2;return a||d.error("上传ICO图标必须是 ico 格式!"),o||d.error("上传ICO图标大小不能超过 2MB!"),a&&o},"on-success":a=>{200===a.code?(e.web_ico=a.data.remote_path,e.web_ico_local_path=a.data.local_path):d.error(a.message)},accept:"image/jpeg,image/gif,image/png",name:"file",headers:{Authorization:O}},{default:()=>[e.web_ico?i("img",{src:e.web_ico,class:"ico-image"},null):i(r,{class:"ico-image-uploader-icon"},{default:()=>[i(n,{icon:"akar-icons:plus",size:23},null)]})]})}}},{field:"web_ico_local_path",label:"ICO 图标服务器文件地址",component:"Input",colProps:{span:24},hidden:!0},{field:"web_icp_number",label:"备案号",colProps:{span:24},component:"Input",componentProps:{style:{width:"500px"}}},{field:"web_copyright",label:"版权信息",colProps:{span:24},component:"Input",componentProps:{style:{width:"500px"}}},{field:"active",label:"",colProps:{span:24},formItemProps:{slots:{default:()=>i(c,null,[i(h,{loading:M.value,type:"primary",onClick:A},{default:()=>[p("立即提交")]})])}}}]),k=l({web_title:[I()],web_logo:[I()],web_ico:[I()]}),{formRegister:C,formMethods:F}=e(),{setValues:z,getFormData:G,getElFormExpose:E}=F;let L=m({});const M=m(!1),A=async()=>{const e=await E();if(await(null==e?void 0:e.validate())){const e=await G();if(M.value=!0,!e)return M.value=!1,d.error("未获取到数据");try{const a=await u(e);if(a)return x.setTitle(a.data.web_title||"后台系统"),x.setLogoImage(a.data.web_logo||"/static/system/logo.png"),x.setFooterContent(a.data.web_copyright||"Copyright ©2022-present K"),x.setIcpNumber(a.data.web_icp_number||""),d.success("更新成功")}finally{M.value=!1}}};return(async()=>{const e=await _({tab_id:s.tabId});if(e){await z(e.data),L.value=e.data;const a=await E();null==a||a.clearValidate()}})(),(e,o)=>(g(),b(f(a),{rules:k,onRegister:f(C),schema:j},null,8,["rules","onRegister","schema"]))}});export{I as _};

View File

@ -0,0 +1 @@
:export{namespace:v;elNamespace:el}.center-bottom-view{width:100%;height:100%;margin-top:20px}.center-bottom-view .dv-scroll-board{width:100%;height:100%;color:#fff}.center-bottom-view .dv-scroll-board .header,.center-bottom-view .dv-scroll-board .rows .row-item{font-size:18px}

View File

@ -0,0 +1 @@
import{_ as e}from"./CenterBottom.vue_vue_type_style_index_0_lang-7932f587.js";import"./datav-vue3.es-2f340315.js";import"./index-9da7d198.js";export{e as default};

View File

@ -0,0 +1 @@
import{o as e}from"./datav-vue3.es-2f340315.js";import{e as t,r as a,M as o,w as r,o as s,j as n,x as i,k as m}from"./index-9da7d198.js";const c={class:"center-bottom-view"},d=t({__name:"CenterBottom",props:{centerBottomData:{type:Array,required:!0}},setup(t){const d=t,l=a(null),u=a(d.centerBottomData),p=o({header:["部门名称","甲醛","PM2.5","PM10","温度","湿度","更新时间"],data:u.value,index:!0,columnWidth:[50],align:["center"],rowNum:6,waitTime:2e3,headerHeight:40});return r((()=>d.centerBottomData),(e=>{l.value.updateRows(e)}),{deep:!0}),(t,a)=>(s(),n("div",c,[i(m(e),{ref_key:"scrollBoardRef",ref:l,config:p},null,8,["config"])]))}});export{d as _};

View File

@ -0,0 +1 @@
:export{namespace:v;elNamespace:el}.center-top-view{width:100%;height:100%;box-shadow:0 0 3px #00f;display:flex;flex-direction:column;background-color:#061e5d80;border-top:2px solid rgba(1,153,209,.5);box-sizing:border-box;padding:10px 20px}

View File

@ -0,0 +1 @@
import{_ as e}from"./CenterTop.vue_vue_type_style_index_0_lang-be191674.js";import"./Echart.vue_vue_type_script_setup_true_lang-94a01568.js";import"./index-9da7d198.js";import"./debounce-778af7ed.js";export{e as default};

View File

@ -0,0 +1 @@
import{_ as e}from"./Echart.vue_vue_type_script_setup_true_lang-94a01568.js";import{e as a,W as t,r as s,w as o,o as r,j as i,y as n,z as p,x as c,k as l}from"./index-9da7d198.js";const m={class:"center-top-view"},d={class:"text-3xl font-bold"},u=a({__name:"CenterTop",props:{centerTopData:{type:Object,required:!0},activeMenuName:t.string},setup(a){const t=a,u=s({});return o((()=>t.centerTopData),(e=>{u.value={xAxis:{data:["6H","7H","8H","9H","10H","11H","12H","13H","14H","15H","16H","17H","18H","19H"],type:"category"},textStyle:{fontFamily:"Microsoft YaHei",fontSize:20,fontStyle:"normal",fontWeight:"normal",color:"#ecc460"},grid:{left:20,right:20,bottom:20,top:80,containLabel:!0},tooltip:{trigger:"axis",axisPointer:{type:"cross"},padding:[5,10]},yAxis:[{type:"value",name:"",min:0,axisLabel:{formatter:"{value}"}}],legend:{data:["PM2.5","甲醛","温度","湿度"],textStyle:{color:"#c3f19d"}},series:[{name:"PM2.5",type:"bar",color:"#bbff67",emphasis:{focus:"series"},data:e.pm25,showBackground:!1,barGap:0},{name:"甲醛",type:"bar",color:"#6deedf",emphasis:{focus:"series"},data:e.hcho,showBackground:!1,barGap:0},{name:"温度",type:"line",emphasis:{focus:"series"},data:e.temp},{name:"湿度",type:"line",emphasis:{focus:"series"},data:e.hum}]}}),{immediate:!0,deep:!0}),(a,s)=>(r(),i("div",m,[n("span",d,p(t.activeMenuName),1),n("div",null,[c(l(e),{options:u.value,height:400},null,8,["options"])])]))}});export{u as _};

View File

@ -0,0 +1 @@
import{e as s,W as e,$ as a,o as t,l,ar as r,m as o,y as n,z as i,k as p,x as c,O as d,q as f,s as m,F as x}from"./index-9da7d198.js";import{E as g}from"./el-card-5fa288fa.js";import"./el-tooltip-4ed993c7.js";import{E as u}from"./el-popper-2fae9050.js";const v={class:"flex items-center"},_={class:"text-16px font-700"},h={class:"max-w-200px"},j={class:"flex pl-20px flex-grow"},k=s({__name:"ContentWrap",props:{title:e.string.def(""),message:e.string.def("")},setup(s){const{getPrefixCls:e}=x(),k=e("content-wrap");return(e,x)=>{const w=a("Icon");return t(),l(p(g),{class:m([[p(k)],"!b-0 h-[100%]"]),shadow:"never"},r({default:o((()=>[n("div",null,[f(e.$slots,"default")])])),_:2},[s.title?{name:"header",fn:o((()=>[n("div",v,[n("span",_,i(s.title),1),s.message?(t(),l(p(u),{key:0,effect:"dark",placement:"right"},{content:o((()=>[n("div",h,i(s.message),1)])),default:o((()=>[c(w,{class:"ml-5px",icon:"bi:question-circle-fill",size:14})])),_:1})):d("",!0),n("div",j,[f(e.$slots,"header")])])])),key:"0"}:void 0]),1032,["class"])}}});export{k as _};

View File

@ -0,0 +1 @@
import{r as l,o as a,l as e,m as s,j as u,a3 as o,a4 as b,k as v,N as r,z as t}from"./index-9da7d198.js";import{a as m,E as i}from"./el-descriptions-item-be87a779.js";import"./vnode-ae242abb.js";import"./isNil-1f22f7b0.js";import"./use-form-common-props-9d083c67.js";const n={__name:"CronExample",setup(n){const p=l([{value:"0 0 10,15,16 * * ?",label:"每天上午10点下午3点4点"},{value:"0 0/30 9-17 * * ?",label:"朝九晚五工作时间内每半小时"},{value:"0 0 12 ? * WED\t",label:"表示每个星期三中午12点"},{value:"0 0 12 * * ?",label:"每天中午12点触发"},{value:"0 15 10 ? * *",label:"每天上午10:15触发"},{value:"0 15 10 * * ?",label:"每天上午10:15触发 (跟上面的一样)"},{value:"0 15 10 * * ? 2005",label:"2005年的每天上午10:15触发"},{value:"0 * 14 * * ?",label:"在每天下午2点到下午2:59期间的每1分钟触发"},{value:"0 0/5 14 * * ?",label:"在每天下午2点到下午2:55期间的每5分钟触发"},{value:"0 0/5 14,18 * * ?",label:"在每天下午2点到2:55期间和下午6点到6:55期间的每5分钟触发"},{value:"0 0-5 14 * * ?",label:"在每天下午2点到下午2:05期间的每1分钟触发"},{value:"0 10,44 14 ? 3 WED",label:"每年三月的星期三的下午2:10和2:44触发"},{value:"0 15 10 ? * MON-FRI",label:"周一至周五的上午10:15触发"},{value:"0 15 10 15 * ?",label:"每月15日上午10:15触发"},{value:"0 15 10 L * ?",label:"每月最后一日的上午10:15触发"}]);return(l,n)=>(a(),e(v(i),{column:1,border:!0},{default:s((()=>[(a(!0),u(o,null,b(p.value,((l,u)=>(a(),e(v(m),{key:u,label:l.value},{default:s((()=>[r(t(l.label),1)])),_:2},1032,["label"])))),128))])),_:1}))}};export{n as default};

View File

@ -0,0 +1 @@
import{_ as t}from"./CronExpression.vue_vue_type_style_index_0_lang-78dfe52d.js";import"./index-9da7d198.js";import"./el-tab-pane-5d623fbd.js";import"./strings-e2e316bd.js";import"./event-5568c9d8.js";import"./vnode-ae242abb.js";import"./use-form-item-8b7f5d34.js";import"./use-form-common-props-9d083c67.js";import"./index-cde97138.js";import"./el-input-26eda071.js";import"./isNil-1f22f7b0.js";import"./el-checkbox-group-b617b779.js";import"./el-tag-aef2ce12.js";import"./index-13d6a136.js";import"./el-table-column-102f47a6.js";import"./el-popper-2fae9050.js";import"./debounce-778af7ed.js";import"./el-tooltip-4ed993c7.js";import"./el-button-8f21380c.js";import"./_Uint8Array-bbcc3a61.js";import"./Dialog.vue_vue_type_style_index_0_lang-fcbfdb5d.js";import"./el-overlay-037540a2.js";import"./refs-4f0941bf.js";import"./RunDatetimeList-ccdf3646.js";import"./CronExample-cc30016c.js";import"./el-descriptions-item-be87a779.js";export{t as default};

View File

@ -0,0 +1 @@
:export{namespace:v;elNamespace:el}.cron-expression-box .el-input .el-input-group__prepend,.cron-expression-box .el-input .el-input-group__append,.cron-expression-box .el-input .el-input__wrapper{border-radius:0}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
[data-v-cca2de29]:export{namespace:v;elNamespace:el}[data-v-cca2de29] .el-descriptions__header{display:none!important}.v-descriptions-header__title[data-v-cca2de29]:after{position:absolute;top:3px;left:-10px;width:4px;height:70%;background:var(--el-color-primary);content:""}.v-descriptions-content[data-v-cca2de29] .el-descriptions__cell{width:0}

View File

@ -0,0 +1 @@
import{e,W as l,f as a,k as t,r as s,x as r,ak as o,a8 as i,an as d,ac as n,bC as c,A as f,F as p,J as u}from"./index-9da7d198.js";import{E as m,a as b}from"./el-descriptions-item-be87a779.js";import"./el-tooltip-4ed993c7.js";import{E as x}from"./el-popper-2fae9050.js";import{E as v}from"./index-4dbb39b8.js";const g=f(),h=a((()=>g.getMobile)),{getPrefixCls:j}=p(),k=j("descriptions"),y=u(e({name:"Descriptions",props:{title:l.string.def(""),message:l.string.def(""),collapse:l.bool.def(!0),border:l.bool.def(!0),column:l.number.def(2),size:l.oneOf(["large","default","small"]).def("default"),direction:l.oneOf(["horizontal","vertical"]).def("horizontal"),extra:l.string.def(""),schema:{type:Array,default:()=>[]},data:{type:Object,default:()=>({})}},setup(e,{slots:l,attrs:f}){const p=a((()=>{const l=["title","message","collapse","schema","data","class"],a={...f,...e};for(const e in a)-1!==l.indexOf(e)&&delete a[e];return t(h)&&(a.direction="vertical"),a})),u=s(!0),g=()=>{e.collapse&&(u.value=!t(u))};return()=>r("div",{class:[k,"bg-[var(--el-color-white)] dark:bg-[var(--el-bg-color)] dark:border-[var(--el-border-color)] dark:border-1px"]},[e.title?r("div",{class:[`${k}-header`,"relative h-50px flex justify-between items-center layout-border__bottom px-10px cursor-pointer"],onClick:g},[r("div",{class:[`${k}-header__title`,"relative font-18px font-bold ml-10px"]},[r("div",{class:"flex items-center"},[e.title,e.message?r(x,{content:e.message,placement:"right"},{default:()=>[r(o,{icon:"bi:question-circle-fill",class:"ml-5px",size:14},null)]}):null])]),e.collapse?r(o,{icon:u.value?"ep:arrow-down":"ep:arrow-up"},null):null]):null,r(v,null,{default:()=>[i(r("div",{class:[`${k}-content`,"p-20px"]},[r(m,t(p),{extra:()=>l.extra?l.extra():e.extra,default:()=>e.schema.map((l=>r(b,n({key:l.field},(e=>{const l=["field"],a={...e};for(const t in a)-1!==l.indexOf(t)&&delete a[t];return a})(l)),{label:()=>{var e,a;return(null==(e=l.slots)?void 0:e.label)?null==(a=l.slots)?void 0:a.label(l):l.label},default:()=>{var a,t;return(null==(a=l.slots)?void 0:a.default)?null==(t=l.slots)?void 0:t.default(e.data):c(e.data,l.field)}})))})]),[[d,t(u)]])]})])}}),[["__scopeId","data-v-cca2de29"]]);export{y as D};

View File

@ -0,0 +1 @@
import{_ as i}from"./Detail.vue_vue_type_script_setup_true_lang-f4d558dd.js";import"./Descriptions-fb3623c2.js";import"./index-9da7d198.js";import"./el-descriptions-item-be87a779.js";import"./vnode-ae242abb.js";import"./isNil-1f22f7b0.js";import"./use-form-common-props-9d083c67.js";import"./el-tooltip-4ed993c7.js";import"./el-popper-2fae9050.js";import"./index-cde97138.js";import"./index-4dbb39b8.js";export{i as default};

View File

@ -0,0 +1 @@
import{_ as i}from"./Detail.vue_vue_type_script_setup_true_lang-ec9bfbe7.js";import"./Descriptions-fb3623c2.js";import"./index-9da7d198.js";import"./el-descriptions-item-be87a779.js";import"./vnode-ae242abb.js";import"./isNil-1f22f7b0.js";import"./use-form-common-props-9d083c67.js";import"./el-tooltip-4ed993c7.js";import"./el-popper-2fae9050.js";import"./index-cde97138.js";import"./index-4dbb39b8.js";import"./el-switch-7720805d.js";import"./event-5568c9d8.js";import"./use-form-item-8b7f5d34.js";import"./dict-ab5a6743.js";import"./dict-b6f9162a.js";import"./dict-b26f862b.js";/* empty css */export{i as default};

View File

@ -0,0 +1 @@
import{_ as i}from"./Detail.vue_vue_type_script_setup_true_lang-d7ef4a98.js";import"./Descriptions-fb3623c2.js";import"./index-9da7d198.js";import"./el-descriptions-item-be87a779.js";import"./vnode-ae242abb.js";import"./isNil-1f22f7b0.js";import"./use-form-common-props-9d083c67.js";import"./el-tooltip-4ed993c7.js";import"./el-popper-2fae9050.js";import"./index-cde97138.js";import"./index-4dbb39b8.js";import"./dict-ab5a6743.js";import"./dict-b6f9162a.js";import"./dict-b26f862b.js";/* empty css */export{i as default};

View File

@ -0,0 +1 @@
import{D as e}from"./Descriptions-fb3623c2.js";import{s as a}from"./dict-ab5a6743.js";import{u as s}from"./dict-b6f9162a.js";/* empty css */import{e as t,r as l,M as i,x as n,a3 as p,o as r,l as d,k as o}from"./index-9da7d198.js";const c=t({__name:"Detail",props:{currentRow:{type:Object,default:()=>null}},setup(t){const c=l([]);(async()=>{const e=s(),a=await e.getDictObj(["vadmin_system_task_exec_strategy"]);c.value=a.vadmin_system_task_exec_strategy})();const m=i([{field:"job_id",label:"任务编号",width:"240px",span:24},{field:"name",label:"任务名称",span:24},{field:"group",label:"任务分组",span:24},{field:"job_class",label:"调用目标",span:24},{field:"exec_strategy",label:"执行策略",span:24,slots:{default:e=>{const s=e.row;return n(p,null,[n("div",null,[a(c.value,s.exec_strategy)])])}}},{field:"expression",label:"表达式",span:24},{field:"start_time",label:"开始执行时间",width:"200px",span:24},{field:"end_time",label:"执行完成时间",width:"200px",span:24},{field:"process_time",label:"耗时(秒)",width:"110px",span:24},{field:"retval",label:"任务返回值",span:24},{field:"exception",label:"异常信息",span:24},{field:"traceback",label:"堆栈跟踪",width:"100px",span:24}]);return(a,s)=>(r(),d(o(e),{schema:m,data:t.currentRow||{}},null,8,["schema","data"]))}});export{c as _};

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
import{D as e}from"./Descriptions-fb3623c2.js";import{e as a,M as l,o as s,l as p,k as t}from"./index-9da7d198.js";const i=a({__name:"Detail",props:{currentRow:{type:Object,default:()=>null}},setup(a){const i=l([{field:"user_id",label:"操作人编号",width:"100px",span:24},{field:"user_name",label:"操作人",width:"100px",span:24},{field:"telephone",label:"手机号",width:"130px",span:24},{field:"request_method",label:"请求方法",width:"100px",span:24},{field:"client_ip",label:"客户端地址",width:"130px",span:24},{field:"tags",label:"标签",width:"130px",span:24},{field:"summary",label:"操作内容",span:24},{field:"description",label:"描述",span:24},{field:"status_code",label:"操作状态",width:"100px",span:24},{field:"route_name",label:"接口函数",width:"150px",span:24},{field:"api_path",label:"接口地址",span:24},{field:"params",label:"请求参数",span:24},{field:"browser",label:"浏览器",width:"150px",span:24},{field:"system",label:"系统",width:"150px",span:24},{field:"process_time",label:"总耗时",span:24},{field:"create_datetime",label:"操作时间",span:24}]);return(l,d)=>(s(),p(t(e),{schema:i,data:a.currentRow||{}},null,8,["schema","data"]))}});export{i as _};

View File

@ -0,0 +1 @@
:root{--el-popup-modal-bg-color:var(--el-color-black);--el-popup-modal-opacity:.5}.v-modal-enter{animation:v-modal-in var(--el-transition-duration-fast) ease}.v-modal-leave{animation:v-modal-out var(--el-transition-duration-fast) ease forwards}@keyframes v-modal-in{0%{opacity:0}}@keyframes v-modal-out{to{opacity:0}}.v-modal{position:fixed;left:0;top:0;width:100%;height:100%;opacity:var(--el-popup-modal-opacity);background:var(--el-popup-modal-bg-color)}.el-popup-parent--hidden{overflow:hidden}.el-dialog{--el-dialog-width:50%;--el-dialog-margin-top:15vh;--el-dialog-bg-color:var(--el-bg-color);--el-dialog-box-shadow:var(--el-box-shadow);--el-dialog-title-font-size:var(--el-font-size-large);--el-dialog-content-font-size:14px;--el-dialog-font-line-height:var(--el-font-line-height-primary);--el-dialog-padding-primary:20px;--el-dialog-border-radius:var(--el-border-radius-small);position:relative;margin:var(--el-dialog-margin-top,15vh) auto 50px;background:var(--el-dialog-bg-color);border-radius:var(--el-dialog-border-radius);box-shadow:var(--el-dialog-box-shadow);box-sizing:border-box;width:var(--el-dialog-width,50%)}.el-dialog:focus{outline:0!important}.el-dialog.is-align-center{margin:auto}.el-dialog.is-fullscreen{--el-dialog-width:100%;--el-dialog-margin-top:0;margin-bottom:0;height:100%;overflow:auto}.el-dialog__wrapper{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto;margin:0}.el-dialog.is-draggable .el-dialog__header{cursor:move;-webkit-user-select:none;user-select:none}.el-dialog__header{padding:var(--el-dialog-padding-primary);padding-bottom:10px;margin-right:16px}.el-dialog__headerbtn{position:absolute;top:6px;right:0;padding:0;width:54px;height:54px;background:0 0;border:none;outline:0;cursor:pointer;font-size:var(--el-message-close-size,16px)}.el-dialog__headerbtn .el-dialog__close{color:var(--el-color-info);font-size:inherit}.el-dialog__headerbtn:focus .el-dialog__close,.el-dialog__headerbtn:hover .el-dialog__close{color:var(--el-color-primary)}.el-dialog__title{line-height:var(--el-dialog-font-line-height);font-size:var(--el-dialog-title-font-size);color:var(--el-text-color-primary)}.el-dialog__body{padding:calc(var(--el-dialog-padding-primary) + 10px) var(--el-dialog-padding-primary);color:var(--el-text-color-regular);font-size:var(--el-dialog-content-font-size)}.el-dialog__footer{padding:var(--el-dialog-padding-primary);padding-top:10px;text-align:right;box-sizing:border-box}.el-dialog--center{text-align:center}.el-dialog--center .el-dialog__body{text-align:initial;padding:25px calc(var(--el-dialog-padding-primary) + 5px) 30px}.el-dialog--center .el-dialog__footer{text-align:inherit}.el-overlay-dialog{position:fixed;top:0;right:0;bottom:0;left:0;overflow:auto}.dialog-fade-enter-active{animation:modal-fade-in var(--el-transition-duration)}.dialog-fade-enter-active .el-overlay-dialog{animation:dialog-fade-in var(--el-transition-duration)}.dialog-fade-leave-active{animation:modal-fade-out var(--el-transition-duration)}.dialog-fade-leave-active .el-overlay-dialog{animation:dialog-fade-out var(--el-transition-duration)}@keyframes dialog-fade-in{0%{transform:translate3d(0,-20px,0);opacity:0}to{transform:translateZ(0);opacity:1}}@keyframes dialog-fade-out{0%{transform:translateZ(0);opacity:1}to{transform:translate3d(0,-20px,0);opacity:0}}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-fade-out{0%{opacity:1}to{opacity:0}}:export{namespace:v;elNamespace:el}.el-dialog__header{margin-right:0!important;border-bottom:1px solid var(--el-border-color);padding:0;height:54px}.el-dialog__body{padding:15px!important}.el-dialog__footer{border-top:1px solid var(--el-border-color)}.el-dialog__headerbtn{top:0}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
import{e,r as t,o as s,l as r,m as i,x as p,k as o}from"./index-9da7d198.js";import{E as m,a as _}from"./el-col-d9273186.js";import{_ as l}from"./DictDetail.vue_vue_type_script_setup_true_lang-4a0d50e2.js";import{_ as u}from"./DictType.vue_vue_type_script_setup_true_lang-653a118c.js";import"./dict-b26f862b.js";import"./Table.vue_vue_type_script_lang-5256bd69.js";import"./el-message-box-24354127.js";import"./el-button-8f21380c.js";import"./use-form-item-8b7f5d34.js";import"./use-form-common-props-9d083c67.js";import"./index-cde97138.js";import"./el-input-26eda071.js";import"./event-5568c9d8.js";import"./isNil-1f22f7b0.js";import"./el-overlay-037540a2.js";import"./el-checkbox-group-b617b779.js";import"./vnode-ae242abb.js";import"./useForm-ecbcdb43.js";import"./el-tooltip-4ed993c7.js";import"./el-popper-2fae9050.js";import"./el-tag-aef2ce12.js";import"./index-13d6a136.js";import"./el-date-picker-f32b0b71.js";import"./debounce-778af7ed.js";import"./el-switch-7720805d.js";import"./el-divider-fc00d058.js";import"./el-progress-69812d34.js";import"./style.css_vue_type_style_index_0_src_true_lang-0e7f3b44.js";import"./index-14d9f390.js";import"./strings-e2e316bd.js";import"./index-4dbb39b8.js";import"./el-table-column-102f47a6.js";import"./el-image-viewer-83790b35.js";import"./el-dropdown-item-c082162c.js";import"./refs-4f0941bf.js";/* empty css */import"./_Uint8Array-bbcc3a61.js";import"./Search.vue_vue_type_script_setup_true_lang-a57e37eb.js";import"./useIcon-6417bbff.js";import"./ContentWrap.vue_vue_type_script_setup_true_lang-9c7e578a.js";import"./el-card-5fa288fa.js";import"./Write.vue_vue_type_script_setup_true_lang-936b70dd.js";import"./useValidator-e352e7a8.js";import"./Dialog.vue_vue_type_style_index_0_lang-fcbfdb5d.js";import"./Write.vue_vue_type_script_setup_true_lang-4fc8089e.js";const a=e({name:"SystemDict",__name:"Dict",setup(e){const a=t(),j=e=>{a.value=e};return(e,t)=>(s(),r(o(_),null,{default:i((()=>[p(o(m),{xs:24,sm:24,md:12,lg:12,xl:12},{default:i((()=>[p(u,{onUpdateDictTypeId:j})])),_:1}),p(o(m),{xs:24,sm:24,md:12,lg:12,xl:12},{default:i((()=>[p(l,{"dict-type-id":a.value},null,8,["dict-type-id"])])),_:1})])),_:1}))}});export{a as default};

View File

@ -0,0 +1 @@
import{_ as e}from"./DictDetail.vue_vue_type_script_setup_true_lang-4a0d50e2.js";import"./dict-b26f862b.js";import"./index-9da7d198.js";import"./Table.vue_vue_type_script_lang-5256bd69.js";import"./el-message-box-24354127.js";import"./el-button-8f21380c.js";import"./use-form-item-8b7f5d34.js";import"./use-form-common-props-9d083c67.js";import"./index-cde97138.js";import"./el-input-26eda071.js";import"./event-5568c9d8.js";import"./isNil-1f22f7b0.js";import"./el-overlay-037540a2.js";import"./el-checkbox-group-b617b779.js";import"./vnode-ae242abb.js";import"./useForm-ecbcdb43.js";import"./el-col-d9273186.js";import"./el-tooltip-4ed993c7.js";import"./el-popper-2fae9050.js";import"./el-tag-aef2ce12.js";import"./index-13d6a136.js";import"./el-date-picker-f32b0b71.js";import"./debounce-778af7ed.js";import"./el-switch-7720805d.js";import"./el-divider-fc00d058.js";import"./el-progress-69812d34.js";import"./style.css_vue_type_style_index_0_src_true_lang-0e7f3b44.js";import"./index-14d9f390.js";import"./strings-e2e316bd.js";import"./index-4dbb39b8.js";import"./el-table-column-102f47a6.js";import"./el-image-viewer-83790b35.js";import"./el-dropdown-item-c082162c.js";import"./refs-4f0941bf.js";/* empty css */import"./_Uint8Array-bbcc3a61.js";import"./Search.vue_vue_type_script_setup_true_lang-a57e37eb.js";import"./useIcon-6417bbff.js";import"./ContentWrap.vue_vue_type_script_setup_true_lang-9c7e578a.js";import"./el-card-5fa288fa.js";import"./Write.vue_vue_type_script_setup_true_lang-936b70dd.js";import"./useValidator-e352e7a8.js";import"./Dialog.vue_vue_type_style_index_0_lang-fcbfdb5d.js";export{e as default};

View File

@ -0,0 +1 @@
import{a as e,b as a,d as l,c as t,p as i}from"./dict-b26f862b.js";import{u as s,_ as o}from"./Table.vue_vue_type_script_lang-5256bd69.js";import{e as u,W as d,G as n,M as r,x as p,a3 as c,N as v,r as _,w as m,o as f,j as g,m as y,k as b,ao as w,z as h}from"./index-9da7d198.js";import{E as k}from"./el-button-8f21380c.js";import{E as j}from"./el-switch-7720805d.js";import{a as z,E as D}from"./el-col-d9273186.js";import{_ as x}from"./Search.vue_vue_type_script_setup_true_lang-a57e37eb.js";import{_ as R}from"./ContentWrap.vue_vue_type_script_setup_true_lang-9c7e578a.js";import{_ as C}from"./Write.vue_vue_type_script_setup_true_lang-936b70dd.js";import{_ as I}from"./Dialog.vue_vue_type_style_index_0_lang-fcbfdb5d.js";const S=u({__name:"DictDetail",props:{dictTypeId:d.number.def(void 0)},setup(u){const d=u,{t:S}=n(),{tableRegister:T,tableState:U,tableMethods:L}=s({fetchDataApi:async()=>{const{pageSize:e,currentPage:l}=U,t=await a({page:b(l),limit:b(e),dict_type_id:d.dictTypeId,...b($)});return{list:t.data||[],total:t.count||0}},fetchDelApi:async e=>200===(await l(e)).code}),{dataList:P,loading:A,total:E,pageSize:V,currentPage:W}=U,{getList:M,delList:N}=L,G=r([{field:"id",label:"字典编号",show:!1,disabled:!1},{field:"label",label:"字典标签",show:!0,disabled:!0},{field:"value",label:"字典键值",show:!0},{field:"order",label:"字典排序",show:!0},{field:"disabled",label:"是否禁用",show:!0,slots:{default:e=>{const a=e.row;return p(c,null,[p(j,{value:!a.disabled,disabled:!0},null)])}}},{field:"remark",label:"备注",show:!1},{field:"create_datetime",label:"创建时间",show:!1},{field:"action",width:"120px",label:"操作",show:!0,slots:{default:e=>{const a=e.row;return p(c,null,[p(k,{type:"primary",link:!0,size:"small",onClick:()=>Z(a)},{default:()=>[v("编辑")]}),p(k,{type:"danger",loading:B.value,link:!0,size:"small",onClick:()=>F(a)},{default:()=>[v("删除")]})])}}}]),K=r([{field:"label",label:"字典标签",component:"Input",componentProps:{clearable:!1}}]),$=_({}),q=e=>{W.value=1,$.value=e,M()},B=_(!1),F=async e=>{B.value=!0,await N(!0,[e.id]).finally((()=>{B.value=!1}))},H=_(!1),J=_(""),O=_(),Q=_(""),X=_(),Y=_(!1),Z=async a=>{const l=await e(a.id);l&&(J.value="编辑字段元素",Q.value="edit",O.value=l.data,H.value=!0)},ee=()=>{J.value="新增字段元素",Q.value="add",O.value=void 0,H.value=!0},ae=async()=>{const e=b(X),a=await(null==e?void 0:e.submit());if(a){Y.value=!0;try{const e=_({});"add"===Q.value?(e.value=await t(a),e.value&&(H.value=!1,M())):"edit"===Q.value&&(e.value=await i(a),e.value&&(H.value=!1,M()))}finally{Y.value=!1}}};return m((()=>d.dictTypeId),(()=>{M()}),{deep:!0}),(e,a)=>(f(),g(c,null,[p(b(R),null,{default:y((()=>[p(b(x),{schema:K,onReset:q,onSearch:q},null,8,["schema"]),p(b(o),{"current-page":b(W),"onUpdate:currentPage":a[0]||(a[0]=e=>w(W)?W.value=e:null),"page-size":b(V),"onUpdate:pageSize":a[1]||(a[1]=e=>w(V)?V.value=e:null),showAction:"",activeUID:"detail",columns:G,"default-expand-all":"","node-key":"id",data:b(P),loading:b(A),pagination:{total:b(E)},onRegister:b(T),onRefresh:b(M)},{toolbar:y((()=>[p(b(z),{gutter:10},{default:y((()=>[p(b(D),{span:1.5},{default:y((()=>[p(b(k),{type:"primary",onClick:ee},{default:y((()=>[v("新增字典元素")])),_:1})])),_:1})])),_:1})])),_:1},8,["current-page","page-size","columns","data","loading","pagination","onRegister","onRefresh"])])),_:1}),p(b(I),{modelValue:H.value,"onUpdate:modelValue":a[3]||(a[3]=e=>H.value=e),title:J.value,height:650},{footer:y((()=>[p(b(k),{type:"primary",loading:Y.value,onClick:ae},{default:y((()=>[v(h(b(S)("exampleDemo.save")),1)])),_:1},8,["loading"]),p(b(k),{onClick:a[2]||(a[2]=e=>H.value=!1)},{default:y((()=>[v(h(b(S)("dialogDemo.close")),1)])),_:1})])),default:y((()=>[p(C,{ref_key:"writeRef",ref:X,"current-row":O.value,"dict-type-id":u.dictTypeId},null,8,["current-row","dict-type-id"])])),_:1},8,["modelValue","title"])],64))}});export{S as _};

View File

@ -0,0 +1 @@
import{_ as e}from"./DictType.vue_vue_type_script_setup_true_lang-653a118c.js";import"./dict-b26f862b.js";import"./index-9da7d198.js";import"./Table.vue_vue_type_script_lang-5256bd69.js";import"./el-message-box-24354127.js";import"./el-button-8f21380c.js";import"./use-form-item-8b7f5d34.js";import"./use-form-common-props-9d083c67.js";import"./index-cde97138.js";import"./el-input-26eda071.js";import"./event-5568c9d8.js";import"./isNil-1f22f7b0.js";import"./el-overlay-037540a2.js";import"./el-checkbox-group-b617b779.js";import"./vnode-ae242abb.js";import"./useForm-ecbcdb43.js";import"./el-col-d9273186.js";import"./el-tooltip-4ed993c7.js";import"./el-popper-2fae9050.js";import"./el-tag-aef2ce12.js";import"./index-13d6a136.js";import"./el-date-picker-f32b0b71.js";import"./debounce-778af7ed.js";import"./el-switch-7720805d.js";import"./el-divider-fc00d058.js";import"./el-progress-69812d34.js";import"./style.css_vue_type_style_index_0_src_true_lang-0e7f3b44.js";import"./index-14d9f390.js";import"./strings-e2e316bd.js";import"./index-4dbb39b8.js";import"./el-table-column-102f47a6.js";import"./el-image-viewer-83790b35.js";import"./el-dropdown-item-c082162c.js";import"./refs-4f0941bf.js";/* empty css */import"./_Uint8Array-bbcc3a61.js";import"./Search.vue_vue_type_script_setup_true_lang-a57e37eb.js";import"./useIcon-6417bbff.js";import"./ContentWrap.vue_vue_type_script_setup_true_lang-9c7e578a.js";import"./el-card-5fa288fa.js";import"./Write.vue_vue_type_script_setup_true_lang-4fc8089e.js";import"./useValidator-e352e7a8.js";import"./Dialog.vue_vue_type_style_index_0_lang-fcbfdb5d.js";export{e as default};

View File

@ -0,0 +1 @@
import{f as e,h as a,i as t,j as l,k as s}from"./dict-b26f862b.js";import{u as o,_ as n}from"./Table.vue_vue_type_script_lang-5256bd69.js";import{e as i,G as u,M as r,x as d,ak as p,a3 as c,N as _,r as m,o as f,j as v,m as y,k as g,ao as w,z as h,aD as b,P as k}from"./index-9da7d198.js";import{E as j}from"./el-button-8f21380c.js";import{E as C}from"./el-switch-7720805d.js";import{a as D,E as x}from"./el-col-d9273186.js";import{_ as R}from"./Search.vue_vue_type_script_setup_true_lang-a57e37eb.js";import{_ as z}from"./ContentWrap.vue_vue_type_script_setup_true_lang-9c7e578a.js";import{_ as P}from"./Write.vue_vue_type_script_setup_true_lang-4fc8089e.js";import{_ as I}from"./Dialog.vue_vue_type_style_index_0_lang-fcbfdb5d.js";const S=i({__name:"DictType",emits:["updateDictTypeId"],setup(i,{emit:S}){const{t:T}=u(),{tableRegister:E,tableState:U,tableMethods:L}=o({fetchDataApi:async()=>{const{pageSize:e,currentPage:t}=U,l=await a({page:g(t),limit:g(e),...g(F)});return{list:l.data||[],total:l.count||0}},fetchDelApi:async e=>{const a=await t(e);return 200===a.code&&await ne(),200===a.code}}),{dataList:A,loading:V,total:M,pageSize:N,currentPage:W}=U,{getList:G,delList:K,getElTableExpose:$}=L,q=r([{field:"id",label:"字典编号",width:"80px",show:!1,disabled:!1},{field:"dict_name",label:"字典名称",show:!0,disabled:!0},{field:"dict_type",label:"字典类型",show:!0,disabled:!0,slots:{default:e=>{const a=e.row;return d(c,null,[d("span",{onClick:()=>(async e=>{const{copy:a}=b();return await a(e),k.success("复制成功")})(a.dict_type)},[d(p,{icon:"material-symbols:content-copy-rounded",class:"cursor-pointer"},null)]),d("span",null,[a.dict_type])])}}},{field:"disabled",label:"是否禁用",width:"120px",show:!0,slots:{default:e=>{const a=e.row;return d(c,null,[d(C,{value:!a.disabled,disabled:!0},null)])}}},{field:"remark",label:"备注",show:!1},{field:"create_datetime",label:"创建时间",show:!1},{field:"action",width:"120px",label:"操作",show:!0,slots:{default:e=>{const a=e.row;return d(c,null,[d(j,{type:"primary",link:!0,size:"small",onClick:()=>te(a)},{default:()=>[_("编辑")]}),d(j,{type:"danger",loading:J.value,link:!0,size:"small",onClick:()=>O(a)},{default:()=>[_("删除")]})])}}}]),B=r([{field:"dict_name",label:"字典名称",colProps:{span:24},component:"Input",componentProps:{clearable:!1}},{field:"dict_type",label:"字典类型",colProps:{span:24},component:"Input",componentProps:{clearable:!1}}]),F=m({}),H=e=>{W.value=1,F.value=e,G()},J=m(!1),O=async e=>{J.value=!0,await K(!0,[e.id]).finally((()=>{J.value=!1}))},Q=m(!1),X=m(""),Y=m(),Z=m(""),ee=m(),ae=m(!1),te=async a=>{const t=await e(a.id);t&&(X.value="编辑字典类型",Z.value="edit",Y.value=t.data,Q.value=!0)},le=()=>{X.value="新增字典类型",Z.value="add",Y.value=void 0,Q.value=!0},se=async()=>{const e=g(ee),a=await(null==e?void 0:e.submit());if(a){ae.value=!0;try{const e=m({});"add"===Z.value?(e.value=await l(a),e.value&&(Q.value=!1,G())):"edit"===Z.value&&(e.value=await s(a),e.value&&(Q.value=!1,G()))}finally{ae.value=!1}}},oe=async e=>{S("updateDictTypeId",e.id)},ne=async()=>{const e=await $();null==e||e.setCurrentRow(null),S("updateDictTypeId",null)};return(e,a)=>(f(),v(c,null,[d(g(z),null,{default:y((()=>[d(g(R),{schema:B,onReset:H,onSearch:H},null,8,["schema"]),d(g(n),{"current-page":g(W),"onUpdate:currentPage":a[0]||(a[0]=e=>w(W)?W.value=e:null),"page-size":g(N),"onUpdate:pageSize":a[1]||(a[1]=e=>w(N)?N.value=e:null),showAction:"",activeUID:"type",columns:q,"default-expand-all":"",highlightCurrentRow:!0,"node-key":"id",data:g(A),loading:g(V),pagination:{total:g(M)},onRegister:g(E),onCurrentChange:oe,onRefresh:g(G)},{toolbar:y((()=>[d(g(D),{gutter:10},{default:y((()=>[d(g(x),{span:1.5},{default:y((()=>[d(g(j),{type:"primary",onClick:le},{default:y((()=>[_("新增字典类型")])),_:1})])),_:1}),d(g(x),{span:1.5},{default:y((()=>[d(g(j),{type:"danger",onClick:ne},{default:y((()=>[_("清除选择")])),_:1})])),_:1})])),_:1})])),_:1},8,["current-page","page-size","columns","data","loading","pagination","onRegister","onRefresh"])])),_:1}),d(g(I),{modelValue:Q.value,"onUpdate:modelValue":a[3]||(a[3]=e=>Q.value=e),title:X.value,height:650},{footer:y((()=>[d(g(j),{type:"primary",loading:ae.value,onClick:se},{default:y((()=>[_(h(g(T)("exampleDemo.save")),1)])),_:1},8,["loading"]),d(g(j),{onClick:a[2]||(a[2]=e=>Q.value=!1)},{default:y((()=>[_(h(g(T)("dialogDemo.close")),1)])),_:1})])),default:y((()=>[d(P,{ref_key:"writeRef",ref:ee,"current-row":Y.value},null,8,["current-row"])])),_:1},8,["modelValue","title"])],64))}});export{S as _};

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
import{_ as t}from"./Email.vue_vue_type_script_setup_true_lang-ecc38079.js";import"./useForm-ecbcdb43.js";import"./index-9da7d198.js";import"./el-col-d9273186.js";import"./el-tooltip-4ed993c7.js";import"./el-popper-2fae9050.js";import"./isNil-1f22f7b0.js";import"./index-cde97138.js";import"./use-form-common-props-9d083c67.js";import"./el-input-26eda071.js";import"./event-5568c9d8.js";import"./use-form-item-8b7f5d34.js";import"./el-tag-aef2ce12.js";import"./index-13d6a136.js";import"./el-checkbox-group-b617b779.js";import"./el-button-8f21380c.js";import"./el-date-picker-f32b0b71.js";import"./debounce-778af7ed.js";import"./el-switch-7720805d.js";import"./el-divider-fc00d058.js";import"./el-progress-69812d34.js";import"./style.css_vue_type_style_index_0_src_true_lang-0e7f3b44.js";import"./index-14d9f390.js";import"./strings-e2e316bd.js";import"./index-4dbb39b8.js";import"./useValidator-e352e7a8.js";export{t as default};

View File

@ -0,0 +1 @@
import{u as a,F as e}from"./useForm-ecbcdb43.js";import{e as s,W as t,M as o,x as l,N as r,a3 as n,r as i,P as p,dF as m,o as c,l as u,k as d,ai as f}from"./index-9da7d198.js";import{E as w}from"./el-button-8f21380c.js";import{u as _}from"./useValidator-e352e7a8.js";const P=s({__name:"Email",props:{tabId:t.number},setup(s){const t=s,{required:P}=_(),b=o([{field:"email_access",label:"邮箱账号",colProps:{span:24},component:"Input",componentProps:{style:{width:"500px"}}},{field:"email_password",label:"邮箱密码",colProps:{span:24},component:"Input",componentProps:{style:{width:"500px"}}},{field:"email_server",label:"邮箱服务器",colProps:{span:24},component:"Input",componentProps:{style:{width:"500px"}}},{field:"email_port",label:"服务器端口",colProps:{span:24},component:"Input",componentProps:{style:{width:"500px"}}},{field:"active",label:"",colProps:{span:24},formItemProps:{slots:{default:()=>l(n,null,[l(w,{loading:E.value,type:"primary",onClick:k},{default:()=>[r("立即提交")]})])}}}]),v=o({email_access:[P()],email_password:[P()],email_port:[P()],email_server:[P()]}),{formRegister:y,formMethods:x}=a(),{setValues:h,getFormData:I,getElFormExpose:g}=x;let F=i({});const j=async()=>{const a=await f({tab_id:t.tabId});if(a){await h(a.data),F.value=a.data;const e=await g();null==e||e.clearValidate()}},E=i(!1),k=async()=>{const a=await g();if(await(null==a?void 0:a.validate())){const a=await I();if(E.value=!0,!a)return E.value=!1,p.error("未获取到数据");try{if(await m(a))return j(),p.success("更新成功")}finally{E.value=!1}}};return j(),(a,s)=>(c(),u(d(e),{rules:v,onRegister:d(y),schema:b},null,8,["rules","onRegister","schema"]))}});export{P as _};

View File

@ -0,0 +1 @@
import{e,W as r,o as s,j as t,y as o,z as a,x as n,m as i,k as l,G as m,N as u}from"./index-9da7d198.js";import{E as c}from"./el-button-8f21380c.js";const p={class:"flex justify-center"},x={class:"text-center"},f=["src"],d={class:"text-14px text-[var(--el-color-info)]"},g={class:"mt-20px"},v=e({__name:"Error",props:{type:r.string.validate((e=>["404","500","403"].includes(e))).def("404")},emits:["errorClick"],setup(e,{emit:r}){const v=e,{t:y}=m(),T={404:{url:"/assets/404-1759fece.svg",message:y("error.pageError"),buttonText:y("error.returnToHome")},500:{url:"/assets/500-8fda557c.svg",message:y("error.networkError"),buttonText:y("error.returnToHome")},403:{url:"/assets/403-af24f6bf.svg",message:y("error.noPermission"),buttonText:y("error.returnToHome")}},b=()=>{r("errorClick",v.type)};return(r,m)=>(s(),t("div",p,[o("div",x,[o("img",{width:"350",src:T[e.type].url,alt:""},null,8,f),o("div",d,a(T[e.type].message),1),o("div",g,[n(l(c),{type:"primary",onClick:b},{default:i((()=>[u(a(T[e.type].buttonText),1)])),_:1})])])]))}});export{v as _};

View File

@ -0,0 +1 @@
import{_ as t}from"./Finance.vue_vue_type_script_setup_true_lang-3fb27710.js";import"./index-9da7d198.js";import"./el-col-d9273186.js";import"./el-divider-fc00d058.js";import"./el-skeleton-item-c29f45f2.js";import"./el-table-column-102f47a6.js";import"./el-popper-2fae9050.js";import"./isNil-1f22f7b0.js";import"./index-cde97138.js";import"./use-form-common-props-9d083c67.js";import"./el-tag-aef2ce12.js";import"./index-13d6a136.js";import"./event-5568c9d8.js";import"./use-form-item-8b7f5d34.js";import"./debounce-778af7ed.js";import"./el-tooltip-4ed993c7.js";import"./el-input-26eda071.js";import"./el-date-picker-f32b0b71.js";import"./el-button-8f21380c.js";import"./Echart.vue_vue_type_script_setup_true_lang-94a01568.js";export{t as default};

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
import{e,A as t,f as a,o,j as r,z as s,s as l,k as p,F as g}from"./index-9da7d198.js";const n=e({__name:"Footer",setup(e){const{getPrefixCls:n}=g(),c=n("footer"),i=t(),h=a((()=>i.getTitle));return(e,t)=>(o(),r("div",{class:l([p(c),"text-center text-[var(--el-text-color-placeholder)] bg-[var(--app-content-bg-color)] h-[var(--app-footer-height)] leading-[var(--app-footer-height)] dark:bg-[var(--el-bg-color)]"])}," Copyright ©2021-present "+s(h.value),3))}});export{n as _};

View File

@ -0,0 +1 @@
import{b as s,c as e,i as a,a as t,d as l,e as r,u as p,r as i,f as o,g as n,h as c,w as m,o as u,j as d,n as v,k as _,l as x,m as j,p as f,E as g,q as y,s as b,_ as k,t as h,v as w,x as S,y as z,z as E}from"./index-9da7d198.js";import{E as V}from"./el-card-5fa288fa.js";import{E as q,a as F}from"./el-col-d9273186.js";import{E as N,a as U}from"./el-tab-pane-5d623fbd.js";import{_ as W}from"./InfoWrite.vue_vue_type_script_setup_true_lang-8199338b.js";import{_ as $}from"./PasswordWrite.vue_vue_type_script_setup_true_lang-1f4a7f46.js";import{a as A}from"./avatar-d437f563.js";import{s as B}from"./dict-ab5a6743.js";import{u as D}from"./dict-b6f9162a.js";import"./strings-e2e316bd.js";import"./event-5568c9d8.js";import"./vnode-ae242abb.js";import"./use-form-item-8b7f5d34.js";import"./use-form-common-props-9d083c67.js";import"./index-cde97138.js";import"./useForm-ecbcdb43.js";import"./el-tooltip-4ed993c7.js";import"./el-popper-2fae9050.js";import"./isNil-1f22f7b0.js";import"./el-input-26eda071.js";import"./el-tag-aef2ce12.js";import"./index-13d6a136.js";import"./el-checkbox-group-b617b779.js";import"./el-button-8f21380c.js";import"./el-date-picker-f32b0b71.js";import"./debounce-778af7ed.js";import"./el-switch-7720805d.js";import"./el-divider-fc00d058.js";import"./el-progress-69812d34.js";import"./style.css_vue_type_style_index_0_src_true_lang-0e7f3b44.js";import"./index-14d9f390.js";import"./index-4dbb39b8.js";import"./useValidator-e352e7a8.js";import"./dict-b26f862b.js";const H=s({size:{type:[Number,String],values:e,default:"",validator:s=>a(s)},shape:{type:String,values:["circle","square"],default:"circle"},icon:{type:t},src:{type:String,default:""},alt:String,srcSet:String,fit:{type:l(String),default:"cover"}}),I={error:s=>s instanceof Event},O=["src","alt","srcset"],P=r({name:"ElAvatar"});const C=h(k(r({...P,props:H,emits:I,setup(s,{emit:e}){const t=s,l=p("avatar"),r=i(!1),k=o((()=>{const{size:s,icon:e,shape:a}=t,r=[l.b()];return n(s)&&r.push(l.m(s)),e&&r.push(l.m("icon")),a&&r.push(l.m(a)),r})),h=o((()=>{const{size:s}=t;return a(s)?l.cssVarBlock({size:c(s)||""}):void 0})),w=o((()=>({objectFit:t.fit})));function S(s){r.value=!0,e("error",s)}return m((()=>t.src),(()=>r.value=!1)),(s,e)=>(u(),d("span",{class:b(_(k)),style:v(_(h))},[!s.src&&!s.srcSet||r.value?s.icon?(u(),x(_(g),{key:1},{default:j((()=>[(u(),x(f(s.icon)))])),_:1})):y(s.$slots,"default",{key:2}):(u(),d("img",{key:0,src:s.src,alt:s.alt,srcset:s.srcSet,style:v(_(w)),onError:S},null,44,O))],6))}}),[["__file","/home/runner/work/element-plus/element-plus/packages/components/avatar/src/avatar.vue"]])),G={class:"p-20px"},J={class:"text-center"},K={style:{"font-size":"24px"}},L={class:"pl-20px pt-30px"},M={class:"leading-relaxed"},Q=z("span",{class:"pl-10px w-80px inline-block"},"姓名:",-1),R={class:"pl-10px"},T={class:"leading-relaxed"},X=z("span",{class:"pl-10px w-80px inline-block"},"昵称:",-1),Y={class:"pl-10px"},Z={class:"leading-relaxed"},ss=z("span",{class:"pl-10px w-80px inline-block"},"手机号:",-1),es={class:"pl-10px"},as={class:"leading-relaxed"},ts=z("span",{class:"pl-10px w-80px inline-block"},"性别:",-1),ls={class:"pl-10px"},rs={class:"leading-relaxed"},ps=z("span",{class:"pl-10px w-80px inline-block"},"角色:",-1),is={class:"pl-10px"},os={class:"leading-relaxed"},ns=z("span",{class:"pl-10px w-80px inline-block"},"创建时间:",-1),cs={class:"pl-10px"},ms=r({__name:"Home",setup(s){const e=i("info"),a=w();let t=i([]);(async()=>{const s=D(),e=await s.getDictObj(["sys_vadmin_gender"]);t.value=e.sys_vadmin_gender})();const l=o((()=>a.getUser));return(s,a)=>(u(),d("div",G,[S(_(F),{gutter:20},{default:j((()=>[S(_(q),{xs:24,sm:12,md:8},{default:j((()=>[S(_(V),{shadow:"hover",class:"pb-30px"},{default:j((()=>{var s;return[z("div",J,[S(_(C),{size:80,src:l.value.avatar?l.value.avatar:_(A)},null,8,["src"]),z("p",K,E(l.value.name),1)]),z("div",L,[z("div",M,[Q,z("span",R,E(l.value.name),1)]),z("div",T,[X,z("span",Y,E(l.value.nickname),1)]),z("div",Z,[ss,z("span",es,E(l.value.telephone),1)]),z("div",as,[ts,z("span",ls,E(_(B)(_(t),l.value.gender)),1)]),z("div",rs,[ps,z("span",is,E(null==(s=l.value.roles)?void 0:s.map((s=>s.name)).join(",")),1)]),z("div",os,[ns,z("span",cs,E(l.value.create_datetime),1)])])]})),_:1})])),_:1}),S(_(q),{xs:24,sm:12,md:16},{default:j((()=>[S(_(V),{shadow:"hover"},{default:j((()=>[S(_(N),{modelValue:e.value,"onUpdate:modelValue":a[0]||(a[0]=s=>e.value=s)},{default:j((()=>[S(_(U),{label:"基本信息",name:"info"},{default:j((()=>[S(W)])),_:1}),S(_(U),{label:"修改密码",name:"password"},{default:j((()=>[S($)])),_:1})])),_:1},8,["modelValue"])])),_:1})])),_:1})])),_:1})]))}});export{ms as default};

View File

@ -0,0 +1 @@
.el-avatar{--el-avatar-text-color:var(--el-color-white);--el-avatar-bg-color:var(--el-text-color-disabled);--el-avatar-text-size:14px;--el-avatar-icon-size:18px;--el-avatar-border-radius:var(--el-border-radius-base);--el-avatar-size-large:56px;--el-avatar-size-small:24px;--el-avatar-size:40px;display:inline-flex;justify-content:center;align-items:center;box-sizing:border-box;text-align:center;overflow:hidden;color:var(--el-avatar-text-color);background:var(--el-avatar-bg-color);width:var(--el-avatar-size);height:var(--el-avatar-size);font-size:var(--el-avatar-text-size)}.el-avatar>img{display:block;width:100%;height:100%}.el-avatar--circle{border-radius:50%}.el-avatar--square{border-radius:var(--el-avatar-border-radius)}.el-avatar--icon{font-size:var(--el-avatar-icon-size)}.el-avatar--small{--el-avatar-size:24px}.el-avatar--large{--el-avatar-size:56px}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
import{_ as o}from"./Import.vue_vue_type_script_setup_true_lang-7dc203dd.js";import"./index-9da7d198.js";import"./el-link-d575b38b.js";import"./el-col-d9273186.js";import"./el-button-8f21380c.js";import"./use-form-item-8b7f5d34.js";import"./use-form-common-props-9d083c67.js";import"./index-cde97138.js";import"./el-table-column-102f47a6.js";import"./el-popper-2fae9050.js";import"./isNil-1f22f7b0.js";import"./el-tag-aef2ce12.js";import"./index-13d6a136.js";import"./event-5568c9d8.js";import"./debounce-778af7ed.js";import"./el-tooltip-4ed993c7.js";import"./el-progress-69812d34.js";import"./el-popconfirm-3191559c.js";/* empty css */export{o as default};

View File

@ -0,0 +1 @@
import{e,r as a,o as l,j as t,y as s,x as r,m as n,N as i,k as o,z as p,l as u,a3 as d,P as m,ax as c,ay as f}from"./index-9da7d198.js";import{E as _}from"./el-link-d575b38b.js";import{E as y,a as b}from"./el-col-d9273186.js";import{E as v}from"./el-button-8f21380c.js";import{E as g,a as h}from"./el-table-column-102f47a6.js";import"./el-tag-aef2ce12.js";import"./el-tooltip-4ed993c7.js";import{E as w}from"./el-popper-2fae9050.js";import{E as x}from"./el-progress-69812d34.js";import{E as k}from"./el-popconfirm-3191559c.js";/* empty css */const j=s("span",null,"导入步骤:",-1),E={style:{"margin-top":"7px"}},z=s("li",{style:{"margin-top":"7px"}},"编辑模板文件,(将需要导入的数据按格式填写进去)",-1),C=s("li",{style:{"margin-top":"7px"}},"上传模板文件,点击确认导入",-1),L=s("li",{style:{"margin-top":"7px"}},"查看导入结果,是否全部导入",-1),X={class:"mt-10px"},M={class:"flex justify-between mr-10px"},B=s("span",null,"导入结果",-1),F={style:{color:"red"}},S=e({__name:"Import",emits:["getList"],setup(e,{emit:S}){const $=e=>{const a=["application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"].includes(e.type),l=e.size/1024/1024<10;return a||m.error("上传文件必须是 XLSX 格式!"),l||m.error("上传文件大小不能超过 10MB!"),a&&l},q=a(),D=a([]),H=a([]),I=async e=>{D.value=[],D.value.push({filename:e.file.name,filesize:(e.file.size/1024).toFixed(1)+"KB",status:"上传成功"}),q.value=e.file},K=()=>{D.value=[],q.value=null},N=a(!1),P=a(0),R=async()=>{N.value=!0;const e=new FormData;e.append("file",q.value);try{const a=await c(e);a&&(H.value.push({filename:q.value.name,success_number:a.data.success_number,error_number:a.data.error_number,error_url:a.data.error_url}),P.value+=a.data.success_number,K(),S("getList"))}finally{N.value=!1}},A=async()=>{m.info("正在下载请稍等!");const e=await f();if(e){const a=document.createElement("a");a.style.display="none",a.href=e.data.url,a.target="_blank",a.download=e.data.filename;const l=new MouseEvent("click");a.dispatchEvent(l)}};return(e,a)=>(l(),t(d,null,[s("div",null,[j,s("ol",null,[s("li",E,[r(o(_),{onClick:A,target:"_blank",type:"primary"},{default:n((()=>[i(" 下载最新批量导入模板 ")])),_:1})]),z,C,L])]),s("div",null,[r(o(b),{gutter:10,class:"!mt-0 !mr-0"},{default:n((()=>[r(o(y),{span:1.5},{default:n((()=>[s("div",null,[r(o(x),{action:"","http-request":I,data:{path:"users"},"show-file-list":!1,"before-upload":$,accept:".xlsx",disabled:D.value.length>0},{default:n((()=>[r(o(w),{effect:"dark",content:"只支持上传XLSX文件",placement:"top"},{default:n((()=>[r(o(v),{type:"primary",size:"small",disabled:D.value.length>0},{default:n((()=>[i("上传文件")])),_:1},8,["disabled"])])),_:1})])),_:1},8,["disabled"])])])),_:1}),r(o(y),{span:1.5},{default:n((()=>[r(o(v),{type:"primary",size:"small",disabled:0===D.value.length,loading:N.value,onClick:R},{default:n((()=>[i("确认导入")])),_:1},8,["disabled","loading"])])),_:1})])),_:1}),r(o(h),{data:D.value,border:!0,style:{width:"100%"},class:"mt-10px"},{default:n((()=>[r(o(g),{prop:"filename",label:"文件名称",align:"left"}),r(o(g),{prop:"filesize",label:"文件大小",width:"100",align:"center"}),r(o(g),{prop:"status",label:"上传状态",width:"100",align:"center"}),r(o(g),{fixed:"right",label:"操作",width:"130",align:"center"},{default:n((()=>[r(o(k),{title:"确认删除吗?",onConfirm:K},{reference:n((()=>[r(o(v),{link:"",type:"primary",size:"small"},{default:n((()=>[i("删除")])),_:1})])),_:1})])),_:1})])),_:1},8,["data"])]),s("div",X,[s("div",M,[B,s("span",null,"成功导入总数:"+p(P.value),1)]),r(o(h),{data:H.value,border:!0,style:{width:"100%"},class:"mt-10px"},{default:n((()=>[r(o(g),{prop:"filename",label:"文件名称",align:"left"}),r(o(g),{prop:"success_number",label:"成功数量",width:"100",align:"center"}),r(o(g),{prop:"error_number",label:"失败数量",width:"100",align:"center"},{default:n((e=>[s("span",F,p(e.row.error_number),1)])),_:1}),r(o(g),{fixed:"right",label:"操作",width:"130",align:"center"},{default:n((e=>[e.row.error_number>0?(l(),u(o(_),{key:0,onClick:a=>(async e=>{m.info("正在下载请稍等!");const a=document.createElement("a");a.style.display="none",a.href=e.error_url,a.target="_blank",a.download=e.filename;const l=new MouseEvent("click");a.dispatchEvent(l)})(e.row),target:"_blank",type:"primary"},{default:n((()=>[i("下载失败数据")])),_:2},1032,["onClick"])):(l(),u(o(_),{key:1,type:"success",underline:!1},{default:n((()=>[i("成功全部导入")])),_:1}))])),_:1})])),_:1},8,["data"])])],64))}});export{S as _};

View File

@ -0,0 +1 @@
import{_ as t}from"./InfoWrite.vue_vue_type_script_setup_true_lang-8199338b.js";import"./useForm-ecbcdb43.js";import"./index-9da7d198.js";import"./el-col-d9273186.js";import"./el-tooltip-4ed993c7.js";import"./el-popper-2fae9050.js";import"./isNil-1f22f7b0.js";import"./index-cde97138.js";import"./use-form-common-props-9d083c67.js";import"./el-input-26eda071.js";import"./event-5568c9d8.js";import"./use-form-item-8b7f5d34.js";import"./el-tag-aef2ce12.js";import"./index-13d6a136.js";import"./el-checkbox-group-b617b779.js";import"./el-button-8f21380c.js";import"./el-date-picker-f32b0b71.js";import"./debounce-778af7ed.js";import"./el-switch-7720805d.js";import"./el-divider-fc00d058.js";import"./el-progress-69812d34.js";import"./style.css_vue_type_style_index_0_src_true_lang-0e7f3b44.js";import"./index-14d9f390.js";import"./strings-e2e316bd.js";import"./index-4dbb39b8.js";import"./useValidator-e352e7a8.js";export{t as default};

View File

@ -0,0 +1 @@
import{u as e,F as o}from"./useForm-ecbcdb43.js";import{u as s}from"./useValidator-e352e7a8.js";import{e as a,v as r,M as t,x as l,N as n,a3 as i,r as p,P as m,aj as d,o as c,l as u,k as f}from"./index-9da7d198.js";import{E as P}from"./el-button-8f21380c.js";const g=a({__name:"InfoWrite",setup(a){const{required:g,isTelephone:b}=s(),v=r(),h=t([{field:"name",label:"用户名称",component:"Input",colProps:{span:24},formItemProps:{rules:[g()]},componentProps:{style:{width:"50%"}}},{field:"nickname",label:"用户昵称",component:"Input",colProps:{span:24},componentProps:{style:{width:"50%"}}},{field:"telephone",label:"手机号",component:"Input",colProps:{span:24},formItemProps:{rules:[g(),{validator:b,trigger:"blur"}]},componentProps:{style:{width:"50%"},maxlength:11}},{field:"gender",label:"性别",colProps:{span:24},formItemProps:{rules:[g()]},component:"RadioGroup",componentProps:{options:[{label:"",value:"0"},{label:"",value:"1"}]}},{field:"save",colProps:{span:24},formItemProps:{slots:{default:()=>l(i,null,[l("div",{class:"w-[50%]"},[l(P,{loading:x.value,type:"primary",class:"w-[100%]",onClick:F},{default:()=>[n("保存")]})])])}}}]),{formRegister:w,formMethods:k}=e(),{setValues:y,getFormData:I,getElFormExpose:j}=k;y(v.getUser);const x=p(!1),F=async()=>{if(1===v.getUser.id)return m.warning("编辑账号为演示账号,无权限操作!");const e=await j();if(await(null==e?void 0:e.validate())){x.value=!0;const e=await I();try{const o=await d(e);o&&(v.updateUser(o.data),m.success("保存成功"))}finally{x.value=!1}}};return(e,s)=>(c(),u(f(o),{onRegister:f(w),schema:h,"hide-required-asterisk":"",class:"dark:border-1 dark:border-[var(--el-border-color)] dark:border-solid"},null,8,["onRegister","schema"]))}});export{g as _};

View File

@ -0,0 +1 @@
import{g as e,d as t}from"./issue-bdbecac5.js";import{u as s,_ as a}from"./Table.vue_vue_type_script_lang-5256bd69.js";import{e as l,K as o,r as i,M as r,x as p,a3 as n,N as m,o as d,l as u,m as c,k as _,ao as f}from"./index-9da7d198.js";import{E as j}from"./el-button-8f21380c.js";import{E as g}from"./el-switch-7720805d.js";import{a as h,E as b}from"./el-col-d9273186.js";import{_ as v}from"./Search.vue_vue_type_script_setup_true_lang-a57e37eb.js";import{_ as w}from"./ContentWrap.vue_vue_type_script_setup_true_lang-9c7e578a.js";import{u as y}from"./dict-b6f9162a.js";import"./el-message-box-24354127.js";import"./el-input-26eda071.js";import"./event-5568c9d8.js";import"./use-form-item-8b7f5d34.js";import"./use-form-common-props-9d083c67.js";import"./index-cde97138.js";import"./isNil-1f22f7b0.js";import"./el-overlay-037540a2.js";import"./el-checkbox-group-b617b779.js";import"./vnode-ae242abb.js";import"./useForm-ecbcdb43.js";import"./el-tooltip-4ed993c7.js";import"./el-popper-2fae9050.js";import"./el-tag-aef2ce12.js";import"./index-13d6a136.js";import"./el-date-picker-f32b0b71.js";import"./debounce-778af7ed.js";import"./el-divider-fc00d058.js";import"./el-progress-69812d34.js";import"./style.css_vue_type_style_index_0_src_true_lang-0e7f3b44.js";import"./index-14d9f390.js";import"./strings-e2e316bd.js";import"./index-4dbb39b8.js";import"./el-table-column-102f47a6.js";import"./el-image-viewer-83790b35.js";import"./el-dropdown-item-c082162c.js";import"./refs-4f0941bf.js";/* empty css */import"./_Uint8Array-bbcc3a61.js";import"./useIcon-6417bbff.js";import"./el-card-5fa288fa.js";import"./dict-b26f862b.js";const x=l({name:"HelpIssue",__name:"Issue",setup(l){const{push:x}=o(),{tableRegister:k,tableState:S,tableMethods:z}=s({fetchDataApi:async()=>{const{pageSize:t,currentPage:s}=S,a=await e({page:_(s),limit:_(t),..._(K)});return{list:a.data||[],total:a.count||0}},fetchDelApi:async e=>200===(await t(e)).code}),{dataList:P,loading:R,total:A,pageSize:C,currentPage:I}=S,{getList:L,delList:U}=z,D=i([]);(async()=>{const e=y(),t=await e.getDictObj(["sys_vadmin_platform"]);D.value=t.sys_vadmin_platform})();const E=r([{field:"id",label:"编号",show:!0,disabled:!0,width:"120px"},{field:"category.name",label:"类别名称",width:"200px",show:!0,disabled:!0},{field:"title",label:"标题",show:!0},{field:"view_number",label:"查看次数",show:!0,width:"100px"},{field:"is_active",label:"是否可见",show:!0,width:"100px",slots:{default:e=>{const t=e.row;return p(n,null,[p(g,{value:t.is_active,disabled:!0},null)])}}},{field:"create_datetime",label:"创建时间",show:!0,width:"200px",sortable:!0},{field:"create_user.name",label:"创建人",show:!0,width:"100px"},{field:"action",width:"120px",label:"操作",show:!0,slots:{default:e=>{const t=e.row;return p(n,null,[p(j,{type:"primary",link:!0,size:"small",onClick:()=>$(t)},{default:()=>[m("编辑")]}),p(j,{type:"danger",loading:N.value,link:!0,size:"small",onClick:()=>O(t)},{default:()=>[m("删除")]})])}}}]),H=r([{field:"name",label:"类别名称",component:"Input",componentProps:{clearable:!0,style:{width:"214px"}}},{field:"platform",label:"登录平台",component:"Select",componentProps:{style:{width:"214px"},options:D.value}},{field:"is_active",label:"是否可见",component:"Select",componentProps:{style:{width:"214px"},options:[{label:"可见",value:!0},{label:"不可见",value:!1}]}}]),K=i({}),M=e=>{I.value=1,K.value=e,L()},N=i(!1),O=async e=>{N.value=!0,await U(!0,[e.id]).finally((()=>{N.value=!1}))},$=async e=>{x(`/help/issue/form?id=${e.id}`)},q=()=>{x("/help/issue/form")};return(e,t)=>(d(),u(_(w),null,{default:c((()=>[p(_(v),{schema:H,onReset:M,onSearch:M},null,8,["schema"]),p(_(a),{"current-page":_(I),"onUpdate:currentPage":t[0]||(t[0]=e=>f(I)?I.value=e:null),"page-size":_(C),"onUpdate:pageSize":t[1]||(t[1]=e=>f(C)?C.value=e:null),showAction:"",columns:E,"default-expand-all":"","node-key":"id",data:_(P),loading:_(R),pagination:{total:_(A)},onRegister:_(k),onRefresh:_(L)},{toolbar:c((()=>[p(_(h),{gutter:10},{default:c((()=>[p(_(b),{span:1.5},{default:c((()=>[p(_(j),{type:"primary",onClick:q},{default:c((()=>[m("新增常见问题")])),_:1})])),_:1})])),_:1})])),_:1},8,["current-page","page-size","columns","data","loading","pagination","onRegister","onRefresh"])])),_:1}))}});export{x as default};

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
:export{namespace:v;elNamespace:el}.left-view{width:100%;height:100%;box-shadow:0 0 3px #00f;display:flex;flex-direction:column;background-color:#061e5d80;border-top:2px solid rgba(1,153,209,.5);padding:10px 20px}.left-view .main-content{flex:1;display:flex;flex-direction:column;margin-top:10px}.left-view .main-content .dv-border-box-11 .border-box-content{justify-content:center;align-items:center;display:-webkit-flex}.left-view .main-content .dv-border-box-11 .data-view{position:relative;height:100%;width:100%;justify-content:center;display:-webkit-flex}.left-view .main-content .dv-border-box-11 .data-view .data-title{font-size:35px;display:block;position:absolute;top:40%}.left-view .main-content .dv-border-box-11 .data-view .data-desc{font-size:14px;display:block;position:absolute;bottom:10%}

View File

@ -0,0 +1 @@
import{_ as e}from"./Left.vue_vue_type_style_index_0_lang-f909ab99.js";import"./index-9da7d198.js";import"./datav-vue3.es-2f340315.js";export{e as default};

View File

@ -0,0 +1 @@
import{e as a,W as t,o as s,j as e,y as l,z as d,x as i,m as c,k as n}from"./index-9da7d198.js";import{C as p}from"./datav-vue3.es-2f340315.js";const m={class:"left-view box-border"},o={class:"text-3xl font-bold"},u={class:"main-content"},v={class:"data-view"},f={class:"data-title"},r=l("span",{class:"data-desc"},"提示低于80ug/m³适合长期居住",-1),_={class:"data-view"},x={class:"data-title"},g=l("span",{class:"data-desc"},"提示低于75ug/m³适合长期居住",-1),w={class:"data-view"},D={class:"data-title"},b=l("span",{class:"data-desc"},"提示当前室外温度为25°C",-1),j={class:"data-view"},h={class:"data-title"},C=l("span",{class:"data-desc"},"提示当前室外湿度为38%RH",-1),M=a({__name:"Left",props:{leftData:{type:Object,required:!0},activeMenuName:t.string},setup(a){const t=a;return(a,M)=>(s(),e("div",m,[l("span",o,d(t.activeMenuName),1),l("div",u,[i(n(p),{title:"室内甲醛"},{default:c((()=>[l("div",v,[l("span",f,d(t.leftData.hcho)+"ug/m³",1),r])])),_:1}),i(n(p),{title:"室内PM2.5"},{default:c((()=>[l("div",_,[l("span",x,d(t.leftData.pm25)+"ug/m³",1),g])])),_:1}),i(n(p),{title:"室内温度"},{default:c((()=>[l("div",w,[l("span",D,d(t.leftData.temp)+"°C",1),b])])),_:1}),i(n(p),{title:"室内湿度"},{default:c((()=>[l("div",j,[l("span",h,d(t.leftData.hum)+"%RH",1),C])])),_:1})])]))}});export{M as _};

View File

@ -0,0 +1 @@
[data-v-52ce9834]:export{namespace:v;elNamespace:el}[data-v-52ce9834] .el-switch__core .el-switch__inner .is-icon{overflow:visible}

View File

@ -0,0 +1 @@
import{e as a,A as o,r as e,o as s,l,s as c,k as n,F as t,J as r,c_ as i,c$ as m,d0 as d,U as u,d1 as p,W as g,cM as _,f,$ as j,m as v,x as h,j as w,a4 as L,a3 as C,N as b,z as k}from"./index-9da7d198.js";import{E as I}from"./el-switch-7720805d.js";import{u as E}from"./useIcon-6417bbff.js";import"./el-button-8f21380c.js";import{E as x,a as z,b as D}from"./el-dropdown-item-c082162c.js";import"./el-popper-2fae9050.js";const V="var(--el-color-black)",A=r(a({__name:"ThemeSwitch",setup(a){const{getPrefixCls:r}=t(),i=r("theme-switch"),m=E({icon:"emojione-monotone:sun",color:"#fde047"}),d=E({icon:"emojione-monotone:crescent-moon",color:"#fde047"}),u=o(),p=e(u.getIsDark),g=a=>{u.setIsDark(a)};return(a,o)=>(s(),l(n(I),{class:c(n(i)),modelValue:p.value,"onUpdate:modelValue":o[0]||(o[0]=a=>p.value=a),"inline-prompt":"","border-color":V,"inactive-color":V,"active-color":V,"active-icon":n(m),"inactive-icon":n(d),onChange:g},null,8,["class","modelValue","active-icon","inactive-icon"]))}}),[["__scopeId","data-v-52ce9834"]]),P=()=>({changeLocale:async a=>{const o=i.global,e=await m(Object.assign({"../../locales/en.ts":()=>d((()=>import("./en-c7b65732.js")),[]),"../../locales/zh-CN.ts":()=>d((()=>import("./zh-CN-a83d200e.js")),[])}),`../../locales/${a}.ts`);o.setLocaleMessage(a,e.default),(a=>{const o=u();"legacy"===i.mode?i.global.locale=a:i.global.locale.value=a,o.setCurrentLocale({lang:a}),p(a)})(a)}}),T=a({__name:"LocaleDropdown",props:{color:g.string.def("")},setup(a){const{getPrefixCls:o}=t(),e=o("locale-dropdown"),r=_(),i=f((()=>r.getLocaleMap)),m=f((()=>r.getCurrentLocale)),d=a=>{if(a===n(m).lang)return;window.location.reload(),r.setCurrentLocale({lang:a});const{changeLocale:o}=P();o(a)};return(o,t)=>{const r=j("Icon");return s(),l(n(z),{class:c(n(e)),trigger:"click",onCommand:d},{dropdown:v((()=>[h(n(x),null,{default:v((()=>[(s(!0),w(C,null,L(i.value,(a=>(s(),l(n(D),{key:a.lang,command:a.lang},{default:v((()=>[b(k(a.name),1)])),_:2},1032,["command"])))),128))])),_:1})])),default:v((()=>[h(r,{size:18,icon:"ion:language-sharp",class:c(["cursor-pointer !p-0",o.$attrs.class]),color:a.color},null,8,["class","color"])])),_:1},8,["class"])}}});export{A as T,T as _};

View File

@ -0,0 +1 @@
[data-v-062c9279]:export{namespace:v;elNamespace:el}.v-login[data-v-062c9279]{overflow:auto}.v-login__left[data-v-062c9279]:before{position:absolute;top:0;left:0;z-index:-1;width:100%;height:100%;background-image:url(/assets/login-bg-e36b8ca7.svg);background-position:center;background-repeat:no-repeat;content:""}

View File

@ -0,0 +1 @@
import{e,A as t,r as s,f as l,o as a,j as i,x as o,m as r,y as p,s as m,k as x,z as n,B as c,T as d,C as u,l as _,D as g,F as v,G as j,H as f,I as h,J as w}from"./index-9da7d198.js";import{_ as y}from"./LoginForm.vue_vue_type_script_setup_true_lang-06e4cf32.js";import{_ as b}from"./TelephoneCodeForm.vue_vue_type_script_setup_true_lang-c75a388b.js";import{T as k,_ as T}from"./LocaleDropdown.vue_vue_type_script_setup_true_lang-7d558651.js";import"./useForm-ecbcdb43.js";import"./el-col-d9273186.js";import"./el-tooltip-4ed993c7.js";import"./el-popper-2fae9050.js";import"./isNil-1f22f7b0.js";import"./index-cde97138.js";import"./use-form-common-props-9d083c67.js";import"./el-input-26eda071.js";import"./event-5568c9d8.js";import"./use-form-item-8b7f5d34.js";import"./el-tag-aef2ce12.js";import"./index-13d6a136.js";import"./el-checkbox-group-b617b779.js";import"./el-button-8f21380c.js";import"./el-date-picker-f32b0b71.js";import"./debounce-778af7ed.js";import"./el-switch-7720805d.js";import"./el-divider-fc00d058.js";import"./el-progress-69812d34.js";import"./style.css_vue_type_style_index_0_src_true_lang-0e7f3b44.js";import"./index-14d9f390.js";import"./strings-e2e316bd.js";import"./index-4dbb39b8.js";import"./el-link-d575b38b.js";import"./useValidator-e352e7a8.js";import"./useIcon-6417bbff.js";import"./el-dropdown-item-c082162c.js";import"./refs-4f0941bf.js";const I={class:"relative flex mx-auto min-h-100vh"},L={class:"flex items-center relative text-white"},F=["src"],C={class:"text-20px font-bold"},z={class:"flex justify-center items-center h-[calc(100%-60px)]"},A=(e=>(f("data-v-062c9279"),e=e(),h(),e))((()=>p("img",{src:"/assets/login-box-bg-fec91044.svg",key:"1",alt:"",class:"w-350px"},null,-1))),B={class:"text-3xl text-white",key:"2"},D={class:"mt-5 font-normal text-white text-14px",key:"3"},P={class:"flex-1 p-30px lt-sm:p-10px dark:bg-[var(--login-bg-color)] relative"},$={class:"flex justify-between items-center text-white at-2xl:justify-end at-xl:justify-end"},q={class:"flex items-center at-2xl:hidden at-xl:hidden"},G=["src"],H={class:"text-20px font-bold"},J={class:"flex justify-end items-center space-x-10px"},N={class:"h-full flex items-center m-auto w-[100%] at-2xl:max-w-500px at-xl:max-w-500px at-md:max-w-500px at-lg:max-w-500px"},R=w(e({__name:"Login",setup(e){const{getPrefixCls:f}=v(),h=f("login"),w=t(),{t:R}=j(),V=s(!0),E=l((()=>w.getLogoImage)),K=()=>{V.value=!1},M=()=>{V.value=!0};return(e,t)=>(a(),i("div",{class:m([x(h),"h-[100%] relative lt-xl:bg-[var(--login-bg-color)] lt-sm:px-10px lt-xl:px-10px lt-md:px-10px"])},[o(x(g),{class:"h-full"},{default:r((()=>[p("div",I,[p("div",{class:m(`${x(h)}__left flex-1 bg-gray-500 bg-opacity-20 relative p-30px lt-xl:hidden`)},[p("div",L,[p("img",{src:E.value,alt:"",class:"w-48px h-48px mr-10px"},null,8,F),p("span",C,n(x(c)(x(w).getTitle)),1)]),p("div",z,[o(d,{appear:"",tag:"div","enter-active-class":"animate__animated animate__bounceInLeft"},{default:r((()=>[A,p("div",B,n(x(R)("login.welcome")),1),p("div",D,n(x(R)("login.message")),1)])),_:1})])],2),p("div",P,[p("div",$,[p("div",q,[p("img",{src:E.value,alt:"",class:"w-48px h-48px mr-10px"},null,8,G),p("span",H,n(x(c)(x(w).getTitle)),1)]),p("div",J,[o(x(k)),o(x(T),{class:"lt-xl:text-white dark:text-white"})])]),o(u,{appear:"","enter-active-class":"animate__animated animate__bounceInRight"},{default:r((()=>[p("div",N,[V.value?(a(),_(x(y),{key:0,class:"p-20px h-auto m-auto lt-xl:rounded-3xl lt-xl:light:bg-white",onToTelephone:K})):(a(),_(x(b),{key:1,class:"p-20px h-auto m-auto lt-xl:rounded-3xl lt-xl:light:bg-white",onToPassword:M}))])])),_:1})])])])),_:1})],2))}}),[["__scopeId","data-v-062c9279"]]);export{R as default};

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
import{_ as t}from"./LoginForm.vue_vue_type_script_setup_true_lang-06e4cf32.js";import"./useForm-ecbcdb43.js";import"./index-9da7d198.js";import"./el-col-d9273186.js";import"./el-tooltip-4ed993c7.js";import"./el-popper-2fae9050.js";import"./isNil-1f22f7b0.js";import"./index-cde97138.js";import"./use-form-common-props-9d083c67.js";import"./el-input-26eda071.js";import"./event-5568c9d8.js";import"./use-form-item-8b7f5d34.js";import"./el-tag-aef2ce12.js";import"./index-13d6a136.js";import"./el-checkbox-group-b617b779.js";import"./el-button-8f21380c.js";import"./el-date-picker-f32b0b71.js";import"./debounce-778af7ed.js";import"./el-switch-7720805d.js";import"./el-divider-fc00d058.js";import"./el-progress-69812d34.js";import"./style.css_vue_type_style_index_0_src_true_lang-0e7f3b44.js";import"./index-14d9f390.js";import"./strings-e2e316bd.js";import"./index-4dbb39b8.js";import"./el-link-d575b38b.js";import"./useValidator-e352e7a8.js";export{t as default};

View File

@ -0,0 +1 @@
import{u as e,F as o}from"./useForm-ecbcdb43.js";import{e as l,L as t,v as s,K as a,r,M as n,x as i,a3 as c,ak as d,w as p,R as u,o as m,l as f,k as h,al as g,S as v,G as w}from"./index-9da7d198.js";import{E as b}from"./el-button-8f21380c.js";import{E as P}from"./el-tag-aef2ce12.js";import{E as y}from"./el-link-d575b38b.js";import{u as j}from"./useValidator-e352e7a8.js";function k(e){return"function"==typeof e||"[object Object]"===Object.prototype.toString.call(e)&&!g(e)}const x="var(--el-color-primary)",R="#999",I=l({__name:"LoginForm",emits:["to-telephone"],setup(l,{emit:g}){const{required:I}=j(),z=t(),C=s(),{currentRoute:E,addRoute:F,push:_}=a(),{setStorage:L}=v(),{t:q}=w(),S=r(!1),V={telephone:[I()],method:[I()],password:[I()]},A=n([{field:"title",colProps:{span:24},formItemProps:{slots:{default:()=>i("h2",{class:"text-2xl font-bold text-center w-[100%]"},[q("login.login")])}}},{field:"telephone",label:q("login.telephone"),value:"15020221010",component:"Input",colProps:{span:24},componentProps:{style:{width:"100%"},placeholder:q("login.telephonePlaceholder"),maxlength:11}},{field:"password",label:q("login.password"),value:"kinit2022",component:"InputPassword",colProps:{span:24},componentProps:{style:{width:"100%"},placeholder:q("login.passwordPlaceholder")}},{field:"method",label:"登录类型",value:"0",component:"Input",hidden:!0},{field:"tool",colProps:{span:24},formItemProps:{slots:{default:()=>{let e;return i(c,null,[i("div",{class:"flex justify-between items-center w-[100%]"},[i(P,{modelValue:S.value,"onUpdate:modelValue":e=>S.value=e,label:q("login.remember"),size:"small"},null),i(y,{type:"primary",underline:!1},k(e=q("login.forgetPassword"))?e:{default:()=>[e]})])])}}}},{field:"login",colProps:{span:24},formItemProps:{slots:{default:()=>{let e,o;return i(c,null,[i("div",{class:"w-[100%]"},[i(b,{loading:K.value,type:"primary",class:"w-[100%]",onClick:B},k(e=q("login.login"))?e:{default:()=>[e]})]),i("div",{class:"w-[100%] mt-15px"},[i(b,{class:"w-[100%]",onClick:J},k(o=q("login.smsLogin"))?o:{default:()=>[o]})])])}}}},{field:"other",component:"Divider",label:q("login.otherLogin"),componentProps:{contentPosition:"center"}},{field:"otherIcon",colProps:{span:24},formItemProps:{slots:{default:()=>i(c,null,[i("div",{class:"flex justify-between w-[100%]"},[i(d,{icon:"ant-design:github-filled",size:30,class:"cursor-pointer ant-icon",color:R,hoverColor:x},null),i(d,{icon:"ant-design:wechat-filled",size:30,class:"cursor-pointer ant-icon",color:R,hoverColor:x},null),i(d,{icon:"ant-design:alipay-circle-filled",size:30,color:R,hoverColor:x,class:"cursor-pointer ant-icon"},null),i(d,{icon:"ant-design:weibo-circle-filled",size:30,color:R,hoverColor:x,class:"cursor-pointer ant-icon"},null)])])}}}]),{formRegister:D,formMethods:M}=e(),{getFormData:O,getElFormExpose:G}=M,K=r(!1),U=r("");p((()=>E.value),(e=>{var o;U.value=null==(o=null==e?void 0:e.query)?void 0:o.redirect}),{immediate:!0});const B=async()=>{const e=await G();if(await(null==e?void 0:e.validate())){K.value=!0;const e=await O();try{const o=await C.login(e);o?o.data.is_reset_password?H():_({path:"/reset/password"}):K.value=!1}catch(o){K.value=!1}}},H=async()=>{const e=await u();if(e){const o=e.data||[];L("roleRouters",o),await z.generateRoutes(o).catch((()=>{})),z.getAddRouters.forEach((e=>{F(e)})),z.setIsAddRouters(!0),_({path:U.value||z.addRouters[0].path})}},J=()=>{g("to-telephone")};return(e,l)=>(m(),f(h(o),{schema:A,rules:V,"label-position":"top","hide-required-asterisk":"",size:"large",class:"dark:border-1 dark:border-[var(--el-border-color)] dark:border-solid",onRegister:h(D)},null,8,["schema","onRegister"]))}});export{I as _};

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
[data-v-f3fb4ae5]:export{namespace:v;elNamespace:el}#map-container[data-v-f3fb4ae5]{padding:0;margin:0;width:100%;height:800px}#map-container[data-v-f3fb4ae5] .description{background-color:#fff;height:50px;display:flex;justify-content:space-between;align-items:center;padding:10px;box-sizing:border-box;border:2px solid #f05b72;border-radius:5px;font-size:14px}#map-container[data-v-f3fb4ae5] .point{display:inline-block;width:9px;height:9px;border-radius:50%;background-color:#f05b72;margin-bottom:1px;margin-right:2px}#map-container[data-v-f3fb4ae5] .name-box{display:inline;margin-right:8px}#map-container[data-v-f3fb4ae5] .alarmDevice{text-align:center;margin:0 auto;width:30px;height:30px;background-color:#f13737;box-shadow:0 0 15px #f61212;border-radius:50%;-webkit-animation-name:"alarmDeviceBreath";-webkit-animation-duration:1s;-webkit-animation-timing-function:ease;-webkit-animation-delay:0s;-webkit-animation-iteration-count:infinite;-webkit-animation-direction:alternate}@keyframes alarmDeviceBreath{0%{margin-left:0;margin-top:0;width:30px;height:30px;box-shadow:0 0 15px #f61212;opacity:1.2}to{margin-left:5px;margin-top:5px;width:20px;height:20px;box-shadow:0 0 10px #f61212;opacity:.6}}

File diff suppressed because one or more lines are too long

View File

@ -0,0 +1 @@
import{Y as e,e as t,G as l,M as a,x as o,N as s,a3 as i,r,o as p,j as n,m,k as d,ao as u,z as c,l as _,O as h}from"./index-9da7d198.js";import{u as j,_ as f}from"./Table.vue_vue_type_script_lang-5256bd69.js";import{E as b}from"./el-button-8f21380c.js";import{_ as g}from"./Search.vue_vue_type_script_setup_true_lang-a57e37eb.js";import{_ as w}from"./ContentWrap.vue_vue_type_script_setup_true_lang-9c7e578a.js";import{_ as v}from"./Detail.vue_vue_type_script_setup_true_lang-f4d558dd.js";import{_ as x}from"./Dialog.vue_vue_type_style_index_0_lang-fcbfdb5d.js";import"./el-message-box-24354127.js";import"./el-input-26eda071.js";import"./event-5568c9d8.js";import"./use-form-item-8b7f5d34.js";import"./use-form-common-props-9d083c67.js";import"./index-cde97138.js";import"./isNil-1f22f7b0.js";import"./el-overlay-037540a2.js";import"./el-checkbox-group-b617b779.js";import"./vnode-ae242abb.js";import"./useForm-ecbcdb43.js";import"./el-col-d9273186.js";import"./el-tooltip-4ed993c7.js";import"./el-popper-2fae9050.js";import"./el-tag-aef2ce12.js";import"./index-13d6a136.js";import"./el-date-picker-f32b0b71.js";import"./debounce-778af7ed.js";import"./el-switch-7720805d.js";import"./el-divider-fc00d058.js";import"./el-progress-69812d34.js";import"./style.css_vue_type_style_index_0_src_true_lang-0e7f3b44.js";import"./index-14d9f390.js";import"./strings-e2e316bd.js";import"./index-4dbb39b8.js";import"./el-table-column-102f47a6.js";import"./el-image-viewer-83790b35.js";import"./el-dropdown-item-c082162c.js";import"./refs-4f0941bf.js";/* empty css */import"./_Uint8Array-bbcc3a61.js";import"./useIcon-6417bbff.js";import"./el-card-5fa288fa.js";import"./Descriptions-fb3623c2.js";import"./el-descriptions-item-be87a779.js";const y=t({name:"SystemRecordOperation",__name:"Operation",setup(t){const{t:y}=l(),{tableRegister:k,tableState:R,tableMethods:S}=j({fetchDataApi:async()=>{const{pageSize:t,currentPage:l}=R,a=await(o={page:d(l),limit:d(t),...d(C)},e.get({url:"/vadmin/record/operations",params:o}));var o;return{list:a.data||[],total:a.count||0}}}),{dataList:z,loading:P,total:D,pageSize:U,currentPage:A}=R,{getList:I}=S,O=a([{field:"user_id",label:"操作人编号",show:!0,disabled:!0,width:"100px"},{field:"user_name",label:"操作人",show:!0,disabled:!0,width:"100px"},{field:"telephone",label:"手机号",show:!0,disabled:!0,width:"130px"},{field:"request_method",label:"请求方法",show:!0,disabled:!0,width:"100px"},{field:"client_ip",label:"客户端地址",width:"130px",show:!0,disabled:!0},{field:"tags",label:"标签",width:"130px",show:!0},{field:"summary",label:"操作内容",show:!0},{field:"description",label:"描述",show:!1},{field:"status_code",label:"操作状态",show:!0,width:"100px"},{field:"route_name",label:"接口函数",show:!1,width:"150px"},{field:"api_path",label:"接口地址",show:!1},{field:"params",label:"请求参数",show:!1},{field:"browser",label:"浏览器",show:!0,width:"150px"},{field:"system",label:"系统",show:!1,width:"150px"},{field:"process_time",label:"总耗时",show:!0},{field:"create_datetime",label:"操作时间",show:!0},{field:"action",width:"100px",show:!0,label:"操作",slots:{default:e=>{const t=e.row;return o(i,null,[o(b,{type:"primary",link:!0,onClick:()=>E(t,"detail")},{default:()=>[s("详情")]})])}}}]),q=a([{field:"telephone",label:"手机号",component:"Input",componentProps:{clearable:!1}},{field:"request_method",label:"请求方法",component:"Input",componentProps:{clearable:!1}},{field:"summary",label:"操作内容",component:"Input",componentProps:{clearable:!1}}]),C=r({}),L=e=>{A.value=1,C.value=e,I()},N=r(!1),V=r(""),M=r(),B=r(""),E=(e,t)=>{V.value=y("exampleDemo.detail"),B.value=t,M.value=e,N.value=!0};return(e,t)=>(p(),n(i,null,[o(d(w),null,{default:m((()=>[o(d(g),{schema:q,onReset:L,onSearch:L},null,8,["schema"]),o(d(f),{"current-page":d(A),"onUpdate:currentPage":t[0]||(t[0]=e=>u(A)?A.value=e:null),"page-size":d(U),"onUpdate:pageSize":t[1]||(t[1]=e=>u(U)?U.value=e:null),showAction:"",columns:O,"node-key":"id",data:d(z),loading:d(P),pagination:{total:d(D)},onRegister:d(k),onRefresh:d(I)},null,8,["current-page","page-size","columns","data","loading","pagination","onRegister","onRefresh"])])),_:1}),o(d(x),{modelValue:N.value,"onUpdate:modelValue":t[3]||(t[3]=e=>N.value=e),title:V.value,width:"800px"},{footer:m((()=>[o(d(b),{onClick:t[2]||(t[2]=e=>N.value=!1)},{default:m((()=>[s(c(d(y)("dialogDemo.close")),1)])),_:1})])),default:m((()=>["detail"===B.value?(p(),_(v,{key:0,"current-row":M.value},null,8,["current-row"])):h("",!0)])),_:1},8,["modelValue","title"])],64))}});export{y as default};

View File

@ -0,0 +1 @@
import{_ as o}from"./PasswordSendEmail.vue_vue_type_script_setup_true_lang-5a56f3de.js";import"./index-9da7d198.js";import"./el-button-8f21380c.js";import"./use-form-item-8b7f5d34.js";import"./use-form-common-props-9d083c67.js";import"./index-cde97138.js";import"./el-table-column-102f47a6.js";import"./el-popper-2fae9050.js";import"./isNil-1f22f7b0.js";import"./el-tag-aef2ce12.js";import"./index-13d6a136.js";import"./event-5568c9d8.js";import"./debounce-778af7ed.js";import"./el-tooltip-4ed993c7.js";import"./el-popconfirm-3191559c.js";/* empty css */import"./index-14d9f390.js";export{o as default};

View File

@ -0,0 +1 @@
import{e,r as a,o as s,j as t,y as r,x as l,m as i,N as n,k as d,l as o,O as p,P as u,az as f}from"./index-9da7d198.js";import{E as m}from"./el-button-8f21380c.js";import{E as c,a as _}from"./el-table-column-102f47a6.js";import"./el-tag-aef2ce12.js";import"./el-tooltip-4ed993c7.js";import"./el-popper-2fae9050.js";import{E as y}from"./el-popconfirm-3191559c.js";/* empty css */import{E as w}from"./index-14d9f390.js";const g={class:"flex justify-between"},k=r("span",null,"已选用户列表",-1),v=e({__name:"PasswordSendEmail",props:{selections:{type:Object}},setup(e){const v=e,b=a(JSON.parse(JSON.stringify(v.selections))),h=a(!1),j=async()=>{h.value=!0;const e=b.value.filter((e=>!0!==e.reset_password_status)).map((e=>e.id));if(e.length<=0)return u.warning("已全部重置完成,无需重复操作");try{const a=await f(e);a&&(b.value=a.data,u.success("重置成功"))}finally{h.value=!1}};return(e,a)=>{var u;return s(),t("div",null,[r("div",g,[k,l(d(m),{type:"primary",disabled:0===(null==(u=b.value)?void 0:u.length),loading:h.value,onClick:j},{default:i((()=>[n("确认重置并发送邮件通知")])),_:1},8,["disabled","loading"])]),l(d(_),{data:b.value,stripe:!0,border:!0,style:{width:"100%"},class:"mt-10px","max-height":"500px"},{default:i((()=>[l(d(c),{prop:"id",label:"用户编号",width:"100",align:"center"}),l(d(c),{prop:"name",label:"姓名",width:"120",align:"center"}),l(d(c),{prop:"email",label:"邮箱",width:"200",align:"center"}),l(d(c),{prop:"reset_password_status",label:"重置状态",width:"100",align:"center"},{default:i((e=>[!0===e.row.reset_password_status?(s(),o(d(w),{key:0,type:"success",effect:"dark"},{default:i((()=>[n(" 重置成功 ")])),_:1})):!1===e.row.reset_password_status?(s(),o(d(w),{key:1,type:"danger",effect:"dark"},{default:i((()=>[n(" 重置失败 ")])),_:1})):(s(),o(d(w),{key:2,type:"warning",effect:"dark"},{default:i((()=>[n(" 待重置 ")])),_:1}))])),_:1}),l(d(c),{prop:"send_sms_status",label:"发送状态",width:"100",align:"center"},{default:i((e=>[!0===e.row.send_sms_status?(s(),o(d(w),{key:0,type:"success",effect:"dark"},{default:i((()=>[n(" 发送成功 ")])),_:1})):!1===e.row.send_sms_status?(s(),o(d(w),{key:1,type:"danger",effect:"dark"},{default:i((()=>[n(" 发送失败 ")])),_:1})):(s(),o(d(w),{key:2,type:"warning",effect:"dark"},{default:i((()=>[n(" 待发送 ")])),_:1}))])),_:1}),l(d(c),{prop:"send_sms_msg",label:"描述",align:"center"}),l(d(c),{fixed:"right",label:"操作",width:"100",align:"center"},{default:i((e=>[l(d(y),{title:"确认移除吗?",onConfirm:a=>{return s=e.$index,void b.value.splice(s,1);var s}},{reference:i((()=>[!0!==e.row.send_sms_status?(s(),o(d(m),{key:0,link:"",type:"primary",size:"small"},{default:i((()=>[n("移除")])),_:1})):p("",!0)])),_:2},1032,["onConfirm"])])),_:1})])),_:1},8,["data"])])}}});export{v as _};

View File

@ -0,0 +1 @@
import{_ as o}from"./PasswordSendSMS.vue_vue_type_script_setup_true_lang-007e3bf1.js";import"./index-9da7d198.js";import"./el-button-8f21380c.js";import"./use-form-item-8b7f5d34.js";import"./use-form-common-props-9d083c67.js";import"./index-cde97138.js";import"./el-table-column-102f47a6.js";import"./el-popper-2fae9050.js";import"./isNil-1f22f7b0.js";import"./el-tag-aef2ce12.js";import"./index-13d6a136.js";import"./event-5568c9d8.js";import"./debounce-778af7ed.js";import"./el-tooltip-4ed993c7.js";import"./el-popconfirm-3191559c.js";/* empty css */import"./index-14d9f390.js";export{o as default};

View File

@ -0,0 +1 @@
import{e,r as s,o as a,j as t,y as r,x as l,m as n,N as i,k as d,l as o,O as p,P as u,aA as f}from"./index-9da7d198.js";import{E as c}from"./el-button-8f21380c.js";import{E as _,a as m}from"./el-table-column-102f47a6.js";import"./el-tag-aef2ce12.js";import"./el-tooltip-4ed993c7.js";import"./el-popper-2fae9050.js";import{E as y}from"./el-popconfirm-3191559c.js";/* empty css */import{E as w}from"./index-14d9f390.js";const g={class:"flex justify-between"},k=r("span",null,"已选用户列表",-1),v=e({__name:"PasswordSendSMS",props:{selections:{type:Object}},setup(e){const v=e,b=s(JSON.parse(JSON.stringify(v.selections))),h=s(!1),j=async()=>{h.value=!0;const e=b.value.filter((e=>!0!==e.reset_password_status)).map((e=>e.id));if(e.length<=0)return u.warning("已全部重置完成,无需重复操作");try{const s=await f(e);s&&(b.value=s.data,u.success("重置成功"))}finally{h.value=!1}};return(e,s)=>{var u;return a(),t("div",null,[r("div",g,[k,l(d(c),{type:"primary",disabled:0===(null==(u=b.value)?void 0:u.length),loading:h.value,onClick:j},{default:n((()=>[i("确认重置并发送短信通知")])),_:1},8,["disabled","loading"])]),l(d(m),{data:b.value,stripe:!0,border:!0,style:{width:"100%"},class:"mt-10px","max-height":"500px"},{default:n((()=>[l(d(_),{prop:"id",label:"用户编号",width:"100",align:"center"}),l(d(_),{prop:"name",label:"姓名",width:"120",align:"center"}),l(d(_),{prop:"telephone",label:"手机号",width:"120",align:"center"}),l(d(_),{prop:"reset_password_status",label:"重置状态",width:"100",align:"center"},{default:n((e=>[!0===e.row.reset_password_status?(a(),o(d(w),{key:0,type:"success",effect:"dark"},{default:n((()=>[i(" 重置成功 ")])),_:1})):!1===e.row.reset_password_status?(a(),o(d(w),{key:1,type:"danger",effect:"dark"},{default:n((()=>[i(" 重置失败 ")])),_:1})):(a(),o(d(w),{key:2,type:"warning",effect:"dark"},{default:n((()=>[i(" 待重置 ")])),_:1}))])),_:1}),l(d(_),{prop:"send_sms_status",label:"发送状态",width:"100",align:"center"},{default:n((e=>[!0===e.row.send_sms_status?(a(),o(d(w),{key:0,type:"success",effect:"dark"},{default:n((()=>[i(" 发送成功 ")])),_:1})):!1===e.row.send_sms_status?(a(),o(d(w),{key:1,type:"danger",effect:"dark"},{default:n((()=>[i(" 发送失败 ")])),_:1})):(a(),o(d(w),{key:2,type:"warning",effect:"dark"},{default:n((()=>[i(" 待发送 ")])),_:1}))])),_:1}),l(d(_),{prop:"send_sms_msg",label:"描述",align:"center"}),l(d(_),{fixed:"right",label:"操作",width:"100",align:"center"},{default:n((e=>[l(d(y),{title:"确认移除吗?",onConfirm:s=>{return a=e.$index,void b.value.splice(a,1);var a}},{reference:n((()=>[!0!==e.row.send_sms_status?(a(),o(d(c),{key:0,link:"",type:"primary",size:"small"},{default:n((()=>[i("移除")])),_:1})):p("",!0)])),_:2},1032,["onConfirm"])])),_:1})])),_:1},8,["data"])])}}});export{v as _};

View File

@ -0,0 +1 @@
import{_ as t}from"./PasswordWrite.vue_vue_type_script_setup_true_lang-1f4a7f46.js";import"./useForm-ecbcdb43.js";import"./index-9da7d198.js";import"./el-col-d9273186.js";import"./el-tooltip-4ed993c7.js";import"./el-popper-2fae9050.js";import"./isNil-1f22f7b0.js";import"./index-cde97138.js";import"./use-form-common-props-9d083c67.js";import"./el-input-26eda071.js";import"./event-5568c9d8.js";import"./use-form-item-8b7f5d34.js";import"./el-tag-aef2ce12.js";import"./index-13d6a136.js";import"./el-checkbox-group-b617b779.js";import"./el-button-8f21380c.js";import"./el-date-picker-f32b0b71.js";import"./debounce-778af7ed.js";import"./el-switch-7720805d.js";import"./el-divider-fc00d058.js";import"./el-progress-69812d34.js";import"./style.css_vue_type_style_index_0_src_true_lang-0e7f3b44.js";import"./index-14d9f390.js";import"./strings-e2e316bd.js";import"./index-4dbb39b8.js";import"./useValidator-e352e7a8.js";export{t as default};

View File

@ -0,0 +1 @@
import{u as s,F as e}from"./useForm-ecbcdb43.js";import{u as a}from"./useValidator-e352e7a8.js";import{e as r,v as o,M as t,r as l,o as i,l as n,k as d,x as p,N as m,a3 as c,P as u,Q as w}from"./index-9da7d198.js";import{E as f}from"./el-button-8f21380c.js";const g=r({__name:"PasswordWrite",setup(r){const{required:g}=a(),P=o(),b=t([{field:"title",colProps:{span:24}},{field:"password",label:"新密码",component:"InputPassword",colProps:{span:24},componentProps:{style:{width:"50%"},placeholder:"请输入新密码"}},{field:"password_two",label:"确认密码",component:"InputPassword",colProps:{span:24},componentProps:{style:{width:"50%"},placeholder:"请再次输入新密码"}},{field:"save",colProps:{span:24},formItemProps:{slots:{default:()=>p(c,null,[p("div",{class:"w-[50%]"},[p(f,{loading:_.value,type:"primary",class:"w-[100%]",onClick:j},{default:()=>[m("保存")]})])])}}}]),v={password:[g(),{min:8,max:16,message:"长度需为8-16个字符,请重新输入。",trigger:"blur"}],password_two:[g(),{min:8,max:16,message:"长度需为8-16个字符,请重新输入。",trigger:"blur"}]},{formRegister:h,formMethods:k}=s(),{setValues:y,getFormData:x,getElFormExpose:F}=k;y(P.getUser);const _=l(!1),j=async()=>{if(1===P.getUser.id)return u.warning("编辑账号为演示账号,无权限操作!");const s=await F();if(await(null==s?void 0:s.validate())){_.value=!0;const e=await x();try{await w(e)&&(null==s||s.resetFields(),u.success("保存成功"))}finally{_.value=!1}}};return(s,a)=>(i(),n(d(e),{onRegister:d(h),schema:b,rules:v,"hide-required-asterisk":"",class:"dark:border-1 dark:border-[var(--el-border-color)] dark:border-solid"},null,8,["onRegister","schema"]))}});export{g as _};

View File

@ -0,0 +1 @@
import{_ as t}from"./Privacy.vue_vue_type_script_setup_true_lang-0730f035.js";import"./index-9da7d198.js";import"./el-button-8f21380c.js";import"./use-form-item-8b7f5d34.js";import"./use-form-common-props-9d083c67.js";import"./index-cde97138.js";import"./style.css_vue_type_style_index_0_src_true_lang-0e7f3b44.js";export{t as default};

View File

@ -0,0 +1 @@
import{e as a,W as e,r as s,o as r,j as t,x as l,k as o,y as i,m as n,N as u,a3 as c,ai as d,dF as _,P as y}from"./index-9da7d198.js";import{E as m}from"./el-button-8f21380c.js";import{_ as p}from"./style.css_vue_type_style_index_0_src_true_lang-0e7f3b44.js";const f={class:"mt-10px",style:{float:"right"}},v=a({__name:"Privacy",props:{tabId:e.number},setup(a){const e=a,v=s(),b=s(""),w=async()=>{const a=await d({tab_id:e.tabId});a&&(b.value=a.data.web_privacy||"")},g=s(!1),k=async()=>{g.value=!0;try{if(await _({web_privacy:b.value}))return w(),y.success("更新成功")}finally{g.value=!1}},x={customAlert:(a,e)=>{switch(e){case"success":y.success(a);break;case"info":default:y.info(a);break;case"warning":y.warning(a);break;case"error":y.error(a)}},autoFocus:!0,scroll:!0,readOnly:!1,uploadImgShowBase64:!0};return w(),(a,e)=>(r(),t(c,null,[l(o(p),{modelValue:b.value,"onUpdate:modelValue":e[0]||(e[0]=a=>b.value=a),ref_key:"editorRef",ref:v,editorId:"web_privacy",editorConfig:x},null,8,["modelValue"]),i("div",f,[l(o(m),{loading:g.value,type:"primary",onClick:k},{default:n((()=>[u("立即保存")])),_:1},8,["loading"])])],64))}});export{v as _};

Some files were not shown because too many files have changed in this diff Show More