14 Commits

Author SHA1 Message Date
6b28dba11b (〃'▽'〃) v2025.10 发布:新增工作流的工单打印、优化物联网的场景联动、完善 vben5 的 antd、vben 版本的功能 2025-10-12 15:29:18 +08:00
6caed15c1a !827 fix: 修复 Editor 切换 readonly 时只读状态无效的 bug
Merge pull request !827 from 局外人/fix/editor
2025-10-12 06:57:52 +00:00
5bc3c9090b fix: 修复 Editor 切换 readonly 时只读状态无效的 bug 2025-10-10 18:20:50 +08:00
2e1ef8aee4 fix:修复引入plugin-mention插件后Editor组件报错 2025-10-10 17:00:55 +08:00
9bc289cb2a fix:更新按钮文本为“添加销售产品”并修复支付信息展示逻辑 2025-10-06 20:45:35 +08:00
bdb42bb927 fix:【修复】产品跳转到设备列表时,productId 未传递的问题,对应 https://t.zsxq.com/jvXyq 2025-10-02 11:25:34 +08:00
62a9a99146 fix:【pay 支付】微信支付 publicKeyContent 调整为非必填,兼容 https://t.zsxq.com/ODR5V、https://gitee.com/yudaocode/yudao-ui-admin-vue3/issues/ICUE53 2025-10-02 10:24:22 +08:00
13386def62 fix:前端的密码长度限制统一,https://gitee.com/yudaocode/yudao-ui-admin-vue3/issues/ICVDAT 2025-10-02 09:41:54 +08:00
a126f42c35 fix:【bpm 工作流】已办任务的审批状态过滤不正确 2025-10-02 09:36:06 +08:00
eda7d63e4f Merge branch 'dev' of https://gitee.com/yudaocode/yudao-ui-admin-vue3 2025-10-01 15:56:31 +08:00
d076d75c38 !813 update src/store/modules/tagsView.ts.
Merge pull request !813 from 口口口/N/A
2025-09-21 02:48:31 +00:00
3137c6cee4 !818 雪花 ID 溢出问题 update src/views/mall/promotion/rewardActivity/components/RewardRuleCouponSelect.vue.
Merge pull request !818 from 山野羡民/N/A
2025-09-21 02:47:33 +00:00
722d6405a1 雪花 ID 溢出问题 update src/views/mall/promotion/rewardActivity/components/RewardRuleCouponSelect.vue.
Signed-off-by: 山野羡民 <liyujiang_tk@yeah.net>
2025-09-05 03:58:12 +00:00
bd506fab0d update src/store/modules/tagsView.ts.
当存在多个相同名称的标签时,删除缓存应该排除是否存在相同的名称。

Signed-off-by: 口口口 <17975121@qq.com>
2025-08-20 03:32:41 +00:00
11 changed files with 46 additions and 24 deletions

View File

@ -1,6 +1,6 @@
{
"name": "yudao-ui-admin-vue3",
"version": "2025.09-snapshot",
"version": "2025.10-snapshot",
"description": "基于vue3、vite4、element-plus、typesScript",
"author": "xingyu",
"private": false,

View File

@ -58,6 +58,16 @@ watch(
emit('update:modelValue', val)
}
)
watch(
() => props.readonly,
(val) => {
if (val) {
editorRef.value?.disable()
} else {
editorRef.value?.enable()
}
}
)
const handleCreated = (editor: IDomEditor) => {
editorRef.value = editor
@ -90,6 +100,12 @@ const editorConfig = computed((): IEditorConfig => {
},
autoFocus: false,
scroll: true,
EXTEND_CONF: {
mentionConfig: {
showModal: () => {},
hideModal: () => {}
}
},
MENU_CONF: {
['uploadImage']: {
server: getUploadUrl(),

View File

@ -93,6 +93,11 @@ export const useTagsViewStore = defineStore('tagsView', {
delCachedView() {
const route = router.currentRoute.value
const index = findIndex<string>(this.getCachedViews, (v) => v === route.name)
for (const v of this.visitedViews) {
if (v.name === route.name) {
return
}
}
if (index > -1) {
this.cachedViews.delete(this.getCachedViews[index])
}

View File

@ -44,11 +44,11 @@ const equalToPassword = (_rule, value, callback) => {
const rules = reactive<FormRules>({
oldPassword: [
{ required: true, message: t('profile.password.oldPwdMsg'), trigger: 'blur' },
{ min: 6, max: 20, message: t('profile.password.pwdRules'), trigger: 'blur' }
{ min: 4, max: 16, message: t('profile.password.pwdRules'), trigger: 'blur' }
],
newPassword: [
{ required: true, message: t('profile.password.newPwdMsg'), trigger: 'blur' },
{ min: 6, max: 20, message: t('profile.password.pwdRules'), trigger: 'blur' }
{ min: 4, max: 16, message: t('profile.password.pwdRules'), trigger: 'blur' }
],
confirmPassword: [
{ required: true, message: t('profile.password.cfPwdMsg'), trigger: 'blur' },

View File

@ -52,13 +52,13 @@
<el-form-item label="" prop="status" :style="{ position: 'absolute', right: '130px' }">
<el-select
v-model="queryParams.status"
placeholder="请选择流程状态"
placeholder="请选择审批状态"
clearable
class="!w-155px"
@change="handleQuery"
>
<el-option
v-for="dict in getIntDictOptions(DICT_TYPE.BPM_PROCESS_INSTANCE_STATUS)"
v-for="dict in getIntDictOptions(DICT_TYPE.BPM_TASK_STATUS)"
:key="dict.value"
:label="dict.label"
:value="dict.value"

View File

@ -132,7 +132,7 @@
</el-table>
</el-form>
<el-row justify="center" class="mt-3" v-if="!disabled">
<el-button @click="handleAdd" round>+ 添加采购产品</el-button>
<el-button @click="handleAdd" round>+ 添加销售产品</el-button>
</el-row>
</template>
<script setup lang="ts">

View File

@ -384,6 +384,7 @@ defineOptions({ name: 'IoTDevice' })
const message = useMessage() // 消息弹窗
const { t } = useI18n() // 国际化
const route = useRoute()
const loading = ref(true) // 列表加载中
const list = ref<DeviceVO[]>([]) // 列表的数据
@ -392,7 +393,7 @@ const queryParams = reactive({
pageNo: 1,
pageSize: 10,
deviceName: undefined,
productId: undefined,
productId: undefined as number | undefined,
deviceType: undefined,
nickname: undefined,
status: undefined,
@ -513,7 +514,12 @@ const handleImport = () => {
/** 初始化 **/
onMounted(async () => {
getList()
// 处理 productId 参数
const { productId } = route.query
if (productId) {
queryParams.productId = Number(productId)
}
await getList()
// 获取产品列表
products.value = await ProductApi.getSimpleProductList()

View File

@ -72,7 +72,7 @@ const copyToClipboard = async (text: string) => {
/** 路由跳转到设备管理 */
const { push } = useRouter()
const goToDeviceList = (productId: number) => {
push({ name: 'IoTDevice', params: { productId } })
push({ name: 'IoTDevice', query: { productId } })
}
/** 修改操作 */

View File

@ -89,9 +89,7 @@ const initGiveCouponList = async () => {
if (isEmpty(rewardRule.value) || isEmpty(rewardRule.value.giveCouponTemplateCounts)) {
return
}
const tempLateIds = Object.keys(rewardRule.value.giveCouponTemplateCounts!).map((item) =>
parseInt(item)
)
const tempLateIds = Object.keys(rewardRule.value.giveCouponTemplateCounts!)
const data = await CouponTemplateApi.getCouponTemplateList(tempLateIds)
if (!data) {
return

View File

@ -147,7 +147,11 @@
前往微信商户平台查看证书序列号
</a>
</el-form-item>
<el-form-item label="public_key.pem 证书" label-width="180px" prop="config.publicKeyContent">
<el-form-item
label="public_key.pem 证书"
label-width="180px"
prop="config.publicKeyContent"
>
<el-input
v-model="formData.config.publicKeyContent"
:autosize="{ minRows: 2, maxRows: 4 }"
@ -174,17 +178,10 @@
</el-upload>
</el-form-item>
<el-form-item label="公钥 ID" label-width="180px" prop="config.publicKeyId">
<el-input
v-model="formData.config.publicKeyId"
clearable
placeholder="请输入公钥 ID"
/>
<el-input v-model="formData.config.publicKeyId" clearable placeholder="请输入公钥 ID" />
</el-form-item>
<el-form-item label-width="180px">
<a
href="https://pay.weixin.qq.com/doc/v3/merchant/4012153196"
target="_blank"
>
<a href="https://pay.weixin.qq.com/doc/v3/merchant/4012153196" target="_blank">
微信支付公钥产品简介及使用说明
</a>
</el-form-item>
@ -246,7 +243,6 @@ const formRules = {
{ required: true, message: '请上传 apiclient_key.pem 证书', trigger: 'blur' }
],
'config.certSerialNo': [{ required: true, message: '请输入证书序列号', trigger: 'blur' }],
'config.publicKeyContent': [{ required: true, message: '请上传 public_key.pem 证书', trigger: 'blur' }],
'config.publicKeyId': [{ required: true, message: '请输入公钥 ID', trigger: 'blur' }],
'config.apiV3Key': [{ required: true, message: '请上传 api V3 密钥值', trigger: 'blur' }]
}

View File

@ -238,7 +238,6 @@ const getDetail = async () => {
return
}
const data = await PayOrderApi.getOrder(id.value, true)
payOrder.value = data
// 1.2 无法查询到支付信息
if (!data) {
message.error('支付订单不存在,请检查!')
@ -255,6 +254,8 @@ const getDetail = async () => {
goReturnUrl('close')
return
}
// 2. 正常展示支付信息
payOrder.value = data
}
/** 提交支付 */