Merge remote-tracking branch 'origin/dev' into dev

pull/288/MERGE
这么难演 2025-09-25 08:37:26 +08:00
commit e9e4fa7a78
52 changed files with 170 additions and 243 deletions

View File

@ -108,8 +108,7 @@
},
{
title: '是否已读',
dataIndex: 'read',
width: 120
dataIndex: 'read'
}
]
//

View File

@ -57,8 +57,7 @@
{
title: '时间',
dataIndex: 'createTime',
align: 'right',
width: '150px'
align: 'right'
}
]
const title = ref('通知公告')

View File

@ -115,8 +115,7 @@
{
title: '操作',
dataIndex: 'action',
align: 'center',
width: 50
align: 'center'
},
{
title: '机构名',
@ -133,8 +132,7 @@
{
title: '操作',
dataIndex: 'action',
align: 'center',
width: 50
align: 'center'
},
{
title: '机构名',

View File

@ -115,8 +115,7 @@
{
title: '操作',
dataIndex: 'action',
align: 'center',
width: 50
align: 'center'
},
{
title: '职位名',
@ -133,8 +132,7 @@
{
title: '操作',
dataIndex: 'action',
align: 'center',
width: 50
align: 'center'
},
{
title: '职位名',

View File

@ -115,8 +115,7 @@
{
title: '操作',
dataIndex: 'action',
align: 'center',
width: 50
align: 'center'
},
{
title: '角色名',
@ -133,8 +132,7 @@
{
title: '操作',
dataIndex: 'action',
align: 'center',
width: 50
align: 'center'
},
{
title: '角色名',

View File

@ -118,13 +118,11 @@
{
title: '操作',
dataIndex: 'action',
align: 'center',
width: 50
align: 'center'
},
{
title: '头像',
dataIndex: 'avatar',
width: 50
dataIndex: 'avatar'
},
{
title: '用户名',
@ -141,8 +139,7 @@
{
title: '操作',
dataIndex: 'action',
align: 'center',
width: 50
align: 'center'
},
{
title: '用户名',

View File

@ -161,8 +161,7 @@
{
title: '操作',
dataIndex: 'action',
align: 'center',
width: 50
align: 'center'
},
{
title: '名称',
@ -175,8 +174,7 @@
{
title: '操作',
dataIndex: 'action',
align: 'center',
width: 50
align: 'center'
},
{
title: '名称',

View File

@ -160,8 +160,7 @@
{
title: '操作',
dataIndex: 'action',
align: 'center',
width: 50
align: 'center'
},
{
title: '名称',
@ -178,8 +177,7 @@
{
title: '操作',
dataIndex: 'action',
align: 'center',
width: 50
align: 'center'
},
{
title: '名称',

View File

@ -160,8 +160,7 @@
{
title: '操作',
dataIndex: 'action',
align: 'center',
width: 50
align: 'center'
},
{
title: '名称',
@ -178,8 +177,7 @@
{
title: '操作',
dataIndex: 'action',
align: 'center',
width: 50
align: 'center'
},
{
title: '名称',

View File

@ -161,8 +161,7 @@
{
title: '操作',
dataIndex: 'action',
align: 'center',
width: 50
align: 'center'
},
{
title: '名称',
@ -179,8 +178,7 @@
{
title: '操作',
dataIndex: 'action',
align: 'center',
width: 50
align: 'center'
},
{
title: '名称',

View File

@ -170,13 +170,11 @@
{
title: '操作',
dataIndex: 'action',
align: 'center',
width: 50
align: 'center'
},
{
title: '头像',
dataIndex: 'avatar',
width: 50
dataIndex: 'avatar'
},
{
title: '用户名',
@ -193,8 +191,7 @@
{
title: '操作',
dataIndex: 'action',
align: 'center',
width: 50
align: 'center'
},
{
title: '用户名',

View File

@ -170,8 +170,7 @@
},
{
title: '是否已读',
dataIndex: 'read',
width: 120
dataIndex: 'read'
}
]
//

View File

@ -29,8 +29,7 @@
const columns = [
{
title: '头像',
dataIndex: 'avatar',
width: 60
dataIndex: 'avatar'
},
{
title: '账号',
@ -54,13 +53,11 @@
{
title: '登录IP',
dataIndex: 'latestLoginIp',
width: 120,
ellipsis: true
},
{
title: '令牌数',
dataIndex: 'tokenNumber',
width: 70
dataIndex: 'tokenNumber'
},
{
title: '操作',

View File

@ -29,8 +29,7 @@
const columns = [
{
title: '头像',
dataIndex: 'avatar',
width: 60
dataIndex: 'avatar'
},
{
title: '账号',
@ -54,13 +53,11 @@
{
title: '登录IP',
dataIndex: 'latestLoginIp',
width: 120,
ellipsis: true
},
{
title: '令牌数',
dataIndex: 'tokenNumber',
width: 70
dataIndex: 'tokenNumber'
},
{
title: '操作',

View File

@ -73,8 +73,7 @@
const columns = [
{
title: '登录设备',
dataIndex: 'tokenDevice',
width: 90
dataIndex: 'tokenDevice'
},
{
title: '有效期',
@ -83,8 +82,7 @@
{
title: '令牌',
dataIndex: 'tokenValue',
ellipsis: true,
width: 80
ellipsis: true
}
]
if (hasPerm('authForceQuit')) {
@ -92,7 +90,6 @@
title: '操作',
dataIndex: 'action',
align: 'center',
width: '100px',
scopedSlots: { customRender: 'action' }
})
}

View File

@ -73,8 +73,7 @@
{
title: '头像',
dataIndex: 'avatar',
align: 'center',
width: '80px'
align: 'center'
},
{
title: '姓名',
@ -88,8 +87,7 @@
},
{
title: '性别',
dataIndex: 'gender',
width: '100px'
dataIndex: 'gender'
},
{
title: '分类',

View File

@ -96,13 +96,11 @@
const columns = [
{
title: '字典名称',
dataIndex: 'dictLabel',
width: 350
dataIndex: 'dictLabel'
},
{
title: '字典值',
dataIndex: 'dictValue',
width: 350
dataIndex: 'dictValue'
},
{
title: '排序',

View File

@ -10,8 +10,18 @@
<a-col :xs="24" :sm="16" :md="16" :lg="16" :xl="16">
<a-form-item>
<a-space>
<a-button type="primary" @click="tableRef.refresh()"></a-button>
<a-button style="margin: 0 8px" @click="reset"></a-button>
<a-button type="primary" @click="tableRef.refresh(true)">
<template #icon>
<SearchOutlined/>
</template>
查询
</a-button>
<a-button @click="reset">
<template #icon>
<redo-outlined/>
</template>
重置
</a-button>
</a-space>
</a-form-item>
</a-col>
@ -113,7 +123,6 @@
const selectedRowKeys = ref([])
//
const options = {
// columns needTotal: true
alert: {
show: false,
clear: () => {

View File

@ -154,8 +154,7 @@
},
{
title: '封面图',
dataIndex: 'image',
width: '100px'
dataIndex: 'image'
},
{
title: '类型',
@ -176,8 +175,7 @@
},
{
title: '创建时间',
dataIndex: 'createTime',
width: '150px'
dataIndex: 'createTime'
}
]
//
@ -192,7 +190,6 @@
const selectedRowKeys = ref([])
//
const options = {
// columns needTotal: true
alert: {
show: false,
clear: () => {

View File

@ -126,8 +126,7 @@
},
{
title: '排序',
dataIndex: 'sortCode',
width: 100
dataIndex: 'sortCode'
}
]
if (hasPerm(['bizOrgEdit', 'bizOrgDelete'])) {

View File

@ -192,8 +192,7 @@
{
title: '头像',
dataIndex: 'avatar',
align: 'center',
width: '80px'
align: 'center'
},
{
title: '账号',
@ -206,8 +205,7 @@
},
{
title: '性别',
dataIndex: 'gender',
width: '50px'
dataIndex: 'gender'
},
{
title: '手机',
@ -226,8 +224,7 @@
},
{
title: '状态',
dataIndex: 'userStatus',
width: '80px'
dataIndex: 'userStatus'
}
]
if (hasPerm(['bizUserEdit', 'bizUserGrantRole', 'bizUserPwdReset', 'bizUserExportUserInfo', 'bizUserDelete'])) {

View File

@ -80,8 +80,7 @@
{
title: '头像',
dataIndex: 'avatar',
align: 'center',
width: '80px'
align: 'center'
},
{
title: '账号',
@ -94,8 +93,7 @@
},
{
title: '性别',
dataIndex: 'gender',
width: 100
dataIndex: 'gender'
},
{
title: '手机',
@ -104,14 +102,12 @@
},
{
title: '状态',
dataIndex: 'userStatus',
width: 100
dataIndex: 'userStatus'
},
{
title: '操作',
dataIndex: 'action',
align: 'center',
width: '220px'
align: 'center'
}
]
const toolConfig = { refresh: true, height: true, columnSetting: true }

View File

@ -66,7 +66,6 @@
{
title: '排序',
dataIndex: 'sortCode',
width: 100,
sorter: true
},
{

View File

@ -70,7 +70,6 @@
const selectedRowKeys = ref([])
//
const options = {
// columns needTotal: true
alert: {
show: false,
clear: () => {

View File

@ -113,13 +113,11 @@
const columns = [
{
title: '字典名称',
dataIndex: 'dictLabel',
width: 350
dataIndex: 'dictLabel'
},
{
title: '字典值',
dataIndex: 'dictValue',
width: 350
dataIndex: 'dictValue'
},
{
title: '排序',
@ -129,7 +127,7 @@
title: '操作',
dataIndex: 'action',
align: 'center',
width: '150px'
fixed: 'right'
}
]
const categoryType = computed(() => {

View File

@ -151,26 +151,22 @@
{
title: '缩略图',
dataIndex: 'thumbnail',
ellipsis: true,
width: 80
ellipsis: true
},
{
title: '文件大小',
dataIndex: 'sizeInfo',
ellipsis: true,
width: 120
ellipsis: true
},
{
title: '文件后缀',
dataIndex: 'suffix',
ellipsis: true,
width: 120
ellipsis: true
},
{
title: '储存引擎',
dataIndex: 'engine',
ellipsis: true,
width: 120
ellipsis: true
},
{
title: '操作',

View File

@ -135,19 +135,16 @@
},
{
title: '状态',
dataIndex: 'jobStatus',
width: '100px'
dataIndex: 'jobStatus'
},
{
title: '启停',
dataIndex: 'jobStatusUpdate',
width: '120px'
dataIndex: 'jobStatusUpdate'
},
{
title: '排序',
dataIndex: 'sortCode',
sorter: true,
width: '80px'
sorter: true
},
{
title: '操作',

View File

@ -47,8 +47,7 @@
},
{
title: '是否已读',
dataIndex: 'read',
width: 120
dataIndex: 'read'
}
]
//

View File

@ -87,8 +87,7 @@
title: '发送时间',
dataIndex: 'createTime',
ellipsis: true,
sorter: true,
width: '150px'
sorter: true
},
{
title: '操作',

View File

@ -165,8 +165,7 @@
const detailsColumns = [
{
title: '位置',
dataIndex: 'label',
width: '200px'
dataIndex: 'label'
},
{
title: '点击事件',
@ -184,7 +183,6 @@
const selectedRowKeys = ref([])
//
const options = {
// columns needTotal: true
alert: {
show: false,
clear: () => {

View File

@ -60,18 +60,15 @@
const columns = ref([
{
title: '位置',
dataIndex: 'label',
width: '20%'
dataIndex: 'label'
},
{
title: '点击事件',
dataIndex: 'whetherToClick',
width: '25%'
dataIndex: 'whetherToClick'
},
{
title: '跳转方式',
dataIndex: 'skipMode',
width: '20%'
dataIndex: 'skipMode'
},
{
title: 'URL',

View File

@ -101,7 +101,7 @@
content: [
"<div style='padding:0'>",
'网站 : https://www.xiaonuo.vip',
'Snowy是一款国内首例国产密码算法加密框架采用Vue3.0+AntDesignVue3.0+SpringBoot2.8前后分离技术打造,技术框架与密码的结合,让前后分离‘密’不可分!</div>'
'Snowy是一款国内首例国产密码算法加密框架采用Vue3.x+AntDesignVue4.x+SpringBoot3.x前后分离技术打造,技术框架与密码的结合,让前后分离‘密’不可分!</div>'
]
},
{
@ -110,7 +110,7 @@
content: [
"<div style='padding:0'>",
'网站 : https://www.xiaonuo.vip',
'Snowy是一款国内首例国产密码算法加密框架采用Vue3.0+AntDesignVue3.0+SpringBoot2.8前后分离技术打造,技术框架与密码的结合,让前后分离‘密’不可分!</div>'
'Snowy是一款国内首例国产密码算法加密框架采用Vue3.x+AntDesignVue4.x+SpringBoot3.x前后分离技术打造,技术框架与密码的结合,让前后分离‘密’不可分!</div>'
],
width: 300,
height: 200

View File

@ -118,7 +118,7 @@
content: [
"<div style='padding:0'><b>Snowy-小诺开源技术</b>",
'网站 : https://www.xiaonuo.vip',
'Snowy是一款国内首例国产密码算法加密框架采用Vue3.0+AntDesignVue3.0+SpringBoot2.8前后分离技术打造,技术框架与密码的结合,让前后分离‘密’不可分!</div>'
'Snowy是一款国内首例国产密码算法加密框架采用Vue3.x+AntDesignVue4.x+SpringBoot3.x前后分离技术打造,技术框架与密码的结合,让前后分离‘密’不可分!</div>'
]
},
{
@ -126,7 +126,7 @@
content: [
"<div style='padding:0'><b>Snowy-小诺开源技术</b>",
'网站 : https://www.xiaonuo.vip',
'Snowy是一款国内首例国产密码算法加密框架采用Vue3.0+AntDesignVue3.0+SpringBoot2.8前后分离技术打造,技术框架与密码的结合,让前后分离‘密’不可分!</div>'
'Snowy是一款国内首例国产密码算法加密框架采用Vue3.x+AntDesignVue4.x+SpringBoot3.x前后分离技术打造,技术框架与密码的结合,让前后分离‘密’不可分!</div>'
]
}
])

View File

@ -144,44 +144,37 @@
{
title: '字典',
align: 'center',
dataIndex: 'dictTypeCode',
width: 140
dataIndex: 'dictTypeCode'
},
{
title: '列表显示',
align: 'center',
dataIndex: 'whetherTable',
width: 80
dataIndex: 'whetherTable'
},
{
title: '列省略',
align: 'center',
dataIndex: 'whetherRetract',
width: 80
dataIndex: 'whetherRetract'
},
{
title: '增改',
align: 'center',
dataIndex: 'whetherAddUpdate',
width: 80
dataIndex: 'whetherAddUpdate'
},
{
title: '必填',
align: 'center',
dataIndex: 'whetherRequired',
width: 80
dataIndex: 'whetherRequired'
},
{
title: '唯一',
align: 'center',
dataIndex: 'whetherUnique',
width: 80
dataIndex: 'whetherUnique'
},
{
title: '查询',
align: 'center',
dataIndex: 'queryWhether',
width: 80
dataIndex: 'queryWhether'
},
{
title: '查询方式',

View File

@ -135,8 +135,7 @@
},
{
title: '图标',
dataIndex: 'icon',
width: 80
dataIndex: 'icon'
},
{
title: '正规则',

View File

@ -122,7 +122,6 @@ const columns = [
const selectedRowKeys = ref([])
//
const options = {
// columns needTotal: true
alert: {
show: false,
clear: () => {

View File

@ -126,8 +126,7 @@ const columns = [
},
{
title: '排序',
dataIndex: 'sortCode',
width: 100
dataIndex: 'sortCode'
},
{
title: '操作',

View File

@ -127,8 +127,7 @@ const columns = [
},
{
title: '排序',
dataIndex: 'sortCode',
width: 100
dataIndex: 'sortCode'
},
{
title: '操作',

View File

@ -157,13 +157,11 @@
{
title: '显示名称',
dataIndex: 'title',
ellipsis: true,
width: 300
ellipsis: true
},
{
title: '类型',
dataIndex: 'menuType',
width: 100
dataIndex: 'menuType'
},
{
title: '路由地址',
@ -175,14 +173,12 @@
},
{
title: '是否可见',
dataIndex: 'visible',
width: 120
dataIndex: 'visible'
},
{
title: '排序',
dataIndex: 'sortCode',
sorter: true,
width: 100
sorter: true
},
{
title: '操作',

View File

@ -169,7 +169,6 @@
title: '接口前缀',
dataIndex: 'prefix',
fixed: 'left',
width: 140,
customCell: (row, index) => {
const indexArr = firstShowMap.value[row.prefix]
if (index === indexArr[0]) {
@ -182,7 +181,6 @@
key: 'suffix',
title: '接口',
dataIndex: 'suffix',
width: 290,
customFilterDropdown: true,
onFilter: (value, record) => record.api.includes(value),
onFilterDropdownOpenChange: (visible) => {

View File

@ -167,8 +167,7 @@
},
{
title: '排序',
dataIndex: 'sortCode',
width: 100
dataIndex: 'sortCode'
},
{
title: '操作',

View File

@ -170,7 +170,6 @@
title: '接口前缀',
dataIndex: 'prefix',
fixed: 'left',
width: 140,
customCell: (row, index) => {
const indexArr = firstShowMap.value[row.prefix]
if (index === indexArr[0]) {
@ -183,7 +182,6 @@
key: 'suffix',
title: '接口',
dataIndex: 'suffix',
width: 290,
customFilterDropdown: true,
onFilter: (value, record) => record.api.includes(value),
onFilterDropdownOpenChange: (visible) => {

View File

@ -89,8 +89,7 @@
const impErrorColumns = [
{
title: '索引',
dataIndex: 'index',
width: '80px'
dataIndex: 'index'
},
{
title: '原因',

View File

@ -211,8 +211,7 @@ const columns = [
{
title: '头像',
dataIndex: 'avatar',
align: 'center',
width: '80px'
align: 'center'
},
{
title: '账号',
@ -225,8 +224,7 @@ const columns = [
},
{
title: '性别',
dataIndex: 'genderName',
width: '50px'
dataIndex: 'genderName'
},
{
title: '手机',
@ -245,8 +243,7 @@ const columns = [
},
{
title: '状态',
dataIndex: 'userStatus',
width: '80px'
dataIndex: 'userStatus'
},
{
title: '操作',

View File

@ -1,64 +1,71 @@
<template>
<a-row :gutter="10">
<a-col :xs="24" :sm="24" :md="7" :lg="7" :xl="7" class="mb-3">
<a-card :bordered="false">
<div class="account-center-avatarHolder">
<div class="avatar">
<a-spin size="small" :spinning="avatarLoading">
<img :src="userInfo.avatar" />
</a-spin>
<a @click="uploadLogo">
<div v-if="userInfo" :class="userInfo.avatar ? 'mask' : 'mask-notImg'"><upload-outlined /></div>
</a>
<div class="h-dvh mb-3">
<a-row :gutter="10" class="h-full">
<a-col :xs="24" :sm="24" :md="7" :lg="7" :xl="7">
<a-card :bordered="false" class="h-full">
<div class="account-center-avatarHolder">
<div class="avatar">
<a-spin size="small" :spinning="avatarLoading">
<img :src="userInfo.avatar" />
</a-spin>
<a @click="uploadLogo">
<div v-if="userInfo" :class="userInfo.avatar ? 'mask' : 'mask-notImg'"><upload-outlined /></div>
</a>
</div>
<div class="username">{{ userInfo.name }}</div>
<div class="bio">{{ userInfo.nickname }}</div>
</div>
<div class="username">{{ userInfo.name }}</div>
<div class="bio">{{ userInfo.nickname }}</div>
</div>
<div class="account-center-detail">
<p><i class="title"></i>{{ userInfo.positionName }}</p>
<p><i class="group"></i>{{ userInfo.orgName }}</p>
<p>
<i class="address"></i>
<span>{{ userInfo.homeAddress ? userInfo.homeAddress : '暂无地址' }}</span>
<div class="account-center-detail">
<p><i class="title"></i>{{ userInfo.positionName }}</p>
<p><i class="group"></i>{{ userInfo.orgName }}</p>
<p>
<i class="address"></i>
<span>{{ userInfo.homeAddress ? userInfo.homeAddress : '暂无地址' }}</span>
</p>
</div>
<a-divider />
<div class="account-center-team">
<div class="mb-2 xn-wd" v-if="userInfo.signature">
<a-image :src="userInfo.signature" width="100%" class="xn-bdr236 xn-ht120" />
</div>
<a-button @click="xnSignNameRef.show()"></a-button>
<XnSignName ref="xnSignNameRef" :image="userInfo.signature" @successful="signSuccess" />
</div>
</a-card>
</a-col>
<a-col :xs="24" :sm="24" :md="17" :lg="17" :xl="17">
<a-card
:bordered="false"
class="xn-wd h-full"
:tab-list="tabList"
:active-tab-key="noTitleKey"
@tabChange="(key) => onTabChange(key, 'key')"
>
<p v-if="noTitleKey === 'accountBasic'">
<accountBasic />
</p>
</div>
<a-divider />
<div class="account-center-team">
<div class="mb-2 xn-wd" v-if="userInfo.signature">
<a-image :src="userInfo.signature" width="100%" class="xn-bdr236 xn-ht120" />
</div>
<a-button @click="xnSignNameRef.show()"></a-button>
<XnSignName ref="xnSignNameRef" :image="userInfo.signature" @successful="signSuccess" />
</div>
</a-card>
</a-col>
<a-col :xs="24" :sm="24" :md="17" :lg="17" :xl="17">
<a-card
:bordered="false"
class="xn-wd"
:tab-list="tabList"
:active-tab-key="noTitleKey"
@tabChange="(key) => onTabChange(key, 'key')"
>
<p v-if="noTitleKey === 'accountBasic'">
<accountBasic />
</p>
<p v-if="noTitleKey === 'organizationChart'">
<organizationChart />
</p>
<p v-if="noTitleKey === 'accountBind'">
<accountBind />
</p>
<p v-if="noTitleKey === 'shortcutSetting'">
<shortcutSetting />
</p>
<p v-if="noTitleKey === 'userMessage'">
<userMessage />
</p>
</a-card>
</a-col>
</a-row>
<CropUpload ref="cropUploadRef" :img-src="userInfo ? userInfo.avatar : undefined" @successful="cropUploadSuccess" :z-index="2000" />
<p v-if="noTitleKey === 'organizationChart'">
<organizationChart />
</p>
<p v-if="noTitleKey === 'accountBind'">
<accountBind />
</p>
<p v-if="noTitleKey === 'shortcutSetting'">
<shortcutSetting />
</p>
<p v-if="noTitleKey === 'userMessage'">
<userMessage />
</p>
</a-card>
</a-col>
</a-row>
<CropUpload
ref="cropUploadRef"
:img-src="userInfo ? userInfo.avatar : undefined"
@successful="cropUploadSuccess"
:z-index="2000"
/>
</div>
</template>
<script setup name="userCenter">

View File

@ -55,8 +55,7 @@
},
{
title: '是否已读',
dataIndex: 'read',
width: '100px'
dataIndex: 'read'
},
{
title: '操作',

View File

@ -48,8 +48,7 @@
},
{
title: '是否已读',
dataIndex: 'read',
width: 120
dataIndex: 'read'
}
]
//

View File

@ -22,6 +22,7 @@ import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.dromara.sms4j.aliyun.config.AlibabaConfig;
import org.dromara.sms4j.api.SmsBlend;
import org.dromara.sms4j.api.dao.SmsDaoDefaultImpl;
import org.dromara.sms4j.api.entity.SmsResponse;
import org.dromara.sms4j.core.factory.SmsFactory;
import org.dromara.sms4j.javase.config.SEInitializer;
@ -75,7 +76,7 @@ public class DevSmsAliyunUtil {
alibabaConfig.setAccessKeyId(accessKeyId);
alibabaConfig.setAccessKeySecret(accessKeySecret);
alibabaConfig.setSignature(signName);
SEInitializer.initializer().fromConfig(new SmsConfig(), CollectionUtil.newArrayList(alibabaConfig));
SEInitializer.initializer().registerSmsDao(SmsDaoDefaultImpl.getInstance()).fromConfig(new SmsConfig(), CollectionUtil.newArrayList(alibabaConfig));
smsBlend = SmsFactory.getSmsBlend(alibabaConfig.getConfigId());
}

View File

@ -21,6 +21,7 @@ import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.dromara.sms4j.api.SmsBlend;
import org.dromara.sms4j.api.dao.SmsDaoDefaultImpl;
import org.dromara.sms4j.api.entity.SmsResponse;
import org.dromara.sms4j.core.factory.SmsFactory;
import org.dromara.sms4j.javase.config.SEInitializer;
@ -83,7 +84,7 @@ public class DevSmsTencentUtil {
tencentConfig.setAccessKeySecret(secretKey);
tencentConfig.setSignature(signName);
tencentConfig.setSdkAppId(sdkAppId);
SEInitializer.initializer().fromConfig(new SmsConfig(), CollectionUtil.newArrayList(tencentConfig));
SEInitializer.initializer().registerSmsDao(SmsDaoDefaultImpl.getInstance()).fromConfig(new SmsConfig(), CollectionUtil.newArrayList(tencentConfig));
smsBlend = SmsFactory.getSmsBlend(tencentConfig.getConfigId());
}

View File

@ -21,6 +21,7 @@ import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;
import lombok.extern.slf4j.Slf4j;
import org.dromara.sms4j.api.SmsBlend;
import org.dromara.sms4j.api.dao.SmsDaoDefaultImpl;
import org.dromara.sms4j.api.entity.SmsResponse;
import org.dromara.sms4j.core.factory.SmsFactory;
import org.dromara.sms4j.dingzhong.config.DingZhongConfig;
@ -84,7 +85,7 @@ public class DevSmsXiaonuoUtil {
dingZhongConfig.setAccessKeySecret(accessKeySecret);
dingZhongConfig.setSignature(signName);
dingZhongConfig.setRequestUrl(requestUrl);
SEInitializer.initializer().fromConfig(new SmsConfig(), CollectionUtil.newArrayList(dingZhongConfig));
SEInitializer.initializer().registerSmsDao(SmsDaoDefaultImpl.getInstance()).fromConfig(new SmsConfig(), CollectionUtil.newArrayList(dingZhongConfig));
smsBlend = SmsFactory.getSmsBlend(dingZhongConfig.getConfigId());
}

View File

@ -220,7 +220,6 @@
const selectedRowKeys = ref([])
// 列表选择配置
const options = {
// columns数字类型字段加入 needTotal: true 可以勾选自动算账
alert: {
show: true,
clear: () => {

View File

@ -203,7 +203,7 @@ INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967459', 'SNOWY_SYS_COPYRIGHT_URL
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967462', 'SNOWY_SYS_DEFAULT_CAPTCHA_OPEN_FLAG_FOR_B', 'B端全局验证码开关', 'SYS_BASE', 'B端全局验证码开关', 8, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967463', 'SNOWY_SYS_DEFAULT_FILE_ENGINE', 'LOCAL', 'SYS_BASE', '默认文件存储引擎', 9, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967464', 'SNOWY_SYS_DEFAULT_PASSWORD_FOR_B', '123456', 'PASSWORD_STRATEGY_FOR_B', 'B端默认用户密码', 10, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967465', 'SNOWY_SYS_DEFAULT_DESCRRIPTION', 'Snowy是一款国内首例国产密码算法加密框架采用Vue3.0+AntDesignVue3.0+SpringBoot2.8前后分离技术打造,技术框架与密码的结合,让前后分离‘密’不可分!', 'SYS_BASE', '系统描述', 11, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967465', 'SNOWY_SYS_DEFAULT_DESCRRIPTION', 'Snowy是一款国内首例国产密码算法加密框架采用Vue3.x+AntDesignVue4.x+SpringBoot3.x前后分离技术打造,技术框架与密码的结合,让前后分离‘密’不可分!', 'SYS_BASE', '系统描述', 11, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967466', 'SNOWY_SYS_DEFAULT_WORKBENCH_DATA', '{\"shortcut\":[{\"id\":\"1548901111999770526\",\"title\":\"系统首页\",\"icon\":\"home-outlined\",\"path\":\"/index\"}]}', 'SYS_BASE', '系统默认工作台数据', 12, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967558', 'SNOWY_THIRD_GITEE_CLIENT_ID', 'GiteeClientId', 'THIRD_GITEE', 'GiteeClientId', 13, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967559', 'SNOWY_THIRD_GITEE_CLIENT_SECRET', 'GiteeClientSecret', 'THIRD_GITEE', 'GiteeClientSecret', 14, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
@ -987,8 +987,8 @@ CREATE TABLE `SYS_ORG_EXT` (
`ID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL,
`ORG_ID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '组织id',
`SOURCE_FROM_TYPE` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '来源类别',
`ID_SOURCE_ID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '身份源ID',
`ID_SOURCE_ORG_ID` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '身份源机构ID',
`ID_SOURCE_ID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '身份源ID',
`ID_SOURCE_ORG_ID` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '身份源机构ID',
`DELETE_FLAG` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '删除标志',
`CREATE_TIME` datetime NULL DEFAULT NULL COMMENT '创建时间',
`CREATE_USER` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '创建用户',