Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
Y
yudao-cloud
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
hblj
yudao-cloud
Commits
ec5007c3
提交
ec5007c3
authored
4月 14, 2023
作者:
YunaiV
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
!454 vben 版本代码生成器
上级
f1330bf4
全部展开
隐藏空白字符变更
内嵌
并排
正在显示
14 个修改的文件
包含
339 行增加
和
22 行删除
+339
-22
README.md
README.md
+3
-2
pom.xml
pom.xml
+2
-2
vue3-menu.sql
sql/mysql/optional/vue3-menu.sql
+0
-0
ruoyi-vue-pro.sql
sql/mysql/ruoyi-vue-pro.sql
+0
-0
pom.xml
yudao-dependencies/pom.xml
+13
-13
pom.xml
yudao-framework/yudao-spring-boot-starter-biz-ip/pom.xml
+0
-4
pom.xml
yudao-framework/yudao-spring-boot-starter-biz-pay/pom.xml
+1
-1
CodegenFrontTypeEnum.java
...udao/module/infra/enums/codegen/CodegenFrontTypeEnum.java
+1
-0
CodegenEngine.java
...dao/module/infra/service/codegen/inner/CodegenEngine.java
+13
-0
api.ts.vm
...ra-biz/src/main/resources/codegen/vue3_vben/api/api.ts.vm
+32
-0
data.ts.vm
...biz/src/main/resources/codegen/vue3_vben/views/data.ts.vm
+134
-0
form.vue.vm
...iz/src/main/resources/codegen/vue3_vben/views/form.vue.vm
+49
-0
index.vue.vm
...z/src/main/resources/codegen/vue3_vben/views/index.vue.vm
+90
-0
SmsSendServiceImplTest.java
...dao/module/system/service/sms/SmsSendServiceImplTest.java
+1
-0
没有找到文件。
README.md
浏览文件 @
ec5007c3
...
...
@@ -56,6 +56,7 @@
| 项目 | Star | 简介 |
|----------------------------------------------------------------------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------|
|
[
yudao-ui-admin-vue3
](
https://gitee.com/yudaocode/yudao-ui-admin-vue3
)
|
[

](https://gitee.com/yudaocode/yudao-ui-admin-vue3)
[

](https://github.com/yudaocode/yudao-ui-admin-vue3) | 基于 Vue3 + element-plus 实现的管理后台 |
|
[
yudao-ui-admin-vben
](
https://gitee.com/yudaocode/yudao-ui-admin-vben
)
|
[

](https://gitee.com/yudaocode/yudao-ui-admin-vben)
[

](https://github.com/yudaocode/yudao-ui-admin-vben) | 基于 Vue3 + vben(ant-design-vue) 实现的管理后台 |
|
[
yudao-ui-admin
](
https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-ui-admin
)
|
[

](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-ui-admin)
[

](https://github.com/YunaiV/ruoyi-vue-pro/tree/master/yudao-ui-admin) | 基于 Vue2 + element-ui 实现的管理后台 |
|
[
yudao-ui-admin-uniapp
](
https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-ui-admin-uniapp
)
|
[

](https://gitee.com/zhijiantianya/ruoyi-vue-pro/tree/master/yudao-ui-admin-uniapp)
[

](https://github.com/YunaiV/ruoyi-vue-pro/tree/master/yudao-ui-admin-uniapp) | 基于 uni-app + uni-ui 实现的管理后台的小程序 |
|
[
yudao-ui-go-view
](
https://gitee.com/yudaocode/yudao-ui-go-view
)
|
[

](https://gitee.com/yudaocode/yudao-ui-go-view)
[

](https://github.com/yudaocode/yudao-ui-go-view) | 基于 Vue3 + naive-ui 实现的大屏报表 |
...
...
@@ -240,7 +241,7 @@ ps:核心功能已经实现,正在对接微信小程序中...
|
[
Spring Cloud Gateway
](
https://github.com/spring-cloud/spring-cloud-gateway
)
| 服务网关 | 3.4.1 |
[
文档
](
https://www.iocoder.cn/categories/Spring-Cloud-Gateway/?yudao
)
|
|
[
Seata
](
https://github.com/seata/seata
)
| 分布式事务 | 1.6.1 |
[
文档
](
https://www.iocoder.cn/categories/Seata/?yudao
)
|
|
[
MySQL
](
https://www.mysql.com/cn/
)
| 数据库服务器 | 5.7 / 8.0+ | |
|
[
Druid
](
https://github.com/alibaba/druid
)
| JDBC 连接池、监控组件 | 1.2.1
5
|
[
文档
](
http://www.iocoder.cn/Spring-Boot/datasource-pool/?yudao
)
|
|
[
Druid
](
https://github.com/alibaba/druid
)
| JDBC 连接池、监控组件 | 1.2.1
6
|
[
文档
](
http://www.iocoder.cn/Spring-Boot/datasource-pool/?yudao
)
|
|
[
MyBatis Plus
](
https://mp.baomidou.com/
)
| MyBatis 增强工具包 | 3.5.3.1 |
[
文档
](
http://www.iocoder.cn/Spring-Boot/MyBatis/?yudao
)
|
|
[
Dynamic Datasource
](
https://dynamic-datasource.com/
)
| 动态数据源 | 3.6.0 |
[
文档
](
http://www.iocoder.cn/Spring-Boot/datasource-pool/?yudao
)
|
|
[
Redis
](
https://redis.io/
)
| key-value 数据库 | 5.0 / 6.0 | |
...
...
@@ -254,7 +255,7 @@ ps:核心功能已经实现,正在对接微信小程序中...
|
[
Spring Boot Admin
](
https://github.com/codecentric/spring-boot-admin
)
| Spring Boot 监控平台 | 2.7.10 |
[
文档
](
http://www.iocoder.cn/Spring-Boot/Admin/?yudao
)
|
|
[
Jackson
](
https://github.com/FasterXML/jackson
)
| JSON 工具库 | 2.13.3 | |
|
[
MapStruct
](
https://mapstruct.org/
)
| Java Bean 转换 | 1.5.3.Final |
[
文档
](
http://www.iocoder.cn/Spring-Boot/MapStruct/?yudao
)
|
|
[
Lombok
](
https://projectlombok.org/
)
| 消除冗长的 Java 代码 | 1.18.2
4
|
[
文档
](
http://www.iocoder.cn/Spring-Boot/Lombok/?yudao
)
|
|
[
Lombok
](
https://projectlombok.org/
)
| 消除冗长的 Java 代码 | 1.18.2
6
|
[
文档
](
http://www.iocoder.cn/Spring-Boot/Lombok/?yudao
)
|
|
[
JUnit
](
https://junit.org/junit5/
)
| Java 单元测试框架 | 5.8.2 | - |
|
[
Mockito
](
https://github.com/mockito/mockito
)
| Java Mock 框架 | 4.8.0 | - |
...
...
pom.xml
浏览文件 @
ec5007c3
...
...
@@ -33,8 +33,8 @@
<maven-surefire-plugin.version>
3.0.0-M5
</maven-surefire-plugin.version>
<maven-compiler-plugin.version>
3.8.1
</maven-compiler-plugin.version>
<!-- 看看咋放到 bom 里 -->
<lombok.version>
1.18.2
4
</lombok.version>
<spring.boot.version>
2.7.
8
</spring.boot.version>
<lombok.version>
1.18.2
6
</lombok.version>
<spring.boot.version>
2.7.
10
</spring.boot.version>
<mapstruct.version>
1.5.3.Final
</mapstruct.version>
<project.build.sourceEncoding>
UTF-8
</project.build.sourceEncoding>
</properties>
...
...
sql/mysql/optional/vue3-menu.sql
deleted
100644 → 0
浏览文件 @
f1330bf4
差异被折叠。
点击展开。
sql/mysql/ruoyi-vue-pro.sql
浏览文件 @
ec5007c3
This source diff could not be displayed because it is too large. You can
view the blob
instead.
yudao-dependencies/pom.xml
浏览文件 @
ec5007c3
...
...
@@ -16,16 +16,16 @@
<properties>
<revision>
1.7.1-snapshot
</revision>
<!-- 统一依赖管理 -->
<spring.boot.version>
2.7.
8
</spring.boot.version>
<spring.boot.version>
2.7.
10
</spring.boot.version>
<spring.cloud.version>
2021.0.5
</spring.cloud.version>
<spring.cloud.alibaba.version>
2021.0.4.0
</spring.cloud.alibaba.version>
<!-- Web 相关 -->
<servlet.versoin>
2.5
</servlet.versoin>
<swagger.version>
2.2.8
</swagger.version>
<springdoc.version>
1.6.1
4
</springdoc.version>
<springdoc.version>
1.6.1
5
</springdoc.version>
<knife4j.version>
4.1.0
</knife4j.version>
<!-- DB 相关 -->
<druid.version>
1.2.1
5
</druid.version>
<druid.version>
1.2.1
6
</druid.version>
<mybatis-plus.version>
3.5.3.1
</mybatis-plus.version>
<mybatis-plus-generator.version>
3.5.3.1
</mybatis-plus-generator.version>
<dynamic-datasource.version>
3.6.1
</dynamic-datasource.version>
...
...
@@ -45,17 +45,17 @@
<opentracing.version>
0.33.0
</opentracing.version>
<!-- Test 测试相关 -->
<podam.version>
7.2.11.RELEASE
</podam.version>
<jedis-mock.version>
1.0.
6
</jedis-mock.version>
<jedis-mock.version>
1.0.
7
</jedis-mock.version>
<mockito-inline.version>
4.11.0
</mockito-inline.version>
<!-- Bpm 工作流相关 -->
<flowable.version>
6.8.0
</flowable.version>
<!-- 工具类相关 -->
<captcha-plus.version>
1.0.2
</captcha-plus.version>
<jsoup.version>
1.15.
3
</jsoup.version>
<lombok.version>
1.18.2
4
</lombok.version>
<jsoup.version>
1.15.
4
</jsoup.version>
<lombok.version>
1.18.2
6
</lombok.version>
<mapstruct.version>
1.5.3.Final
</mapstruct.version>
<hutool.version>
5.8.1
1
</hutool.version>
<easyexcel.verion>
3.2.
0
</easyexcel.verion>
<hutool.version>
5.8.1
5
</hutool.version>
<easyexcel.verion>
3.2.
1
</easyexcel.verion>
<velocity.version>
2.3
</velocity.version>
<screw.version>
1.0.5
</screw.version>
<fastjson.version>
1.2.83
</fastjson.version>
...
...
@@ -64,17 +64,17 @@
<transmittable-thread-local.version>
2.14.2
</transmittable-thread-local.version>
<commons-net.version>
3.8.0
</commons-net.version>
<jsch.version>
0.1.55
</jsch.version>
<tika-core.version>
2.
6
.0
</tika-core.version>
<netty-all.version>
4.1.
86
.Final
</netty-all.version>
<ip2region.version>
2.
6.6
</ip2region.version>
<tika-core.version>
2.
7
.0
</tika-core.version>
<netty-all.version>
4.1.
90
.Final
</netty-all.version>
<ip2region.version>
2.
7.0
</ip2region.version>
<reflections.version>
0.10.2
</reflections.version>
<!-- 三方云服务相关 -->
<okio.version>
3.0.0
</okio.version>
<okhttp3.version>
4.10.0
</okhttp3.version>
<minio.version>
8.5.
1
</minio.version>
<minio.version>
8.5.
2
</minio.version>
<aliyun-java-sdk-core.version>
4.6.3
</aliyun-java-sdk-core.version>
<aliyun-java-sdk-dysmsapi.version>
2.2.1
</aliyun-java-sdk-dysmsapi.version>
<tencentcloud-sdk-java.version>
3.1.
676
</tencentcloud-sdk-java.version>
<tencentcloud-sdk-java.version>
3.1.
715
</tencentcloud-sdk-java.version>
<justauth.version>
1.4.0
</justauth.version>
<jimureport.version>
1.5.6
</jimureport.version>
<xercesImpl.version>
2.12.2
</xercesImpl.version>
...
...
yudao-framework/yudao-spring-boot-starter-biz-ip/pom.xml
浏览文件 @
ec5007c3
...
...
@@ -20,10 +20,6 @@
</description>
<url>
https://github.com/YunaiV/ruoyi-vue-pro
</url>
<properties>
<ip2region.version>
2.6.6
</ip2region.version>
</properties>
<dependencies>
<dependency>
<groupId>
cn.iocoder.cloud
</groupId>
...
...
yudao-framework/yudao-spring-boot-starter-biz-pay/pom.xml
浏览文件 @
ec5007c3
...
...
@@ -52,7 +52,7 @@
<dependency>
<groupId>
com.alipay.sdk
</groupId>
<artifactId>
alipay-sdk-java
</artifactId>
<version>
4.35.
32
.ALL
</version>
<version>
4.35.
79
.ALL
</version>
<exclusions>
<exclusion>
<groupId>
org.bouncycastle
</groupId>
...
...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/enums/codegen/CodegenFrontTypeEnum.java
浏览文件 @
ec5007c3
...
...
@@ -15,6 +15,7 @@ public enum CodegenFrontTypeEnum {
VUE2
(
10
),
// Vue2 Element UI 标准模版
VUE3
(
20
),
// Vue3 Element Plus 标准模版
VUE3_SCHEMA
(
21
),
// Vue3 Element Plus Schema 模版
VUE3_VBEN
(
30
),
// Vue3 VBEN 模版
;
/**
...
...
yudao-module-infra/yudao-module-infra-biz/src/main/java/cn/iocoder/yudao/module/infra/service/codegen/inner/CodegenEngine.java
浏览文件 @
ec5007c3
...
...
@@ -116,6 +116,15 @@ public class CodegenEngine {
vue3FilePath
(
"views/${table.moduleName}/${classNameVar}/index.vue"
))
.
put
(
CodegenFrontTypeEnum
.
VUE3_SCHEMA
.
getType
(),
vue3SchemaTemplatePath
(
"views/form.vue"
),
vue3FilePath
(
"views/${table.moduleName}/${classNameVar}/${simpleClassName}Form.vue"
))
// Vue3 vben 模版
.
put
(
CodegenFrontTypeEnum
.
VUE3_VBEN
.
getType
(),
vue3VbenTemplatePath
(
"views/data.ts"
),
vue3FilePath
(
"views/${table.moduleName}/${classNameVar}/${classNameVar}.data.ts"
))
.
put
(
CodegenFrontTypeEnum
.
VUE3_VBEN
.
getType
(),
vue3VbenTemplatePath
(
"views/index.vue"
),
vue3FilePath
(
"views/${table.moduleName}/${classNameVar}/index.vue"
))
.
put
(
CodegenFrontTypeEnum
.
VUE3_VBEN
.
getType
(),
vue3VbenTemplatePath
(
"views/form.vue"
),
vue3FilePath
(
"views/${table.moduleName}/${classNameVar}/${simpleClassName}Modal.vue"
))
.
put
(
CodegenFrontTypeEnum
.
VUE3_VBEN
.
getType
(),
vue3VbenTemplatePath
(
"api/api.ts"
),
vue3FilePath
(
"api/${table.moduleName}/${classNameVar}/index.ts"
))
.
build
();
@Resource
...
...
@@ -283,4 +292,8 @@ public class CodegenEngine {
private
static
String
vue3SchemaTemplatePath
(
String
path
)
{
return
"codegen/vue3_schema/"
+
path
+
".vm"
;
}
private
static
String
vue3VbenTemplatePath
(
String
path
)
{
return
"codegen/vue3_vben/"
+
path
+
".vm"
;
}
}
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_vben/api/api.ts.vm
0 → 100644
浏览文件 @
ec5007c3
import { defHttp } from '@/utils/http/axios'
// 查询${table.classComment}列表
export function get${simpleClassName}Page(params) {
return defHttp.get({ url: '${baseURL}/page', params })
}
// 查询${table.classComment}详情
export function get${simpleClassName}(id: number) {
return defHttp.get({ url: '${baseURL}/get?id=' + id })
}
// 新增${table.classComment}
export function create${simpleClassName}(data) {
return defHttp.post({ url: '${baseURL}/create', data })
}
// 修改${table.classComment}
export function update${simpleClassName}(data) {
return defHttp.put({ url: '${baseURL}/update', data })
}
// 删除${table.classComment}
export function delete${simpleClassName}(id: number) {
return defHttp.delete({ url: '${baseURL}/delete?id=' + id })
}
// 导出${table.classComment} Excel
export function export${simpleClassName}(params) {
return defHttp.download({ url: '${baseURL}/export-excel', params }, '${table.classComment}.xls')
}
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_vben/views/data.ts.vm
0 → 100644
浏览文件 @
ec5007c3
import { BasicColumn, FormSchema, useRender } from '@/components/Table'
import { DICT_TYPE, getIntDictOptions } from '@/utils/dict'
export const columns: BasicColumn[] = [
#foreach($column in $columns)
#if ($column.listOperationResult)
#set ($dictType=$column.dictType)
#set ($javaField = $column.javaField)
#set ($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#set ($comment=$column.columnComment)
#if ($column.javaType == "LocalDateTime")## 时间类型
{
title: '${comment}',
dataIndex: '${javaField}',
width: 180,
customRender: ({ text }) => {
return useRender.renderDate(text)
}
},
#elseif("" != $column.dictType)## 数据字典
{
title: '${comment}',
dataIndex: '${javaField}',
width: 180,
customRender: ({ text }) => {
return useRender.renderDict(text, DICT_TYPE.$dictType.toUpperCase())
}
},
#else
{
title: '${comment}',
dataIndex: '${javaField}',
width: 160
},
#end
#end
#end
]
export const searchFormSchema: FormSchema[] = [
#foreach($column in $columns)
#if ($column.listOperation)
#set ($dictType=$column.dictType)
#set ($javaField = $column.javaField)
#set ($AttrName=$column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#set ($comment=$column.columnComment)
{
label: '${comment}',
field: '${javaField}',
#if ($column.htmlType == "input")
component: 'Input',
#elseif ($column.htmlType == "select" || $column.htmlType == "radio")
component: 'Select',
componentProps: {
#if ("" != $dictType)## 设置了 dictType 数据字典的情况
options: getIntDictOptions(DICT_TYPE.$dictType.toUpperCase())
#else## 未设置 dictType 数据字典的情况
options: []
#end
},
#elseif($column.htmlType == "datetime")
component: 'RangePicker',
#end
colProps: { span: 8 }
},
#end
#end
]
export const formSchema: FormSchema[] = [
{
label: '编号',
field: 'id',
show: false,
component: 'Input'
},
#foreach($column in $columns)
#if ($column.createOperation || $column.updateOperation)
#set ($dictType = $column.dictType)
#set ($javaField = $column.javaField)
#set ($AttrName = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})
#set ($comment = $column.columnComment)
#if (!$column.primaryKey)## 忽略主键,不用在表单里
{
label: '${comment}',
field: '${javaField}',
#if (($column.createOperation || $column.updateOperation) && !$column.nullable && !${column.primaryKey})## 创建或者更新操作 && 要求非空 && 非主键
required: true,
#end
#if ($column.htmlType == "input")
component: 'Input'
#elseif($column.htmlType == "imageUpload")## 图片上传
component: 'Upload'
#elseif($column.htmlType == "fileUpload")## 文件上传
component: 'Upload'
#elseif($column.htmlType == "editor")## 文本编辑器
component: 'InputTextArea'
#elseif($column.htmlType == "select")## 下拉框
component: 'Select',
componentProps: {
#if ("" != $dictType)## 有数据字典
options: getIntDictOptions(DICT_TYPE.COMMON_STATUS)
#else##没数据字典
options:[]
#end
}
#elseif($column.htmlType == "checkbox")## 多选框
component: 'Checkbox',
componentProps: {
#if ("" != $dictType)## 有数据字典
options: getIntDictOptions(DICT_TYPE.COMMON_STATUS)
#else##没数据字典
options:[]
#end
}
#elseif($column.htmlType == "radio")## 单选框
component: 'Radio',
componentProps: {
#if ("" != $dictType)## 有数据字典
options: getIntDictOptions(DICT_TYPE.COMMON_STATUS)
#else##没数据字典
options:[]
#end
}
#elseif($column.htmlType == "datetime")## 时间框
component: 'DatePicker'
#elseif($column.htmlType == "textarea")## 文本域
component: 'InputTextArea'
#end
},
#end
#end
#end
]
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_vben/views/form.vue.vm
0 → 100644
浏览文件 @
ec5007c3
<template>
<BasicModal
v-bind=
"$attrs"
@
register=
"registerModal"
:title=
"isUpdate ? '编辑' : '新增'"
@
ok=
"handleSubmit"
>
<BasicForm
@
register=
"registerForm"
/>
</BasicModal>
</template>
<script
lang=
"ts"
setup
name=
"${table.className}Modal"
>
import
{
ref
,
unref
}
from
'vue'
import
{
BasicModal
,
useModalInner
}
from
'@/components/Modal'
import
{
BasicForm
,
useForm
}
from
'@/components/Form'
import
{
formSchema
}
from
'./${classNameVar}.data'
import
{
create$
{
simpleClassName
},
get
$
{
simpleClassName
},
update$
{
simpleClassName
}
}
from
'@/api/${table.moduleName}/${classNameVar}'
const
emit
=
defineEmits
([
'success'
,
'register'
])
const
isUpdate
=
ref
(
true
)
const
[
registerForm
,
{
setFieldsValue
,
resetFields
,
validate
}]
=
useForm
({
labelWidth
:
120
,
baseColProps
:
{
span
:
24
},
schemas
:
formSchema
,
showActionButtonGroup
:
false
,
actionColOptions
:
{
span
:
23
}
})
const
[
registerModal
,
{
setModalProps
,
closeModal
}]
=
useModalInner
(
async
(
data
)
=>
{
resetFields
()
setModalProps
({
confirmLoading
:
false
})
isUpdate
.
value
=
!!
data
?.
isUpdate
if
(
unref
(
isUpdate
))
{
const
res
=
await
get
$
{
simpleClassName
}(
data
.
record
.
id
)
setFieldsValue
({
...
res
})
}
})
async
function
handleSubmit
()
{
try
{
const
values
=
await
validate
()
setModalProps
({
confirmLoading
:
true
})
if
(
unref
(
isUpdate
))
{
await
update$
{
simpleClassName
}(
values
)
}
else
{
await
create$
{
simpleClassName
}(
values
)
}
closeModal
()
emit
(
'success'
)
}
finally
{
setModalProps
({
confirmLoading
:
false
})
}
}
</script>
yudao-module-infra/yudao-module-infra-biz/src/main/resources/codegen/vue3_vben/views/index.vue.vm
0 → 100644
浏览文件 @
ec5007c3
<template>
<div>
<BasicTable
@
register=
"registerTable"
>
<template
#
toolbar
>
<a-button
type=
"primary"
v-auth=
"['${permissionPrefix}:create']"
:preIcon=
"IconEnum.ADD"
@
click=
"handleCreate"
>
{{ t('action.create') }}
</a-button>
<a-button
type=
"warning"
v-auth=
"['${permissionPrefix}:export']"
:preIcon=
"IconEnum.EXPORT"
@
click=
"handleExport"
>
{{ t('action.export') }}
</a-button>
</template>
<template
#
bodyCell=
"{ column, record }"
>
<template
v-if=
"column.key === 'action'"
>
<TableAction
:actions=
"[
{ icon: IconEnum.EDIT, label: t('action.edit'), auth: '${permissionPrefix}:update', onClick: handleEdit.bind(null, record) },
{
icon: IconEnum.DELETE,
color: 'error',
label: t('action.delete'),
auth: '${permissionPrefix}:delete',
popConfirm: {
title: t('common.delMessage'),
placement: 'left',
confirm: handleDelete.bind(null, record)
}
}
]"
/>
</template>
</template>
</BasicTable>
<
${
simpleClassName
}
Modal
@
register=
"registerModal"
@
success=
"reload()"
/>
</div>
</template>
<script
lang=
"ts"
setup
name=
"${table.className}"
>
import
{
useI18n
}
from
'@/hooks/web/useI18n'
import
{
useMessage
}
from
'@/hooks/web/useMessage'
import
{
useModal
}
from
'@/components/Modal'
import
$
{
simpleClassName
}
Modal
from
'./${simpleClassName}Modal.vue'
import
{
IconEnum
}
from
'@/enums/appEnum'
import
{
BasicTable
,
useTable
,
TableAction
}
from
'@/components/Table'
import
{
delete
$
{
simpleClassName
},
export
$
{
simpleClassName
},
get
$
{
simpleClassName
}
Page
}
from
'@/api/${table.moduleName}/${classNameVar}'
import
{
columns
,
searchFormSchema
}
from
'./${classNameVar}.data'
const
{
t
}
=
useI18n
()
const
{
createConfirm
,
createMessage
}
=
useMessage
()
const
[
registerModal
,
{
openModal
}]
=
useModal
()
const
[
registerTable
,
{
getForm
,
reload
}]
=
useTable
({
title
:
'${table.classComment}列表'
,
api
:
get
$
{
simpleClassName
}
Page
,
columns
,
formConfig
:
{
labelWidth
:
120
,
schemas
:
searchFormSchema
},
useSearchForm
:
true
,
showTableSetting
:
true
,
actionColumn
:
{
width
:
140
,
title
:
t
(
'common.action'
),
dataIndex
:
'action'
,
fixed
:
'right'
}
})
function
handleCreate
()
{
openModal
(
true
,
{
isUpdate
:
false
})
}
function
handleEdit
(
record
:
Recordable
)
{
openModal
(
true
,
{
record
,
isUpdate
:
true
})
}
async
function
handleExport
()
{
createConfirm
({
title
:
t
(
'common.exportTitle'
),
iconType
:
'warning'
,
content
:
t
(
'common.exportMessage'
),
async
onOk
()
{
await
export
$
{
simpleClassName
}(
getForm
().
getFieldsValue
())
createMessage
.
success
(
t
(
'common.exportSuccessText'
))
}
})
}
async
function
handleDelete
(
record
:
Recordable
)
{
await
delete
$
{
simpleClassName
}(
record
.
id
)
createMessage
.
success
(
t
(
'common.delSuccessText'
))
reload
()
}
</script>
yudao-module-system/yudao-module-system-biz/src/test/java/cn/iocoder/yudao/module/system/service/sms/SmsSendServiceImplTest.java
浏览文件 @
ec5007c3
...
...
@@ -256,6 +256,7 @@ public class SmsSendServiceImplTest extends BaseMockitoUnitTest {
when
(
smsClientFactory
.
getSmsClient
(
eq
(
message
.
getChannelId
()))).
thenReturn
(
smsClient
);
// mock SmsClient 的方法
SmsCommonResult
<
SmsSendRespDTO
>
sendResult
=
randomPojo
(
SmsCommonResult
.
class
,
SmsSendRespDTO
.
class
);
sendResult
.
setData
(
randomPojo
(
SmsSendRespDTO
.
class
));
when
(
smsClient
.
sendSms
(
eq
(
message
.
getLogId
()),
eq
(
message
.
getMobile
()),
eq
(
message
.
getApiTemplateId
()),
eq
(
message
.
getTemplateParams
()))).
thenReturn
(
sendResult
);
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论