mirror of
https://gitee.com/yudaocode/yudao-ui-admin-vben.git
synced 2025-12-30 10:32:25 +00:00
Compare commits
25 Commits
v2.2.0
...
master-vbe
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
1193ccd0a8 | ||
|
|
c7fe2e1ce4 | ||
|
|
8c39e503f7 | ||
|
|
c4b3a593fb | ||
|
|
5e00382e0a | ||
|
|
e06e380957 | ||
|
|
3e7a104aa8 | ||
|
|
c3b115673d | ||
|
|
c97a2a9135 | ||
|
|
62f27cfb3a | ||
|
|
8a7b1b1a85 | ||
|
|
bd0a80b64a | ||
|
|
2e97171437 | ||
|
|
06fcac16fa | ||
|
|
43b933341b | ||
|
|
89c0a036b4 | ||
|
|
fb33d662f6 | ||
|
|
60183b6110 | ||
|
|
b716516b85 | ||
|
|
ee0d67182c | ||
|
|
ac237eebd0 | ||
|
|
4044a080fc | ||
|
|
26df81a16f | ||
|
|
f496637790 | ||
|
|
762faab90c |
@@ -7,7 +7,7 @@ VITE_PUBLIC_PATH = /
|
||||
# 本地开发代理,可以解决跨域及多地址代理
|
||||
# 如果接口地址匹配到,则会转发到http://localhost:3000,防止本地出现跨域问题
|
||||
# 可以有多个,注意多个不能换行,否则代理将会失效
|
||||
VITE_PROXY = [["/dev-api","http://localhost:48080/admin-api"],["/upload","http://localhost:48080/admin-api/infra/file/upload"]]
|
||||
VITE_PROXY = [["/dev-api","http://localhost:48080/admin-api"]]
|
||||
# VITE_PROXY=[["/api","http://vben.xingyuv.com/test"]]
|
||||
|
||||
# 是否删除Console.log
|
||||
@@ -18,9 +18,6 @@ VITE_GLOB_BASE_URL = "http://localhost:48080"
|
||||
# 接口地址,如果没有跨域问题,直接在这里配置即可
|
||||
VITE_GLOB_API_URL = /dev-api
|
||||
|
||||
# 文件上传接口 可选
|
||||
VITE_GLOB_UPLOAD_URL = /upload
|
||||
|
||||
# 接口地址前缀,有些系统所有接口地址都有前缀,可以在这里统一加,方便切换
|
||||
VITE_GLOB_API_URL_PREFIX =
|
||||
|
||||
|
||||
@@ -7,7 +7,7 @@ VITE_PUBLIC_PATH = /
|
||||
# 本地开发代理,可以解决跨域及多地址代理
|
||||
# 如果接口地址匹配到,则会转发到http://localhost:3000,防止本地出现跨域问题
|
||||
# 可以有多个,注意多个不能换行,否则代理将会失效
|
||||
VITE_PROXY = [["/dev-api","http://api-dashboard.yudao.iocoder.cn/admin-api"],["/upload","http://api-dashboard.yudao.iocoder.cn/admin-api/infra/file/upload"]]
|
||||
VITE_PROXY = [["/dev-api","http://api-dashboard.yudao.iocoder.cn/admin-api"]]
|
||||
# VITE_PROXY=[["/api","http://vben.xingyuv.com/test"]]
|
||||
|
||||
# 是否删除Console.log
|
||||
@@ -18,9 +18,6 @@ VITE_GLOB_BASE_URL = "http://api-dashboard.yudao.iocoder.cn"
|
||||
# 接口地址,如果没有跨域问题,直接在这里配置即可
|
||||
VITE_GLOB_API_URL = /dev-api
|
||||
|
||||
# 文件上传接口 可选
|
||||
VITE_GLOB_UPLOAD_URL = /upload
|
||||
|
||||
# 接口地址前缀,有些系统所有接口地址都有前缀,可以在这里统一加,方便切换
|
||||
VITE_GLOB_API_URL_PREFIX =
|
||||
|
||||
|
||||
@@ -17,9 +17,6 @@ VITE_GLOB_BASE_URL = "http://localhost:48080"
|
||||
# 接口地址 可以由nginx做转发或者直接写实际地址
|
||||
VITE_GLOB_API_URL = http://localhost:48080/admin-api
|
||||
|
||||
# 文件上传地址 可以由nginx做转发或者直接写实际地址
|
||||
VITE_GLOB_UPLOAD_URL = /upload
|
||||
|
||||
# 接口地址前缀,有些系统所有接口地址都有前缀,可以在这里统一加,方便切换
|
||||
VITE_GLOB_API_URL_PREFIX =
|
||||
|
||||
|
||||
@@ -17,9 +17,6 @@ VITE_GLOB_BASE_URL = "http://127.0.0.1:48080"
|
||||
# 接口地址,如果没有跨域问题,直接在这里配置即可
|
||||
VITE_GLOB_API_URL = http://127.0.0.1:48080/admin-api
|
||||
|
||||
# 文件上传地址 可以由nginx做转发或者直接写实际地址
|
||||
VITE_GLOB_UPLOAD_URL = /upload
|
||||
|
||||
# 接口地址前缀,有些系统所有接口地址都有前缀,可以在这里统一加,方便切换
|
||||
VITE_GLOB_API_URL_PREFIX =
|
||||
|
||||
|
||||
@@ -17,9 +17,6 @@ VITE_GLOB_BASE_URL = "http://localhost:48080"
|
||||
# 接口地址,如果没有跨域问题,直接在这里配置即可
|
||||
VITE_GLOB_API_URL = http://localhost:48080/admin-api
|
||||
|
||||
# 文件上传地址 可以由nginx做转发或者直接写实际地址
|
||||
VITE_GLOB_UPLOAD_URL = /upload
|
||||
|
||||
# 接口地址前缀,有些系统所有接口地址都有前缀,可以在这里统一加,方便切换
|
||||
VITE_GLOB_API_URL_PREFIX =
|
||||
|
||||
|
||||
Binary file not shown.
|
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 25 KiB |
BIN
.image/工作流设计器-bpmn.jpg
Normal file
BIN
.image/工作流设计器-bpmn.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 177 KiB |
BIN
.image/工作流设计器-simple.jpg
Normal file
BIN
.image/工作流设计器-simple.jpg
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 126 KiB |
105
README.md
105
README.md
@@ -1,4 +1,4 @@
|
||||
**严肃声明:现在、未来都不会有商业版本,所有代码全部开源!!**
|
||||
**新版本更新中,master仓库不再维护,请关注v5-dev分支进度**
|
||||
|
||||
**「我喜欢写代码,乐此不疲」**
|
||||
**「我喜欢做开源,以此为乐」**
|
||||
@@ -15,9 +15,8 @@
|
||||
- 视频教程:<https://doc.iocoder.cn/video/>
|
||||
- 交流群:<https://doc.iocoder.cn/qun/>
|
||||
|
||||
## 外包项目请联系
|
||||
## 外包项目请联系【非项目需求请勿扫码,非客服,不解答项目问题】
|
||||
|
||||
微信号:xinyu370
|
||||
|
||||

|
||||
|
||||
@@ -51,11 +50,11 @@
|
||||
|
||||
支持 Spring Boot、Spring Cloud 两种架构:
|
||||
|
||||
① Spring Boot 单体架构:<https://github.com/YunaiV/ruoyi-vue-pro>
|
||||
① Spring Boot 单体架构:<https://doc.iocoder.cn>
|
||||
|
||||

|
||||
|
||||
② Spring Cloud 微服务架构:<https://github.com/YunaiV/yudao-cloud>
|
||||
② Spring Cloud 微服务架构:<https://cloud.iocoder.cn>
|
||||
|
||||

|
||||
|
||||
@@ -97,49 +96,87 @@
|
||||
|
||||
### 工作流程
|
||||
|
||||
| | 功能 | 描述 |
|
||||
|-----|-------|----------------------------------------|
|
||||
| 🚀 | 流程模型 | 配置工作流的流程模型,支持文件导入与在线设计流程图,提供 7 种任务分配规则 |
|
||||
| 🚀 | 流程表单 | 拖动表单元素生成相应的工作流表单,覆盖 Element UI 所有的表单组件 |
|
||||
| 🚀 | 用户分组 | 自定义用户分组,可用于工作流的审批分组 |
|
||||
| 🚀 | 我的流程 | 查看我发起的工作流程,支持新建、取消流程等操作,高亮流程图、审批时间线 |
|
||||
| 🚀 | 待办任务 | 查看自己【未】审批的工作任务,支持通过、不通过、转发、委派、退回等操作 |
|
||||
| 🚀 | 已办任务 | 查看自己【已】审批的工作任务,未来会支持回退操作 |
|
||||
| 🚀 | OA 请假 | 作为业务自定义接入工作流的使用示例,只需创建请求对应的工作流程,即可进行审批 |
|
||||
| | 功能 | 描述 |
|
||||
|----|-------|-----------------------------------------|
|
||||
| 🚀 | 流程模型 | 配置工作流的流程模型,支持 BPMN 和仿钉钉/飞书设计器 |
|
||||
| 🚀 | 流程表单 | 拖动表单元素生成相应的工作流表单,覆盖 Element UI 所有的表单组件 |
|
||||
| 🚀 | 用户分组 | 自定义用户分组,可用于工作流的审批分组 |
|
||||
| 🚀 | 我的流程 | 查看我发起的工作流程,支持新建、取消流程等操作,高亮流程图、审批时间线 |
|
||||
| 🚀 | 待办任务 | 查看自己【未】审批的工作任务,支持通过、不通过、转派、委派、退回、加减签等操作 |
|
||||
| 🚀 | 已办任务 | 查看自己【已】审批的工作任务,支持流程预测,展示未来审批人信息 |
|
||||
| 🚀 | OA 请假 | 作为业务自定义接入工作流的使用示例,只需创建请求对应的工作流程,即可进行审批 |
|
||||
|
||||

|
||||
|
||||
基于 Flowable 构建,可支持信创(国产)数据库,满足中国特色流程操作:
|
||||
|
||||
| BPMN 设计器 | 钉钉/飞书设计器 |
|
||||
|------------------------------|--------------------------------|
|
||||
|  |  |
|
||||
|
||||
> 历经头部企业生产验证,工作流引擎须标配仿钉钉/飞书 + BPMN 双设计器!!!
|
||||
>
|
||||
> 前者支持轻量配置简单流程,后者实现复杂场景深度编排
|
||||
|
||||
| 功能列表 | 功能描述 | 是否完成 |
|
||||
|------------|-------------------------------------------------------------------------------------|------|
|
||||
| SIMPLE 设计器 | 仿钉钉/飞书设计器,支持拖拽搭建表单流程,10 分钟快速完成审批流程配置 | ✅ |
|
||||
| BPMN 设计器 | 基于 BPMN 标准开发,适配复杂业务场景,满足多层级审批及流程自动化需求 | ✅ |
|
||||
| 会签 | 同一个审批节点设置多个人(如 A、B、C 三人,三人会同时收到待办任务),需全部同意之后,审批才可到下一审批节点 | ✅ |
|
||||
| 或签 | 同一个审批节点设置多个人,任意一个人处理后,就能进入下一个节点 | ✅ |
|
||||
| 依次审批 | (顺序会签)同一个审批节点设置多个人(如 A、B、C 三人),三人按顺序依次收到待办,即 A 先审批,A 提交后 B 才能审批,需全部同意之后,审批才可到下一审批节点 | ✅ |
|
||||
| 抄送 | 将审批结果通知给抄送人,同一个审批默认排重,不重复抄送给同一人 | ✅ |
|
||||
| 驳回 | (退回)将审批重置发送给某节点,重新审批。可驳回至发起人、上一节点、任意节点 | ✅ |
|
||||
| 转办 | A 转给其 B 审批,B 审批后,进入下一节点 | ✅ |
|
||||
| 委派 | A 转给其 B 审批,B 审批后,转给 A,A 继续审批后进入下一节点 | ✅ |
|
||||
| 加签 | 允许当前审批人根据需要,自行增加当前节点的审批人,支持向前、向后加签 | ✅ |
|
||||
| 减签 | (取消加签)在当前审批人操作之前,减少审批人 | ✅ |
|
||||
| 撤销 | (取消流程)流程发起人,可以对流程进行撤销处理 | ✅ |
|
||||
| 终止 | 系统管理员,在任意节点终止流程实例 | ✅ |
|
||||
| 表单权限 | 支持拖拉拽配置表单,每个审批节点可配置只读、编辑、隐藏权限 | ✅ |
|
||||
| 超时审批 | 配置超时审批时间,超时后自动触发审批通过、不通过、驳回等操作 | ✅ |
|
||||
| 自动提醒 | 配置提醒时间,到达时间后自动触发短信、邮箱、站内信等通知提醒,支持自定义重复提醒频次 | ✅ |
|
||||
| 父子流程 | 主流程设置子流程节点,子流程节点会自动触发子流程。子流程结束后,主流程才会执行(继续往下下执行),支持同步子流程、异步子流程 | ✅ |
|
||||
| 条件分支 | (排它分支)用于在流程中实现决策,即根据条件选择一个分支执行 | ✅ |
|
||||
| 并行分支 | 允许将流程分成多条分支,不进行条件判断,所有分支都会执行 | ✅ |
|
||||
| 包容分支 | (条件分支 + 并行分支的结合体)允许基于条件选择多条分支执行,但如果没有任何一个分支满足条件,则可以选择默认分支 | ✅ |
|
||||
| 路由分支 | 根据条件选择一个分支执行(重定向到指定配置节点),也可以选择默认分支执行(继续往下执行) | ✅ |
|
||||
| 触发节点 | 执行到该节点,触发 HTTP 请求、HTTP 回调、更新数据、删除数据等 | ✅ |
|
||||
| 延迟节点 | 执行到该节点,审批等待一段时间再执行,支持固定时长、固定日期等 | ✅ |
|
||||
| 拓展设置 | 流程前置/后置通知,节点(任务)前置、后置通知,流程报表,自动审批去重,自定流程编号、标题、摘要,流程报表等 | ✅ |
|
||||
|
||||
### 支付系统
|
||||
|
||||
| | 功能 | 描述 |
|
||||
|-----|------|---------------------------|
|
||||
| 🚀 | 商户信息 | 管理商户信息,支持 Saas 场景下的多商户功能 |
|
||||
| 🚀 | 应用信息 | 配置商户的应用信息,对接支付宝、微信等多个支付渠道 |
|
||||
| 🚀 | 支付订单 | 查看用户发起的支付宝、微信等的【支付】订单 |
|
||||
| 🚀 | 退款订单 | 查看用户发起的支付宝、微信等的【退款】订单 |
|
||||
| 🚀 | 回调通知 | 查看支付回调业务的【支付】【退款】的通知结果 |
|
||||
| 🚀 | 接入示例 | 提供接入支付系统的【支付】【退款】的功能实战 |
|
||||
|
||||
### 基础设施
|
||||
|
||||
| | 功能 | 描述 |
|
||||
|----|----------|----------------------------------------------|
|
||||
| 🚀 | 代码生成 | 前后端代码的生成(Java、Vue、SQL、单元测试),支持 CRUD 下载 |
|
||||
| 🚀 | 系统接口 | 基于 Swagger 自动生成相关的 RESTful API 接口文档 |
|
||||
| 🚀 | 数据库文档 | 基于 Screw 自动生成数据库文档,支持导出 Word、HTML、MD 格式 |
|
||||
| | 表单构建 | 拖动表单元素生成相应的 HTML 代码,支持导出 JSON、Vue 文件 |
|
||||
| 🚀 | 配置管理 | 对系统动态配置常用参数,支持 SpringBoot 加载 |
|
||||
| ⭐️ | 定时任务 | 在线(添加、修改、删除)任务调度包含执行结果日志 |
|
||||
| 🚀 | 文件服务 | 支持将文件存储到 S3(MinIO、阿里云、腾讯云、七牛云)、本地、FTP、数据库等 |
|
||||
| 🚀 | API 日志 | 包括 RESTful API 访问日志、异常日志两部分,方便排查 API 相关的问题 |
|
||||
| | MySQL 监控 | 监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈 |
|
||||
| | Redis 监控 | 监控 Redis 数据库的使用情况,使用的 Redis Key 管理 |
|
||||
| 🚀 | 消息队列 | 基于 Redis 实现消息队列,Stream 提供集群消费,Pub/Sub 提供广播消费 |
|
||||
| 🚀 | Java 监控 | 基于 Spring Boot Admin 实现 Java 应用的监控 |
|
||||
| 🚀 | 链路追踪 | 接入 SkyWalking 组件,实现链路追踪 |
|
||||
| 🚀 | 日志中心 | 接入 SkyWalking 组件,实现日志中心 |
|
||||
| 🚀 | 服务保障 | 基于 Redis 实现分布式锁、幂等、限流功能,满足高并发场景 |
|
||||
| 🚀 | 日志服务 | 轻量级日志中心,查看远程服务器的日志 |
|
||||
| 🚀 | 单元测试 | 基于 JUnit + Mockito 实现单元测试,保证功能的正确性、代码的质量等 |
|
||||
| | 功能 | 描述 |
|
||||
|-----|-----------|----------------------------------------------|
|
||||
| 🚀 | 代码生成 | 前后端代码的生成(Java、Vue、SQL、单元测试),支持 CRUD 下载 |
|
||||
| 🚀 | 系统接口 | 基于 Swagger 自动生成相关的 RESTful API 接口文档 |
|
||||
| 🚀 | 数据库文档 | 基于 Screw 自动生成数据库文档,支持导出 Word、HTML、MD 格式 |
|
||||
| | 表单构建 | 拖动表单元素生成相应的 HTML 代码,支持导出 JSON、Vue 文件 |
|
||||
| 🚀 | 配置管理 | 对系统动态配置常用参数,支持 SpringBoot 加载 |
|
||||
| ⭐️ | 定时任务 | 在线(添加、修改、删除)任务调度包含执行结果日志 |
|
||||
| 🚀 | 文件服务 | 支持将文件存储到 S3(MinIO、阿里云、腾讯云、七牛云)、本地、FTP、数据库等 |
|
||||
| 🚀 | WebSocket | 提供 WebSocket 接入示例,支持一对一、一对多发送方式 |
|
||||
| 🚀 | API 日志 | 包括 RESTful API 访问日志、异常日志两部分,方便排查 API 相关的问题 |
|
||||
| | MySQL 监控 | 监视当前系统数据库连接池状态,可进行分析SQL找出系统性能瓶颈 |
|
||||
| | Redis 监控 | 监控 Redis 数据库的使用情况,使用的 Redis Key 管理 |
|
||||
| 🚀 | 消息队列 | 基于 Redis 实现消息队列,Stream 提供集群消费,Pub/Sub 提供广播消费 |
|
||||
| 🚀 | Java 监控 | 基于 Spring Boot Admin 实现 Java 应用的监控 |
|
||||
| 🚀 | 链路追踪 | 接入 SkyWalking 组件,实现链路追踪 |
|
||||
| 🚀 | 日志中心 | 接入 SkyWalking 组件,实现日志中心 |
|
||||
| 🚀 | 服务保障 | 基于 Redis 实现分布式锁、幂等、限流功能,满足高并发场景 |
|
||||
| 🚀 | 日志服务 | 轻量级日志中心,查看远程服务器的日志 |
|
||||
| 🚀 | 单元测试 | 基于 JUnit + Mockito 实现单元测试,保证功能的正确性、代码的质量等 |
|
||||
|
||||

|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
{
|
||||
"name": "yudao-ui-admin-vben",
|
||||
"version": "2.1.0-snapshot",
|
||||
"version": "2.4.2-snapshot",
|
||||
"author": {
|
||||
"name": "xingyuv",
|
||||
"email": "xingyu4j@vip.qq.com",
|
||||
|
||||
@@ -206,7 +206,7 @@ function end() {
|
||||
endMovetime.value = +new Date()
|
||||
// 判断是否重合
|
||||
if (status.value && isEnd.value === false) {
|
||||
let moveLeftDistance = Number.parseInt((moveBlockLeft.value || '').replace('px', ''))
|
||||
let moveLeftDistance = Number.parseInt((moveBlockLeft.value || 0))
|
||||
moveLeftDistance = (moveLeftDistance * 310) / Number.parseInt(setSize.imgWidth)
|
||||
const data = {
|
||||
captchaType: captchaType.value,
|
||||
|
||||
@@ -9,7 +9,6 @@ export function useGlobSetting(): Readonly<GlobConfig> {
|
||||
VITE_GLOB_API_URL,
|
||||
VITE_GLOB_APP_SHORT_NAME,
|
||||
VITE_GLOB_API_URL_PREFIX,
|
||||
VITE_GLOB_UPLOAD_URL,
|
||||
VITE_GLOB_APP_TENANT_ENABLE,
|
||||
VITE_GLOB_APP_CAPTCHA_ENABLE,
|
||||
} = getAppEnvConfig()
|
||||
@@ -26,7 +25,7 @@ export function useGlobSetting(): Readonly<GlobConfig> {
|
||||
apiUrl: VITE_GLOB_API_URL,
|
||||
shortName: VITE_GLOB_APP_SHORT_NAME,
|
||||
urlPrefix: VITE_GLOB_API_URL_PREFIX,
|
||||
uploadUrl: VITE_GLOB_UPLOAD_URL,
|
||||
uploadUrl: VITE_GLOB_API_URL + '/infra/file/upload',
|
||||
tenantEnable: VITE_GLOB_APP_TENANT_ENABLE,
|
||||
captchaEnable: VITE_GLOB_APP_CAPTCHA_ENABLE,
|
||||
}
|
||||
|
||||
2
src/types/config.d.ts
vendored
2
src/types/config.d.ts
vendored
@@ -176,8 +176,6 @@ export interface GlobEnvConfig {
|
||||
VITE_GLOB_API_URL_PREFIX?: string
|
||||
// Project abbreviation
|
||||
VITE_GLOB_APP_SHORT_NAME: string
|
||||
// Upload url
|
||||
VITE_GLOB_UPLOAD_URL?: string
|
||||
// 租户开关
|
||||
VITE_GLOB_APP_TENANT_ENABLE: string
|
||||
// 验证码开关
|
||||
|
||||
@@ -52,7 +52,9 @@ export function getDictOptions(dictType: string, valueType?: 'string' | 'number'
|
||||
? `${dict.value}`
|
||||
: valueType === 'boolean'
|
||||
? `${dict.value}` === 'true'
|
||||
: Number.parseInt(`${dict.value}`),
|
||||
: valueType === 'number' && !isNaN(parseFloat(`${dict.value}`))
|
||||
? Number.parseInt(`${dict.value}`)
|
||||
: dict.value,
|
||||
})
|
||||
})
|
||||
}
|
||||
@@ -62,10 +64,11 @@ export function getDictOptions(dictType: string, valueType?: 'string' | 'number'
|
||||
export function getDictObj(dictType: string, value: any) {
|
||||
const dictOptions: DictDataType[] = getDictDatas(dictType)
|
||||
if (dictOptions) {
|
||||
dictOptions.forEach((dict: DictDataType) => {
|
||||
if (dict.value === value.toString())
|
||||
for (const dict of dictOptions) {
|
||||
if (dict.value === value.toString()) {
|
||||
return dict
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
return null
|
||||
|
||||
@@ -15,7 +15,7 @@ import type { RequestOptions, Result, UploadFileParams } from '@/types/axios'
|
||||
import { ContentTypeEnum, RequestEnum } from '@/enums/httpEnum'
|
||||
import { downloadByData } from '@/utils/file/download'
|
||||
import { useGlobSetting } from '@/hooks/setting'
|
||||
import {getAccessToken, getRefreshToken, getTenantId, setAccessToken} from '@/utils/auth'
|
||||
import { getAccessToken, getRefreshToken, getTenantId, setAccessToken } from '@/utils/auth'
|
||||
|
||||
export * from './axiosTransform'
|
||||
|
||||
@@ -126,13 +126,12 @@ export class VAxios {
|
||||
const config = res.config
|
||||
// 二进制数据则直接返回,例如说 Excel 导出
|
||||
if (
|
||||
res.request.responseType === 'blob' ||
|
||||
res.request.responseType === 'arraybuffer'
|
||||
res.request.responseType === 'blob'
|
||||
|| res.request.responseType === 'arraybuffer'
|
||||
) {
|
||||
// 注意:如果导出的响应为 json,说明可能失败了,不直接返回进行下载
|
||||
if (res.data.type === 'application/json') {
|
||||
if (res.data.type === 'application/json')
|
||||
res.data = await new Response(res.data).json()
|
||||
}
|
||||
}
|
||||
// 处理 accessToken 过期的情况
|
||||
if (res.data.code === 401) {
|
||||
@@ -289,7 +288,6 @@ export class VAxios {
|
||||
this.axiosInstance
|
||||
.request<any, AxiosResponse<Result>>(conf)
|
||||
.then((res: AxiosResponse<Result>) => {
|
||||
debugger
|
||||
if (transformResponseHook && isFunction(transformResponseHook)) {
|
||||
try {
|
||||
const ret = transformResponseHook(res, opt)
|
||||
@@ -298,12 +296,19 @@ export class VAxios {
|
||||
catch (err) {
|
||||
reject(err || new Error('request error!'))
|
||||
}
|
||||
return
|
||||
// 注释 return,解决无法导出的问题。参见 https://t.zsxq.com/79cmo 说明。
|
||||
}
|
||||
resolve(res as unknown as Promise<T>)
|
||||
else {
|
||||
resolve(res as unknown as Promise<T>)
|
||||
}
|
||||
|
||||
// download file
|
||||
if (typeof res != 'undefined')
|
||||
downloadByData(res?.data as unknown as BlobPart, title || 'export')
|
||||
if (res && typeof res !== 'undefined' && res.headers) {
|
||||
const contentType = res.headers['content-type']
|
||||
// ExcelUtils.java的write函数setContentType顺序问题,导致没有contentType
|
||||
if (!contentType || !contentType.startsWith('application/json'))
|
||||
downloadByData(res?.data as unknown as BlobPart, title || 'export')
|
||||
}
|
||||
})
|
||||
.catch((e: Error | AxiosError) => {
|
||||
if (requestCatchHook && isFunction(requestCatchHook)) {
|
||||
@@ -344,7 +349,6 @@ export class VAxios {
|
||||
this.axiosInstance
|
||||
.request<any, AxiosResponse<Result>>(conf)
|
||||
.then((res: AxiosResponse<Result>) => {
|
||||
debugger
|
||||
if (transformResponseHook && isFunction(transformResponseHook)) {
|
||||
try {
|
||||
const ret = transformResponseHook(res, opt)
|
||||
|
||||
@@ -7,6 +7,7 @@ import CloumInfoForm from './components/CloumInfoForm.vue'
|
||||
import FinishForm from './components/FinishForm.vue'
|
||||
import { PageWrapper } from '@/components/Page'
|
||||
import { getCodegenTable, updateCodegenTable } from '@/api/infra/codegen'
|
||||
import { cloneDeep } from 'lodash-es'
|
||||
|
||||
const Step = Steps.Step
|
||||
|
||||
@@ -47,9 +48,15 @@ async function handleStep2Next(step2Values: any) {
|
||||
async function handleSubmit() {
|
||||
basicInfoValue.value.id = query.id as unknown as number
|
||||
const genTable = {
|
||||
table: basicInfoValue.value,
|
||||
columns: columnsInfoValue.value,
|
||||
table: cloneDeep(basicInfoValue.value),
|
||||
columns: cloneDeep(columnsInfoValue.value),
|
||||
}
|
||||
genTable.columns.forEach((column: any) => {
|
||||
delete column.editValueRefs
|
||||
delete column.submitCbs
|
||||
delete column.cancelCbs
|
||||
delete column.validCbs
|
||||
})
|
||||
await updateCodegenTable(genTable)
|
||||
}
|
||||
|
||||
|
||||
@@ -29,11 +29,8 @@ export const columns: BasicColumn[] = [
|
||||
},
|
||||
{
|
||||
title: '部门',
|
||||
dataIndex: 'deptId',
|
||||
dataIndex: 'deptName',
|
||||
width: 120,
|
||||
customRender: ({ record }) => {
|
||||
return useRender.renderTag(record.dept && record.dept.name)
|
||||
},
|
||||
},
|
||||
{
|
||||
title: '手机号码',
|
||||
|
||||
Reference in New Issue
Block a user