From afe28d83c9fce29ee20a606a8908bffe791cccfb Mon Sep 17 00:00:00 2001 From: DevDengChao <2325690622@qq.com> Date: Mon, 20 May 2024 11:02:00 +0800 Subject: [PATCH 001/124] =?UTF-8?q?feat:=20=E6=96=B0=E5=A2=9E=E5=BF=AB?= =?UTF-8?q?=E9=80=9F=E5=BC=80=E5=85=B3=E8=8F=9C=E5=8D=95=E7=9A=84=E6=8C=89?= =?UTF-8?q?=E9=92=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/system/menu/index.vue | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/src/views/system/menu/index.vue b/src/views/system/menu/index.vue index bf64a807..49e76b05 100644 --- a/src/views/system/menu/index.vue +++ b/src/views/system/menu/index.vue @@ -84,9 +84,18 @@ - + @@ -127,8 +136,10 @@ import { DICT_TYPE, getIntDictOptions } from '@/utils/dict' import { handleTree } from '@/utils/tree' import * as MenuApi from '@/api/system/menu' +import { MenuVO } from '@/api/system/menu' import MenuForm from './MenuForm.vue' import { CACHE_KEY, useCache } from '@/hooks/web/useCache' +import { CommonStatusEnum } from '@/utils/constants' defineOptions({ name: 'SystemMenu' }) @@ -137,6 +148,7 @@ const { t } = useI18n() // 国际化 const message = useMessage() // 消息弹窗 const loading = ref(true) // 列表的加载中 +const menuStatusUpdating = ref({}) // 列表的加载中 const list = ref([]) // 列表的数据 const queryParams = reactive({ name: undefined, @@ -208,6 +220,13 @@ const handleDelete = async (id: number) => { } catch {} } +const onMenuStatusChanged = async (menu: MenuVO, val: number) => { + menuStatusUpdating.value[menu.id] = true + menu.status = val + await MenuApi.updateMenu(menu) + menuStatusUpdating.value[menu.id] = false +} + /** 初始化 **/ onMounted(() => { getList() From 372e2215f01be07c9850e3cdd498d74439df4822 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E5=85=86=E7=90=A6?= <1361001127@qq.com> Date: Mon, 12 Aug 2024 16:14:52 +0800 Subject: [PATCH 002/124] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E3=80=91=E6=B7=BB=E5=8A=A0=E5=95=86=E5=93=81=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=E6=97=B6=E5=85=81=E8=AE=B8=E9=80=89=E6=8B=A9=E5=B7=B2?= =?UTF-8?q?=E6=9C=89=E7=9A=84=E5=B1=9E=E6=80=A7=E5=80=BC=20Fixes=20#47?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mall/product/spu/components/SkuList.vue | 6 +-- .../mall/product/spu/components/index.ts | 1 + .../product/spu/form/ProductAttributes.vue | 27 ++++++++++-- .../spu/form/ProductPropertyAddForm.vue | 41 ++++++++++++++++++- src/views/mall/product/spu/form/SkuForm.vue | 29 +++++++++++-- 5 files changed, 93 insertions(+), 11 deletions(-) diff --git a/src/views/mall/product/spu/components/SkuList.vue b/src/views/mall/product/spu/components/SkuList.vue index 9bbd38e4..2b881a46 100644 --- a/src/views/mall/product/spu/components/SkuList.vue +++ b/src/views/mall/product/spu/components/SkuList.vue @@ -24,7 +24,7 @@ > @@ -168,7 +168,7 @@ > @@ -248,7 +248,7 @@ > diff --git a/src/views/mall/product/spu/components/index.ts b/src/views/mall/product/spu/components/index.ts index e2cbe73d..5569bc99 100644 --- a/src/views/mall/product/spu/components/index.ts +++ b/src/views/mall/product/spu/components/index.ts @@ -5,6 +5,7 @@ interface PropertyAndValues { id: number name: string values?: PropertyAndValues[] + propertyOpts?: PropertyAndValues[] } interface RuleConfig { diff --git a/src/views/mall/product/spu/form/ProductAttributes.vue b/src/views/mall/product/spu/form/ProductAttributes.vue index ffe7397d..88515829 100644 --- a/src/views/mall/product/spu/form/ProductAttributes.vue +++ b/src/views/mall/product/spu/form/ProductAttributes.vue @@ -18,16 +18,28 @@ > {{ value.name }} - + > + + + { const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 const handleInputConfirm = async (index: number, propertyId: number) => { if (inputValue.value) { + // 重复添加校验 + if (attributeList.value[index].values.find((item) => item.name === inputValue.value)) { + message.warning('已存在相同属性值,请重试') + attributeIndex.value = null + inputValue.value = '' + return + } // 保存属性值 try { const id = await PropertyApi.createPropertyValue({ propertyId, name: inputValue.value }) diff --git a/src/views/mall/product/spu/form/ProductPropertyAddForm.vue b/src/views/mall/product/spu/form/ProductPropertyAddForm.vue index 15c5a8d5..6fc9f912 100644 --- a/src/views/mall/product/spu/form/ProductPropertyAddForm.vue +++ b/src/views/mall/product/spu/form/ProductPropertyAddForm.vue @@ -10,7 +10,22 @@ @keydown.enter.prevent="submitForm" > - + + + From cc1d2b194dd1e07bc9e92a94f748f99f01d12f53 Mon Sep 17 00:00:00 2001 From: preschool Date: Wed, 14 Aug 2024 15:26:52 +0800 Subject: [PATCH 015/124] =?UTF-8?q?=F0=9F=8E=88=20perf:=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E5=8A=A8=E6=80=81=E8=B7=AF=E7=94=B1=E5=9C=A8=E9=A6=96=E6=AC=A1?= =?UTF-8?q?=E5=8A=A0=E8=BD=BD=E6=97=B6=E6=9C=AA=E5=8C=B9=E9=85=8D=E5=AF=BC?= =?UTF-8?q?=E8=87=B4=E8=AD=A6=E5=91=8A=E3=80=81=E8=B7=AF=E7=94=B1=E4=B8=8D?= =?UTF-8?q?=E5=AD=98=E5=9C=A8=E6=97=B6=E4=BF=9D=E7=95=99=E9=94=99=E8=AF=AF?= =?UTF-8?q?=E8=B7=AF=E5=BE=84?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/router/modules/remaining.ts | 10 ++++++++++ src/store/modules/permission.ts | 4 +++- 2 files changed, 13 insertions(+), 1 deletion(-) diff --git a/src/router/modules/remaining.ts b/src/router/modules/remaining.ts index ef79752f..bf2ba2bb 100644 --- a/src/router/modules/remaining.ts +++ b/src/router/modules/remaining.ts @@ -593,6 +593,16 @@ const remainingRouter: AppRouteRecordRaw[] = [ } } ] + }, + { + path: '/:pathMatch(.*)*', + component: () => import('@/views/Error/404.vue'), + name: '', + meta: { + title: '404', + hidden: true, + breadcrumb: false + } } ] diff --git a/src/store/modules/permission.ts b/src/store/modules/permission.ts index 5e3287a7..fc927f42 100644 --- a/src/store/modules/permission.ts +++ b/src/store/modules/permission.ts @@ -40,10 +40,12 @@ export const usePermissionStore = defineStore('permission', { } const routerMap: AppRouteRecordRaw[] = generateRoute(res) // 动态路由,404一定要放到最后面 + // preschooler:vue-router@4以后已支持静态404路由,此处可不再追加 this.addRouters = routerMap.concat([ { path: '/:path(.*)*', - redirect: '/404', + // redirect: '/404', + component: () => import('@/views/Error/404.vue'), name: '404Page', meta: { hidden: true, From 8c2ecbd7aa2e21a14ce67b2bccd2a11a3270052b Mon Sep 17 00:00:00 2001 From: preschool Date: Wed, 14 Aug 2024 17:31:26 +0800 Subject: [PATCH 016/124] =?UTF-8?q?=F0=9F=8E=88=20perf:=E4=BC=98=E5=8C=96?= =?UTF-8?q?=E6=A0=87=E7=AD=BE=E6=A0=8F=E5=9B=BE=E6=A0=87=E5=8F=96=E5=80=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/layout/components/TagsView/src/TagsView.vue | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/src/layout/components/TagsView/src/TagsView.vue b/src/layout/components/TagsView/src/TagsView.vue index 7db0cf6f..01610968 100644 --- a/src/layout/components/TagsView/src/TagsView.vue +++ b/src/layout/components/TagsView/src/TagsView.vue @@ -358,12 +358,13 @@ watch( > From 4925273c0b2469e1fdc4c2d0557fb644f97d9994 Mon Sep 17 00:00:00 2001 From: zqx Date: Wed, 14 Aug 2024 19:09:59 +0800 Subject: [PATCH 017/124] =?UTF-8?q?=E6=9B=B4=E6=96=B0element-plus=E4=BE=9D?= =?UTF-8?q?=E8=B5=96=EF=BC=8C=E4=BF=AE=E5=A4=8DBug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/package.json b/package.json index 48d16a27..8da17220 100644 --- a/package.json +++ b/package.json @@ -47,7 +47,7 @@ "driver.js": "^1.3.1", "echarts": "^5.5.0", "echarts-wordcloud": "^2.1.0", - "element-plus": "2.7.0", + "element-plus": "2.8.0", "fast-xml-parser": "^4.3.2", "highlight.js": "^11.9.0", "jsencrypt": "^3.3.2", From 2dc738a6e7e336a8a08249624c8cee7045251ddc Mon Sep 17 00:00:00 2001 From: YunaiV Date: Wed, 14 Aug 2024 21:54:21 +0800 Subject: [PATCH 018/124] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E3=80=91=E6=B7=BB=E5=8A=A0=E5=95=86=E5=93=81=E5=B1=9E?= =?UTF-8?q?=E6=80=A7=E6=97=B6=E5=85=81=E8=AE=B8=E9=80=89=E6=8B=A9=E5=B7=B2?= =?UTF-8?q?=E6=9C=89=E7=9A=84=E5=B1=9E=E6=80=A7=E5=80=BC=EF=BC=8C=E7=82=B9?= =?UTF-8?q?=E5=87=BB=E3=80=8C=E9=80=89=E6=8B=A9=E3=80=8D=E5=90=8E=EF=BC=8C?= =?UTF-8?q?=E8=8E=B7=E5=8F=96=20value=20=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../product/spu/form/ProductAttributes.vue | 16 ++++++++-- .../spu/form/ProductPropertyAddForm.vue | 30 +++++++++++-------- 2 files changed, 31 insertions(+), 15 deletions(-) diff --git a/src/views/mall/product/spu/form/ProductAttributes.vue b/src/views/mall/product/spu/form/ProductAttributes.vue index 7b4fc37c..30b17747 100644 --- a/src/views/mall/product/spu/form/ProductAttributes.vue +++ b/src/views/mall/product/spu/form/ProductAttributes.vue @@ -123,15 +123,25 @@ const showInput = async (index: number) => { const emit = defineEmits(['success']) // 定义 success 事件,用于操作成功后的回调 const handleInputConfirm = async (index: number, propertyId: number) => { if (inputValue.value) { - // 重复添加校验 - // TODO @芋艿:需要测试下 + // 1. 重复添加校验 if (attributeList.value[index].values.find((item) => item.name === inputValue.value)) { message.warning('已存在相同属性值,请重试') attributeIndex.value = null inputValue.value = '' return } - // 保存属性值 + + // 2.1 情况一:属性值已存在,则直接使用并结束 + const existValue = attributeOptions.value.find((item) => item.name === inputValue.value) + if (existValue) { + attributeIndex.value = null + inputValue.value = '' + attributeList.value[index].values.push({ id: existValue.id, name: existValue.name }) + emit('success', attributeList.value) + return + } + + // 2.2 情况二:新属性值,则进行保存 try { const id = await PropertyApi.createPropertyValue({ propertyId, name: inputValue.value }) attributeList.value[index].values.push({ id, name: inputValue.value }) diff --git a/src/views/mall/product/spu/form/ProductPropertyAddForm.vue b/src/views/mall/product/spu/form/ProductPropertyAddForm.vue index 3c07cd74..455fbbb2 100644 --- a/src/views/mall/product/spu/form/ProductPropertyAddForm.vue +++ b/src/views/mall/product/spu/form/ProductPropertyAddForm.vue @@ -83,18 +83,32 @@ defineExpose({ open }) // 提供 open 方法,用于打开弹窗 /** 提交表单 */ const submitForm = async () => { - // 情况一:如果是已存在的属性,直接结束,不提交表单新增 + // 1.1 重复添加校验 for (const attrItem of attributeList.value) { if (attrItem.name === formData.value.name) { return message.error('该属性已存在,请勿重复添加') } } - - // 情况二:如果是不存在的属性,则需要执行新增 - // 校验表单 + // 1.2 校验表单 if (!formRef) return const valid = await formRef.value.validate() if (!valid) return + + // 2.1 情况一:属性名已存在,则直接使用并结束 + const existProperty = attributeOptions.value.find((item) => item.name === formData.value.name) + if (existProperty) { + // 添加到属性列表 + attributeList.value.push({ + id: existProperty.id, + ...formData.value, + values: [] + }) + // 关闭弹窗 + dialogVisible.value = false + return + } + + // 2.2 情况二:如果是不存在的属性,则需要执行新增 // 提交请求 formLoading.value = true try { @@ -106,14 +120,6 @@ const submitForm = async () => { ...formData.value, values: [] }) - // 判断最终提交的属性名称是否是用户下拉选择的 自己手动输入的属性名称就不执行emit获取该属性名下属性值列表 - for (const element of attributeOptions.value) { - if (element.name === formData.value.name) { - message.success(t('common.createSuccess')) - dialogVisible.value = false - return - } - } // 关闭弹窗 message.success(t('common.createSuccess')) dialogVisible.value = false From bcfb98cb37a63166cd198b14762f200fe4e90164 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E5=85=86=E7=90=A6?= <1361001127@qq.com> Date: Thu, 15 Aug 2024 16:28:35 +0800 Subject: [PATCH 019/124] =?UTF-8?q?feat:=20=E5=88=9D=E5=A7=8B=E5=8C=96?= =?UTF-8?q?=E4=BC=9A=E5=91=98=E8=AF=A6=E6=83=85-=E5=94=AE=E5=90=8E?= =?UTF-8?q?=E7=AE=A1=E7=90=86=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../member/user/detail/UserAftersaleList.vue | 271 ++++++++++++++++++ src/views/member/user/detail/index.vue | 5 +- 2 files changed, 275 insertions(+), 1 deletion(-) create mode 100644 src/views/member/user/detail/UserAftersaleList.vue diff --git a/src/views/member/user/detail/UserAftersaleList.vue b/src/views/member/user/detail/UserAftersaleList.vue new file mode 100644 index 00000000..46a172df --- /dev/null +++ b/src/views/member/user/detail/UserAftersaleList.vue @@ -0,0 +1,271 @@ + + diff --git a/src/views/member/user/detail/index.vue b/src/views/member/user/detail/index.vue index 6237cca6..52862c3c 100644 --- a/src/views/member/user/detail/index.vue +++ b/src/views/member/user/detail/index.vue @@ -47,7 +47,9 @@ - 售后管理(WIP) + + + @@ -79,6 +81,7 @@ import UserOrderList from './UserOrderList.vue' import UserPointList from './UserPointList.vue' import UserSignList from './UserSignList.vue' import UserFavoriteList from './UserFavoriteList.vue' +import UserAfterSaleList from './UserAftersaleList.vue' import { CardTitle } from '@/components/Card/index' import { ElMessage } from 'element-plus' From 6afcfdd50c35ec9e1d7bbd94c0a3be9bf1b3bad8 Mon Sep 17 00:00:00 2001 From: tb Date: Thu, 15 Aug 2024 21:52:32 +0800 Subject: [PATCH 020/124] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E3=80=91=E6=94=AF=E6=8C=81=E9=98=BF=E9=87=8C=E6=8E=A5?= =?UTF-8?q?=E5=8F=A3=E5=86=85=E5=AE=B9=E5=8A=A0=E5=AF=86=EF=BC=8C=E5=90=8C?= =?UTF-8?q?=E6=97=B6=E4=BF=AE=E5=A4=8D=E6=94=AF=E4=BB=98=E5=AE=9D=E6=B8=A0?= =?UTF-8?q?=E9=81=93=E9=85=8D=E7=BD=AE=E5=89=8D=E7=AB=AF=E6=A0=A1=E9=AA=8C?= =?UTF-8?q?=E4=B8=8D=E7=94=9F=E6=95=88=E7=9A=84=E9=97=AE=E9=A2=98=20#IAKCU?= =?UTF-8?q?4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/channel/AlipayChannelForm.vue | 27 ++++++++++++++++--- 1 file changed, 23 insertions(+), 4 deletions(-) diff --git a/src/views/pay/app/components/channel/AlipayChannelForm.vue b/src/views/pay/app/components/channel/AlipayChannelForm.vue index 169ef8ea..579d1eed 100644 --- a/src/views/pay/app/components/channel/AlipayChannelForm.vue +++ b/src/views/pay/app/components/channel/AlipayChannelForm.vue @@ -4,7 +4,7 @@ @@ -156,6 +156,20 @@ + + + + AES + 无加密 + + + +
+ + + +
+ @@ -195,7 +209,9 @@ const formData = ref({ alipayPublicKey: '', appCertContent: '', alipayPublicCertContent: '', - rootCertContent: '' + rootCertContent: '', + encryptType: '', + encryptKey: '', } }) const formRules = { @@ -213,7 +229,8 @@ const formRules = { 'config.alipayPublicCertContent': [ { required: true, message: '请上传支付宝公钥证书', trigger: 'blur' } ], - 'config.rootCertContent': [{ required: true, message: '请上传指定根证书', trigger: 'blur' }] + 'config.rootCertContent': [{ required: true, message: '请上传指定根证书', trigger: 'blur' }], + 'config.encryptKey': [{required: true, message: '请输入接口内容加密密钥', trigger: 'blur'}], } const fileAccept = '.crt' const formRef = ref() // 表单 Ref @@ -281,7 +298,9 @@ const resetForm = (appId, code) => { alipayPublicKey: '', appCertContent: '', alipayPublicCertContent: '', - rootCertContent: '' + rootCertContent: '', + encryptType: 'AES', + encryptKey: '', } } formRef.value?.resetFields() From 16c919ce02c82b1424b7c8c83c390da4b611db12 Mon Sep 17 00:00:00 2001 From: preschool Date: Thu, 15 Aug 2024 10:08:23 +0800 Subject: [PATCH 021/124] =?UTF-8?q?=F0=9F=8E=88=20perf:=E9=81=BF=E5=85=8D?= =?UTF-8?q?=E8=A1=A8=E5=8D=95=E5=80=BC=E8=A2=AB=E5=90=8E=E7=BB=AD=E5=87=BD?= =?UTF-8?q?=E6=95=B0=E4=BF=AE=E6=94=B9=E5=AF=BC=E8=87=B4=E9=A1=B5=E9=9D=A2?= =?UTF-8?q?=E5=BC=82=E5=B8=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/Login/SocialLogin.vue | 9 +++++---- src/views/Login/components/LoginForm.vue | 9 +++++---- 2 files changed, 10 insertions(+), 8 deletions(-) diff --git a/src/views/Login/SocialLogin.vue b/src/views/Login/SocialLogin.vue index 00bc9fe5..9f877a95 100644 --- a/src/views/Login/SocialLogin.vue +++ b/src/views/Login/SocialLogin.vue @@ -276,10 +276,11 @@ const handleLogin = async (params) => { const code = route?.query?.code as string const state = route?.query?.state as string + const loginDataLoginForm = { ...loginData.loginForm } const res = await LoginApi.login({ // 账号密码登录 - username: loginData.loginForm.username, - password: loginData.loginForm.password, + username: loginDataLoginForm.username, + password: loginDataLoginForm.password, captchaVerification: params.captchaVerification, // 社交登录 socialCode: code, @@ -294,8 +295,8 @@ const handleLogin = async (params) => { text: '正在加载系统中...', background: 'rgba(0, 0, 0, 0.7)' }) - if (loginData.loginForm.rememberMe) { - authUtil.setLoginForm(loginData.loginForm) + if (loginDataLoginForm.rememberMe) { + authUtil.setLoginForm(loginDataLoginForm) } else { authUtil.removeLoginForm() } diff --git a/src/views/Login/components/LoginForm.vue b/src/views/Login/components/LoginForm.vue index 3dbaff3f..0bdf55c5 100644 --- a/src/views/Login/components/LoginForm.vue +++ b/src/views/Login/components/LoginForm.vue @@ -249,8 +249,9 @@ const handleLogin = async (params) => { if (!data) { return } - loginData.loginForm.captchaVerification = params.captchaVerification - const res = await LoginApi.login(loginData.loginForm) + const loginDataLoginForm = { ...loginData.loginForm } + loginDataLoginForm.captchaVerification = params.captchaVerification + const res = await LoginApi.login(loginDataLoginForm) if (!res) { return } @@ -259,8 +260,8 @@ const handleLogin = async (params) => { text: '正在加载系统中...', background: 'rgba(0, 0, 0, 0.7)' }) - if (loginData.loginForm.rememberMe) { - authUtil.setLoginForm(loginData.loginForm) + if (loginDataLoginForm.rememberMe) { + authUtil.setLoginForm(loginDataLoginForm) } else { authUtil.removeLoginForm() } From bd88d29340267761bcf5da31748fc282f8186f98 Mon Sep 17 00:00:00 2001 From: preschooler Date: Thu, 15 Aug 2024 16:30:47 +0800 Subject: [PATCH 022/124] =?UTF-8?q?=E2=9C=A8=20feat:=E6=96=B0=E6=80=8E?= =?UTF-8?q?=E6=A0=87=E7=AD=BE=E9=A1=B5=E6=B2=89=E6=B5=B8=E5=BC=8F=E6=95=88?= =?UTF-8?q?=E6=9E=9C=EF=BC=8C=E9=BB=98=E8=AE=A4=E6=9C=AA=E5=BC=80=E5=90=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/layout/components/Setting/src/Setting.vue | 2 + .../src/components/InterfaceDisplay.vue | 12 +++++ .../components/TagsView/src/TagsView.vue | 52 ++++++++++++++++--- src/locales/zh-CN.ts | 1 + src/store/modules/app.ts | 8 +++ 5 files changed, 69 insertions(+), 6 deletions(-) diff --git a/src/layout/components/Setting/src/Setting.vue b/src/layout/components/Setting/src/Setting.vue index e1908b63..717472ac 100644 --- a/src/layout/components/Setting/src/Setting.vue +++ b/src/layout/components/Setting/src/Setting.vue @@ -126,6 +126,8 @@ const copyConfig = async () => { message: ${appStore.getMessage}, // 标签页 tagsView: ${appStore.getTagsView}, + // 标签页 + tagsViewImmerse: ${appStore.getTagsViewImmerse}, // 标签页图标 getTagsViewIcon: ${appStore.getTagsViewIcon}, // logo diff --git a/src/layout/components/Setting/src/components/InterfaceDisplay.vue b/src/layout/components/Setting/src/components/InterfaceDisplay.vue index ebbbf4bc..3ba5c6b0 100644 --- a/src/layout/components/Setting/src/components/InterfaceDisplay.vue +++ b/src/layout/components/Setting/src/components/InterfaceDisplay.vue @@ -73,6 +73,13 @@ const tagsViewChange = (show: boolean) => { appStore.setTagsView(show) } +// 标签页沉浸 +const tagsViewImmerse = ref(appStore.getTagsViewImmerse) + +const tagsViewImmerseChange = (immerse: boolean) => { + appStore.setTagsViewImmerse(immerse) +} + // 标签页图标 const tagsViewIcon = ref(appStore.getTagsViewIcon) @@ -181,6 +188,11 @@ watch( +
+ {{ t('setting.tagsViewImmerse') }} + +
+
{{ t('setting.tagsViewIcon') }} diff --git a/src/layout/components/TagsView/src/TagsView.vue b/src/layout/components/TagsView/src/TagsView.vue index 01610968..cdd7494d 100644 --- a/src/layout/components/TagsView/src/TagsView.vue +++ b/src/layout/components/TagsView/src/TagsView.vue @@ -33,6 +33,8 @@ const affixTagArr = ref([]) const appStore = useAppStore() +const tagsViewImmerse = computed(() => appStore.getTagsViewImmerse) + const tagsViewIcon = computed(() => appStore.getTagsViewIcon) const isDark = computed(() => appStore.getIsDark) @@ -266,7 +268,7 @@ watch( class="relative w-full flex bg-[#fff] dark:bg-[var(--el-bg-color)]" > @@ -343,6 +345,9 @@ watch( :tag-item="item" :class="[ `${prefixCls}__item`, + tagsViewImmerse ? `${prefixCls}__item--immerse` : '', + tagsViewIcon ? `${prefixCls}__item--icon` : '', + tagsViewImmerse && tagsViewIcon ? `${prefixCls}__item--immerse--icon` : '', item?.meta?.affix ? `${prefixCls}__item--affix` : '', { 'is-active': isActive(item) @@ -354,7 +359,7 @@ watch(
@@ -395,7 +400,7 @@ watch( /> @@ -460,7 +465,7 @@ watch( ]" > Date: Fri, 16 Aug 2024 00:56:00 +0000 Subject: [PATCH 023/124] =?UTF-8?q?update=20src/views/mall/product/spu/for?= =?UTF-8?q?m/ProductAttributes.vue.=20=E6=B7=BB=E5=8A=A0=E5=95=86=E5=93=81?= =?UTF-8?q?=E5=B1=9E=E6=80=A7=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 口口口 <17975121@qq.com> --- src/views/mall/product/spu/form/ProductAttributes.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/mall/product/spu/form/ProductAttributes.vue b/src/views/mall/product/spu/form/ProductAttributes.vue index 30b17747..d62002f9 100644 --- a/src/views/mall/product/spu/form/ProductAttributes.vue +++ b/src/views/mall/product/spu/form/ProductAttributes.vue @@ -74,7 +74,7 @@ const inputRef = ref([]) //标签输入框Ref const setInputRef = (el: any) => { if (el === null || typeof el === 'undefined') return // 如果不存在 id 相同的元素才添加 - if (!inputRef.value.some((item) => item.input?.attributes.id === el.input?.attributes.id)) { + if (!inputRef.value.some((item) => item.inputRef?.attributes.id === el.inputRef?.attributes.id)) { inputRef.value.push(el) } } From 61fb71c010dbafd437afcee011c71c56aad9a486 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=BB=84=E5=85=86=E7=90=A6?= <1361001127@qq.com> Date: Fri, 16 Aug 2024 09:15:59 +0800 Subject: [PATCH 024/124] =?UTF-8?q?chore:=20=E5=A2=9E=E5=8A=A0TODO?= =?UTF-8?q?=E6=B3=A8=E9=87=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/member/user/detail/UserAftersaleList.vue | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/views/member/user/detail/UserAftersaleList.vue b/src/views/member/user/detail/UserAftersaleList.vue index 46a172df..d13e243b 100644 --- a/src/views/member/user/detail/UserAftersaleList.vue +++ b/src/views/member/user/detail/UserAftersaleList.vue @@ -198,7 +198,7 @@ const queryFormRef = ref() // 搜索的表单 const queryParams = ref({ pageNo: 1, pageSize: 10, - userId: userId, + userId, no: null, status: '0', orderNo: null, @@ -217,6 +217,7 @@ const getList = async () => { delete data.status } // 执行查询 + // TODO @芋艿:接口需要通过userId进行筛选返回值 const res = (await AfterSaleApi.getAfterSalePage(data)) as AfterSaleApi.TradeAfterSaleVO[] list.value = res.list total.value = res.total From 3b445d031fc7ce2764745f58bf73b74d219f3af1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=A2=E8=B6=8A?= <552369664@qq.com> Date: Fri, 16 Aug 2024 13:49:08 +0800 Subject: [PATCH 025/124] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E3=80=91=E4=BF=AE=E5=A4=8D=E8=A3=85=E4=BF=AE=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E7=9A=84=E6=8B=BC=E5=9B=A2=E4=BB=B7=E6=A0=BC=E5=92=8C?= =?UTF-8?q?=E7=A7=92=E6=9D=80=E4=BB=B7=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/api/mall/product/spu.ts | 2 ++ .../mall/promotion/seckill/seckillActivity.ts | 1 + .../mobile/PromotionCombination/index.vue | 15 ++++++++++++++- .../components/mobile/PromotionSeckill/index.vue | 16 +++++++++++++++- 4 files changed, 32 insertions(+), 2 deletions(-) diff --git a/src/api/mall/product/spu.ts b/src/api/mall/product/spu.ts index eee632d5..d44c0f64 100644 --- a/src/api/mall/product/spu.ts +++ b/src/api/mall/product/spu.ts @@ -50,6 +50,8 @@ export interface Spu { giveIntegral?: number // 赠送积分 virtualSalesCount?: number // 虚拟销量 price?: number // 商品价格 + combinationPrice?: number // 商品拼团价格 + seckillPrice?: number // 商品秒杀价格 salesCount?: number // 商品销量 marketPrice?: number // 市场价 costPrice?: number // 成本价 diff --git a/src/api/mall/promotion/seckill/seckillActivity.ts b/src/api/mall/promotion/seckill/seckillActivity.ts index e8346410..4bb0e8b1 100644 --- a/src/api/mall/promotion/seckill/seckillActivity.ts +++ b/src/api/mall/promotion/seckill/seckillActivity.ts @@ -24,6 +24,7 @@ export interface SeckillActivityVO { // 秒杀活动所需属性 export interface SeckillProductVO { skuId: number + spuId: number seckillPrice: number stock: number } diff --git a/src/components/DiyEditor/components/mobile/PromotionCombination/index.vue b/src/components/DiyEditor/components/mobile/PromotionCombination/index.vue index fe6f3a83..ee4061de 100644 --- a/src/components/DiyEditor/components/mobile/PromotionCombination/index.vue +++ b/src/components/DiyEditor/components/mobile/PromotionCombination/index.vue @@ -54,7 +54,7 @@ class="text-12px" :style="{ color: property.fields.price.color }" > - ¥{{ spu.price }} + ¥{{ fenToYuan(spu.combinationPrice || spu.price || 0) }}
@@ -66,6 +66,9 @@ import { PromotionCombinationProperty } from './config' import * as ProductSpuApi from '@/api/mall/product/spu' import * as CombinationActivityApi from '@/api/mall/promotion/combination/combinationActivity' +import {Spu} from "@/api/mall/product/spu"; +import {CombinationProductVO} from "@/api/mall/promotion/combination/combinationActivity"; +import {fenToYuan} from "@/utils"; /** 拼团 */ defineOptions({ name: 'PromotionCombination' }) @@ -80,6 +83,16 @@ watch( const activity = await CombinationActivityApi.getCombinationActivity(props.property.activityId) if (!activity?.spuId) return spuList.value = [await ProductSpuApi.getSpu(activity.spuId)] + // 循环活动信息,赋值拼团价格 + activity.products.forEach((product: CombinationProductVO) => { + spuList.value.forEach((spu: Spu) => { + // 如果商品 SpuId 匹配 + if (spu.id === product.spuId) { + // 商品原售价和拼团价,哪个便宜就赋值哪个 + spu.combinationPrice = Math.min(spu.price || 0, product.combinationPrice); // 设置 SPU 的最低价格 + } + }) + }); }, { immediate: true, diff --git a/src/components/DiyEditor/components/mobile/PromotionSeckill/index.vue b/src/components/DiyEditor/components/mobile/PromotionSeckill/index.vue index 1b4113b6..139bf61b 100644 --- a/src/components/DiyEditor/components/mobile/PromotionSeckill/index.vue +++ b/src/components/DiyEditor/components/mobile/PromotionSeckill/index.vue @@ -54,7 +54,7 @@ class="text-12px" :style="{ color: property.fields.price.color }" > - ¥{{ spu.price }} + ¥{{ fenToYuan(spu.seckillPrice || spu.price || 0) }} @@ -66,6 +66,9 @@ import { PromotionSeckillProperty } from './config' import * as ProductSpuApi from '@/api/mall/product/spu' import * as SeckillActivityApi from '@/api/mall/promotion/seckill/seckillActivity' +import {Spu} from "@/api/mall/product/spu"; +import {SeckillProductVO} from "@/api/mall/promotion/seckill/seckillActivity"; +import {fenToYuan} from "@/utils"; /** 秒杀 */ defineOptions({ name: 'PromotionSeckill' }) @@ -80,6 +83,17 @@ watch( const activity = await SeckillActivityApi.getSeckillActivity(props.property.activityId) if (!activity?.spuId) return spuList.value = [await ProductSpuApi.getSpu(activity.spuId)] + spuList.value = [await ProductSpuApi.getSpu(activity.spuId)] + // 循环活动信息,赋值拼团价格 + activity.products.forEach((product: SeckillProductVO) => { + spuList.value.forEach((spu: Spu) => { + // 如果商品 SpuId 匹配 + if (spu.id === product.spuId) { + // 商品原售价和拼团价,哪个便宜就赋值哪个 + spu.seckillPrice = Math.min(spu.price || 0, product.seckillPrice); // 设置 SPU 的最低价格 + } + }) + }); }, { immediate: true, From 4130b2fec52b4676eea3a2a54abde1e3564cb577 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E5=8D=A2=E8=B6=8A?= <552369664@qq.com> Date: Fri, 16 Aug 2024 14:42:43 +0800 Subject: [PATCH 026/124] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E3=80=91=E4=BF=AE=E5=A4=8D=E8=A3=85=E4=BF=AE=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E7=9A=84=E6=8B=BC=E5=9B=A2=E4=BB=B7=E6=A0=BC=E5=92=8C?= =?UTF-8?q?=E7=A7=92=E6=9D=80=E4=BB=B7=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/mobile/PromotionCombination/index.vue | 7 ++----- .../components/mobile/PromotionSeckill/index.vue | 8 ++------ 2 files changed, 4 insertions(+), 11 deletions(-) diff --git a/src/components/DiyEditor/components/mobile/PromotionCombination/index.vue b/src/components/DiyEditor/components/mobile/PromotionCombination/index.vue index ee4061de..7bb7176a 100644 --- a/src/components/DiyEditor/components/mobile/PromotionCombination/index.vue +++ b/src/components/DiyEditor/components/mobile/PromotionCombination/index.vue @@ -86,11 +86,8 @@ watch( // 循环活动信息,赋值拼团价格 activity.products.forEach((product: CombinationProductVO) => { spuList.value.forEach((spu: Spu) => { - // 如果商品 SpuId 匹配 - if (spu.id === product.spuId) { - // 商品原售价和拼团价,哪个便宜就赋值哪个 - spu.combinationPrice = Math.min(spu.price || 0, product.combinationPrice); // 设置 SPU 的最低价格 - } + // 商品原售价和拼团价,哪个便宜就赋值哪个 + spu.combinationPrice = Math.min(spu.combinationPrice || Infinity, product.combinationPrice); // 设置 SPU 的最低价格 }) }); }, diff --git a/src/components/DiyEditor/components/mobile/PromotionSeckill/index.vue b/src/components/DiyEditor/components/mobile/PromotionSeckill/index.vue index 139bf61b..63bee8eb 100644 --- a/src/components/DiyEditor/components/mobile/PromotionSeckill/index.vue +++ b/src/components/DiyEditor/components/mobile/PromotionSeckill/index.vue @@ -84,14 +84,10 @@ watch( if (!activity?.spuId) return spuList.value = [await ProductSpuApi.getSpu(activity.spuId)] spuList.value = [await ProductSpuApi.getSpu(activity.spuId)] - // 循环活动信息,赋值拼团价格 + // 循环活动信息,赋值秒杀最低价格 activity.products.forEach((product: SeckillProductVO) => { spuList.value.forEach((spu: Spu) => { - // 如果商品 SpuId 匹配 - if (spu.id === product.spuId) { - // 商品原售价和拼团价,哪个便宜就赋值哪个 - spu.seckillPrice = Math.min(spu.price || 0, product.seckillPrice); // 设置 SPU 的最低价格 - } + spu.seckillPrice = Math.min(spu.seckillPrice || Infinity, product.seckillPrice); // 设置 SPU 的最低价格 }) }); }, From 13b630b9ce91608e555d802c45beb3ecf31e0fa0 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Fri, 16 Aug 2024 20:39:25 +0800 Subject: [PATCH 027/124] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E4=BF=AE?= =?UTF-8?q?=E5=A4=8D=E3=80=91=E4=BF=AE=E5=A4=8D=E8=A3=85=E4=BF=AE=E9=A1=B5?= =?UTF-8?q?=E9=9D=A2=E7=9A=84=E6=8B=BC=E5=9B=A2=E4=BB=B7=E6=A0=BC=E5=92=8C?= =?UTF-8?q?=E7=A7=92=E6=9D=80=E4=BB=B7=E6=A0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/mobile/PromotionCombination/index.vue | 10 +++++----- .../components/mobile/PromotionSeckill/index.vue | 10 +++++----- 2 files changed, 10 insertions(+), 10 deletions(-) diff --git a/src/components/DiyEditor/components/mobile/PromotionCombination/index.vue b/src/components/DiyEditor/components/mobile/PromotionCombination/index.vue index 7bb7176a..41f1f9d7 100644 --- a/src/components/DiyEditor/components/mobile/PromotionCombination/index.vue +++ b/src/components/DiyEditor/components/mobile/PromotionCombination/index.vue @@ -66,9 +66,9 @@ import { PromotionCombinationProperty } from './config' import * as ProductSpuApi from '@/api/mall/product/spu' import * as CombinationActivityApi from '@/api/mall/promotion/combination/combinationActivity' -import {Spu} from "@/api/mall/product/spu"; -import {CombinationProductVO} from "@/api/mall/promotion/combination/combinationActivity"; -import {fenToYuan} from "@/utils"; +import { Spu } from '@/api/mall/product/spu' +import { CombinationProductVO } from '@/api/mall/promotion/combination/combinationActivity' +import { fenToYuan } from '@/utils' /** 拼团 */ defineOptions({ name: 'PromotionCombination' }) @@ -87,9 +87,9 @@ watch( activity.products.forEach((product: CombinationProductVO) => { spuList.value.forEach((spu: Spu) => { // 商品原售价和拼团价,哪个便宜就赋值哪个 - spu.combinationPrice = Math.min(spu.combinationPrice || Infinity, product.combinationPrice); // 设置 SPU 的最低价格 + spu.combinationPrice = Math.min(spu.combinationPrice || Infinity, product.combinationPrice) // 设置 SPU 的最低价格 }) - }); + }) }, { immediate: true, diff --git a/src/components/DiyEditor/components/mobile/PromotionSeckill/index.vue b/src/components/DiyEditor/components/mobile/PromotionSeckill/index.vue index 63bee8eb..6360a044 100644 --- a/src/components/DiyEditor/components/mobile/PromotionSeckill/index.vue +++ b/src/components/DiyEditor/components/mobile/PromotionSeckill/index.vue @@ -66,9 +66,9 @@ import { PromotionSeckillProperty } from './config' import * as ProductSpuApi from '@/api/mall/product/spu' import * as SeckillActivityApi from '@/api/mall/promotion/seckill/seckillActivity' -import {Spu} from "@/api/mall/product/spu"; -import {SeckillProductVO} from "@/api/mall/promotion/seckill/seckillActivity"; -import {fenToYuan} from "@/utils"; +import { Spu } from '@/api/mall/product/spu' +import { SeckillProductVO } from '@/api/mall/promotion/seckill/seckillActivity' +import { fenToYuan } from '@/utils' /** 秒杀 */ defineOptions({ name: 'PromotionSeckill' }) @@ -87,9 +87,9 @@ watch( // 循环活动信息,赋值秒杀最低价格 activity.products.forEach((product: SeckillProductVO) => { spuList.value.forEach((spu: Spu) => { - spu.seckillPrice = Math.min(spu.seckillPrice || Infinity, product.seckillPrice); // 设置 SPU 的最低价格 + spu.seckillPrice = Math.min(spu.seckillPrice || Infinity, product.seckillPrice) // 设置 SPU 的最低价格 }) - }); + }) }, { immediate: true, From 254d1e032246484351dc2c728319b7378756df4a Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 18 Aug 2024 13:02:21 +0800 Subject: [PATCH 028/124] =?UTF-8?q?=E3=80=90=E5=8A=9F=E8=83=BD=E6=96=B0?= =?UTF-8?q?=E5=A2=9E=E3=80=91=E5=95=86=E5=9F=8E=EF=BC=9A=E5=94=AE=E5=90=8E?= =?UTF-8?q?=E5=88=86=E9=A1=B5=E6=9F=A5=E8=AF=A2=EF=BC=8C=E6=94=AF=E6=8C=81?= =?UTF-8?q?=20userId=20=E8=BF=87=E6=BB=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/mall/trade/afterSale/index.vue | 10 +++++++--- src/views/member/user/detail/UserAftersaleList.vue | 11 +++++++---- 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/src/views/mall/trade/afterSale/index.vue b/src/views/mall/trade/afterSale/index.vue index 52051c35..c34d8949 100644 --- a/src/views/mall/trade/afterSale/index.vue +++ b/src/views/mall/trade/afterSale/index.vue @@ -135,7 +135,7 @@
- + @@ -206,6 +206,7 @@ const queryParams = reactive({ way: null, type: null }) + /** 查询列表 */ const getList = async () => { loading.value = true @@ -216,23 +217,26 @@ const getList = async () => { delete data.status } // 执行查询 - const res = (await AfterSaleApi.getAfterSalePage(data)) as AfterSaleApi.TradeAfterSaleVO[] - list.value = res.list + const res = await AfterSaleApi.getAfterSalePage(data) + list.value = res.list as AfterSaleApi.TradeAfterSaleVO[] total.value = res.total } finally { loading.value = false } } + /** 搜索按钮操作 */ const handleQuery = async () => { queryParams.pageNo = 1 await getList() } + /** 重置按钮操作 */ const resetQuery = () => { queryFormRef.value?.resetFields() handleQuery() } + /** tab 切换 */ const tabClick = async (tab: TabsPaneContext) => { queryParams.status = tab.paneName diff --git a/src/views/member/user/detail/UserAftersaleList.vue b/src/views/member/user/detail/UserAftersaleList.vue index d13e243b..faffcc18 100644 --- a/src/views/member/user/detail/UserAftersaleList.vue +++ b/src/views/member/user/detail/UserAftersaleList.vue @@ -133,12 +133,11 @@ - + - @@ -196,6 +196,8 @@ + + @@ -207,8 +209,9 @@ import UserForm from './UserForm.vue' import MemberTagSelect from '@/views/member/tag/components/MemberTagSelect.vue' import MemberLevelSelect from '@/views/member/level/components/MemberLevelSelect.vue' import MemberGroupSelect from '@/views/member/group/components/MemberGroupSelect.vue' -import UserLevelUpdateForm from './UserLevelUpdateForm.vue' -import UserPointUpdateForm from './UserPointUpdateForm.vue' +import UserLevelUpdateForm from './components/UserLevelUpdateForm.vue' +import UserPointUpdateForm from './components/UserPointUpdateForm.vue' +import UserBalanceUpdateForm from './components/UserBalanceUpdateForm.vue' import { CouponSendForm } from '@/views/mall/promotion/coupon/components' import { checkPermi } from '@/utils/permission' @@ -233,6 +236,7 @@ const queryParams = reactive({ const queryFormRef = ref() // 搜索的表单 const updateLevelFormRef = ref() // 修改会员等级表单 const updatePointFormRef = ref() // 修改会员积分表单 +const UpdateBalanceFormRef = ref() // 修改用户余额表单 const selectedIds = ref([]) // 表格的选中 ID 数组 /** 查询列表 */ @@ -299,7 +303,7 @@ const handleCommand = (command: string, row: UserApi.UserVO) => { updatePointFormRef.value.open(row.id) break case 'handleUpdateBlance': - // todo @jason:增加一个【修改余额】 + UpdateBalanceFormRef.value.open(row.id) break default: break From 43ad93cd20592e54344c3dfcad6ce7025a6bcc1b Mon Sep 17 00:00:00 2001 From: puhui999 Date: Mon, 19 Aug 2024 18:04:46 +0800 Subject: [PATCH 036/124] =?UTF-8?q?=E3=80=90=E4=BB=A3=E7=A0=81=E4=BC=98?= =?UTF-8?q?=E5=8C=96=E3=80=91MALL:=20=E4=BC=9A=E5=91=98=E4=BF=AE=E6=94=B9?= =?UTF-8?q?=E4=BD=99=E9=A2=9D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/member/user/components/UserBalanceUpdateForm.vue | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/views/member/user/components/UserBalanceUpdateForm.vue b/src/views/member/user/components/UserBalanceUpdateForm.vue index c9d9ad50..c18e37e5 100644 --- a/src/views/member/user/components/UserBalanceUpdateForm.vue +++ b/src/views/member/user/components/UserBalanceUpdateForm.vue @@ -110,7 +110,7 @@ const submitForm = async () => { try { await UserApi.updateUserBalance({ id: formData.value.id, - balance: convertToInteger(balanceResult.value) + balance: convertToInteger(formData.value.changeBalance) * formData.value.changeType }) message.success(t('common.updateSuccess')) From 5dc11f844db3d6e662383e2c2b7b4dd800b0884f Mon Sep 17 00:00:00 2001 From: YunaiV Date: Mon, 19 Aug 2024 22:15:00 +0800 Subject: [PATCH 037/124] =?UTF-8?q?=E3=80=90=E4=BB=A3=E7=A0=81=E8=AF=84?= =?UTF-8?q?=E5=AE=A1=E3=80=91=E4=BC=9A=E5=91=98=EF=BC=9A=E4=BC=9A=E5=91=98?= =?UTF-8?q?=E8=AF=A6=E6=83=85=E7=9A=84=20TODO?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/views/member/user/components/UserBalanceUpdateForm.vue | 2 +- src/views/member/user/detail/UserBalanceList.vue | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/src/views/member/user/components/UserBalanceUpdateForm.vue b/src/views/member/user/components/UserBalanceUpdateForm.vue index c18e37e5..0cd76a8b 100644 --- a/src/views/member/user/components/UserBalanceUpdateForm.vue +++ b/src/views/member/user/components/UserBalanceUpdateForm.vue @@ -57,7 +57,7 @@ const formLoading = ref(false) // 表单的加载中:1)修改时的数据加 const formData = ref({ id: undefined, nickname: undefined, - balance: '0', + balance: '0', // TODO @puhui999:貌似有 el-input-number 的报错,看看怎么解决。应该可以 changeBalance: 0, changeType: 1 }) diff --git a/src/views/member/user/detail/UserBalanceList.vue b/src/views/member/user/detail/UserBalanceList.vue index 4e1a1460..08179e07 100644 --- a/src/views/member/user/detail/UserBalanceList.vue +++ b/src/views/member/user/detail/UserBalanceList.vue @@ -2,7 +2,6 @@ - From 30605fba76497c5a7c6fa283e5c7dbc1c19afceb Mon Sep 17 00:00:00 2001 From: preschooler Date: Mon, 19 Aug 2024 23:55:53 +0800 Subject: [PATCH 038/124] =?UTF-8?q?=F0=9F=8C=88=20style:=E5=BE=AE=E8=B0=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/layout/components/TabMenu/src/TabMenu.vue | 2 +- src/layout/components/TagsView/src/TagsView.vue | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/src/layout/components/TabMenu/src/TabMenu.vue b/src/layout/components/TabMenu/src/TabMenu.vue index b70464c1..0fe90e21 100644 --- a/src/layout/components/TabMenu/src/TabMenu.vue +++ b/src/layout/components/TabMenu/src/TabMenu.vue @@ -199,7 +199,7 @@ export default defineComponent({ { '!left-[var(--tab-menu-min-width)]': unref(collapse), '!left-[var(--tab-menu-max-width)]': !unref(collapse), - '!w-[calc(var(--left-menu-max-width)+1px)]': unref(showMenu) || unref(fixedMenu), + '!w-[var(--left-menu-max-width)]': unref(showMenu) || unref(fixedMenu), '!w-0': !unref(showMenu) && !unref(fixedMenu) } ]} diff --git a/src/layout/components/TagsView/src/TagsView.vue b/src/layout/components/TagsView/src/TagsView.vue index cdd7494d..14d95e10 100644 --- a/src/layout/components/TagsView/src/TagsView.vue +++ b/src/layout/components/TagsView/src/TagsView.vue @@ -491,10 +491,10 @@ $prefix-cls: #{$namespace}-tags-view; &::before { position: absolute; - top: 1px; + top: 0; left: 0; width: 100%; - height: calc(100% - 1px); + height: 100%; border-left: 1px solid var(--el-border-color); content: ''; } @@ -502,10 +502,10 @@ $prefix-cls: #{$namespace}-tags-view; &--first { &::before { position: absolute; - top: 1px; + top: 0; left: 0; width: 100%; - height: calc(100% - 1px); + height: 100%; border-right: 1px solid var(--el-border-color); border-left: none; content: ''; From dea9ef8cd15af000594d8d675f11611511370334 Mon Sep 17 00:00:00 2001 From: preschooler Date: Thu, 15 Aug 2024 11:49:58 +0800 Subject: [PATCH 039/124] =?UTF-8?q?=F0=9F=8E=88=20perf:el-radio=E7=9A=84la?= =?UTF-8?q?bel=E5=B1=9E=E6=80=A7=E4=BF=AE=E6=94=B9=E4=B8=BAvalue=E4=BB=A5?= =?UTF-8?q?=E5=85=BC=E5=AE=B9=E4=B8=8B=E4=B8=AA=E7=89=88=E6=9C=AC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/components/Crontab/src/Crontab.vue | 66 +++++++++---------- .../components/ComponentContainerProperty.vue | 4 +- .../components/mobile/Carousel/property.vue | 12 ++-- .../components/mobile/CouponCard/property.vue | 6 +- .../components/mobile/Divider/property.vue | 6 +- .../mobile/FloatingActionButton/property.vue | 4 +- .../components/mobile/MenuGrid/property.vue | 4 +- .../components/mobile/MenuSwiper/property.vue | 14 ++-- .../NavigationBar/components/CellProperty.vue | 6 +- .../mobile/NavigationBar/property.vue | 12 ++-- .../components/mobile/Popover/property.vue | 4 +- .../mobile/ProductCard/property.vue | 10 +-- .../mobile/ProductList/property.vue | 6 +- .../mobile/PromotionCombination/property.vue | 4 +- .../mobile/PromotionSeckill/property.vue | 4 +- .../components/mobile/SearchBar/property.vue | 8 +-- .../components/mobile/TabBar/property.vue | 4 +- .../components/mobile/TitleBar/property.vue | 10 +-- .../ShortcutDateRangePicker/index.vue | 6 +- src/views/Profile/components/BasicInfo.vue | 6 +- src/views/ai/model/apiKey/ApiKeyForm.vue | 2 +- .../ai/model/chatModel/ChatModelForm.vue | 2 +- src/views/ai/model/chatRole/ChatRoleForm.vue | 6 +- src/views/ai/music/index/mode/index.vue | 20 ++---- src/views/bpm/category/CategoryForm.vue | 2 +- src/views/bpm/form/editor/index.vue | 2 +- src/views/bpm/group/UserGroupForm.vue | 2 +- src/views/bpm/model/ModelForm.vue | 2 +- .../ProcessExpressionForm.vue | 2 +- .../detail/dialog/TaskSignDeleteForm.vue | 2 +- .../processListener/ProcessListenerForm.vue | 2 +- src/views/crm/contact/ContactForm.vue | 2 +- src/views/crm/contract/config/index.vue | 4 +- src/views/crm/customer/poolConfig/index.vue | 8 +-- .../permission/components/PermissionForm.vue | 2 +- .../permission/components/TransferForm.vue | 6 +- src/views/erp/finance/account/AccountForm.vue | 2 +- .../product/category/ProductCategoryForm.vue | 2 +- src/views/erp/product/product/ProductForm.vue | 2 +- .../erp/product/unit/ProductUnitForm.vue | 2 +- .../components/PurchaseOrderInEnableList.vue | 2 +- .../PurchaseOrderReturnEnableList.vue | 2 +- .../erp/purchase/supplier/SupplierForm.vue | 2 +- src/views/erp/sale/customer/CustomerForm.vue | 2 +- .../components/SaleOrderOutEnableList.vue | 2 +- .../components/SaleOrderReturnEnableList.vue | 2 +- .../erp/stock/warehouse/WarehouseForm.vue | 2 +- .../codegen/components/GenerateInfoForm.vue | 4 +- src/views/infra/config/ConfigForm.vue | 2 +- .../infra/demo/demo01/Demo01ContactForm.vue | 2 +- .../demo/demo03/erp/Demo03StudentForm.vue | 2 +- .../demo/demo03/inner/Demo03StudentForm.vue | 2 +- .../demo/demo03/normal/Demo03StudentForm.vue | 2 +- src/views/infra/fileConfig/FileConfigForm.vue | 4 +- .../mall/home/components/TradeTrendCard.vue | 2 +- src/views/mall/product/brand/BrandForm.vue | 2 +- .../mall/product/category/CategoryForm.vue | 2 +- .../product/spu/components/SkuTableSelect.vue | 2 +- .../product/spu/components/SpuTableSelect.vue | 2 +- src/views/mall/product/spu/form/SkuForm.vue | 8 +-- .../mall/promotion/article/ArticleForm.vue | 6 +- .../article/category/ArticleCategoryForm.vue | 2 +- .../mall/promotion/banner/BannerForm.vue | 4 +- .../coupon/template/CouponTemplateForm.vue | 10 +-- .../mall/promotion/diy/template/decorate.vue | 2 +- .../promotion/rewardActivity/RewardForm.vue | 4 +- .../seckill/config/SeckillConfigForm.vue | 2 +- .../user/BrokerageOrderListDialog.vue | 4 +- .../user/BrokerageUserListDialog.vue | 4 +- src/views/mall/trade/config/index.vue | 4 +- .../trade/delivery/express/ExpressForm.vue | 2 +- .../expressTemplate/ExpressTemplateForm.vue | 2 +- .../delivery/pickUpStore/PickUpStoreForm.vue | 2 +- .../trade/order/form/OrderDeliveryForm.vue | 4 +- src/views/member/group/GroupForm.vue | 2 +- src/views/member/level/LevelForm.vue | 2 +- .../member/signin/config/SignInConfigForm.vue | 2 +- src/views/member/user/UserForm.vue | 4 +- src/views/member/user/UserPointUpdateForm.vue | 4 +- .../member/user/detail/UserBrokerageList.vue | 4 +- src/views/pay/app/components/AppForm.vue | 2 +- .../components/channel/AlipayChannelForm.vue | 12 ++-- .../components/channel/MockChannelForm.vue | 2 +- .../components/channel/WalletChannelForm.vue | 2 +- .../components/channel/WeixinChannelForm.vue | 6 +- .../pay/demo/transfer/DemoTransferForm.vue | 2 +- src/views/pay/transfer/CreatePayTransfer.vue | 4 +- .../WalletRechargePackageForm.vue | 2 +- src/views/system/dict/DictTypeForm.vue | 2 +- src/views/system/dict/data/DictDataForm.vue | 2 +- src/views/system/menu/MenuForm.vue | 14 ++-- .../notify/template/NotifyTemplateForm.vue | 2 +- .../template/NotifyTemplateSendForm.vue | 2 +- src/views/system/oauth2/client/ClientForm.vue | 2 +- .../system/sms/channel/SmsChannelForm.vue | 2 +- .../system/sms/template/SmsTemplateForm.vue | 2 +- .../system/social/client/SocialClientForm.vue | 6 +- src/views/system/tenant/TenantForm.vue | 2 +- .../tenantPackage/TenantPackageForm.vue | 2 +- 99 files changed, 227 insertions(+), 233 deletions(-) diff --git a/src/components/Crontab/src/Crontab.vue b/src/components/Crontab/src/Crontab.vue index e61fef89..0914bb71 100644 --- a/src/components/Crontab/src/Crontab.vue +++ b/src/components/Crontab/src/Crontab.vue @@ -548,10 +548,10 @@ const inputChange = () => { - 任意值 - 范围 - 间隔 - 指定 + 任意值 + 范围 + 间隔 + 指定 @@ -607,10 +607,10 @@ const inputChange = () => { - 任意值 - 范围 - 间隔 - 指定 + 任意值 + 范围 + 间隔 + 指定 @@ -666,10 +666,10 @@ const inputChange = () => { - 任意值 - 范围 - 间隔 - 指定 + 任意值 + 范围 + 间隔 + 指定 @@ -725,12 +725,12 @@ const inputChange = () => { - 任意值 - 范围 - 间隔 - 指定 - 本月最后一天 - 不指定 + 任意值 + 范围 + 间隔 + 指定 + 本月最后一天 + 不指定 @@ -786,10 +786,10 @@ const inputChange = () => { - 任意值 - 范围 - 间隔 - 指定 + 任意值 + 范围 + 间隔 + 指定 @@ -846,12 +846,12 @@ const inputChange = () => { - 任意值 - 范围 - 间隔 - 指定 - 本月最后一周 - 不指定 + 任意值 + 范围 + 间隔 + 指定 + 本月最后一周 + 不指定 @@ -925,11 +925,11 @@ const inputChange = () => { - 忽略 - 任意值 - 范围 - 间隔 - 指定 + 忽略 + 任意值 + 范围 + 间隔 + 指定 diff --git a/src/components/DiyEditor/components/ComponentContainerProperty.vue b/src/components/DiyEditor/components/ComponentContainerProperty.vue index 9d0750da..25119a5b 100644 --- a/src/components/DiyEditor/components/ComponentContainerProperty.vue +++ b/src/components/DiyEditor/components/ComponentContainerProperty.vue @@ -11,8 +11,8 @@ - 纯色 - 图片 + 纯色 + 图片 diff --git a/src/components/DiyEditor/components/mobile/Carousel/property.vue b/src/components/DiyEditor/components/mobile/Carousel/property.vue index c3a51542..e11b032b 100644 --- a/src/components/DiyEditor/components/mobile/Carousel/property.vue +++ b/src/components/DiyEditor/components/mobile/Carousel/property.vue @@ -5,12 +5,12 @@ - + - + @@ -18,8 +18,8 @@ - 小圆点 - 数字 + 小圆点 + 数字 @@ -43,8 +43,8 @@