Compare commits
175 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
6b2e9b51d5 | ||
|
|
3502b6e878 | ||
|
|
cf761aea98 | ||
|
|
59aeae7f5a | ||
|
|
3c2609221b | ||
|
|
cdd869f49c | ||
|
|
cf293a1dec | ||
|
|
81bb4682d5 | ||
|
|
2168a82f8b | ||
|
|
b4563d004b | ||
|
|
ef43d9e616 | ||
|
|
16a8825962 | ||
|
|
57d110237b | ||
|
|
567eea9d1c | ||
|
|
a5390d475b | ||
|
|
f1a9688f47 | ||
|
|
9e5c053d76 | ||
|
|
8cb683f8fe | ||
|
|
08d14372e1 | ||
|
|
17b26f3f52 | ||
|
|
d4001f8109 | ||
|
|
ca75099899 | ||
|
|
e879cf0b7a | ||
|
|
231f476a6f | ||
|
|
4282130387 | ||
|
|
b6677ff3f3 | ||
|
|
585ceba4be | ||
|
|
e89397c648 | ||
|
|
5f9ff5bfbe | ||
|
|
934d7c6dba | ||
|
|
2ed6fbae02 | ||
|
|
29213bc600 | ||
|
|
d497fdcc30 | ||
|
|
7900632322 | ||
|
|
8bf3968007 | ||
|
|
5b0dfeee91 | ||
|
|
804537dc10 | ||
|
|
9cf7ea02a9 | ||
|
|
31bdf530c3 | ||
|
|
46758e52b6 | ||
|
|
65769b4957 | ||
|
|
58dd67bc25 | ||
|
|
4a7880532a | ||
|
|
50c2be1485 | ||
|
|
195cea7bd4 | ||
|
|
0022acba80 | ||
|
|
fd7f31e40a | ||
|
|
1edbfb2a1f | ||
|
|
b9e55fa6ba | ||
|
|
11d24f9110 | ||
|
|
ca914dde7f | ||
|
|
4f117c3f5e | ||
|
|
6a34c905e5 | ||
|
|
efb93e0e80 | ||
|
|
12369907f6 | ||
|
|
c763d20b6d | ||
|
|
34e68e2e70 | ||
|
|
4e2c6f80b5 | ||
|
|
4b03b1ea8f | ||
|
|
188d5512f2 | ||
|
|
0312f7aeef | ||
|
|
3b10e8ab14 | ||
|
|
613c7876f6 | ||
|
|
bc1eecbbd7 | ||
|
|
e46a615372 | ||
|
|
6b51fe2253 | ||
|
|
5010cb5d28 | ||
|
|
e87cf1b9d7 | ||
|
|
1bf33cb02b | ||
|
|
40184ead35 | ||
|
|
550fd44b23 | ||
|
|
0bc687481f | ||
|
|
9b76843a1e | ||
|
|
8dda9f6989 | ||
|
|
d8f1246d44 | ||
|
|
e927a7cf8c | ||
|
|
0e6dac960d | ||
|
|
60e285d923 | ||
|
|
7245ea6150 | ||
|
|
dd552d2cfa | ||
|
|
be9676343d | ||
|
|
37c8edce09 | ||
|
|
d038c65773 | ||
|
|
20d70f63ce | ||
|
|
3b9623b3b6 | ||
|
|
f3a0db8a56 | ||
|
|
a4fdcce61a | ||
|
|
bccb4ff5c4 | ||
|
|
d4a5a0538a | ||
|
|
ce11b02971 | ||
|
|
680441cecc | ||
|
|
568269b6a7 | ||
|
|
1ae60052fe | ||
|
|
1440a81fea | ||
|
|
faa8ab97bf | ||
|
|
074aac0423 | ||
|
|
f32273e61e | ||
|
|
bd1dc03968 | ||
|
|
9a4d22fccc | ||
|
|
12dbe3fad7 | ||
|
|
3e2649339d | ||
|
|
7e010a3074 | ||
|
|
77fd469ab4 | ||
|
|
c79501bd6a | ||
|
|
88ba3a410f | ||
|
|
fcd3ec6ae1 | ||
|
|
8e4464ccea | ||
|
|
a943c22556 | ||
|
|
99437ed472 | ||
|
|
0964fcfe43 | ||
|
|
c19349e588 | ||
|
|
c5bd55ed63 | ||
|
|
3fe60374bc | ||
|
|
a602c4645b | ||
|
|
6f941fab4d | ||
|
|
8fa97dd4a7 | ||
|
|
a9de59b00a | ||
|
|
6ee13de48e | ||
|
|
837057ace6 | ||
|
|
8b945bbf21 | ||
|
|
2480a21fee | ||
|
|
afc88d510d | ||
|
|
1b06e9a04c | ||
|
|
582c7a832d | ||
|
|
b021bc6660 | ||
|
|
6648951a28 | ||
|
|
44e7ce9a5d | ||
|
|
1f9dcda153 | ||
|
|
bd1279bb97 | ||
|
|
f65e2d1ff8 | ||
|
|
982213b49a | ||
|
|
962288cc81 | ||
|
|
9ab7b8da67 | ||
|
|
9c829c2d1b | ||
|
|
c9d2b78828 | ||
|
|
2e643290e4 | ||
|
|
9f058e2702 | ||
|
|
eb61e38612 | ||
|
|
e3df26a532 | ||
|
|
e978947715 | ||
|
|
719e0fb513 | ||
|
|
a1ca5d64cc | ||
|
|
a3a9995e59 | ||
|
|
d792963b14 | ||
|
|
0b5b0de1db | ||
|
|
4b78c8b6dd | ||
|
|
70eae71e17 | ||
|
|
b0e443d299 | ||
|
|
b53870492c | ||
|
|
25339f3ba5 | ||
|
|
cc23fe0a31 | ||
|
|
ec90e6f9b2 | ||
|
|
971f078abc | ||
|
|
c012b18982 | ||
|
|
2dce1fe5a7 | ||
|
|
7088f5add1 | ||
|
|
f695425554 | ||
|
|
686d92cc4c | ||
|
|
390a5a2fc8 | ||
|
|
1541a473ae | ||
|
|
493a6a6286 | ||
|
|
5086c3b49e | ||
|
|
80e16b16f8 | ||
|
|
087069d17e | ||
|
|
ffac07e5d0 | ||
|
|
79d5170ecc | ||
|
|
8c0e4ad87a | ||
|
|
bae138de57 | ||
|
|
ede5f226e0 | ||
|
|
d01a343c56 | ||
|
|
8cc61e4d6e | ||
|
|
e492f37467 | ||
|
|
8daa5277ae | ||
|
|
00b8dbd9b6 | ||
|
|
b66ef73d10 |
1
.gitignore
vendored
@ -17,6 +17,7 @@ bin-release/
|
||||
# should NOT be excluded as they contain compiler settings and other important
|
||||
# information for Eclipse / Flash Builder.
|
||||
|
||||
|
||||
/.idea
|
||||
/upgrade
|
||||
niucloud/public/.htaccess
|
||||
|
||||
2
LICENSE
@ -1,6 +1,6 @@
|
||||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2023 niucloud-admin
|
||||
Copyright (c) 2025 niucloud-admin
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
||||
this software and associated documentation files (the "Software"), to deal in
|
||||
|
||||
36
README.en.md
@ -1,36 +0,0 @@
|
||||
# niucloud-admin
|
||||
|
||||
#### Description
|
||||
{**When you're done, you can delete the content in this README and update the file with details for others getting started with your repository**}
|
||||
|
||||
#### Software Architecture
|
||||
Software architecture description
|
||||
|
||||
#### Installation
|
||||
|
||||
1. xxxx
|
||||
2. xxxx
|
||||
3. xxxx
|
||||
|
||||
#### Instructions
|
||||
|
||||
1. xxxx
|
||||
2. xxxx
|
||||
3. xxxx
|
||||
|
||||
#### Contribution
|
||||
|
||||
1. Fork the repository
|
||||
2. Create Feat_xxx branch
|
||||
3. Commit your code
|
||||
4. Create Pull Request
|
||||
|
||||
|
||||
#### Gitee Feature
|
||||
|
||||
1. You can use Readme\_XXX.md to support different languages, such as Readme\_en.md, Readme\_zh.md
|
||||
2. Gitee blog [blog.gitee.com](https://blog.gitee.com)
|
||||
3. Explore open source project [https://gitee.com/explore](https://gitee.com/explore)
|
||||
4. The most valuable open source project [GVP](https://gitee.com/gvp)
|
||||
5. The manual of Gitee [https://gitee.com/help](https://gitee.com/help)
|
||||
6. The most popular members [https://gitee.com/gitee-stars/](https://gitee.com/gitee-stars/)
|
||||
99
README.md
@ -2,13 +2,13 @@
|
||||
### NIUCLOUD-ADMIN 是什么?
|
||||
niucloud-admin-saas是一款快速开发通用管理后台框架,整体功能架构全部精心设计!代码干净整洁!低耦合,高质量!!!前后端API接口完全分离 :raised_hands: !!!前端采用最新技术 **Vite+TypeScript+Vue3+ElementPlus** ,后台采用PHP8、MYSQL8、THINKPHP8 全部最新技术栈,内置Workman高性能消息队列,计划任务处理,完全兼容容器路由运行技术。 采用多租户多站点多应用多插件任意组合使用的SAAS架构设计,内置代码生成器,插件生成器,一键云编译、一键云部署,集成用户权限、表单设计、云存储、短信发送、素材中心、微信及公众号、Api模块一系列开箱即用功能,是一款快速搭建开发企业级应用的软件系统。源码100%开源无加密!框架采用MIT协议,终身免费,商用免费!
|
||||
|
||||
目前已经有 NIUCLOUD **SHOP商城** + **分销** + **VIPCard** + **上门服务** 插件。 更多应用插件正在陆续上线中... :clap: :clap: :clap:
|
||||
目前NIUCLOUD生态开发者入驻近千人,各行业应用插件正在陆续上线中... :clap: :clap: :clap:
|
||||
|
||||
请到官方网站了解更多 http://www.niucloud.com
|
||||
请到官方网站了解更多 https://www.niucloud.com
|
||||
|
||||
### NIUCLOUD-ADMIN 技术特点
|
||||
|
||||
:fa-quote-left: 前端(**Vite+TypeScript+Vue3+ElementPlus**)+ **API**接口完全分离 + 后端(**PHP8+THINKPHP8**) + 数据库(**MYSQL8.0+**) :fa-quote-right:
|
||||
:fa-quote-left: 前端(**Vite+TypeScript+Vue3+ElementPlus**)+ **API**接口完全分离 + 后端(**PHP8+THINKPHP8**) + 数据库(**MYSQL8.0+**) :fa-quote-right:
|
||||
```
|
||||
- 支持composer快速安装扩展,支持redis缓存以及消息队列,支持多语言设计开发,采用严格的restful的api设计开发。
|
||||
- 后台前后端分离采用element-plus、vue3.0、typescript、vite、pina等前端技术,同时使用i18n支持国际化多语言开发。
|
||||
@ -18,46 +18,47 @@ niucloud-admin-saas是一款快速开发通用管理后台框架,整体功能
|
||||
- niucloud-admin已经搭建好常规系统的开发底层,具体的底层功能包括:管理员管理,权限管理,网站设置,计划任务管理,素材管理,会员管理,会员账户管理,微信公众号以及小程序管理,支付管理,第三方登录管理,消息管理,短信管理,文章管理,前端装修等全面的基础功能,这样开发者不需要开发基础的结构而专心开发业务。
|
||||
- niucloud-admin系统内置支持微信/支付宝支付,微信公众号/小程序/短信消息管理,阿里云/腾讯云短信,七牛云/阿里云存储等基础的功能扩展,后续会根据实际业务不断扩展基础组件。
|
||||
- niucloud-admin结合系统结构特点专门开发了代码生成器,这样开发者根据数据表就可以一键生成基础的业务代码,包括:后台php业务代码以及对应的前端vue代码。
|
||||
- 手机端设计开发了自定义装修,同时提供了基础的开发组件,方便开发者设计开发手机自定义页面装修的开发需求
|
||||
- niucloud-admin手机端设计开发了自定义装修,同时提供了基础的开发组件,方便开发者设计开发手机自定义页面装修的开发需求
|
||||
- niucloud-admin框架支持APP在线一键云打包,升级功能(2025/9/10已上线)
|
||||
```
|
||||
### NIUCLOUD 框架截图
|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||

|
||||
|
||||
|
||||
### 商城插件 :point_right: SHOP
|
||||

|
||||

|
||||

|
||||
<table>
|
||||
<tbody>
|
||||
<tr>
|
||||
<td><img src="https://niucloud-bucket.oss-cn-beijing.aliyuncs.com/gitee_saas/saas_shop3.jpg"></td>
|
||||
<td><img src="https://niucloud-bucket.oss-cn-beijing.aliyuncs.com/gitee_saas/saas_shop7.jpg"></td>
|
||||
<td><img src="https://niucloud-bucket.oss-cn-beijing.aliyuncs.com/gitee_saas/saas_shop9.jpg"></td>
|
||||
<td><img src="https://niucloud-bucket.oss-cn-beijing.aliyuncs.com/gitee_saas/saas_shop11.jpg"></td>
|
||||
</tr>
|
||||
<tr>
|
||||
<td><img src="https://niucloud-bucket.oss-cn-beijing.aliyuncs.com/gitee_saas/saas_shop6.jpg"></td>
|
||||
<td><img src="https://niucloud-bucket.oss-cn-beijing.aliyuncs.com/gitee_saas/saas_shop10.jpg"></td>
|
||||
<td><img src="https://niucloud-bucket.oss-cn-beijing.aliyuncs.com/gitee_saas/saas_shop12.jpg"></td>
|
||||
<td><img src="https://niucloud-bucket.oss-cn-beijing.aliyuncs.com/gitee_saas/saas_shop13.jpg"></td>
|
||||
</tr>
|
||||
</tbody></table>
|
||||
|
||||
### 分销插件 :point_right: FENXIAO
|
||||

|
||||

|
||||

|
||||
|
||||
### 上门服务插件 :point_right: O2O
|
||||

|
||||

|
||||

|
||||
|
||||
### 会员卡插件 :point_right: VIPCard
|
||||

|
||||
|
||||
### 旅游管理插件 :point_right: TOURS
|
||||

|
||||

|
||||
|
||||
|
||||
### 操作指南
|
||||
[官网地址](https://www.niucloud.com)
|
||||
| [服务市场](https://www.niucloud.com)
|
||||
| [使用手册](https://www.niucloud.com/doc)
|
||||
| [二开手册](https://www.niucloud.com/doc)
|
||||
| [开发视频](https://www.niucloud.com/doc)
|
||||
| [API接口手册](https://api.niucloud.com/apidoc.html?target_id=001)
|
||||
| [论坛地址](https://bbs.niucloud.com)
|
||||
[官网地址](https://www.niucloud.com)
|
||||
| [服务市场](https://www.niucloud.com)
|
||||
| [使用手册](https://www.niucloud.com/doc)
|
||||
| [二开手册](https://www.niucloud.com/doc)
|
||||
| [开发视频](https://www.niucloud.com/doc)
|
||||
| [API接口手册](https://api.niucloud.com/apidoc.html?target_id=001)
|
||||
| [论坛地址](https://niucloud.com/bbs)
|
||||
|
||||
|
||||
### 二次开发视频教程
|
||||
@ -73,17 +74,24 @@ niucloud-admin-saas是一款快速开发通用管理后台框架,整体功能
|
||||
|
||||
|
||||
### 演示地址
|
||||
- 站点后台演示网址:[<a href='http://demo-saas.site.niucloud.com/site/' target="_blank"> 查看 </a>]
|
||||
<a href='http://demo-saas.site.niucloud.com/site/' target="_blank">http://demo-saas.site.niucloud.com/site/
|
||||
旅游系统账号:tourtest 密码:123456<br/>
|
||||
商城系统账号:shoptest 密码:123456<br/>
|
||||
会员卡系统账号:cardtest 密码:123456<br/>
|
||||
- 平台后台演示网址:[<a href='http://demo-saas.site.niucloud.com/admin/' target="_blank"> 查看 </a>]
|
||||
<a href='http://demo-saas.site.niucloud.com/admin/' target="_blank">http://demo-saas.site.niucloud.com/admin/ 账号:admin 密码:123456
|
||||
- 平台后台演示网址:[<a href='http://demo-saas.site.niucloud.com/admin/' target="_blank"> 查看 </a>]
|
||||
<a href='http://demo-saas.site.niucloud.com/admin/' target="_blank">http://demo-saas.site.niucloud.com/admin/ 账号:admin 密码:123456
|
||||
|
||||
- 商城后台演示网址:[<a href='https://demo-saas.site.niucloud.com/site/shop/index' target="_blank"> 查看 </a>]
|
||||
<a href='https://demo-saas.site.niucloud.com/site/shop/index' target="_blank">http://demo-saas.site.niucloud.com/site/ 商城系统账号:admin 密码:123456<br/>
|
||||
|
||||
- 旅游后台演示网址:[<a href='https://demo-saas.site.niucloud.com/site/tourism/index' target="_blank"> 查看 </a>]
|
||||
<a href='https://demo-saas.site.niucloud.com/site/tourism/index' target="_blank">https://demo-saas.site.niucloud.com/site/tourism/index 旅游系统账号:admin 密码:123456<br/>
|
||||
|
||||
- 会员卡后台演示网址:[<a href='https://demo-saas.site.niucloud.com/site/vipcard/index' target="_blank"> 查看 </a>]
|
||||
<a href='https://demo-saas.site.niucloud.com/site/vipcard/index' target="_blank">https://demo-saas.site.niucloud.com/site/vipcard/index 会员卡系统账号:admin 密码:123456<br/>
|
||||
|
||||
|
||||
|
||||
|
||||
### 加入NIUCLOUD开发者生态,一起助力成就程序员创业梦想!!!
|
||||
|
||||
加入企业微信群技术交流,请扫描下面二维码 :point_down:
|
||||
加入企业微信群技术交流,请扫描下面二维码 :point_down:
|
||||
|
||||

|
||||
|
||||
@ -106,9 +114,9 @@ niucloud-admin-saas是一款快速开发通用管理后台框架,整体功能
|
||||
|
||||
5.商用请仔细审查代码和漏洞,不得用于任一国家许可范围之外的商业应用,产生的一切任何后果责任自负;
|
||||
|
||||
6.一切事物有个人喜好的标准,本开源代码意在分享,不喜勿喷。
|
||||
6.一切事物有个人喜好的标准,本开源代码意在分享,不喜勿喷。
|
||||
|
||||
|
||||

|
||||
|
||||
|
||||
### 版权信息
|
||||
@ -116,7 +124,6 @@ niucloud-admin-saas是一款快速开发通用管理后台框架,整体功能
|
||||
|
||||
All rights reserved。
|
||||
|
||||
杭州数字云动科技有限公司
|
||||
杭州牛之云科技有限公司
|
||||
|
||||
提供技术支持
|
||||
杭州数字云动科技有限公司
|
||||
杭州牛之云科技有限公司
|
||||
提供技术支持
|
||||
143
admin/DEVELOPMENT_GUIDE.md
Normal file
@ -0,0 +1,143 @@
|
||||
# NiuCloud Admin 开发规范
|
||||
|
||||
## 技术栈区分
|
||||
|
||||
本项目采用前后端分离架构,包含两个主要前端部分:
|
||||
|
||||
1. **PC端后台管理系统**
|
||||
- 框架: Vue 3 + TypeScript + Vite
|
||||
- UI组件库: Element Plus
|
||||
- 状态管理: Pinia
|
||||
- 样式处理: SCSS + Tailwind CSS
|
||||
|
||||
2. **移动端应用**
|
||||
- 框架: uni-app + Vue 3 + TypeScript
|
||||
- UI组件库: uview-plus
|
||||
- 状态管理: Pinia
|
||||
- 样式处理: SCSS + Windi CSS
|
||||
|
||||
## 关键组件使用规范
|
||||
|
||||
### 消息提示组件
|
||||
|
||||
**重要注意事项:请根据开发平台选择正确的消息提示组件!**
|
||||
|
||||
#### PC端 (admin目录)
|
||||
- **必须使用Element Plus的消息提示组件**,而不是uni-app的方法
|
||||
- 主要组件包括:`ElMessage`、`ElMessageBox`、`ElNotification`等
|
||||
- 导入方式:`import { ElMessage, ElMessageBox } from 'element-plus'`
|
||||
- 使用示例:
|
||||
```typescript
|
||||
import { ElMessage } from 'element-plus'
|
||||
|
||||
// 成功消息
|
||||
ElMessage.success('操作成功')
|
||||
|
||||
// 错误消息
|
||||
ElMessage.error('操作失败')
|
||||
|
||||
// 确认对话框
|
||||
ElMessageBox.confirm('确定要执行此操作吗?', '提示', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
// 用户点击确认后的逻辑
|
||||
}).catch(() => {
|
||||
// 用户点击取消后的逻辑
|
||||
})
|
||||
```
|
||||
|
||||
#### 移动端 (uni-app目录)
|
||||
- **使用uni-app提供的API**进行消息提示
|
||||
- 主要方法包括:`uni.showToast`、`uni.showModal`、`uni.showLoading`等
|
||||
- 使用示例:
|
||||
```typescript
|
||||
// 成功提示
|
||||
uni.showToast({
|
||||
title: '操作成功',
|
||||
icon: 'success',
|
||||
duration: 2000
|
||||
})
|
||||
|
||||
// 模态对话框
|
||||
uni.showModal({
|
||||
title: '提示',
|
||||
content: '确定要执行此操作吗?',
|
||||
success: (res) => {
|
||||
if (res.confirm) {
|
||||
// 用户点击确认后的逻辑
|
||||
}
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
## API请求规范
|
||||
|
||||
### PC端API请求
|
||||
- 使用`@/utils/request.ts`封装的请求工具
|
||||
- 支持`showSuccessMessage`和`showErrorMessage`选项控制消息显示
|
||||
- 示例:
|
||||
```typescript
|
||||
import request from '@/utils/request'
|
||||
|
||||
// GET请求
|
||||
export function getOrderList(params: Record<string, any>) {
|
||||
return request.get('order/list', params)
|
||||
}
|
||||
|
||||
// POST请求(带成功消息)
|
||||
export function createOrder(params: Record<string, any>) {
|
||||
return request.post('order/create', params, { showSuccessMessage: true })
|
||||
}
|
||||
```
|
||||
|
||||
### 移动端API请求
|
||||
- 使用uni-app的`uni.request`或封装的请求工具
|
||||
- 示例:
|
||||
```typescript
|
||||
// 发送请求
|
||||
uni.request({
|
||||
url: 'https://example.com/api/order/list',
|
||||
method: 'GET',
|
||||
data: {
|
||||
page: 1,
|
||||
limit: 10
|
||||
},
|
||||
success: (res) => {
|
||||
// 处理成功响应
|
||||
},
|
||||
fail: (err) => {
|
||||
// 处理请求失败
|
||||
}
|
||||
})
|
||||
```
|
||||
|
||||
## 代码风格规范
|
||||
|
||||
1. **文件命名**
|
||||
- 组件文件:PascalCase,如 `OrderList.vue`
|
||||
- 普通文件:kebab-case 或 camelCase,如 `api-service.ts` 或 `commonUtils.ts`
|
||||
|
||||
2. **TypeScript规范**
|
||||
- 为函数参数、返回值和重要变量添加明确的类型注解
|
||||
- 使用接口 (interface) 定义复杂数据结构
|
||||
- 避免 `any` 类型的滥用
|
||||
|
||||
3. **Vue组件规范**
|
||||
- 使用 Vue 3 Composition API 和 `<script setup lang="ts">` 语法
|
||||
- 组件样式建议使用 scoped 属性或 CSS Modules
|
||||
|
||||
## 国际化规范
|
||||
|
||||
- PC端使用Vue I18n进行国际化,语言文件位于`src/lang`目录
|
||||
- 移动端同样使用Vue I18n,语言文件位于`src/app/locale`目录
|
||||
- 使用`t('key')`函数获取翻译文本
|
||||
|
||||
## 其他重要规范
|
||||
|
||||
- 严格遵循RESTful API设计规范
|
||||
- 统一处理API响应数据和错误情况
|
||||
- 代码提交前确保通过TypeScript类型检查
|
||||
- 组件开发遵循高内聚低耦合原则
|
||||
- 优先复用现有组件和工具函数
|
||||
2
admin/auto-imports.d.ts
vendored
@ -1,5 +1,7 @@
|
||||
// Generated by 'unplugin-auto-import'
|
||||
export {}
|
||||
declare global {
|
||||
const ElMessage: typeof import('element-plus/es')['ElMessage']
|
||||
const ElMessageBox: typeof import('element-plus/es')['ElMessageBox']
|
||||
const ElNotification: typeof import('element-plus/es')['ElNotification']
|
||||
}
|
||||
|
||||
10
admin/components.d.ts
vendored
@ -9,6 +9,7 @@ declare module '@vue/runtime-core' {
|
||||
export interface GlobalComponents {
|
||||
Attachment: typeof import('./src/components/upload-attachment/attachment.vue')['default']
|
||||
DiyLink: typeof import('./src/components/diy-link/index.vue')['default']
|
||||
DiyPage: typeof import('./src/components/diy-page/index.vue')['default']
|
||||
Editor: typeof import('./src/components/editor/index.vue')['default']
|
||||
ElAlert: typeof import('element-plus/es')['ElAlert']
|
||||
ElAside: typeof import('element-plus/es')['ElAside']
|
||||
@ -17,6 +18,8 @@ declare module '@vue/runtime-core' {
|
||||
ElBreadcrumbItem: typeof import('element-plus/es')['ElBreadcrumbItem']
|
||||
ElButton: typeof import('element-plus/es')['ElButton']
|
||||
ElCard: typeof import('element-plus/es')['ElCard']
|
||||
ElCarousel: typeof import('element-plus/es')['ElCarousel']
|
||||
ElCarouselItem: typeof import('element-plus/es')['ElCarouselItem']
|
||||
ElCheckbox: typeof import('element-plus/es')['ElCheckbox']
|
||||
ElCheckboxGroup: typeof import('element-plus/es')['ElCheckboxGroup']
|
||||
ElCol: typeof import('element-plus/es')['ElCol']
|
||||
@ -51,6 +54,7 @@ declare module '@vue/runtime-core' {
|
||||
ElPageHeader: typeof import('element-plus/es')['ElPageHeader']
|
||||
ElPagination: typeof import('element-plus/es')['ElPagination']
|
||||
ElPopover: typeof import('element-plus/es')['ElPopover']
|
||||
ElProgress: typeof import('element-plus/es')['ElProgress']
|
||||
ElRadio: typeof import('element-plus/es')['ElRadio']
|
||||
ElRadioButton: typeof import('element-plus/es')['ElRadioButton']
|
||||
ElRadioGroup: typeof import('element-plus/es')['ElRadioGroup']
|
||||
@ -58,6 +62,8 @@ declare module '@vue/runtime-core' {
|
||||
ElRow: typeof import('element-plus/es')['ElRow']
|
||||
ElScrollbar: typeof import('element-plus/es')['ElScrollbar']
|
||||
ElSelect: typeof import('element-plus/es')['ElSelect']
|
||||
ElSkeleton: typeof import('element-plus/es')['ElSkeleton']
|
||||
ElSkeletonItem: typeof import('element-plus/es')['ElSkeletonItem']
|
||||
ElSlider: typeof import('element-plus/es')['ElSlider']
|
||||
ElStatistic: typeof import('element-plus/es')['ElStatistic']
|
||||
ElStep: typeof import('element-plus/es')['ElStep']
|
||||
@ -71,6 +77,7 @@ declare module '@vue/runtime-core' {
|
||||
ElTag: typeof import('element-plus/es')['ElTag']
|
||||
ElTimeline: typeof import('element-plus/es')['ElTimeline']
|
||||
ElTimelineItem: typeof import('element-plus/es')['ElTimelineItem']
|
||||
ElTimePicker: typeof import('element-plus/es')['ElTimePicker']
|
||||
ElTooltip: typeof import('element-plus/es')['ElTooltip']
|
||||
ElTree: typeof import('element-plus/es')['ElTree']
|
||||
ElTreeSelect: typeof import('element-plus/es')['ElTreeSelect']
|
||||
@ -78,13 +85,16 @@ declare module '@vue/runtime-core' {
|
||||
ExportSure: typeof import('./src/components/export-sure/index.vue')['default']
|
||||
HeatMap: typeof import('./src/components/heat-map/index.vue')['default']
|
||||
Icon: typeof import('./src/components/icon/index.vue')['default']
|
||||
Markdown: typeof import('./src/components/markdown/index.vue')['default']
|
||||
PopoverInput: typeof import('./src/components/popover-input/index.vue')['default']
|
||||
RangeInput: typeof import('./src/components/range-input/index.vue')['default']
|
||||
RouterLink: typeof import('vue-router')['RouterLink']
|
||||
RouterView: typeof import('vue-router')['RouterView']
|
||||
SelectArea: typeof import('./src/components/select-area/index.vue')['default']
|
||||
SelectIcon: typeof import('./src/components/select-icon/index.vue')['default']
|
||||
SpreadPopup: typeof import('./src/components/spread-popup/index.vue')['default']
|
||||
UploadAttachment: typeof import('./src/components/upload-attachment/index.vue')['default']
|
||||
UploadAudio: typeof import('./src/components/upload-audio/index.vue')['default']
|
||||
UploadFile: typeof import('./src/components/upload-file/index.vue')['default']
|
||||
UploadImage: typeof import('./src/components/upload-image/index.vue')['default']
|
||||
UploadVideo: typeof import('./src/components/upload-video/index.vue')['default']
|
||||
|
||||
136
admin/package-lock.json
generated
@ -9,12 +9,18 @@
|
||||
"version": "1.0.0",
|
||||
"dependencies": {
|
||||
"@element-plus/icons-vue": "2.0.10",
|
||||
"@fullcalendar/core": "^6.1.19",
|
||||
"@fullcalendar/daygrid": "^6.1.19",
|
||||
"@fullcalendar/interaction": "^6.1.19",
|
||||
"@fullcalendar/vue3": "^6.1.19",
|
||||
"@heroicons/vue": "^2.2.0",
|
||||
"@highlightjs/vue-plugin": "2.1.0",
|
||||
"@types/lodash-es": "4.17.6",
|
||||
"@vueuse/core": "9.12.0",
|
||||
"axios": "1.4.0",
|
||||
"crypto-js": "4.1.1",
|
||||
"css-color-function": "1.3.3",
|
||||
"date-fns": "^4.1.0",
|
||||
"day": "^0.0.2",
|
||||
"echarts": "5.4.1",
|
||||
"element-plus": "^2.7.4",
|
||||
@ -25,6 +31,7 @@
|
||||
"qrcode": "1.5.1",
|
||||
"sass": "1.58.0",
|
||||
"sortablejs": "1.15.0",
|
||||
"vditor": "^3.10.9",
|
||||
"vue": "3.2.45",
|
||||
"vue-i18n": "9.2.2",
|
||||
"vue-jsonp": "2.0.0",
|
||||
@ -962,6 +969,47 @@
|
||||
"resolved": "https://registry.npmmirror.com/@floating-ui/utils/-/utils-0.1.6.tgz",
|
||||
"integrity": "sha512-OfX7E2oUDYxtBvsuS4e/jSn4Q9Qb6DzgeYtsAdkPZ47znpoNsMgZw0+tVijiv3uGNR6dgNlty6r9rzIzHjtd/A=="
|
||||
},
|
||||
"node_modules/@fullcalendar/core": {
|
||||
"version": "6.1.19",
|
||||
"resolved": "https://registry.npmmirror.com/@fullcalendar/core/-/core-6.1.19.tgz",
|
||||
"integrity": "sha512-z0aVlO5e4Wah6p6mouM0UEqtRf1MZZPt4mwzEyU6kusaNL+dlWQgAasF2cK23hwT4cmxkEmr4inULXgpyeExdQ==",
|
||||
"dependencies": {
|
||||
"preact": "~10.12.1"
|
||||
}
|
||||
},
|
||||
"node_modules/@fullcalendar/daygrid": {
|
||||
"version": "6.1.19",
|
||||
"resolved": "https://registry.npmmirror.com/@fullcalendar/daygrid/-/daygrid-6.1.19.tgz",
|
||||
"integrity": "sha512-IAAfnMICnVWPjpT4zi87i3FEw0xxSza0avqY/HedKEz+l5MTBYvCDPOWDATpzXoLut3aACsjktIyw9thvIcRYQ==",
|
||||
"peerDependencies": {
|
||||
"@fullcalendar/core": "~6.1.19"
|
||||
}
|
||||
},
|
||||
"node_modules/@fullcalendar/interaction": {
|
||||
"version": "6.1.19",
|
||||
"resolved": "https://registry.npmmirror.com/@fullcalendar/interaction/-/interaction-6.1.19.tgz",
|
||||
"integrity": "sha512-GOciy79xe8JMVp+1evAU3ytdwN/7tv35t5i1vFkifiuWcQMLC/JnLg/RA2s4sYmQwoYhTw/p4GLcP0gO5B3X5w==",
|
||||
"peerDependencies": {
|
||||
"@fullcalendar/core": "~6.1.19"
|
||||
}
|
||||
},
|
||||
"node_modules/@fullcalendar/vue3": {
|
||||
"version": "6.1.19",
|
||||
"resolved": "https://registry.npmmirror.com/@fullcalendar/vue3/-/vue3-6.1.19.tgz",
|
||||
"integrity": "sha512-j5eUSxx0xIy3ADljo0f5B9PhjqXnCQ+7nUMPfsslc2eGVjp4F74YvY3dyd6OBbg13IvpsjowkjncGipYMQWmTA==",
|
||||
"peerDependencies": {
|
||||
"@fullcalendar/core": "~6.1.19",
|
||||
"vue": "^3.0.11"
|
||||
}
|
||||
},
|
||||
"node_modules/@heroicons/vue": {
|
||||
"version": "2.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/@heroicons/vue/-/vue-2.2.0.tgz",
|
||||
"integrity": "sha512-G3dbSxoeEKqbi/DFalhRxJU4mTXJn7GwZ7ae8NuEQzd1bqdd0jAbdaBZlHPcvPD2xI1iGzNVB4k20Un2AguYPw==",
|
||||
"peerDependencies": {
|
||||
"vue": ">= 3"
|
||||
}
|
||||
},
|
||||
"node_modules/@highlightjs/vue-plugin": {
|
||||
"version": "2.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/@highlightjs/vue-plugin/-/vue-plugin-2.1.0.tgz",
|
||||
@ -2330,15 +2378,15 @@
|
||||
}
|
||||
},
|
||||
"node_modules/browserslist": {
|
||||
"version": "4.22.2",
|
||||
"resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.22.2.tgz",
|
||||
"integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==",
|
||||
"version": "4.24.2",
|
||||
"resolved": "https://registry.npmmirror.com/browserslist/-/browserslist-4.24.2.tgz",
|
||||
"integrity": "sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"caniuse-lite": "^1.0.30001565",
|
||||
"electron-to-chromium": "^1.4.601",
|
||||
"node-releases": "^2.0.14",
|
||||
"update-browserslist-db": "^1.0.13"
|
||||
"caniuse-lite": "^1.0.30001669",
|
||||
"electron-to-chromium": "^1.5.41",
|
||||
"node-releases": "^2.0.18",
|
||||
"update-browserslist-db": "^1.1.1"
|
||||
},
|
||||
"bin": {
|
||||
"browserslist": "cli.js"
|
||||
@ -2413,9 +2461,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/caniuse-lite": {
|
||||
"version": "1.0.30001571",
|
||||
"resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001571.tgz",
|
||||
"integrity": "sha512-tYq/6MoXhdezDLFZuCO/TKboTzuQ/xR5cFdgXPfDtM7/kchBO3b4VWghE/OAi/DV7tTdhmLjZiZBZi1fA/GheQ==",
|
||||
"version": "1.0.30001680",
|
||||
"resolved": "https://registry.npmmirror.com/caniuse-lite/-/caniuse-lite-1.0.30001680.tgz",
|
||||
"integrity": "sha512-rPQy70G6AGUMnbwS1z6Xg+RkHYPAi18ihs47GH0jcxIG7wArmPgY3XbS2sRdBbxJljp3thdT8BIqv9ccCypiPA==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/chalk": {
|
||||
@ -2623,6 +2671,15 @@
|
||||
"resolved": "https://registry.npmmirror.com/csstype/-/csstype-2.6.21.tgz",
|
||||
"integrity": "sha512-Z1PhmomIfypOpoMjRQB70jfvy/wxT50qW08YXO5lMIJkrdq4yOTR+AW7FqutScmB9NkLwxo+jU+kZLbofZZq/w=="
|
||||
},
|
||||
"node_modules/date-fns": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/date-fns/-/date-fns-4.1.0.tgz",
|
||||
"integrity": "sha512-Ukq0owbQXxa/U3EGtsdVBkR1w7KOQ5gIBqdH2hkvknzZPYvBxb/aa6E8L7tmjFtkwZBu3UXBbjIgPo/Ez4xaNg==",
|
||||
"funding": {
|
||||
"type": "github",
|
||||
"url": "https://github.com/sponsors/kossnocorp"
|
||||
}
|
||||
},
|
||||
"node_modules/day": {
|
||||
"version": "0.0.2",
|
||||
"resolved": "https://registry.npmmirror.com/day/-/day-0.0.2.tgz",
|
||||
@ -2755,6 +2812,11 @@
|
||||
"integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/diff-match-patch": {
|
||||
"version": "1.0.5",
|
||||
"resolved": "https://registry.npmmirror.com/diff-match-patch/-/diff-match-patch-1.0.5.tgz",
|
||||
"integrity": "sha512-IayShXAgj/QMXgB0IWmKx+rOPuGMhqm5w6jvFxmVenXKIzRqTAAsbBPT3kWQeGANj3jGgvcvv4yK6SxqYmikgw=="
|
||||
},
|
||||
"node_modules/dijkstrajs": {
|
||||
"version": "1.0.3",
|
||||
"resolved": "https://registry.npmmirror.com/dijkstrajs/-/dijkstrajs-1.0.3.tgz",
|
||||
@ -2809,9 +2871,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/electron-to-chromium": {
|
||||
"version": "1.4.616",
|
||||
"resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.4.616.tgz",
|
||||
"integrity": "sha512-1n7zWYh8eS0L9Uy+GskE0lkBUNK83cXTVJI0pU3mGprFsbfSdAc15VTFbo+A+Bq4pwstmL30AVcEU3Fo463lNg==",
|
||||
"version": "1.5.56",
|
||||
"resolved": "https://registry.npmmirror.com/electron-to-chromium/-/electron-to-chromium-1.5.56.tgz",
|
||||
"integrity": "sha512-7lXb9dAvimCFdvUMTyucD4mnIndt/xhRKFAlky0CyFogdnNmdPQNoHI23msF/2V4mpTxMzgMdjK4+YRlFlRQZw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/element-plus": {
|
||||
@ -2982,9 +3044,9 @@
|
||||
}
|
||||
},
|
||||
"node_modules/escalade": {
|
||||
"version": "3.1.1",
|
||||
"resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.1.1.tgz",
|
||||
"integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
|
||||
"version": "3.2.0",
|
||||
"resolved": "https://registry.npmmirror.com/escalade/-/escalade-3.2.0.tgz",
|
||||
"integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==",
|
||||
"dev": true,
|
||||
"engines": {
|
||||
"node": ">=6"
|
||||
@ -4585,9 +4647,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/node-releases": {
|
||||
"version": "2.0.14",
|
||||
"resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.14.tgz",
|
||||
"integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==",
|
||||
"version": "2.0.18",
|
||||
"resolved": "https://registry.npmmirror.com/node-releases/-/node-releases-2.0.18.tgz",
|
||||
"integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/normalize-path": {
|
||||
@ -4809,9 +4871,9 @@
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/picocolors": {
|
||||
"version": "1.0.0",
|
||||
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.0.0.tgz",
|
||||
"integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ=="
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmmirror.com/picocolors/-/picocolors-1.1.1.tgz",
|
||||
"integrity": "sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA=="
|
||||
},
|
||||
"node_modules/picomatch": {
|
||||
"version": "2.3.1",
|
||||
@ -4997,6 +5059,15 @@
|
||||
"integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/preact": {
|
||||
"version": "10.12.1",
|
||||
"resolved": "https://registry.npmmirror.com/preact/-/preact-10.12.1.tgz",
|
||||
"integrity": "sha512-l8386ixSsBdbreOAkqtrwqHwdvR35ID8c3rKPa8lCWuO86dBi32QWHV4vfsZK1utLLFMvw+Z5Ad4XLkZzchscg==",
|
||||
"funding": {
|
||||
"type": "opencollective",
|
||||
"url": "https://opencollective.com/preact"
|
||||
}
|
||||
},
|
||||
"node_modules/prelude-ls": {
|
||||
"version": "1.2.1",
|
||||
"resolved": "https://registry.npmmirror.com/prelude-ls/-/prelude-ls-1.2.1.tgz",
|
||||
@ -5925,13 +5996,13 @@
|
||||
}
|
||||
},
|
||||
"node_modules/update-browserslist-db": {
|
||||
"version": "1.0.13",
|
||||
"resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz",
|
||||
"integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==",
|
||||
"version": "1.1.1",
|
||||
"resolved": "https://registry.npmmirror.com/update-browserslist-db/-/update-browserslist-db-1.1.1.tgz",
|
||||
"integrity": "sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==",
|
||||
"dev": true,
|
||||
"dependencies": {
|
||||
"escalade": "^3.1.1",
|
||||
"picocolors": "^1.0.0"
|
||||
"escalade": "^3.2.0",
|
||||
"picocolors": "^1.1.0"
|
||||
},
|
||||
"bin": {
|
||||
"update-browserslist-db": "cli.js"
|
||||
@ -5955,6 +6026,17 @@
|
||||
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
|
||||
"dev": true
|
||||
},
|
||||
"node_modules/vditor": {
|
||||
"version": "3.10.9",
|
||||
"resolved": "https://registry.npmmirror.com/vditor/-/vditor-3.10.9.tgz",
|
||||
"integrity": "sha512-cJE/pMv/kg3dW9TIoAe2VBM4CI1JuTEjsD8YhveqYZm8h4pjcXSmYtu/0QVqH6/KA2BeUXvZilryOXlwho2QZg==",
|
||||
"dependencies": {
|
||||
"diff-match-patch": "^1.0.5"
|
||||
},
|
||||
"funding": {
|
||||
"url": "https://ld246.com/sponsor"
|
||||
}
|
||||
},
|
||||
"node_modules/vite": {
|
||||
"version": "4.1.0",
|
||||
"resolved": "https://registry.npmmirror.com/vite/-/vite-4.1.0.tgz",
|
||||
|
||||
@ -10,12 +10,18 @@
|
||||
},
|
||||
"dependencies": {
|
||||
"@element-plus/icons-vue": "2.0.10",
|
||||
"@fullcalendar/core": "^6.1.19",
|
||||
"@fullcalendar/daygrid": "^6.1.19",
|
||||
"@fullcalendar/interaction": "^6.1.19",
|
||||
"@fullcalendar/vue3": "^6.1.19",
|
||||
"@heroicons/vue": "^2.2.0",
|
||||
"@highlightjs/vue-plugin": "2.1.0",
|
||||
"@types/lodash-es": "4.17.6",
|
||||
"@vueuse/core": "9.12.0",
|
||||
"axios": "1.4.0",
|
||||
"crypto-js": "4.1.1",
|
||||
"css-color-function": "1.3.3",
|
||||
"date-fns": "^4.1.0",
|
||||
"day": "^0.0.2",
|
||||
"echarts": "5.4.1",
|
||||
"element-plus": "^2.7.4",
|
||||
@ -26,6 +32,7 @@
|
||||
"qrcode": "1.5.1",
|
||||
"sass": "1.58.0",
|
||||
"sortablejs": "1.15.0",
|
||||
"vditor": "^3.10.9",
|
||||
"vue": "3.2.45",
|
||||
"vue-i18n": "9.2.2",
|
||||
"vue-jsonp": "2.0.0",
|
||||
@ -55,4 +62,4 @@
|
||||
"vite": "4.1.0",
|
||||
"vue-tsc": "1.0.24"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@ -157,7 +157,7 @@ UE.I18N['zh-cn'] = {
|
||||
'elementPathTip': "元素路径",
|
||||
'wordCountTip': "字数统计",
|
||||
'wordCountMsg': '{#count} / {#leave}',
|
||||
'wordOverFlowMsg': '<span style="color:red;">字数超出最大允许值,服务器可能拒绝保存!</span>',
|
||||
'wordOverFlowMsg': '<span style="color:red;">字数超出最大允许值!</span>',
|
||||
'ok': "确认",
|
||||
'cancel': "取消",
|
||||
'closeDialog': "关闭对话框",
|
||||
|
||||
@ -145,9 +145,12 @@ div.edui-box {
|
||||
background-color: white;
|
||||
position: relative;
|
||||
overflow: visible;
|
||||
z-index: 1;
|
||||
z-index: 1 !important;
|
||||
}
|
||||
|
||||
/* 全屏状态 */
|
||||
.edui-default .edui-editor.edui-fullscreen {
|
||||
z-index: 999 !important;
|
||||
}
|
||||
.edui-editor div {
|
||||
width: auto;
|
||||
height: auto;
|
||||
|
||||
@ -13,6 +13,7 @@ import useAppStore from '@/stores/modules/app'
|
||||
import { useDark, useToggle } from '@vueuse/core'
|
||||
import { setThemeColor } from '@/utils/common'
|
||||
import { useRoute } from 'vue-router'
|
||||
import { getSiteAllowChange} from '@/app/api/site'
|
||||
|
||||
const route = useRoute()
|
||||
|
||||
@ -24,7 +25,14 @@ systemStore.getWebsiteInfo()
|
||||
systemStore.getWebsiteLayout()
|
||||
|
||||
const toggleDark = useToggle(useDark())
|
||||
|
||||
const getSiteAllowChangeFn = ()=>{
|
||||
getSiteAllowChange().then(({data})=>{
|
||||
let isAllowChange = data.is_allow ? true : false
|
||||
localStorage.setItem('isAllowChange',isAllowChange.toString())
|
||||
})
|
||||
|
||||
}
|
||||
getSiteAllowChangeFn()
|
||||
watch(route, () => {
|
||||
useAppStore().$patch(state => {
|
||||
state.route = route
|
||||
@ -35,12 +43,13 @@ onMounted(() => {
|
||||
// 设置主题色
|
||||
toggleDark(systemStore.dark)
|
||||
setThemeColor(systemStore.theme, systemStore.dark ? 'dark' : 'light')
|
||||
|
||||
// importIconFontCss();
|
||||
|
||||
// getIcon()
|
||||
|
||||
})
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped></style>
|
||||
<style>
|
||||
.el-page-header__header .el-page-header__left .el-page-header__content{
|
||||
font-size: 14px !important;
|
||||
font-weight: 500 !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
@ -12,7 +12,7 @@ export function getAddonLocal(params: Record<string, any>) {
|
||||
* 插件详情
|
||||
* @returns
|
||||
*/
|
||||
export function getAddonDetial(id: number) {
|
||||
export function getAddonDetail(id: number) {
|
||||
return request.get(`addon/${ id }`)
|
||||
}
|
||||
|
||||
@ -90,3 +90,19 @@ export function cancelInstall(addon: string) {
|
||||
export function getInstalledAddonList() {
|
||||
return request.get('addon/list/install')
|
||||
}
|
||||
|
||||
export function getGroupAppList() {
|
||||
return request.get('home/site/group/app_list')
|
||||
}
|
||||
|
||||
export function getAddonInit() {
|
||||
return request.get('addon/init')
|
||||
}
|
||||
|
||||
export function getAppIndex() {
|
||||
return request.get('app/index')
|
||||
}
|
||||
|
||||
export function getAdvList() {
|
||||
return request.get('index/adv_list')
|
||||
}
|
||||
|
||||
@ -14,7 +14,7 @@ export function getAliappConfig() {
|
||||
* @returns
|
||||
*/
|
||||
export function setAliappConfig(params: Record<string, any>) {
|
||||
return request.put('aliapp/config', params, {showSuccessMessage: true})
|
||||
return request.put('aliapp/config', params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
68
admin/src/app/api/app.ts
Normal file
@ -0,0 +1,68 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
/**
|
||||
* 获取app配置
|
||||
* @returns
|
||||
*/
|
||||
export function getAppConfig() {
|
||||
return request.get('channel/app/config')
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑app配置
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function setAppConfig(params: Record<string, any>) {
|
||||
return request.put('channel/app/config', params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
|
||||
export function getVersionList(params: Record<string, any>) {
|
||||
return request.get('channel/app/version', { params })
|
||||
}
|
||||
|
||||
export function getVersionInfo(id: number) {
|
||||
return request.get(`channel/app/version/${id}`)
|
||||
}
|
||||
|
||||
export function getAppPlatform() {
|
||||
return request.get(`channel/app/platfrom`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加版本
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function addVersion(params: Record<string, any>) {
|
||||
return request.post('channel/app/version', params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新版本
|
||||
* @param params
|
||||
*/
|
||||
export function editVersion(params: Record<string, any>) {
|
||||
return request.put(`channel/app/version/${ params.id }`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除版本
|
||||
* @param siteId
|
||||
*/
|
||||
export function deleteVersion(params: Record<string, any>) {
|
||||
return request.delete(`channel/app/version/${ params.id }`)
|
||||
}
|
||||
|
||||
export function getBuildLog(key: string) {
|
||||
return request.get(`channel/app/build/log/${ key }`)
|
||||
}
|
||||
|
||||
export function releaseVersion(id: number) {
|
||||
return request.put(`channel/app/version/${ id }/release`, {}, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
export function generateSingCert(params: Record<string, any>) {
|
||||
return request.post(`channel/app/generate_sing_cert`, params, { showSuccessMessage: true });
|
||||
}
|
||||
@ -6,7 +6,7 @@ import request from '@/utils/request'
|
||||
* @param app_type
|
||||
*/
|
||||
export function login(params: Record<string, any>, app_type: string) {
|
||||
return request.get(`login/${app_type}`, {params})
|
||||
return request.get(`login/${ app_type }`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -21,7 +21,7 @@ export function logout() {
|
||||
* @returns
|
||||
*/
|
||||
export function getAuthMenus(params: Record<string, any>) {
|
||||
return request.get('auth/authmenu', {params})
|
||||
return request.get('auth/authmenu', { params })
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -8,7 +8,7 @@ import request from '@/utils/request'
|
||||
* @returns
|
||||
*/
|
||||
export function getDiyPageList(params: Record<string, any>) {
|
||||
return request.get(`diy/diy`, {params})
|
||||
return request.get(`diy/diy`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -17,7 +17,7 @@ export function getDiyPageList(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function getDiyPageListByCarouselSearch(params: Record<string, any>) {
|
||||
return request.get(`diy/carousel_search`, {params})
|
||||
return request.get(`diy/carousel_search`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -26,7 +26,7 @@ export function getDiyPageListByCarouselSearch(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function getDiyList(params: Record<string, any>) {
|
||||
return request.get(`diy/list`, {params})
|
||||
return request.get(`diy/list`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -35,7 +35,7 @@ export function getDiyList(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function getDiyPageInfo(id: number) {
|
||||
return request.get(`diy/diy/${id}`);
|
||||
return request.get(`diy/diy/${ id }`);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -44,7 +44,7 @@ export function getDiyPageInfo(id: number) {
|
||||
* @returns
|
||||
*/
|
||||
export function addDiyPage(params: Record<string, any>) {
|
||||
return request.post('diy/diy', params, {showSuccessMessage: true})
|
||||
return request.post('diy/diy', params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -52,7 +52,7 @@ export function addDiyPage(params: Record<string, any>) {
|
||||
* @param params
|
||||
*/
|
||||
export function editDiyPage(params: Record<string, any>) {
|
||||
return request.put(`diy/diy/${params.id}`, params, {showSuccessMessage: true})
|
||||
return request.put(`diy/diy/${ params.id }`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -60,7 +60,7 @@ export function editDiyPage(params: Record<string, any>) {
|
||||
* @param params
|
||||
*/
|
||||
export function setUseDiyPage(params: Record<string, any>) {
|
||||
return request.put(`diy/use/${params.id}`, params, {showSuccessMessage: true})
|
||||
return request.put(`diy/use/${ params.id }`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -68,7 +68,7 @@ export function setUseDiyPage(params: Record<string, any>) {
|
||||
* @param params
|
||||
*/
|
||||
export function editDiyPageShare(params: Record<string, any>) {
|
||||
return request.put(`diy/diy/share`, params, {showSuccessMessage: true})
|
||||
return request.put(`diy/diy/share`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -77,35 +77,35 @@ export function editDiyPageShare(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function deleteDiyPage(id: number) {
|
||||
return request.delete(`diy/diy/${id}`, {showSuccessMessage: true})
|
||||
return request.delete(`diy/diy/${ id }`, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取自定义页面初始化数据
|
||||
*/
|
||||
export function initPage(params: Record<string, any>) {
|
||||
return request.get(`diy/init`, {params})
|
||||
return request.get(`diy/init`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取自定义链接列表
|
||||
*/
|
||||
export function getLink(params: Record<string, any>) {
|
||||
return request.get(`diy/link`, {params})
|
||||
return request.get(`diy/link`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取底部导航列表
|
||||
*/
|
||||
export function getDiyBottomList(params: Record<string, any>) {
|
||||
return request.get(`diy/bottom`, {params})
|
||||
return request.get(`diy/bottom`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取底部导航数据
|
||||
*/
|
||||
export function getDiyBottomConfig(params: Record<string, any>) {
|
||||
return request.get(`diy/bottom/config`, {params})
|
||||
return request.get(`diy/bottom/config`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -114,21 +114,21 @@ export function getDiyBottomConfig(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function setDiyBottomConfig(params: Record<string, any>) {
|
||||
return request.post('diy/bottom', params, {showSuccessMessage: true})
|
||||
return request.post('diy/bottom', params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取页面模板类型
|
||||
*/
|
||||
export function getDiyTemplate(params: Record<string, any>) {
|
||||
return request.get(`diy/template`, {params})
|
||||
return request.get(`diy/template`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取模板页面列表
|
||||
*/
|
||||
export function getDiyTemplatePages(params: Record<string, any>) {
|
||||
return request.get(`diy/template/pages`, {params})
|
||||
return request.get(`diy/template/pages`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -137,7 +137,7 @@ export function getDiyTemplatePages(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function getDiyRouteList(params: Record<string, any>) {
|
||||
return request.get(`diy/route`, {params})
|
||||
return request.get(`diy/route`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -145,7 +145,7 @@ export function getDiyRouteList(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function getDiyRouteAppList() {
|
||||
return request.get(`diy/route/apps`)
|
||||
return request.get(`diy/route/apps`)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -153,7 +153,7 @@ export function getDiyRouteAppList() {
|
||||
* @param params
|
||||
*/
|
||||
export function getDiyRouteInfo(params: Record<string, any>) {
|
||||
return request.get(`diy/route/info`, {params});
|
||||
return request.get(`diy/route/info`, { params });
|
||||
}
|
||||
|
||||
/**
|
||||
@ -161,7 +161,7 @@ export function getDiyRouteInfo(params: Record<string, any>) {
|
||||
* @param params
|
||||
*/
|
||||
export function editDiyRouteShare(params: Record<string, any>) {
|
||||
return request.put(`diy/route/share`, params, {showSuccessMessage: true})
|
||||
return request.put(`diy/route/share`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -170,7 +170,7 @@ export function editDiyRouteShare(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function getDecoratePage(params: Record<string, any>) {
|
||||
return request.get(`diy/decorate`, {params})
|
||||
return request.get(`diy/decorate`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -179,7 +179,7 @@ export function getDecoratePage(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function changeTemplate(params: Record<string, any>) {
|
||||
return request.put(`diy/change`, params, {showSuccessMessage: true})
|
||||
return request.put(`diy/change`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -188,5 +188,71 @@ export function changeTemplate(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function getApps(params: Record<string, any>) {
|
||||
return request.get(`diy/apps`)
|
||||
}
|
||||
return request.get(`diy/apps`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 复制模版页面
|
||||
* @param params
|
||||
*/
|
||||
export function copyDiy(params: Record<string, any>) {
|
||||
return request.post(`diy/copy`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取自定义页面选择列表
|
||||
*/
|
||||
export function getPageLink(params: Record<string, any>) {
|
||||
return request.get(`diy/page_link`, { params })
|
||||
}
|
||||
/***************************************************** 主题风格 ****************************************************/
|
||||
|
||||
|
||||
/**
|
||||
* 获取默认主题配色
|
||||
* @param params
|
||||
*/
|
||||
export function getDefaultTheme(params: Record<string, any>) {
|
||||
return request.get(`diy/theme/color`, { params })
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取自定义主题配色
|
||||
* @param params
|
||||
*/
|
||||
export function getDiyTheme(params: Record<string, any>) {
|
||||
return request.get(`diy/theme`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加配色
|
||||
* @param params
|
||||
*/
|
||||
export function addTheme(params: Record<string, any>) {
|
||||
return request.post(`diy/theme/add`, params)
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑配色
|
||||
* @param params
|
||||
*/
|
||||
export function editTheme(params: Record<string, any>) {
|
||||
return request.put(`diy/theme/edit/${ params.id }`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除配色
|
||||
* @param id
|
||||
*/
|
||||
export function deleteTheme(id: number) {
|
||||
return request.delete(`diy/theme/delete/${ id }`, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置主题配色
|
||||
* @param params
|
||||
*/
|
||||
export function setDiyTheme(params: Record<string, any>) {
|
||||
return request.post(`diy/theme`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
237
admin/src/app/api/diy_form.ts
Normal file
@ -0,0 +1,237 @@
|
||||
import request from '@/utils/request'
|
||||
|
||||
/***************************************************** 万能表单 ****************************************************/
|
||||
|
||||
/**
|
||||
* 获取万能表单分页列表
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function getDiyFormPageList(params: Record<string, any>) {
|
||||
return request.get(`diy/form`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取万能表单列表
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function getDiyFormList(params: Record<string, any>) {
|
||||
return request.get(`diy/form/list`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取万能表单分页列表(用于弹框选择)
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function getDiyFormSelectPageList(params: Record<string, any>) {
|
||||
return request.get(`diy/form/select`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取万能表单详情
|
||||
* @param form_id 万能表单id
|
||||
* @returns
|
||||
*/
|
||||
export function getDiyFormInfo(form_id: number) {
|
||||
return request.get(`diy/form/${ form_id }`);
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加万能表单
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function addDiyForm(params: Record<string, any>) {
|
||||
return request.post('diy/form', params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑万能表单
|
||||
* @param params
|
||||
*/
|
||||
export function editDiyForm(params: Record<string, any>) {
|
||||
return request.put(`diy/form/${ params.form_id }`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改万能表单分享内容
|
||||
* @param params
|
||||
*/
|
||||
export function editDiyFormShare(params: Record<string, any>) {
|
||||
return request.put(`diy/form/share`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除万能表单
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function deleteDiyForm(params: Record<string, any>) {
|
||||
return request.put(`diy/form/delete`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取万能表单初始化数据
|
||||
*/
|
||||
export function initPage(params: Record<string, any>) {
|
||||
return request.get(`diy/form/init`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取万能表单微信小程序二维码
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function getDiyFormQrcode(params: Record<string, any>) {
|
||||
return request.get(`diy/form/qrcode`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取万能表单字段列表
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function getDiyFormFieldsList(params: Record<string, any>) {
|
||||
return request.get(`diy/form/fields/list`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取字段统计列表
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function getDiyFormFieldStat(params: Record<string, any>) {
|
||||
return request.get(`diy/form/records/field/stat`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取页面模板类型
|
||||
*/
|
||||
export function getDiyTemplate(params: Record<string, any>) {
|
||||
return request.get(`diy/template`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取模板页面列表
|
||||
*/
|
||||
export function getDiyTemplatePages(params: Record<string, any>) {
|
||||
return request.get(`diy/form/template`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 万能表单状态状态
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function editFormStatus(params: Record<string, any>) {
|
||||
return request.put(`diy/form/status`, params, {
|
||||
showErrorMessage: true,
|
||||
showSuccessMessage: true
|
||||
})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取模板页面(存在的应用插件列表)
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function getApps(params: Record<string, any>) {
|
||||
return request.get(`diy/apps`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 复制模版页面
|
||||
* @param params
|
||||
*/
|
||||
export function copyDiy(params: Record<string, any>) {
|
||||
return request.post(`diy/form/copy`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取万能表单类型
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function getFormType(params: Record<string, any>) {
|
||||
return request.get(`diy/form/type`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取万能表单填写配置
|
||||
* @param form_id
|
||||
* @returns
|
||||
*/
|
||||
export function getFormWriteConfig(form_id: any) {
|
||||
return request.get(`diy/form/write/${ form_id }`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑万能表单填写配置
|
||||
* @param params
|
||||
*/
|
||||
export function editDiyFormWriteConfig(params: Record<string, any>) {
|
||||
return request.put(`diy/form/write`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取万能表单提交成功页配置
|
||||
* @param form_id
|
||||
* @returns
|
||||
*/
|
||||
export function getFormSubmitConfig(form_id: any) {
|
||||
return request.get(`diy/form/submit/${ form_id }`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑万能表单提交成功页配置
|
||||
* @param params
|
||||
*/
|
||||
export function editDiyFormSubmitConfig(params: Record<string, any>) {
|
||||
return request.put(`diy/form/submit`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取万能表单数据列表
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function getFormRecords(params: Record<string, any>) {
|
||||
return request.get(`diy/form/records`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取万能表单数据详情
|
||||
* @param id
|
||||
* @returns
|
||||
*/
|
||||
export function getFormRecordsInfo(id: number) {
|
||||
return request.get(`diy/form/records/${ id }`);
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除万能表单数据
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function deleteFormRecords(params: Record<string, any>) {
|
||||
return request.put(`diy/form/records/delete`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取万能表单填表人列表
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function getFormRecordsMember(params: Record<string, any>) {
|
||||
return request.get(`diy/form/records/member/stat`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 复制模版页面
|
||||
* @param params
|
||||
*/
|
||||
export function copyForm(params: Record<string, any>) {
|
||||
return request.post(`diy/form/copy`, params, { showSuccessMessage: true })
|
||||
}
|
||||
@ -18,7 +18,7 @@ export function getMemberList(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function getMemberInfo(id: number) {
|
||||
return request.get(`member/member/${id}`);
|
||||
return request.get(`member/member/${ id }`);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -61,7 +61,7 @@ export function getRegisterChannelType(params: Record<string, any>) {
|
||||
* @param member_id
|
||||
*/
|
||||
export function deleteMember(member_id: number) {
|
||||
return request.delete(`member/member/${member_id}`, { showSuccessMessage: true })
|
||||
return request.delete(`member/member/${ member_id }`, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/***************************************************** 会员标签 ****************************************************/
|
||||
@ -81,7 +81,7 @@ export function getMemberLabelList(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function getMemberLabelInfo(label_id: number) {
|
||||
return request.get(`member/label/${label_id}`);
|
||||
return request.get(`member/label/${ label_id }`);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -98,7 +98,7 @@ export function addMemberLabel(params: Record<string, any>) {
|
||||
* @param params
|
||||
*/
|
||||
export function updateMemberLabel(params: Record<string, any>) {
|
||||
return request.put(`member/label/${params.label_id}`, params, { showSuccessMessage: true })
|
||||
return request.put(`member/label/${ params.label_id }`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -107,7 +107,7 @@ export function updateMemberLabel(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function deleteMemberLabel(label_id: number) {
|
||||
return request.delete(`member/label/${label_id}`, { showSuccessMessage: true })
|
||||
return request.delete(`member/label/${ label_id }`, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -122,7 +122,15 @@ export function getMemberLabelAll() {
|
||||
* @param params
|
||||
*/
|
||||
export function editMemberDetail(params: Record<string, any>) {
|
||||
return request.put(`member/member/modify/${params.member_id}/${params.field}`, params, { showSuccessMessage: true })
|
||||
return request.put(`member/member/modify/${ params.member_id }/${ params.field }`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 会员批量操作
|
||||
* @param params
|
||||
*/
|
||||
export function memberBatchModify(params: Record<string, any>) {
|
||||
return request.post(`member/member/batch_modify`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/***************************************************** 会员零钱 ****************************************************/
|
||||
@ -135,7 +143,7 @@ export function editMemberDetail(params: Record<string, any>) {
|
||||
* @param change_type
|
||||
*/
|
||||
export function getChangeTypeList(change_type: string) {
|
||||
return request.get(`member/account/change_type/${change_type}`)
|
||||
return request.get(`member/account/change_type/${ change_type }`)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -313,7 +321,7 @@ export function getBalanceStatus() {
|
||||
* 获取余额变动类型
|
||||
*/
|
||||
export function getAccountType(params: Record<string, any>) {
|
||||
return request.get(`member/account/change_type/${params.account_type}`)
|
||||
return request.get(`member/account/change_type/${ params.account_type }`)
|
||||
}
|
||||
|
||||
|
||||
@ -349,7 +357,7 @@ export function getCashOutList(params: Record<string, any>) {
|
||||
* @param id
|
||||
*/
|
||||
export function getCashOutDetail(id: number) {
|
||||
return request.get(`member/cash_out/${id}`, {})
|
||||
return request.get(`member/cash_out/${ id }`, {})
|
||||
}
|
||||
|
||||
/**
|
||||
@ -357,15 +365,43 @@ export function getCashOutDetail(id: number) {
|
||||
* @param params
|
||||
*/
|
||||
export function memberAudit(params: Record<string, any>) {
|
||||
return request.put(`member/cash_out/audit/${params.id}/${params.action}`, params, { showSuccessMessage: true })
|
||||
return request.put(`member/cash_out/audit/${ params.id }/${ params.action }`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 会员取消提现
|
||||
* @param params
|
||||
*/
|
||||
export function memberCancel(params: Record<string, any>) {
|
||||
return request.put(`member/cash_out/cancel/${ params.id }`, params, {
|
||||
showSuccessMessage: true,
|
||||
showErrorMessage: true
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 会员提现转账
|
||||
* @param params
|
||||
*/
|
||||
export function memberTransfer(params: Record<string, any>) {
|
||||
return request.put(`member/cash_out/transfer/${params.id}`, params, { showSuccessMessage: true })
|
||||
return request.put(`member/cash_out/transfer/${ params.id }`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 会员提现转账
|
||||
* @param params
|
||||
*/
|
||||
export function memberRemark(params: Record<string, any>) {
|
||||
return request.put(`member/cash_out/remark/${ params.id }`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 检查打款进度
|
||||
* @param id
|
||||
*/
|
||||
export function memberCheck(id: number) {
|
||||
return request.put(`member/cash_out/check/${ id }`, {}, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -373,7 +409,7 @@ export function memberTransfer(params: Record<string, any>) {
|
||||
* @param params
|
||||
*/
|
||||
export function editMemberStatus(params: Record<string, any>) {
|
||||
return request.put(`member/setstatus/${params.status}`, params, { showSuccessMessage: true })
|
||||
return request.put(`member/setstatus/${ params.status }`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -422,6 +458,7 @@ export function getGrowthRuleDict() {
|
||||
export function getPointRuleDict() {
|
||||
return request.get(`member/dict/point_rule`)
|
||||
}
|
||||
|
||||
/***************************************************** 会员等级 ****************************************************/
|
||||
|
||||
/**
|
||||
@ -439,7 +476,7 @@ export function getMemberLevelPageList(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function getMemberLevelInfo(level_id: number) {
|
||||
return request.get(`member/level/${level_id}`);
|
||||
return request.get(`member/level/${ level_id }`);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -456,7 +493,7 @@ export function addMemberLevel(params: Record<string, any>) {
|
||||
* @param params
|
||||
*/
|
||||
export function updateMemberLevel(params: Record<string, any>) {
|
||||
return request.put(`member/level/${params.level_id}`, params, { showSuccessMessage: true })
|
||||
return request.put(`member/level/${ params.level_id }`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -465,7 +502,7 @@ export function updateMemberLevel(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function deleteMemberLevel(level_id: number) {
|
||||
return request.delete(`member/level/${level_id}`, { showSuccessMessage: true })
|
||||
return request.delete(`member/level/${ level_id }`, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -481,14 +518,14 @@ export function getMemberLevelAll() {
|
||||
* 获取会员权益内容
|
||||
*/
|
||||
export function getMemberBenefitsContent() {
|
||||
return request.get(`member/benefits/content`);
|
||||
return request.post(`member/benefits/content`);
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取会员礼包内容
|
||||
*/
|
||||
export function getMemberGiftsContent(params: Record<string, any>) {
|
||||
return request.get(`member/gifts/content`, { params });
|
||||
return request.post(`member/gifts/content`, params);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -513,3 +550,26 @@ export function setSignConfig(params: Record<string, any>) {
|
||||
export function getMemberSignList(params: Record<string, any>) {
|
||||
return request.get(`member/sign`, { params });
|
||||
}
|
||||
|
||||
/***************************************************** 地址管理 ****************************************************/
|
||||
|
||||
/**
|
||||
* 获取收货地址
|
||||
*/
|
||||
export function getMemberAddress(params: Record<string, any>) {
|
||||
return request.get(`member/address`, { params });
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加收货地址
|
||||
*/
|
||||
export function addMemberAddress(params: Record<string, any>) {
|
||||
return request.post(`member/address`, params);
|
||||
}
|
||||
|
||||
/**
|
||||
* 编辑收货地址
|
||||
*/
|
||||
export function editMemberAddress(params: Record<string, any>) {
|
||||
return request.put(`member/address`, params);
|
||||
}
|
||||
@ -11,7 +11,7 @@ export function getAuthInfo() {
|
||||
* 设置 授权配置
|
||||
*/
|
||||
export function setAuthInfo(params: Record<string, any>) {
|
||||
return request.post('niucloud/authinfo', params, {showSuccessMessage: true})
|
||||
return request.post('niucloud/authinfo', params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -43,7 +43,7 @@ export function getModuleVersion() {
|
||||
* @returns
|
||||
*/
|
||||
export function downloadVersion(params: Record<string, any>) {
|
||||
return request.post(`addon/download/${params.addon}`, params, { showSuccessMessage: true })
|
||||
return request.post(`addon/download/${ params.addon }`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -61,3 +61,11 @@ export function getFrameworkNewVersion() {
|
||||
export function getFrameworkVersionList() {
|
||||
return request.get(`niucloud/framework/version/list`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取应用/插件的版本更新记录
|
||||
* @param params
|
||||
*/
|
||||
export function getAppVersionList(params: Record<string, any>) {
|
||||
return request.get(`niucloud/app_version/list`, { params })
|
||||
}
|
||||
|
||||
@ -7,7 +7,7 @@ import request from '@/utils/request'
|
||||
* @returns
|
||||
*/
|
||||
export function getNoticeList(params: any) {
|
||||
return request.get('notice/notice', {params})
|
||||
return request.get('notice/notice', { params })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -16,7 +16,7 @@ export function getNoticeList(params: any) {
|
||||
* @returns
|
||||
*/
|
||||
export function getNoticeLog(params: any) {
|
||||
return request.get(`notice/log`, {params})
|
||||
return request.get(`notice/log`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -25,7 +25,7 @@ export function getNoticeLog(params: any) {
|
||||
* @returns
|
||||
*/
|
||||
export function getNoticeInfo(key: string) {
|
||||
return request.get(`notice/notice/${key}`)
|
||||
return request.get(`notice/notice/${ key }`)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -34,7 +34,7 @@ export function getNoticeInfo(key: string) {
|
||||
* @returns
|
||||
*/
|
||||
export function editNoticeStatus(params: Record<string, any>) {
|
||||
return request.post(`notice/notice/editstatus`, params, {showSuccessMessage: true})
|
||||
return request.post(`notice/notice/editstatus`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -43,7 +43,7 @@ export function editNoticeStatus(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function editNotice(params: Record<string, any>) {
|
||||
return request.post(`notice/notice/edit`, params, {showSuccessMessage: true})
|
||||
return request.post(`notice/notice/edit`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -60,7 +60,7 @@ export function getSmsList() {
|
||||
* @returns
|
||||
*/
|
||||
export function getSmsInfo(sms_type: string) {
|
||||
return request.get(`notice/notice/sms/${sms_type}`,)
|
||||
return request.get(`notice/notice/sms/${ sms_type }`,)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -68,7 +68,7 @@ export function getSmsInfo(sms_type: string) {
|
||||
* @param params
|
||||
*/
|
||||
export function editSms(params: Record<string, any>) {
|
||||
return request.put(`notice/notice/sms/${params.sms_type}`, params, {showSuccessMessage: true})
|
||||
return request.put(`notice/notice/sms/${ params.sms_type }`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -78,3 +78,245 @@ export function editSms(params: Record<string, any>) {
|
||||
export function getSmsLog(params: Record<string, any>) {
|
||||
return request.get(`notice/sms/log`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前登录子账号
|
||||
*/
|
||||
export function getAccountIsLogin() {
|
||||
return request.get(`notice/niusms/config`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 登录子账号
|
||||
* @param params
|
||||
*/
|
||||
export function loginAccount(params: Record<string, any>) {
|
||||
return request.post(`notice/niusms/account/login`,params,{ showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 注册子账号
|
||||
* @param params
|
||||
*/
|
||||
export function registerAccount(params: Record<string, any>) {
|
||||
return request.post(`notice/niusms/account/register`,params,{ showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取当前登录子账号信息
|
||||
* @param username
|
||||
*/
|
||||
export function getAccountInfo(username: string) {
|
||||
return request.get(`notice/niusms/account/info/${username}`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取模版列表
|
||||
* @param params
|
||||
*/
|
||||
export function getTemplateList(params: Record<string, any>) {
|
||||
return request.get(`notice/niusms/template/list/${params.sms_type}/${params.username}`,{})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取签名列表
|
||||
* @param username
|
||||
* @param params
|
||||
*/
|
||||
export function getSignList(username: string, params: Record<string, any>) {
|
||||
return request.get(`notice/niusms/sign/list/${username}`,{params})
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加签名
|
||||
* @param username
|
||||
* @param params
|
||||
*/
|
||||
export function addSign(username: string, params: Record<string, any>) {
|
||||
return request.post(`notice/niusms/sign/report/${username}`, params, { showSuccessMessage: true });
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除签名
|
||||
* @param username
|
||||
* @param params
|
||||
*/
|
||||
export function deleteSign(username: string, params: Record<string, any>) {
|
||||
return request.post(`notice/niusms/sign/delete/${username}`, params, { showSuccessMessage: true });
|
||||
}
|
||||
|
||||
/**
|
||||
* 更新子账号信息
|
||||
* @param username
|
||||
* @param params
|
||||
*/
|
||||
export function editAccount(username: string,params: Record<string, any>) {
|
||||
return request.post(`notice/niusms/account/edit/${username}`, params, { showSuccessMessage: true });
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取短信发送记录
|
||||
* @param username
|
||||
* @param params
|
||||
*/
|
||||
export function getSmsSendList(username: string, params: Record<string, any>) {
|
||||
return request.get(`notice/niusms/account/send_list/${username}`,{params})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取充值列表
|
||||
* @param username
|
||||
* @param params
|
||||
*/
|
||||
export function getSmsOrdersList(username: string, params: Record<string, any>) {
|
||||
return request.get(`notice/niusms/order/list/${username}`,{params})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取套餐列表
|
||||
*/
|
||||
export function getSmsPackagesList() {
|
||||
return request.get(`notice/niusms/packages`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取图像验证码
|
||||
*/
|
||||
export function getSmsCaptcha() {
|
||||
return request.get(`notice/niusms/captcha`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取图像验证码
|
||||
*/
|
||||
export function getsiteCaptcha() {
|
||||
return request.get(`site/captcha/create`)
|
||||
}
|
||||
/**
|
||||
* 发送验证码
|
||||
* @param params
|
||||
*/
|
||||
export function getSmsSend(params: Record<string, any>) {
|
||||
return request.post(`notice/niusms/send`,params,{ showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加签名配置项
|
||||
*/
|
||||
export function getSmsSignConfig() {
|
||||
return request.get(`notice/niusms/sign/report/config`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 模版报备配置项
|
||||
*/
|
||||
export function getTemplateReportConfig() {
|
||||
return request.get(`notice/niusms/template/report/config`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 模版报备
|
||||
* @param sms_type
|
||||
* @param username
|
||||
* @param sms_type
|
||||
* @param username
|
||||
* @param params
|
||||
*/
|
||||
export function reportTemplate(sms_type: string, username: string, params: Record<string, any>) {
|
||||
return request.post(`notice/niusms/template/report/${sms_type}/${username}`,params,{ showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 模版详情
|
||||
* @param sms_type
|
||||
* @param username
|
||||
* @param sms_type
|
||||
* @param username
|
||||
* @param params
|
||||
*/
|
||||
export function getreportTemplateInfo(sms_type: string, username: string,params: Record<string, any>) {
|
||||
return request.get(`notice/niusms/template/info/${sms_type}/${username}`,{params})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 充值下单
|
||||
* @param username
|
||||
* @param params
|
||||
*/
|
||||
export function smsOrderCreate(username: string, params: Record<string, any>) {
|
||||
return request.post(`notice/niusms/order/create/${username}`, params)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取支付信息
|
||||
* @param username
|
||||
* @param params
|
||||
*/
|
||||
export function getOrderPayInfo(username: string, params: Record<string, any>) {
|
||||
return request.get(`notice/niusms/order/pay/${username}`, {params})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取订单详情
|
||||
* @param username
|
||||
* @param params
|
||||
*/
|
||||
export function getOrderInfo(username: string, params: Record<string, any>) {
|
||||
return request.get(`notice/niusms/order/info/${username}`, {params})
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取支付状态
|
||||
* @param username
|
||||
* @param params
|
||||
*/
|
||||
export function getOrderPayStatus(username: string, params: Record<string, any>) {
|
||||
return request.get(`notice/niusms/order/status/${username}`, {params})
|
||||
}
|
||||
|
||||
/**
|
||||
* 计算金额
|
||||
* @param username
|
||||
* @param params
|
||||
*/
|
||||
export function calculateOrderPay(username: string, params: Record<string, any>) {
|
||||
return request.post(`notice/niusms/order/calculate/${username}`, params)
|
||||
}
|
||||
|
||||
/**
|
||||
* 启用牛云短信
|
||||
* @param params
|
||||
*/
|
||||
export function enableNiusms(params: Record<string, any>) {
|
||||
return request.put(`notice/niusms/enable`,params,{ showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步模版状态
|
||||
* @param username
|
||||
* @param sms_type
|
||||
* @param username
|
||||
*/
|
||||
export function templateSync(sms_type: string, username: string) {
|
||||
return request.get(`notice/niusms/template/sync/${sms_type}/${username}`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置密码
|
||||
* @param username
|
||||
* @param params
|
||||
*/
|
||||
export function resetPassword(username: string,params: Record<string, any>) {
|
||||
return request.post(`notice/niusms/account/reset/password/${username}`,params,{ showSuccessMessage: true})
|
||||
}
|
||||
|
||||
/**
|
||||
* 清除模版报备
|
||||
* @param template_id
|
||||
* @param username
|
||||
* @param template_id
|
||||
*/
|
||||
export function clearTemplate(username: string,template_id: string) {
|
||||
return request.delete(`notice/niusms/template/${username}/${template_id}`)
|
||||
}
|
||||
|
||||
@ -54,6 +54,13 @@ export function getPayRefundInfo(refund_no: string) {
|
||||
return request.get(`pay/refund/${refund_no}`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取退款状态字典
|
||||
*/
|
||||
export function getRefundStatus() {
|
||||
return request.get(`pay/refund/status`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 退款方式
|
||||
*/
|
||||
@ -75,3 +82,49 @@ export function getRefundTransfer(params: Record<string, any>) {
|
||||
export function getAllPayType() {
|
||||
return request.get(`pay/type/all`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付列表
|
||||
*/
|
||||
export function getPayList() {
|
||||
return request.get(`pay/type/list`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 支付
|
||||
*/
|
||||
export function pay(params: Record<string, any>) {
|
||||
return request.post(`pay`, params)
|
||||
}
|
||||
|
||||
/**
|
||||
* 帮付
|
||||
* @param tradeType
|
||||
* @param tradeId
|
||||
* @param channel
|
||||
*/
|
||||
export function getFriendsPay(tradeType : string, tradeId : number, channel: string) {
|
||||
return request.get(`pay/friendspay/info/${tradeType}/${tradeId}/${channel}`, { showErrorMessage: false })
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
*转账场景
|
||||
*/
|
||||
export function getTransferScene() {
|
||||
return request.get(`pay/transfer_scene`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 更改场景id
|
||||
*/
|
||||
export function setSceneId(params: Record<string, any>) {
|
||||
return request.post(`pay/transfer_scene/set_scene_id/${params.scene}`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置业务场景配置
|
||||
*/
|
||||
export function setTradeScene(params: Record<string, any>) {
|
||||
return request.post(`pay/transfer_scene/set_trade_scene/${params.type}`, params)
|
||||
}
|
||||
@ -14,5 +14,5 @@ export function getPcConfig() {
|
||||
* @returns
|
||||
*/
|
||||
export function setPcConfig(params: Record<string, any>) {
|
||||
return request.put('channel/pc/config', params, {showSuccessMessage: true})
|
||||
return request.put('channel/pc/config', params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
@ -13,6 +13,6 @@ export function getUserInfo() {
|
||||
* @returns
|
||||
*/
|
||||
export function setUserInfo(params: Record<string, any>) {
|
||||
return request.put(`auth/edit`, params, {showSuccessMessage: true});
|
||||
return request.put(`auth/edit`, params, { showSuccessMessage: true });
|
||||
}
|
||||
|
||||
|
||||
@ -6,7 +6,7 @@ import request from '@/utils/request'
|
||||
* @returns
|
||||
*/
|
||||
export function getPosterPageList(params: Record<string, any>) {
|
||||
return request.get(`sys/poster`, {params})
|
||||
return request.get(`sys/poster`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -15,7 +15,7 @@ export function getPosterPageList(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function getPosterList(params: Record<string, any>) {
|
||||
return request.get(`sys/poster/list`, {params})
|
||||
return request.get(`sys/poster/list`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -24,7 +24,7 @@ export function getPosterList(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function getPosterInfo(id: number) {
|
||||
return request.get(`sys/poster/${id}`);
|
||||
return request.get(`sys/poster/${ id }`);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -33,7 +33,7 @@ export function getPosterInfo(id: number) {
|
||||
* @returns
|
||||
*/
|
||||
export function addPoster(params: Record<string, any>) {
|
||||
return request.post('sys/poster', params, {showErrorMessage: true, showSuccessMessage: true})
|
||||
return request.post('sys/poster', params, { showErrorMessage: true, showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -42,7 +42,7 @@ export function addPoster(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function editPoster(params: Record<string, any>) {
|
||||
return request.put(`sys/poster/${params.id}`, params, {
|
||||
return request.put(`sys/poster/${ params.id }`, params, {
|
||||
showErrorMessage: true,
|
||||
showSuccessMessage: true
|
||||
})
|
||||
@ -54,7 +54,7 @@ export function editPoster(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function deletePoster(id: number) {
|
||||
return request.delete(`sys/poster/${id}`, {showErrorMessage: true, showSuccessMessage: true})
|
||||
return request.delete(`sys/poster/${ id }`, { showErrorMessage: true, showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -62,7 +62,7 @@ export function deletePoster(id: number) {
|
||||
* @param params
|
||||
*/
|
||||
export function modifyPosterStatus(params: Record<string, any>) {
|
||||
return request.put(`sys/poster/status`, params, {showSuccessMessage: true})
|
||||
return request.put(`sys/poster/status`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -70,7 +70,7 @@ export function modifyPosterStatus(params: Record<string, any>) {
|
||||
* @param params
|
||||
*/
|
||||
export function modifyPosterDefault(params: Record<string, any>) {
|
||||
return request.put(`sys/poster/default`, params, {showSuccessMessage: true})
|
||||
return request.put(`sys/poster/default`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -79,7 +79,7 @@ export function modifyPosterDefault(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function getPosterType(params: Record<string, any>) {
|
||||
return request.get(`sys/poster/type`, {params})
|
||||
return request.get(`sys/poster/type`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -88,19 +88,32 @@ export function getPosterType(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function getPosterTemplate(params: Record<string, any>) {
|
||||
return request.get(`sys/poster/template`, {params})
|
||||
return request.get(`sys/poster/template`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取自定义海报初始化数据
|
||||
*/
|
||||
export function initPoster(params: Record<string, any>) {
|
||||
return request.get(`sys/poster/init`, {params})
|
||||
return request.get(`sys/poster/init`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取自定义海报预览
|
||||
*/
|
||||
export function getPreviewPoster(params: Record<string, any>) {
|
||||
return request.get(`sys/poster/preview`, {params})
|
||||
return request.get(`sys/poster/preview`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 下载
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function getPosterGenerate(params: Record<string, any>) {
|
||||
return request.get(`sys/poster/generate`, { params, showErrorMessage: false })
|
||||
}
|
||||
// 判断是否安装imagemagick扩展
|
||||
export function checkImagick() {
|
||||
return request.get(`sys/check_imagick`, { showErrorMessage: false })
|
||||
}
|
||||
@ -18,7 +18,7 @@ export function getSiteList(params: Record<string, any>) {
|
||||
* @param site_id
|
||||
*/
|
||||
export function getSiteInfo(site_id: number) {
|
||||
return request.get(`site/site/${site_id}`);
|
||||
return request.get(`site/site/${ site_id }`);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -35,15 +35,15 @@ export function addSite(params: Record<string, any>) {
|
||||
* @param params
|
||||
*/
|
||||
export function editSite(params: Record<string, any>) {
|
||||
return request.put(`site/site/${params.site_id}`, params, { showSuccessMessage: true })
|
||||
return request.put(`site/site/${ params.site_id }`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除站点
|
||||
* @param siteId
|
||||
*/
|
||||
export function deleteSite(siteId: number) {
|
||||
return request.delete(`site/site/${siteId}`)
|
||||
export function deleteSite(params: Record<string, any>) {
|
||||
return request.delete(`site/site/${ params.site_id }?captcha_code=${ params.captcha_code }&captcha_key=${ params.captcha_key }`)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -51,15 +51,24 @@ export function deleteSite(siteId: number) {
|
||||
* @param params
|
||||
*/
|
||||
export function closeSite(params: Record<string, any>) {
|
||||
return request.put(`site/closesite/${params.site_id}`, params, { showSuccessMessage: true })
|
||||
return request.put(`site/closesite/${ params.site_id }`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 初始化站点
|
||||
* @param params
|
||||
*/
|
||||
export function initSite(params: Record<string, any>) {
|
||||
return request.post(`site/init`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 打开站点
|
||||
* @param params
|
||||
*/
|
||||
export function openSite(params: Record<string, any>) {
|
||||
return request.put(`site/opensite/${params.site_id}`, params, { showSuccessMessage: true })
|
||||
return request.put(`site/opensite/${ params.site_id }`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -69,6 +78,20 @@ export function getStatusList() {
|
||||
return request.get(`site/statuslist`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取是否显示切换站点
|
||||
*/
|
||||
export function getSiteAllowChange() {
|
||||
return request.get(`site/allow_change`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改是否显示切换站点
|
||||
*/
|
||||
export function putSiteAllowChange(params: Record<string, any>) {
|
||||
return request.put(`site/allow_change`,params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/***************************************************** 站点分组管理 ****************************************************/
|
||||
|
||||
/**
|
||||
@ -85,7 +108,7 @@ export function getSiteGroupList(params: Record<string, any>) {
|
||||
* @param groupId
|
||||
*/
|
||||
export function getSiteGroupInfo(groupId: number) {
|
||||
return request.get(`site/group/${groupId}`);
|
||||
return request.get(`site/group/${ groupId }`);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -102,7 +125,7 @@ export function addSiteGroup(params: Record<string, any>) {
|
||||
* @param params
|
||||
*/
|
||||
export function editSiteGroup(params: Record<string, any>) {
|
||||
return request.put(`site/group/${params.group_id}`, params, { showSuccessMessage: true })
|
||||
return request.put(`site/group/${ params.group_id }`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -110,7 +133,7 @@ export function editSiteGroup(params: Record<string, any>) {
|
||||
* @param group_id
|
||||
*/
|
||||
export function deleteSiteGroup(group_id: number) {
|
||||
return request.delete(`site/group/${group_id}`, { showSuccessMessage: true });
|
||||
return request.delete(`site/group/${ group_id }`, { showSuccessMessage: true });
|
||||
}
|
||||
|
||||
/**
|
||||
@ -146,7 +169,7 @@ export function getUserList(params: Record<string, any>) {
|
||||
* @param uid
|
||||
*/
|
||||
export function getUserInfo(uid: number) {
|
||||
return request.get(`site/user/${uid}`);
|
||||
return request.get(`site/user/${ uid }`);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -163,7 +186,7 @@ export function addUser(params: Record<string, any>) {
|
||||
* @param params
|
||||
*/
|
||||
export function editUser(params: Record<string, any>) {
|
||||
return request.put(`site/user/${params.uid}`, params, { showSuccessMessage: true })
|
||||
return request.put(`site/user/${ params.uid }`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -172,7 +195,7 @@ export function editUser(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function lockUser(uid: number) {
|
||||
return request.put(`site/user/lock/${uid}`)
|
||||
return request.put(`site/user/lock/${ uid }`)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -181,7 +204,7 @@ export function lockUser(uid: number) {
|
||||
* @returns
|
||||
*/
|
||||
export function unlockUser(uid: number) {
|
||||
return request.put(`site/user/unlock/${uid}`)
|
||||
return request.put(`site/user/unlock/${ uid }`)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -190,7 +213,7 @@ export function unlockUser(uid: number) {
|
||||
* @param uid
|
||||
*/
|
||||
export function deleteUser(uid: number) {
|
||||
return request.delete(`site/user/${uid}`)
|
||||
return request.delete(`site/user/${ uid }`)
|
||||
}
|
||||
|
||||
/***************************************************** 操作日志 **************************************************/
|
||||
@ -209,7 +232,15 @@ export function getLogList(params: Record<string, any>) {
|
||||
* @param id
|
||||
*/
|
||||
export function getLogInfo(id: number) {
|
||||
return request.get(`site/log/${id}`)
|
||||
return request.get(`site/log/${ id }`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空操作日志列表
|
||||
* @returns
|
||||
*/
|
||||
export function logDestroy() {
|
||||
return request.delete(`site/log/destroy`)
|
||||
}
|
||||
|
||||
/***************************************************** 账单列表 **************************************************/
|
||||
@ -228,7 +259,7 @@ export function getAccountList(params: Record<string, any>) {
|
||||
* @param id
|
||||
*/
|
||||
export function getAccountInfo(id: number) {
|
||||
return request.get(`site/account/${id}`)
|
||||
return request.get(`site/account/${ id }`)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -254,3 +285,19 @@ export function getAccountType() {
|
||||
export function getSiteAddons() {
|
||||
return request.get('site/addons')
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取站点应用
|
||||
* @returns
|
||||
*/
|
||||
export function getShowApp() {
|
||||
return request.get('site/showCustomer')
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取站点应用特殊
|
||||
* @returns
|
||||
*/
|
||||
export function getShowSpecialMenu() {
|
||||
return request.get('site/special_menu')
|
||||
}
|
||||
|
||||
@ -61,6 +61,14 @@ export function deleteRole(roleId: number) {
|
||||
return request.delete(`sys/role/${ roleId }`, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改角色状态
|
||||
* @param params
|
||||
*/
|
||||
export function modifyRoleStatus(params: Record<string, any>) {
|
||||
return request.put(`sys/role/status`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 全部分组
|
||||
* @returns
|
||||
@ -277,24 +285,6 @@ export function getAuthMenu() {
|
||||
return request.get(`auth/site/showmenu`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取图标库分类列表
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function getIconCategoryList(params: Record<string, any>) {
|
||||
return request.get(`sys/attachment/icon_category`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取图标库列表
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function getIconList(params: Record<string, any>) {
|
||||
return request.get(`sys/attachment/icon`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取evn
|
||||
* @returns
|
||||
@ -410,7 +400,7 @@ export function getTransferInfo(channel: string) {
|
||||
* @returns
|
||||
*/
|
||||
export function setTransferInfo(params: Record<string, any>) {
|
||||
return request.post(`pay/channel/set/transfer`, params)
|
||||
return request.post(`pay/channel/set/transfer`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/***************************************************** 定时任务 ****************************************************/
|
||||
@ -479,6 +469,50 @@ export function deleteCron(id: string) {
|
||||
return request.delete(`sys/schedule/${ id }`, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行任务
|
||||
* @returns
|
||||
*/
|
||||
export function doCron(params: Record<string, any>) {
|
||||
return request.put(`sys/schedule/do/${ params.id }`, params, {
|
||||
showErrorMessage: true,
|
||||
showSuccessMessage: true
|
||||
})
|
||||
}
|
||||
|
||||
|
||||
/**
|
||||
* 获取任务日志列表
|
||||
* @returns
|
||||
*/
|
||||
export function getCronLogList(params: any) {
|
||||
return request.get(`sys/schedule/log/list`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除任务日志
|
||||
* @returns
|
||||
*/
|
||||
export function deleteCronLog(params: Record<string, any>) {
|
||||
return request.put(`sys/schedule/log/delete`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 清空任务日志
|
||||
* @returns
|
||||
*/
|
||||
export function clearCronLog(params: Record<string, any>) {
|
||||
return request.put(`sys/schedule/log/clear`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 重置计划任务
|
||||
* @returns
|
||||
*/
|
||||
export function resetCron() {
|
||||
return request.post(`sys/schedule/reset`, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/***************************************************** 协议管理 ****************************************************/
|
||||
|
||||
/**
|
||||
@ -568,6 +602,13 @@ export function clearSchemaCache(params: Record<string, any>) {
|
||||
return request.post(`sys/schema/clear`, {}, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 清理缓存
|
||||
*/
|
||||
export function clearCache(params: Record<string, any>) {
|
||||
return request.post(`sys/cache/clear`, {}, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/***************************************************** 获取应用 ****************************************************/
|
||||
/**
|
||||
* 获取应用
|
||||
@ -745,3 +786,11 @@ export function deleteExport(id: number) {
|
||||
export function getWxoplatform() {
|
||||
return request.get('sys/wxoplatform/config')
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取二维码
|
||||
* @returns
|
||||
*/
|
||||
export function getQrcode(params: Record<string, any>) {
|
||||
return request.get(`sys/qrcode`, { params, showErrorMessage: false })
|
||||
}
|
||||
|
||||
@ -6,7 +6,7 @@ import request from '@/utils/request'
|
||||
* @returns
|
||||
*/
|
||||
export function getAddonDevelop(params: Record<string, any>) {
|
||||
return request.get(`addon_develop`, {params});
|
||||
return request.get(`addon_develop`, { params });
|
||||
}
|
||||
|
||||
/**
|
||||
@ -22,7 +22,7 @@ export function getAddontype() {
|
||||
* @returns
|
||||
*/
|
||||
export function getAddonDevelopInfo(key: any) {
|
||||
return request.get(`addon_develop/${key}`)
|
||||
return request.get(`addon_develop/${ key }`)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -30,7 +30,7 @@ export function getAddonDevelopInfo(key: any) {
|
||||
* @returns
|
||||
*/
|
||||
export function getAddonDevelopCheck(key: any) {
|
||||
return request.get(`addon_develop/check/${key}`)
|
||||
return request.get(`addon_develop/check/${ key }`)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -48,7 +48,7 @@ export function getAddonKeyBlackList() {
|
||||
* @returns
|
||||
*/
|
||||
export function addAddonDevelop(key: any, params: Record<string, any>) {
|
||||
return request.post(`addon_develop/${key}`, params)
|
||||
return request.post(`addon_develop/${ key }`, params)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -58,7 +58,7 @@ export function addAddonDevelop(key: any, params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function editAddonDevelop(key: any, params: Record<string, any>) {
|
||||
return request.put(`addon_develop/${key}`, params)
|
||||
return request.put(`addon_develop/${ key }`, params)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -67,7 +67,7 @@ export function editAddonDevelop(key: any, params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function deleteAddonDevelop(key: any) {
|
||||
return request.delete(`addon_develop/${key}`, {showSuccessMessage: true})
|
||||
return request.delete(`addon_develop/${ key }`, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -75,7 +75,7 @@ export function deleteAddonDevelop(key: any) {
|
||||
* @returns
|
||||
*/
|
||||
export function addonDevelopBuild(key: any) {
|
||||
return request.post(`addon_develop/build/${key}`)
|
||||
return request.post(`addon_develop/build/${ key }`)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -83,8 +83,9 @@ export function addonDevelopBuild(key: any) {
|
||||
* @returns
|
||||
*/
|
||||
export function addonDevelopDownload(key: any) {
|
||||
return request.post(`addon_develop/download/${key}`, {})
|
||||
return request.post(`addon_develop/download/${ key }`, {})
|
||||
}
|
||||
|
||||
/***************************************************** 代码生成 ****************************************************/
|
||||
|
||||
/**
|
||||
@ -93,7 +94,7 @@ export function addonDevelopDownload(key: any) {
|
||||
* @returns
|
||||
*/
|
||||
export function getGenerateTableList(params: Record<string, any>) {
|
||||
return request.get(`generator/generator`, {params})
|
||||
return request.get(`generator/generator`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -102,7 +103,7 @@ export function getGenerateTableList(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function getGenerateTableInfo(id: number) {
|
||||
return request.get(`generator/generator/${id}`);
|
||||
return request.get(`generator/generator/${ id }`);
|
||||
}
|
||||
|
||||
/**
|
||||
@ -111,7 +112,7 @@ export function getGenerateTableInfo(id: number) {
|
||||
* @returns
|
||||
*/
|
||||
export function addGenerateTable(params: Record<string, any>) {
|
||||
return request.post('generator/generator', params, {showSuccessMessage: true})
|
||||
return request.post('generator/generator', params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -119,7 +120,7 @@ export function addGenerateTable(params: Record<string, any>) {
|
||||
* @param params
|
||||
*/
|
||||
export function editGenerateTable(params: Record<string, any>) {
|
||||
return request.put(`generator/generator/${params.id}`, params, {showSuccessMessage: true})
|
||||
return request.put(`generator/generator/${ params.id }`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -128,7 +129,7 @@ export function editGenerateTable(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function deleteGenerateTable(id: number) {
|
||||
return request.delete(`generator/generator/${id}`, {showSuccessMessage: true})
|
||||
return request.delete(`generator/generator/${ id }`, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -146,7 +147,7 @@ export function generateCreate(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function generatePreview(id: number) {
|
||||
return request.get(`generator/preview/${id}`)
|
||||
return request.get(`generator/preview/${ id }`)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -167,26 +168,26 @@ export function getSystem() {
|
||||
* 获取全部模型
|
||||
*/
|
||||
export function getGeneratorAllModel(params: any) {
|
||||
return request.get(`generator/all_model`, {params})
|
||||
return request.get(`generator/all_model`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取 表字段
|
||||
*/
|
||||
export function getGeneratorTableColumn(params: any) {
|
||||
return request.get(`generator/table_column`, {params})
|
||||
return request.get(`generator/table_column`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 同步校验
|
||||
*/
|
||||
export function generatorCheckFile(params: Record<string, any>) {
|
||||
return request.get(`generator/check_file`, {params})
|
||||
return request.get(`generator/check_file`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 根据模型获取表字段
|
||||
*/
|
||||
export function getGeneratorModelTableColumn(params: any) {
|
||||
return request.get(`generator/model_table_column`, {params})
|
||||
return request.get(`generator/model_table_column`, { params })
|
||||
}
|
||||
|
||||
@ -6,7 +6,7 @@ import request from '@/utils/request'
|
||||
* @param addon
|
||||
*/
|
||||
export function getUpgradeContent(addon: string = '') {
|
||||
return request.get(addon ? `upgrade/${addon}` : 'upgrade')
|
||||
return request.get(addon ? `upgrade/${ addon }` : 'upgrade')
|
||||
}
|
||||
|
||||
/**
|
||||
@ -19,23 +19,24 @@ export function getUpgradeTask() {
|
||||
/**
|
||||
* 升级
|
||||
* @param addon
|
||||
* @param params
|
||||
*/
|
||||
export function upgradeAddon(addon: string = '') {
|
||||
return request.post(addon ? `upgrade/${addon}` : 'upgrade')
|
||||
export function upgradeAddon(addon: string = '', params: Record<string, any> = {}) {
|
||||
return request.post(addon ? `upgrade/${ addon }` : 'upgrade', params)
|
||||
}
|
||||
|
||||
/**
|
||||
* 执行升级
|
||||
*/
|
||||
export function executeUpgrade() {
|
||||
return request.post('upgrade/execute', {})
|
||||
return request.post('upgrade/execute', {}, { showErrorMessage: false })
|
||||
}
|
||||
|
||||
/**
|
||||
* 升级前检测
|
||||
*/
|
||||
export function preUpgradeCheck(addon: string = '') {
|
||||
return request.get(addon ? `upgrade/check/${addon}` : 'upgrade/check')
|
||||
return request.get(addon ? `upgrade/check/${ addon }` : 'upgrade/check')
|
||||
}
|
||||
|
||||
/**
|
||||
@ -44,3 +45,118 @@ export function preUpgradeCheck(addon: string = '') {
|
||||
export function clearUpgradeTask() {
|
||||
return request.post('upgrade/clear')
|
||||
}
|
||||
|
||||
/**
|
||||
* 用户操作
|
||||
* @param operate
|
||||
*/
|
||||
export function upgradeUserOperate(operate: string) {
|
||||
return request.post(`upgrade/operate/${ operate }`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取升级记录分页列表
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function getUpgradeRecords(params: Record<string, any>) {
|
||||
return request.get(`upgrade/records`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 删除升级记录
|
||||
* @param params
|
||||
*/
|
||||
export function delUpgradeRecords(params: Record<string, any>) {
|
||||
return request.delete(`upgrade/records`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取备份记录分页列表
|
||||
* @param params
|
||||
* @returns
|
||||
*/
|
||||
export function getBackupRecords(params: Record<string, any>) {
|
||||
return request.get(`backup/records`, { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改备份备注
|
||||
* @param params
|
||||
*/
|
||||
export function modifyBackupRemark(params: Record<string, any>) {
|
||||
return request.put(`backup/remark`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 备份功能 检测目录权限
|
||||
*/
|
||||
export function checkDirExist(params: Record<string, any>) {
|
||||
return request.post('backup/check_dir', params)
|
||||
}
|
||||
|
||||
/**
|
||||
* 备份功能 检测目录权限
|
||||
*/
|
||||
export function checkPermission(params: Record<string, any>) {
|
||||
return request.post('backup/check_permission', params)
|
||||
}
|
||||
|
||||
/**
|
||||
* 备份功能 恢复升级备份
|
||||
*/
|
||||
export function restoreUpgradeBackup(params: Record<string, any>) {
|
||||
return request.post('backup/restore', params)
|
||||
}
|
||||
|
||||
/**
|
||||
* 备份功能 删除升级记录
|
||||
*/
|
||||
export function deleteRecords(params: Record<string, any>) {
|
||||
return request.post('backup/delete', params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 手动备份
|
||||
*/
|
||||
export function manualBackup(params: Record<string, any>) {
|
||||
return request.post("backup/manual", params)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取进行中的恢复
|
||||
* @param params
|
||||
*/
|
||||
export function performRecoveryTasks(params: Record<string, any>) {
|
||||
return request.get("backup/restore_task", params)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取进行中的备份
|
||||
* @param params
|
||||
*/
|
||||
export function performBackupTasks(params: Record<string, any>) {
|
||||
return request.get("backup/task", params)
|
||||
}
|
||||
|
||||
/**
|
||||
* 连通测试
|
||||
* @param params
|
||||
*/
|
||||
export function connectTest(params: Record<string, any>) {
|
||||
return request.post("niucloud/build/connect_test", params)
|
||||
}
|
||||
/**
|
||||
* 保存服务器地址
|
||||
* @param params
|
||||
*/
|
||||
export function setLocalUrl(params: Record<string, any>) {
|
||||
return request.post("niucloud/build/set_local_url", params)
|
||||
}
|
||||
/**
|
||||
* 获取服务器地址
|
||||
* @param params
|
||||
*/
|
||||
export function getLocalUrl(params: Record<string, any>) {
|
||||
return request.get("niucloud/build/get_local_url", params)
|
||||
}
|
||||
|
||||
@ -36,15 +36,15 @@ export function addUser(params: Record<string, any>) {
|
||||
* @param uid
|
||||
*/
|
||||
export function deleteUser(uid: number) {
|
||||
return request.delete(`user/user/${uid}`, { showSuccessMessage: true })
|
||||
return request.delete(`user/user/${ uid }`, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改用户
|
||||
* @param uid
|
||||
* @param params
|
||||
*/
|
||||
export function editUser(params: Record<string, any>) {
|
||||
return request.put(`user/user/${params.uid}`, params, { showSuccessMessage: true })
|
||||
return request.put(`user/user/${ params.uid }`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -18,9 +18,26 @@ export function getVerifyRecord(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function getVerifyDetail(verifyCode: string) {
|
||||
return request.get(`verify/verify/${verifyCode}`)
|
||||
return request.get(`verify/verify/${ verifyCode }`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取核销详情
|
||||
* @param verifyCode
|
||||
* @returns
|
||||
*/
|
||||
export function getVerifyDetailInfo(verifyCode: string) {
|
||||
return request.get(`verify/detail/${ verifyCode }`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 核销
|
||||
* @param verifyCode
|
||||
* @returns
|
||||
*/
|
||||
export function verify(verifyCode: string, params: Record<string, any>) {
|
||||
return request.post(`verify/verify/${ verifyCode }`,params,{ showSuccessMessage: true})
|
||||
}
|
||||
/***************************************************** 核销员 ****************************************************/
|
||||
|
||||
/**
|
||||
@ -64,5 +81,21 @@ export function addVerifier(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function deleteVerifier(id: number) {
|
||||
return request.delete(`verify/verifier/${id}`, { showSuccessMessage: true })
|
||||
}
|
||||
return request.delete(`verify/verifier/${ id }`, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取核销员信息
|
||||
* @returns
|
||||
*/
|
||||
export function getVerifyInfo(id: number) {
|
||||
return request.get(`verify/verifier/${ id }`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改核销员信息
|
||||
* @returns
|
||||
*/
|
||||
export function editVerifier(params: Record<string, any>) {
|
||||
return request.post(`verify/verifier/${ params.id }`, params,{ showSuccessMessage: true })
|
||||
}
|
||||
|
||||
@ -33,6 +33,7 @@ export function getTemplateList() {
|
||||
export function getBatchAcquisition(params: Record<string, any>) {
|
||||
return request.put('weapp/template/sync', params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 添加微信小程序版本
|
||||
* @param params
|
||||
@ -61,11 +62,11 @@ export function getWeappVersionList(params: Record<string, any>) {
|
||||
|
||||
/**
|
||||
* 获取微信小程序上传日志
|
||||
* @param key
|
||||
* @returns
|
||||
* @param key
|
||||
* @returns
|
||||
*/
|
||||
export function getWeappUploadLog(key: string) {
|
||||
return request.get(`weapp/upload/${key}`)
|
||||
return request.get(`weapp/upload/${ key }`)
|
||||
}
|
||||
|
||||
/***************************************************** 管理端 ****************************************************/
|
||||
@ -103,7 +104,7 @@ export function getVersionList(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function getVersionInfo(id: string) {
|
||||
return request.get(`applet/version/${id}`)
|
||||
return request.get(`applet/version/${ id }`)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -112,7 +113,7 @@ export function getVersionInfo(id: string) {
|
||||
* @returns
|
||||
*/
|
||||
export function editVersion(params: Record<string, any>) {
|
||||
return request.put(`applet/version/${params.id}`, params, { showSuccessMessage: true })
|
||||
return request.put(`applet/version/${ params.id }`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -121,7 +122,7 @@ export function editVersion(params: Record<string, any>) {
|
||||
* @returns
|
||||
*/
|
||||
export function deleteVersion(id: string) {
|
||||
return request.delete(`applet/version/${id}`)
|
||||
return request.delete(`applet/version/${ id }`)
|
||||
}
|
||||
|
||||
/**
|
||||
@ -130,4 +131,27 @@ export function deleteVersion(id: string) {
|
||||
*/
|
||||
export function getIsTradeManaged() {
|
||||
return request.get('weapp/delivery/getIsTradeManaged')
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置服务器域名
|
||||
* @param params
|
||||
*/
|
||||
export function setWeappDomain(params: Record<string, any>) {
|
||||
return request.put('weapp/domain', params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 设置小程序隐私协议
|
||||
* @param params
|
||||
*/
|
||||
export function setWeappPrivacySetting(params: Record<string, any>) {
|
||||
return request.put('weapp/privacysetting', params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取小程序隐私协议
|
||||
*/
|
||||
export function getWeappPrivacySetting() {
|
||||
return request.get('weapp/privacysetting')
|
||||
}
|
||||
|
||||
@ -21,7 +21,7 @@ export function getWechatStatic() {
|
||||
* @returns
|
||||
*/
|
||||
export function editWechatConfig(params: Record<string, any>) {
|
||||
return request.put('wechat/config', params, {showSuccessMessage: true})
|
||||
return request.put('wechat/config', params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -38,7 +38,7 @@ export function getWechatMenu() {
|
||||
* @returns
|
||||
*/
|
||||
export function editWechatMenu(params: Record<string, any>) {
|
||||
return request.put('wechat/menu', params, {showSuccessMessage: true})
|
||||
return request.put('wechat/menu', params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -55,7 +55,7 @@ export function getTemplateList() {
|
||||
* @returns
|
||||
*/
|
||||
export function getBatchAcquisition(params: Record<string, any>) {
|
||||
return request.put('wechat/template/sync', params, {showSuccessMessage: true})
|
||||
return request.put('wechat/template/sync', params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -69,7 +69,7 @@ export function getKeywordsReplyList(params: Record<string, any>) {
|
||||
* 修改关键字回复
|
||||
*/
|
||||
export function editKeywordsReply(params: Record<string, any>) {
|
||||
return request.put(`wechat/reply/keywords/${params.id}`, params, { showSuccessMessage: true })
|
||||
return request.put(`wechat/reply/keywords/${ params.id }`, params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -84,14 +84,14 @@ export function addKeywordsReply(params: Record<string, any>) {
|
||||
* @param id
|
||||
*/
|
||||
export function getKeywordsReplyInfo(id: number) {
|
||||
return request.get(`wechat/reply/keywords/${id}`)
|
||||
return request.get(`wechat/reply/keywords/${ id }`)
|
||||
}
|
||||
|
||||
/**
|
||||
* 修改关键字回复
|
||||
*/
|
||||
export function delKeywordsReply(id: number) {
|
||||
return request.delete(`wechat/reply/keywords/${id}`, { showSuccessMessage: true })
|
||||
return request.delete(`wechat/reply/keywords/${ id }`, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
|
||||
@ -42,8 +42,8 @@ export function getAuthorizationResult(params: Record<string, any>) {
|
||||
* 小程序代码提交
|
||||
* @returns
|
||||
*/
|
||||
export function weappCommit() {
|
||||
return request.post('wxoplatform/weapp/version/commit', {}, { showSuccessMessage: true })
|
||||
export function weappCommit(params: Record<string, any>) {
|
||||
return request.post('wxoplatform/weapp/version/commit', params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
@ -67,3 +67,38 @@ export function getWeappLastCommitRecord() {
|
||||
export function siteWeappCommit() {
|
||||
return request.post('wxoplatform/site/weapp/commit', {}, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 按站点套餐获取提交记录
|
||||
*/
|
||||
export function getSiteGroupCommitRecord(params: Record<string, any>) {
|
||||
return request.get('wxoplatform/sitegroup/commit', { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 撤回代码审核
|
||||
* @param params
|
||||
*/
|
||||
export function undoAudit(params: Record<string, any>) {
|
||||
return request.put('wxoplatform/undo/weappaudit', params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
|
||||
export function syncSiteWeapp(params: Record<string, any>) {
|
||||
return request.post('wxoplatform/async/siteweapp', params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
/**
|
||||
* 获取授权记录
|
||||
* @param params
|
||||
*/
|
||||
export function getAuthRecord(params: Record<string, any>) {
|
||||
return request.get('wxoplatform/authorization/record', { params })
|
||||
}
|
||||
|
||||
/**
|
||||
* 取消授权
|
||||
*/
|
||||
export function cancelAuthorization(params: Record<string, any>) {
|
||||
return request.post('wxoplatform/authorization/cancel', params, { showSuccessMessage: true })
|
||||
}
|
||||
|
||||
BIN
admin/src/app/assets/images/app_store/app_manage.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
admin/src/app/assets/images/app_store/app_type_addon.png
Normal file
|
After Width: | Height: | Size: 518 B |
BIN
admin/src/app/assets/images/app_store/app_type_app.png
Normal file
|
After Width: | Height: | Size: 478 B |
BIN
admin/src/app/assets/images/app_store/system_version.png
Normal file
|
After Width: | Height: | Size: 834 B |
BIN
admin/src/app/assets/images/diy_form/mobile_bottom.png
Normal file
|
After Width: | Height: | Size: 3.5 KiB |
BIN
admin/src/app/assets/images/diy_form/mobile_line.png
Normal file
|
After Width: | Height: | Size: 167 B |
BIN
admin/src/app/assets/images/diy_form/mobile_tabbar.png
Normal file
|
After Width: | Height: | Size: 8.8 KiB |
|
Before Width: | Height: | Size: 24 KiB After Width: | Height: | Size: 30 KiB |
BIN
admin/src/app/assets/images/error_icon.png
Normal file
|
After Width: | Height: | Size: 1.2 KiB |
BIN
admin/src/app/assets/images/goods_default.png
Normal file
|
After Width: | Height: | Size: 10 KiB |
BIN
admin/src/app/assets/images/icon-addon-one.png
Normal file
|
After Width: | Height: | Size: 4.7 KiB |
BIN
admin/src/app/assets/images/index/app_store.png
Normal file
|
After Width: | Height: | Size: 7.7 KiB |
BIN
admin/src/app/assets/images/index/app_store1.png
Normal file
|
After Width: | Height: | Size: 1.5 KiB |
BIN
admin/src/app/assets/images/index/banner_1.png
Normal file
|
After Width: | Height: | Size: 163 KiB |
BIN
admin/src/app/assets/images/index/banner_2.png
Normal file
|
After Width: | Height: | Size: 192 KiB |
BIN
admin/src/app/assets/images/index/cloud.png
Normal file
|
After Width: | Height: | Size: 1.1 KiB |
BIN
admin/src/app/assets/images/index/install.png
Normal file
|
After Width: | Height: | Size: 838 B |
BIN
admin/src/app/assets/images/index/low-play.mp4
Normal file
BIN
admin/src/app/assets/images/index/message_empty.png
Normal file
|
After Width: | Height: | Size: 7.6 KiB |
BIN
admin/src/app/assets/images/index/not_install.png
Normal file
|
After Width: | Height: | Size: 964 B |
BIN
admin/src/app/assets/images/index/site2.png
Normal file
|
After Width: | Height: | Size: 880 B |
BIN
admin/src/app/assets/images/index/site3.png
Normal file
|
After Width: | Height: | Size: 1011 B |
BIN
admin/src/app/assets/images/index/site_add.png
Normal file
|
After Width: | Height: | Size: 8.2 KiB |
BIN
admin/src/app/assets/images/index/site_add1.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
admin/src/app/assets/images/index/site_list.png
Normal file
|
After Width: | Height: | Size: 8.9 KiB |
BIN
admin/src/app/assets/images/index/site_list1.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
admin/src/app/assets/images/index/site_normal.png
Normal file
|
After Width: | Height: | Size: 957 B |
BIN
admin/src/app/assets/images/index/site_tc.png
Normal file
|
After Width: | Height: | Size: 7.9 KiB |
BIN
admin/src/app/assets/images/index/site_tc1.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
admin/src/app/assets/images/index/site_user.png
Normal file
|
After Width: | Height: | Size: 8.9 KiB |
BIN
admin/src/app/assets/images/index/site_user1.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
admin/src/app/assets/images/login/login_bg.jpg
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
admin/src/app/assets/images/login/login_icon.png
Normal file
|
After Width: | Height: | Size: 5.1 KiB |
BIN
admin/src/app/assets/images/login/login_index_bg.jpg
Normal file
|
After Width: | Height: | Size: 117 KiB |
|
Before Width: | Height: | Size: 1.7 MiB |
BIN
admin/src/app/assets/images/login/password.png
Normal file
|
After Width: | Height: | Size: 466 B |
|
Before Width: | Height: | Size: 32 KiB |
|
Before Width: | Height: | Size: 87 KiB |
|
Before Width: | Height: | Size: 1.5 KiB |
|
Before Width: | Height: | Size: 113 KiB After Width: | Height: | Size: 113 KiB |
BIN
admin/src/app/assets/images/login/username.png
Normal file
|
After Width: | Height: | Size: 602 B |
BIN
admin/src/app/assets/images/logo.default.png
Normal file
|
After Width: | Height: | Size: 2.3 KiB |
|
Before Width: | Height: | Size: 34 KiB After Width: | Height: | Size: 24 KiB |
BIN
admin/src/app/assets/images/site_default.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
|
Before Width: | Height: | Size: 26 KiB After Width: | Height: | Size: 33 KiB |
BIN
admin/src/app/assets/images/success_icon.png
Normal file
|
After Width: | Height: | Size: 1.3 KiB |
BIN
admin/src/app/assets/images/tools/authorize.png
Normal file
|
After Width: | Height: | Size: 8.9 KiB |
BIN
admin/src/app/assets/images/tools/tools_backup_records.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
admin/src/app/assets/images/tools/tools_cloud_compile.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
BIN
admin/src/app/assets/images/tools/tools_upgrade.png
Normal file
|
After Width: | Height: | Size: 20 KiB |
BIN
admin/src/app/assets/images/tools/tools_upgrade_records.png
Normal file
|
After Width: | Height: | Size: 17 KiB |
BIN
admin/src/app/assets/images/tools/upgrade.png
Normal file
|
After Width: | Height: | Size: 12 KiB |
BIN
admin/src/app/assets/images/white_logo.png
Normal file
|
After Width: | Height: | Size: 1.4 KiB |
BIN
admin/src/app/assets/images/write.png
Normal file
|
After Width: | Height: | Size: 481 B |
@ -1,68 +1,108 @@
|
||||
<template>
|
||||
<el-dialog v-model="showDialog" :title="t('cloudbuild.title')" width="850px" :close-on-click-modal="false" :close-on-press-escape="false" :before-close="dialogClose">
|
||||
|
||||
<div v-if="active == 'build'" class="h-[60vh]" v-loading="loading">
|
||||
<div class="h-[60vh] flex flex-col" v-if="cloudBuildCheck && !cloudBuildTask">
|
||||
<el-scrollbar>
|
||||
<div v-show="active == 'build'" class="h-[50vh]" v-loading="loading">
|
||||
<div class="h-[50vh] flex flex-col" v-if="cloudBuildCheck && !cloudBuildTask">
|
||||
<!-- <el-scrollbar> -->
|
||||
<div class="bg-[#fff] my-3" v-if="cloudBuildCheck.dir">
|
||||
<p class="pt-[20px] pl-[20px] ">{{ t('cloudbuild.dirPermission') }}</p>
|
||||
<div>
|
||||
<p class="pl-[20px] ">{{ t('cloudbuild.dirPermission') }}</p>
|
||||
<div class="mt-[10px] mx-[20px] text-[14px] cursor-pointer text-primary flex items-center justify-between bg-[#EFF6FF] rounded-[4px] p-[10px]" @click="cloudBuildCheckDirFn">
|
||||
<div class="flex items-center">
|
||||
<el-icon :size="17"><QuestionFilled /></el-icon>
|
||||
<span class="ml-[5px] leading-[20px]">编译权限错误,查看解决方案</span></div>
|
||||
<div class="border-[1px] border-primary rounded-[3px] w-[72px] h-[26px] leading-[25px] text-center">立即查看</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="px-[20px] pt-[10px] text-[14px] el-table">
|
||||
<el-row class="py-[10px] items table-head-bg pl-[15px] mb-[10px]">
|
||||
<el-col :span="12">
|
||||
<el-col :span="18">
|
||||
<span>{{ t('cloudbuild.path') }}</span>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-col :span="3">
|
||||
<span>{{ t('cloudbuild.demand') }}</span>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<el-col :span="3">
|
||||
<span>{{ t('status') }}</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row class="pb-[10px] items pl-[15px]" v-for="item in cloudBuildCheck.dir.is_readable">
|
||||
<el-col :span="12">
|
||||
<span>{{ item.dir }}</span>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<span>{{ t('cloudbuild.readable') }}</span>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<span v-if="item.status"><el-icon color="green"><Select /></el-icon></span>
|
||||
<span v-else>
|
||||
<el-scrollbar style="height: calc(300px); overflow: auto">
|
||||
<el-row class="pb-[10px] items pl-[15px]" v-for="item in cloudBuildCheck.dir.is_readable">
|
||||
<el-col :span="18">
|
||||
<span>{{ item.dir }}</span>
|
||||
</el-col>
|
||||
<el-col :span="3">
|
||||
<span>{{ t('cloudbuild.readable') }}</span>
|
||||
</el-col>
|
||||
<el-col :span="3">
|
||||
<span v-if="item.status"><el-icon color="green"><Select /></el-icon></span>
|
||||
<span v-else>
|
||||
<el-icon color="red">
|
||||
<CloseBold />
|
||||
</el-icon>
|
||||
</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row class="pb-[10px] items pl-[15px]" v-for="item in cloudBuildCheck.dir.is_write">
|
||||
<el-col :span="18">
|
||||
<span>{{ item.dir }}</span>
|
||||
</el-col>
|
||||
<el-col :span="3">
|
||||
<span>{{ t('cloudbuild.write') }}</span>
|
||||
</el-col>
|
||||
<el-col :span="3" >
|
||||
<span v-if="item.status"><el-icon color="green"><Select /></el-icon></span>
|
||||
<span v-else>
|
||||
<el-icon color="red">
|
||||
<CloseBold />
|
||||
</el-icon>
|
||||
</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
<el-row class="pb-[10px] items pl-[15px]" v-for="item in cloudBuildCheck.dir.is_write">
|
||||
<el-col :span="12">
|
||||
<span>{{ item.dir }}</span>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<span>{{ t('cloudbuild.write') }}</span>
|
||||
</el-col>
|
||||
<el-col :span="6">
|
||||
<span v-if="item.status"><el-icon color="green"><Select /></el-icon></span>
|
||||
<span v-else>
|
||||
<el-icon color="red">
|
||||
<CloseBold />
|
||||
</el-icon>
|
||||
</span>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-col>
|
||||
</el-row>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
</div>
|
||||
</el-scrollbar>
|
||||
<!-- </el-scrollbar> -->
|
||||
</div>
|
||||
<div class="h-[60vh]" v-show="cloudBuildTask">
|
||||
<terminal ref="terminalRef" context="" :init-log="null" :show-header="false" :show-log-time="true" @exec-cmd="onExecCmd"/>
|
||||
<div class="h-[45vh]" v-show="cloudBuildTask">
|
||||
<terminal ref="terminalRef" :name="`cloud-build-${terminalId}`" context="" :init-log="null" :show-header="false" :show-log-time="true" @exec-cmd="onExecCmd"/>
|
||||
</div>
|
||||
<div class="flex justify-end mt-[20px]" v-show="cloudBuildTask">
|
||||
<el-button @click="dialogCancel()" class="!w-[90px]">取消</el-button>
|
||||
<el-button type="primary" :loading="timeloading" class="!w-[140px]">已用时 {{ formattedDuration }}</el-button>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div v-if="active == 'complete'">
|
||||
<div class="h-[60vh] flex flex-col">
|
||||
<div class="flex-1 h-0">
|
||||
<el-result icon="success" :title="t('cloudbuild.cloudbuildSuccess')"></el-result>
|
||||
<div v-show="active == 'error'">
|
||||
<div class="h-[50vh] flex flex-col">
|
||||
<div class="flex-1 h-0 flex justify-center items-center flex-col">
|
||||
<el-result icon="error" :title="t('编译失败')">
|
||||
<template #icon>
|
||||
<img src="@/app/assets/images/error_icon.png" alt="">
|
||||
</template>
|
||||
<template #extra>
|
||||
<el-scrollbar class="max-h-[150px] !overflow-auto text-[15px] text-[#4F516D] mb-[15px] mt-[-15px]">
|
||||
{{errorInfo}}
|
||||
</el-scrollbar>
|
||||
<el-button @click="handleReturn" class="!w-[90px]">错误信息</el-button>
|
||||
<el-button @click="showDialog=false" type="primary" class="!w-[90px]">完成</el-button>
|
||||
</template>
|
||||
</el-result>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div v-show="active == 'complete'">
|
||||
<div class="h-[50vh] flex flex-col">
|
||||
<div class="flex-1 h-0 flex justify-center items-center flex-col">
|
||||
<el-result icon="success" :title="t('cloudbuild.cloudbuildSuccess')" :sub-title="`编译耗时${formattedDuration},成功编译完成。`">
|
||||
<template #icon>
|
||||
<img src="@/app/assets/images/success_icon.png" alt="">
|
||||
</template>
|
||||
<template #extra>
|
||||
<el-button @click="handleReturn" class="!w-[90px]">返回</el-button>
|
||||
<el-button @click="showDialog=false" type="primary" class="!w-[90px]">完成</el-button>
|
||||
</template>
|
||||
</el-result>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
@ -70,23 +110,35 @@
|
||||
</template>
|
||||
|
||||
<script lang="ts" setup>
|
||||
import { ref, h, watch } from 'vue'
|
||||
import { ref, h, watch, computed } from 'vue'
|
||||
import { t } from '@/lang'
|
||||
import { getCloudBuildLog, getCloudBuildTask, cloudBuild, clearCloudBuildTask, preBuildCheck } from '@/app/api/cloud'
|
||||
import { Terminal, TerminalFlash } from 'vue-web-terminal'
|
||||
import 'vue-web-terminal/lib/theme/dark.css'
|
||||
import { AnyObject } from "@/types/global"
|
||||
import { ElNotification, ElMessageBox } from "element-plus"
|
||||
import { AnyObject } from '@/types/global'
|
||||
import { ElNotification, ElMessageBox } from 'element-plus'
|
||||
|
||||
const showDialog = ref<boolean>(false)
|
||||
const terminalId = ref(Date.now());
|
||||
const cloudBuildTask = ref<null | AnyObject>(null)
|
||||
const active = ref('build')
|
||||
const cloudBuildCheck = ref<null | AnyObject>(null)
|
||||
const loading = ref(false)
|
||||
const terminalRef = ref(null)
|
||||
const emits = defineEmits(['complete'])
|
||||
|
||||
let cloudBuildLog = []
|
||||
|
||||
// 计时器相关
|
||||
const buildStartTime = ref<number | null>(null)
|
||||
const buildDuration = ref<number>(0)
|
||||
let buildTimer: number | null = null
|
||||
const formattedDuration = computed(() => {
|
||||
const seconds = buildDuration.value
|
||||
const mins = Math.floor(seconds / 60)
|
||||
const secs = seconds % 60
|
||||
return mins > 0 ? `${mins}分${secs}秒` : `${secs}秒`
|
||||
})
|
||||
|
||||
/**
|
||||
* 查询升级任务
|
||||
*/
|
||||
@ -97,42 +149,82 @@ const getCloudBuildTaskFn = () => {
|
||||
cloudBuildTask.value = data
|
||||
|
||||
if (!showDialog.value) {
|
||||
showElNotification()
|
||||
// showElNotification()
|
||||
localStorage.setItem('cloud_build_task', 'true')
|
||||
}
|
||||
}).catch()
|
||||
}
|
||||
getCloudBuildTaskFn()
|
||||
|
||||
const errorInfo = ref('')
|
||||
const timeloading = ref(false)
|
||||
const getCloudBuildLogFn = () => {
|
||||
timeloading.value = true
|
||||
getCloudBuildLog().then(res => {
|
||||
if (!res.data) {
|
||||
if (showDialog.value && cloudBuildLog.length) {
|
||||
active.value = 'complete'
|
||||
timeloading.value = false
|
||||
terminalRef.value.execute('clear')
|
||||
clearCloudBuildTask()
|
||||
buildTimer && clearInterval(buildTimer) // 清除计时器
|
||||
localStorage.removeItem('cloud_build_start_time')
|
||||
localStorage.removeItem('cloud_build_task')
|
||||
}
|
||||
notificationEl && notificationEl.close()
|
||||
cloudBuildTask.value = null
|
||||
// cloudBuildTask.value = null
|
||||
return
|
||||
}
|
||||
|
||||
const data = res.data.data ?? [];
|
||||
const data = res.data.data ?? []
|
||||
let error = ''
|
||||
|
||||
if (data[0] && data[0].length && showDialog.value) {
|
||||
if (cloudBuildLog.length == 0) {
|
||||
const storedTime = localStorage.getItem('cloud_build_start_time')
|
||||
if (storedTime) {
|
||||
buildStartTime.value = Number(storedTime)
|
||||
} else {
|
||||
const now = Date.now()
|
||||
buildStartTime.value = now
|
||||
localStorage.setItem('cloud_build_start_time', String(now))
|
||||
}
|
||||
|
||||
buildDuration.value = Math.floor((Date.now() - buildStartTime.value) / 1000)
|
||||
buildTimer && clearInterval(buildTimer)
|
||||
buildTimer = setInterval(() => {
|
||||
if (buildStartTime.value) {
|
||||
buildDuration.value = Math.floor((Date.now() - buildStartTime.value) / 1000)
|
||||
}
|
||||
}, 1000)
|
||||
terminalRef.value.execute('clear')
|
||||
terminalRef.value.execute('开始编译')
|
||||
}
|
||||
|
||||
data[0].forEach(item => {
|
||||
if (!cloudBuildLog.includes(item.action)) {
|
||||
terminalRef.value.pushMessage({ content: `正在执行:${item.action}` })
|
||||
terminalRef.value.pushMessage({ content: `${item.action}` })
|
||||
cloudBuildLog.push(item.action)
|
||||
|
||||
if (item.code == 0) {
|
||||
error = item.msg
|
||||
terminalRef.value.pushMessage({ content: item.msg, class: 'error' })
|
||||
timeloading.value = false
|
||||
active.value = 'error'
|
||||
terminalRef.value.execute('clear')
|
||||
clearCloudBuildTask()
|
||||
errorInfo.value = item.msg
|
||||
// 停止计时器
|
||||
if (buildTimer) {
|
||||
clearInterval(buildTimer)
|
||||
buildTimer = null
|
||||
}
|
||||
|
||||
// 保证 duration 也被最后更新一次
|
||||
if (buildStartTime.value) {
|
||||
buildDuration.value = Math.floor((Date.now() - buildStartTime.value) / 1000)
|
||||
}
|
||||
localStorage.removeItem('cloud_build_start_time')
|
||||
localStorage.removeItem('cloud_build_task')
|
||||
}
|
||||
}
|
||||
})
|
||||
@ -146,22 +238,28 @@ const getCloudBuildLogFn = () => {
|
||||
}).catch()
|
||||
}
|
||||
|
||||
let notificationEl : any = null
|
||||
const closeType = ref('normal')
|
||||
const handleReturn = () => {
|
||||
active.value = 'build'
|
||||
closeType.value = 'success'
|
||||
}
|
||||
|
||||
const notificationEl : any = null
|
||||
/**
|
||||
* 升级中任务提示
|
||||
*/
|
||||
const showElNotification = () => {
|
||||
notificationEl = ElNotification.success({
|
||||
title: t('warning'),
|
||||
dangerouslyUseHTMLString: true,
|
||||
message: h('div', {}, [
|
||||
t('cloudbuild.executingTips'),
|
||||
h('span', { class: 'text-primary cursor-pointer', onClick: elNotificationClick }, [t('cloudbuild.clickView')])
|
||||
]),
|
||||
duration: 0,
|
||||
showClose: false
|
||||
})
|
||||
}
|
||||
// const showElNotification = () => {
|
||||
// notificationEl = ElNotification.success({
|
||||
// title: t('warning'),
|
||||
// dangerouslyUseHTMLString: true,
|
||||
// message: h('div', {}, [
|
||||
// t('cloudbuild.executingTips'),
|
||||
// h('span', { class: 'text-primary cursor-pointer', onClick: elNotificationClick }, [t('cloudbuild.clickView')])
|
||||
// ]),
|
||||
// duration: 0,
|
||||
// showClose: false
|
||||
// })
|
||||
// }
|
||||
|
||||
const elNotificationClick = () => {
|
||||
showDialog.value = true
|
||||
@ -172,7 +270,7 @@ const elNotificationClick = () => {
|
||||
const open = async () => {
|
||||
loading.value = true
|
||||
active.value = 'build'
|
||||
|
||||
closeType.value = 'normal'
|
||||
if (cloudBuildTask.value) {
|
||||
showDialog.value = true
|
||||
loading.value = false
|
||||
@ -194,6 +292,7 @@ const open = async () => {
|
||||
} else {
|
||||
loading.value = false
|
||||
cloudBuildCheck.value = data
|
||||
showDialog.value = true
|
||||
}
|
||||
}).catch(() => {
|
||||
showDialog.value = false
|
||||
@ -216,9 +315,9 @@ const onExecCmd = (key, command, success, failed, name) => {
|
||||
}
|
||||
|
||||
const makeIterator = (array: string[]) => {
|
||||
var nextIndex = 0
|
||||
let nextIndex = 0
|
||||
return {
|
||||
next() {
|
||||
next () {
|
||||
if ((nextIndex + 1) == array.length) {
|
||||
nextIndex = 0
|
||||
}
|
||||
@ -228,7 +327,7 @@ const makeIterator = (array: string[]) => {
|
||||
}
|
||||
|
||||
const dialogClose = (done: () => {}) => {
|
||||
if (active.value == 'build' && cloudBuildTask.value) {
|
||||
if (active.value == 'build' && cloudBuildTask.value && closeType.value == 'normal') {
|
||||
ElMessageBox.confirm(
|
||||
t('cloudbuild.showDialogCloseTips'),
|
||||
t('warning'),
|
||||
@ -239,19 +338,57 @@ const dialogClose = (done: () => {}) => {
|
||||
}
|
||||
).then(() => {
|
||||
terminalRef.value.execute('clear')
|
||||
localStorage.removeItem('cloud_build_start_time')
|
||||
localStorage.removeItem('cloud_build_task')
|
||||
done()
|
||||
buildTimer && clearInterval(buildTimer)
|
||||
buildTimer = null
|
||||
buildStartTime.value = null
|
||||
buildDuration.value = 0
|
||||
}).catch(() => { })
|
||||
} else {
|
||||
done()
|
||||
}
|
||||
}
|
||||
|
||||
const dialogCancel = () => {
|
||||
if (active.value == 'build' && cloudBuildTask.value && closeType.value == 'normal') {
|
||||
ElMessageBox.confirm(
|
||||
t('cloudbuild.showDialogCloseTips'),
|
||||
t('warning'),
|
||||
{
|
||||
confirmButtonText: t('confirm'),
|
||||
cancelButtonText: t('cancel'),
|
||||
type: 'warning'
|
||||
}
|
||||
).then(() => {
|
||||
terminalRef.value.execute('clear')
|
||||
localStorage.removeItem('cloud_build_start_time')
|
||||
localStorage.removeItem('cloud_build_task')
|
||||
buildTimer && clearInterval(buildTimer)
|
||||
buildTimer = null
|
||||
buildStartTime.value = null
|
||||
buildDuration.value = 0
|
||||
showDialog.value = false
|
||||
}).catch(() => { })
|
||||
} else {
|
||||
showDialog.value = false
|
||||
}
|
||||
}
|
||||
|
||||
const cloudBuildCheckDirFn = () => {
|
||||
window.open('https://doc.niucloud.com/v6.html?keywords=/chang-jian-wen-ti-chu-li/er-shi-wu-3001-sheng-7ea7-yun-bian-yi-mu-lu-du-xie-quan-xian-zhuang-tai-bu-tong-guo-ru-he-chu-li')
|
||||
}
|
||||
|
||||
watch(() => showDialog.value, () => {
|
||||
if (!showDialog.value) {
|
||||
cloudBuildTask.value = null
|
||||
active.value = 'build'
|
||||
cloudBuildLog = []
|
||||
flashInterval && clearInterval(flashInterval)
|
||||
buildTimer && clearInterval(buildTimer)
|
||||
buildStartTime.value = null
|
||||
buildDuration.value = 0
|
||||
clearCloudBuildTask()
|
||||
}
|
||||
})
|
||||
@ -259,7 +396,9 @@ watch(() => showDialog.value, () => {
|
||||
defineExpose({
|
||||
open,
|
||||
cloudBuildTask,
|
||||
loading
|
||||
loading,
|
||||
elNotificationClick,
|
||||
getCloudBuildTaskFn
|
||||
})
|
||||
</script>
|
||||
|
||||
@ -270,4 +409,30 @@ defineExpose({
|
||||
:deep(.terminal .t-log-box span) {
|
||||
white-space: pre-wrap;
|
||||
}
|
||||
:deep(.el-result__icon) {
|
||||
color: unset !important; // 清除默认颜色
|
||||
}
|
||||
:deep(.el-dialog__title){
|
||||
font-size: 20px;
|
||||
font-weight: bold;
|
||||
}
|
||||
:deep(.el-result__title p){
|
||||
font-size: 25px;
|
||||
color: #1D1F3A;
|
||||
font-weight: 500;
|
||||
}
|
||||
:deep(.el-result__subtitle p){
|
||||
font-size: 15px;
|
||||
color: #4F516D;
|
||||
font-weight: 500;
|
||||
word-break: break-all;
|
||||
text-overflow: ellipsis;
|
||||
overflow: hidden;
|
||||
display: -webkit-box;
|
||||
-webkit-line-clamp: 5;
|
||||
-webkit-box-orient: vertical;
|
||||
}
|
||||
:deep(.el-result){
|
||||
margin-top: -80px !important;
|
||||
}
|
||||
</style>
|
||||
|
||||
245
admin/src/app/components/upgrade-log/index.vue
Normal file
@ -0,0 +1,245 @@
|
||||
<template>
|
||||
<el-dialog v-model="dialogVisible" :title="t('gxx')" width="850" :destroy-on-close="true">
|
||||
<el-card class="box-card !border-none" shadow="never" >
|
||||
<div v-loading="loading">
|
||||
<div class="text-page-title mb-[20px]">历史版本</div>
|
||||
<div class="time-dialog h-[500px]" style="overflow: auto">
|
||||
<el-scrollbar>
|
||||
<el-timeline style="width: 100%" v-if="!loading">
|
||||
<el-timeline-item v-for="(item, index) in frameworkVersionList" :key="index" placement="left" :color="color">
|
||||
<div class="relative">
|
||||
<span class="text-[#333333] text-[14px] absolute">{{ timeSplit(item.release_time)[0] }}</span>
|
||||
<br />
|
||||
<span class="text-[#999999] text-[14px] w-[78px] block mt-[10px] absolute text-right">{{ timeSplit(item.release_time)[1] }}</span>
|
||||
</div>
|
||||
<el-collapse v-model="activeName" accordion>
|
||||
<el-collapse-item :name="index">
|
||||
<template #title>
|
||||
<span class="text-[#333] text-[14px]"> v{{ item.version_no }} </span>
|
||||
</template>
|
||||
<div class="px-[20px] py-[20px] bg-overlay timeline-log-wrap whitespace-pre-wrap rounded-[4px]" style="background: rgba(25, 103, 249, 0.03);" v-if="item['upgrade_log']">
|
||||
<div v-html="item['upgrade_log']"></div>
|
||||
</div>
|
||||
</el-collapse-item>
|
||||
</el-collapse>
|
||||
</el-timeline-item>
|
||||
</el-timeline>
|
||||
</el-scrollbar>
|
||||
</div>
|
||||
</div>
|
||||
</el-card>
|
||||
</el-dialog>
|
||||
</template>
|
||||
<script lang="ts" setup>
|
||||
import { computed, ref, defineProps, nextTick } from "vue"
|
||||
import { t } from "@/lang"
|
||||
import { getAppVersionList, getFrameworkVersionList } from "@/app/api/module"
|
||||
|
||||
const props = defineProps({
|
||||
upgradeKey: {
|
||||
type: String,
|
||||
required: true
|
||||
}
|
||||
})
|
||||
|
||||
const frameworkVersionList = ref([])
|
||||
|
||||
const newVersion: any = computed(() => {
|
||||
return frameworkVersionList.value.length ? frameworkVersionList.value[0] : null
|
||||
})
|
||||
|
||||
const getAppVersionListFn = () => {
|
||||
getAppVersionList({ app_key: props.upgradeKey }).then(({ data }) => {
|
||||
loading.value = false
|
||||
data.forEach((item: any, index) => {
|
||||
if (index == 0) {
|
||||
item.important = 1
|
||||
} else {
|
||||
item.important = 0
|
||||
}
|
||||
})
|
||||
|
||||
frameworkVersionList.value = data
|
||||
if(frameworkVersionList.value.length == 0){
|
||||
ElMessage.warning('暂无版本更新信息')
|
||||
return
|
||||
}else{
|
||||
dialogVisible.value = true
|
||||
}
|
||||
})
|
||||
}
|
||||
const getFrameworkVersionListFn = () => {
|
||||
getFrameworkVersionList().then(({ data }) => {
|
||||
loading.value = false
|
||||
data.forEach((item: any, index) => {
|
||||
if (index == 0) {
|
||||
item.important = 1
|
||||
} else {
|
||||
item.important = 0
|
||||
}
|
||||
})
|
||||
frameworkVersionList.value = data
|
||||
dialogVisible.value = true
|
||||
})
|
||||
}
|
||||
|
||||
const activeName = ref(0)
|
||||
|
||||
// 提交信息
|
||||
const loading = ref(true)
|
||||
const dialogVisible = ref(false)
|
||||
const open = async () => {
|
||||
nextTick(() => {
|
||||
activeName.value = 0 // 重置
|
||||
|
||||
if (props.upgradeKey) {
|
||||
getAppVersionListFn()
|
||||
} else {
|
||||
getFrameworkVersionListFn()
|
||||
}
|
||||
})
|
||||
|
||||
}
|
||||
const timeSplit = (str: string) => {
|
||||
const [date, time] = str.split(" ")
|
||||
const [hours, minutes] = time.split(":")
|
||||
return [date, `${ hours }:${ minutes }`]
|
||||
}
|
||||
defineExpose({
|
||||
open
|
||||
})
|
||||
</script>
|
||||
<style lang="scss" scoped></style>
|
||||
<style scoped>
|
||||
.el-timeline-item {
|
||||
min-height: 75px;
|
||||
}
|
||||
|
||||
.el-timeline-item >>> .el-timeline-item__node--normal {
|
||||
left: 117px;
|
||||
width: 18px;
|
||||
height: 18px;
|
||||
|
||||
background: rgba(25, 103, 249, 0.12) !important;
|
||||
border-radius: 50%;
|
||||
/* 创建圆形 */
|
||||
position: relative;
|
||||
/* 用于定位伪元素 */
|
||||
}
|
||||
|
||||
.el-timeline-item >>> .el-timeline-item__node--normal::before {
|
||||
content: "";
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
left: 50%;
|
||||
width: 8px;
|
||||
/* 中心圆直径 */
|
||||
height: 8px;
|
||||
background-color: var(--el-color-primary);
|
||||
/* 中心圆颜色 */
|
||||
border-radius: 50%;
|
||||
/* 中心圆为圆形 */
|
||||
transform: translate(-50%, -50%);
|
||||
/* 居中显示 */
|
||||
}
|
||||
|
||||
.el-timeline-item >>> .el-timeline-item__tail {
|
||||
left: 125px;
|
||||
border-left-color: #dddddd;
|
||||
border-left-style: dashed;
|
||||
margin: 24px 0 12px;
|
||||
height: calc(100% - 24px - 12px);
|
||||
}
|
||||
|
||||
.time-dialog >>> .el-dialog__header {
|
||||
padding: 10px 20px;
|
||||
height: 25px;
|
||||
line-height: 25px;
|
||||
text-align: left;
|
||||
background: #fff;
|
||||
border-bottom: solid 1px #e4e7ed;
|
||||
}
|
||||
|
||||
.time-dialog >>> .el-card__body {
|
||||
padding: 8px;
|
||||
}
|
||||
|
||||
.time-dialog >>> .el-card.is-always-shadow {
|
||||
box-shadow: none;
|
||||
}
|
||||
|
||||
.time-dialog >>> .el-dialog__headerbtn .el-dialog__close {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.time-dialog >>> .el-dialog__headerbtn:hover .el-dialog__close {
|
||||
color: #666;
|
||||
}
|
||||
|
||||
.time-dialog >>> .el-dialog__headerbtn {
|
||||
top: 14px;
|
||||
}
|
||||
|
||||
.time-dialog >>> .el-collapse {
|
||||
margin-left: 119px;
|
||||
border: none;
|
||||
margin-top: -22px;
|
||||
}
|
||||
|
||||
.time-dialog >>> .el-collapse-item__header {
|
||||
border: none;
|
||||
line-height: 25px;
|
||||
height: 25px;
|
||||
position: relative;
|
||||
z-index: 999;
|
||||
}
|
||||
|
||||
.time-dialog >>> .el-collapse-item__wrap {
|
||||
border: none;
|
||||
}
|
||||
|
||||
.time-dialog >>> .el-collapse-item__content {
|
||||
margin-top: 15px;
|
||||
padding-bottom: 0 !important;
|
||||
}
|
||||
|
||||
.time-dialog >>> .el-timeline-item__node--01 {
|
||||
width: 18px !important;
|
||||
height: 18px !important;
|
||||
left: 117px !important;
|
||||
}
|
||||
</style>
|
||||
<style>
|
||||
.time-dialog .el-dialog {
|
||||
margin: 0 auto !important;
|
||||
max-height: 90%;
|
||||
overflow: hidden;
|
||||
top: 5%;
|
||||
}
|
||||
|
||||
.time-dialog .el-dialog {
|
||||
margin: 0 auto !important;
|
||||
height: 65%;
|
||||
overflow: hidden;
|
||||
top: 10%;
|
||||
}
|
||||
|
||||
.time-dialog .el-dialog__body {
|
||||
position: absolute;
|
||||
left: 0;
|
||||
top: 46px;
|
||||
bottom: 0;
|
||||
right: 0;
|
||||
z-index: 1;
|
||||
overflow: hidden;
|
||||
overflow-y: auto;
|
||||
padding: 10px 20px 0 0;
|
||||
}
|
||||
|
||||
.time-dialog .el-timeline-item__wrapper {
|
||||
top: -20px !important;
|
||||
}
|
||||
.el-scrollbar__bar{
|
||||
z-index:999;
|
||||
}
|
||||
</style>
|
||||
@ -2,13 +2,13 @@
|
||||
<el-dialog v-model="dialogVisible" :title="t('accountSettings')" width="500">
|
||||
<el-form :model="saveInfo" label-width="90px" ref="formRef" class="page-form">
|
||||
<el-form-item :label="t('headImg')">
|
||||
<upload-image v-model="saveInfo.head_img" :limit="1" :type="'avatar'" imageFit="cover" />
|
||||
<upload-image v-model="saveInfo.head_img" :limit="1" imageFit="cover" />
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('userName')">
|
||||
<span>{{saveInfo.username}}</span>
|
||||
</el-form-item>
|
||||
<el-form-item :label="t('realName')">
|
||||
<el-input v-model="saveInfo.real_name" :placeholder="t('realNamePlaceholder')" clearable class="input-width" />
|
||||
<el-input v-model.trim="saveInfo.real_name" :placeholder="t('realNamePlaceholder')" clearable class="input-width" />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
@ -25,11 +25,9 @@ import { t } from '@/lang'
|
||||
import type { FormInstance } from 'element-plus'
|
||||
import { deepClone } from '@/utils/common'
|
||||
import { getUserInfo, setUserInfo } from '@/app/api/personal'
|
||||
import { useRouter } from 'vue-router'
|
||||
import useUserStore from '@/stores/modules/user'
|
||||
|
||||
const userStore = useUserStore()
|
||||
const router = useRouter()
|
||||
// 提交信息
|
||||
const saveInfo: any = reactive({})
|
||||
const formRef = ref<FormInstance>()
|
||||
|
||||
@ -1,19 +1,19 @@
|
||||
{
|
||||
"companyName": "授权主体",
|
||||
"siteAddress": "授权域名",
|
||||
"contactName": "授权联系人",
|
||||
"authCode": "授权码",
|
||||
"authSecret": "授权秘钥",
|
||||
"createTime": "授权时间",
|
||||
"expireTime": "到期时间",
|
||||
"authApp": "授权应用",
|
||||
"authAppKey": "应用标识",
|
||||
"siteAddressTips": "授权域名不匹配",
|
||||
"authCodePlaceholder": "请输入授权码",
|
||||
"authSecretPlaceholder": "请输入授权秘钥",
|
||||
"updateCode": "重新绑定",
|
||||
"notHaveAuth": "还没有授权?去购买",
|
||||
"authInfoTips": "授权码和授权秘钥可在Niucloud官网我的授权 授权详情中查看",
|
||||
"cloudBuildTips": "是否要进行云编译该操作可能会影响到正在访问的客户是否要继续操作?",
|
||||
"versionTips":"已经升级到最新版本"
|
||||
"companyName": "授权主体",
|
||||
"siteAddress": "授权域名",
|
||||
"contactName": "授权联系人",
|
||||
"authCode": "授权码",
|
||||
"authSecret": "授权秘钥",
|
||||
"createTime": "授权时间",
|
||||
"expireTime": "到期时间",
|
||||
"authApp": "授权应用",
|
||||
"authAppKey": "应用标识",
|
||||
"siteAddressTips": "授权域名不匹配",
|
||||
"authCodePlaceholder": "请输入授权码",
|
||||
"authSecretPlaceholder": "请输入授权秘钥",
|
||||
"updateCode": "重新绑定",
|
||||
"notHaveAuth": "还没有授权?去购买",
|
||||
"authInfoTips": "授权码和授权秘钥可在Niucloud官网我的授权 授权详情中查看",
|
||||
"cloudBuildTips": "是否要进行云编译该操作可能会影响到正在访问的客户是否要继续操作?",
|
||||
"versionTips": "已经升级到最新版本"
|
||||
}
|
||||
|
||||
18
admin/src/app/lang/zh-cn/app.upgrade.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"companyName": "授权主体",
|
||||
"siteAddress": "授权域名",
|
||||
"contactName": "授权联系人",
|
||||
"authCode": "授权码",
|
||||
"authSecret": "授权秘钥",
|
||||
"createTime": "授权时间",
|
||||
"expireTime": "到期时间",
|
||||
"authApp": "授权应用",
|
||||
"authAppKey": "应用标识",
|
||||
"siteAddressTips": "授权域名不匹配",
|
||||
"authCodePlaceholder": "请输入授权码",
|
||||
"authSecretPlaceholder": "请输入授权秘钥",
|
||||
"updateCode": "重新绑定",
|
||||
"notHaveAuth": "还没有授权?去购买",
|
||||
"authInfoTips": "授权码和授权秘钥可在Niucloud官网我的授权 授权详情中查看",
|
||||
"versionTips": "已经升级到最新版本"
|
||||
}
|
||||
@ -1,6 +1,7 @@
|
||||
{
|
||||
"ip":"登录IP",
|
||||
"username":"管理员姓名",
|
||||
"operationLog": "操作日志",
|
||||
"url":"链接",
|
||||
"detail": "详情",
|
||||
"params":"参数",
|
||||
@ -14,6 +15,5 @@
|
||||
"typePlaceholder":"请输入请求方式",
|
||||
"createTimePlaceholder":"请输入操作时间",
|
||||
"addSysUserLog":"添加管理员操作记录表",
|
||||
"updateSysUserLog":"编辑管理员操作记录表",
|
||||
"sys_user_logDeleteTips":"确定要删除该管理员操作记录表吗?"
|
||||
"updateSysUserLog":"编辑管理员操作记录表"
|
||||
}
|
||||
@ -29,5 +29,14 @@
|
||||
"managerPlaceholder": "请选择用户",
|
||||
"managerTips": "选择或者新增用户作为管理员",
|
||||
"newAddManager": "新增用户",
|
||||
"userDeleteTips": "是否要删除该管理员?"
|
||||
"userDeleteTips": "是否要删除该管理员?",
|
||||
"addRole": "新增角色",
|
||||
"updateRole": "编辑角色",
|
||||
"roleName": "角色名称",
|
||||
"roleDeleteTips": "确定要删除该角色吗?",
|
||||
"roleNamePlaceholder": "请输入角色名称",
|
||||
"rulesPlaceholder": "请选择权限",
|
||||
"checkStrictly": "父子级不关联",
|
||||
"permission": "权限",
|
||||
"foldText":"展开/折叠"
|
||||
}
|
||||
|
||||
13
admin/src/app/lang/zh-cn/channel.app.access.json
Normal file
@ -0,0 +1,13 @@
|
||||
{
|
||||
"accessFlow": "接入流程",
|
||||
"versionManage": "版本管理",
|
||||
"title": "APP端管理",
|
||||
"appInlet": "App接入流程",
|
||||
"uniappApp": "uni-app应用开通",
|
||||
"appAttestation1": "点击进入Dcloud官网开发者后台,创建或选择应用并维护好应用平台信息",
|
||||
"clickAccess": "点击接入",
|
||||
"appSetting": "App端配置",
|
||||
"settingInfo": "点击配置",
|
||||
"releaseVersion": "发布版本",
|
||||
"toCreate": "去创建"
|
||||
}
|
||||
17
admin/src/app/lang/zh-cn/channel.app.config.json
Normal file
@ -0,0 +1,17 @@
|
||||
{
|
||||
"wechatAppInfo": "微信应用信息",
|
||||
"wechatAppid": "微信移动应用AppID",
|
||||
"wechatAppidTips": "用于app端 微信登录 微信支付 微信分享",
|
||||
"wechatAppsecret": "微信移动应用AppSecret",
|
||||
"appidPlaceholder": "请输入AppID",
|
||||
"appSecretPlaceholder": "请输入AppSecret",
|
||||
"appInfo": "应用信息",
|
||||
"uniAppId": "uniapp应用id",
|
||||
"uniAppIdTips": "uniapp应用id需在Dcloud开发者中心创建",
|
||||
"toCreate": "前往Dcloud官网",
|
||||
"appName": "应用名称",
|
||||
"applicationId": "安卓应用包名",
|
||||
"applicationIdTips": "安卓应用的包名是Android系统中用于唯一标识应用的字符串,采用反向域名格式(如com.example.myapp)。每个应用在系统中拥有唯一的包名,用于区分不同应用",
|
||||
"androidAppKey": "安卓离线打包Key",
|
||||
"androidAppKeyTips": "安卓离线打包Key在Dcloud开发者中心 - 应用管理 - 点击应用 - 各平台信息 创建以及查看离线AppKey"
|
||||
}
|
||||