From 2b0079580b38782354174f909dacfd9a6852398d Mon Sep 17 00:00:00 2001 From: zoumingjun <846027729@qq.com> Date: Sat, 18 Oct 2025 16:32:21 +0800 Subject: [PATCH 001/157] =?UTF-8?q?fix:=20=E4=BF=AE=E5=A4=8Dmock-data.ts?= =?UTF-8?q?=E7=88=B6id=E9=94=99=E8=AF=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/backend-mock/utils/mock-data.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/apps/backend-mock/utils/mock-data.ts b/apps/backend-mock/utils/mock-data.ts index 192f30a00..689de2a16 100644 --- a/apps/backend-mock/utils/mock-data.ts +++ b/apps/backend-mock/utils/mock-data.ts @@ -276,7 +276,7 @@ export const MOCK_MENU_LIST = [ children: [ { id: 20_401, - pid: 201, + pid: 202, name: 'SystemDeptCreate', status: 1, type: 'button', @@ -285,7 +285,7 @@ export const MOCK_MENU_LIST = [ }, { id: 20_402, - pid: 201, + pid: 202, name: 'SystemDeptEdit', status: 1, type: 'button', @@ -294,7 +294,7 @@ export const MOCK_MENU_LIST = [ }, { id: 20_403, - pid: 201, + pid: 202, name: 'SystemDeptDelete', status: 1, type: 'button', From 32051e9ca0aa4577ea79b4d89d011b8dd7498621 Mon Sep 17 00:00:00 2001 From: zoumingjun <846027729@qq.com> Date: Sat, 18 Oct 2025 20:52:24 +0800 Subject: [PATCH 002/157] =?UTF-8?q?fix:=20=E4=BC=98=E5=8C=96=E5=B7=A6?= =?UTF-8?q?=E4=BE=A7=E5=92=8C=E5=8F=B3=E4=BE=A7=E8=AE=A4=E8=AF=81=E9=9D=A2?= =?UTF-8?q?=E6=9D=BF=E5=8A=A8=E7=94=BB=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- packages/@core/base/design/src/css/ui.css | 10 +++++----- .../layouts/src/authentication/authentication.vue | 15 ++++++++++++--- .../effects/layouts/src/authentication/form.vue | 7 ++++++- 3 files changed, 23 insertions(+), 9 deletions(-) diff --git a/packages/@core/base/design/src/css/ui.css b/packages/@core/base/design/src/css/ui.css index 0cf842a07..a1bf02423 100644 --- a/packages/@core/base/design/src/css/ui.css +++ b/packages/@core/base/design/src/css/ui.css @@ -1,5 +1,5 @@ .side-content { - animation-duration: 0.2s; + animation-duration: 0.3s; animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1); } @@ -37,7 +37,7 @@ @keyframes slide-down { from { opacity: 0; - transform: translateY(-10px); + transform: translateY(50px); } to { @@ -49,7 +49,7 @@ @keyframes slide-left { from { opacity: 0; - transform: translateX(-10px); + transform: translateX(-50px); } to { @@ -61,7 +61,7 @@ @keyframes slide-right { from { opacity: 0; - transform: translateX(-10px); + transform: translateX(50px); } to { @@ -73,7 +73,7 @@ @keyframes slide-up { from { opacity: 0; - transform: translateY(10px); + transform: translateY(-50px); } to { diff --git a/packages/effects/layouts/src/authentication/authentication.vue b/packages/effects/layouts/src/authentication/authentication.vue index e66954278..72e31bd3a 100644 --- a/packages/effects/layouts/src/authentication/authentication.vue +++ b/packages/effects/layouts/src/authentication/authentication.vue @@ -50,7 +50,7 @@ const { authPanelCenter, authPanelLeft, authPanelRight, isDark } = - - diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/product-card/property.vue b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/product-card/property.vue index 728ae7827..a05a4bc85 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/product-card/property.vue +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/product-card/property.vue @@ -22,11 +22,15 @@ import { ColorInput } from '#/views/mall/promotion/components'; // TODO: 添加组件 // import SpuShowcase from '#/views/mall/product/spu/components/spu-showcase.vue'; -// 商品卡片属性面板 +import ComponentContainerProperty from '../../component-container-property.vue'; + +/** 商品卡片属性面板 */ defineOptions({ name: 'ProductCardProperty' }); const props = defineProps<{ modelValue: ProductCardProperty }>(); + const emit = defineEmits(['update:modelValue']); + const formData = useVModel(props, 'modelValue', emit); @@ -174,5 +178,3 @@ const formData = useVModel(props, 'modelValue', emit); - - From 7f192823d73b6fc72e6bc0c4efa67c1b7a63db06 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 1 Nov 2025 11:05:04 +0800 Subject: [PATCH 043/157] =?UTF-8?q?review=EF=BC=9A=E3=80=90antd=E3=80=91?= =?UTF-8?q?=E3=80=90mall=E3=80=91=E5=95=86=E5=93=81=E5=8F=91=E5=B8=83?= =?UTF-8?q?=E7=9B=B8=E5=85=B3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mall/promotion/reward/rewardActivity.ts | 1 + .../spu/components/sku-table-select.vue | 21 ++++++------------- .../product/spu/components/spu-showcase.vue | 12 ++++++----- .../spu/components/spu-table-select.vue | 20 ++++++++++-------- .../src/views/mall/product/spu/form/data.ts | 1 + .../product/spu/form/modules/sku-list.vue | 6 +++--- .../coupon/components/coupon-select.vue | 1 + .../mall/promotion/rewardActivity/data.ts | 8 ------- .../mall/promotion/rewardActivity/index.vue | 7 +++---- .../promotion/rewardActivity/modules/form.vue | 4 ++-- .../mall/promotion/seckill/activity/data.ts | 1 - 11 files changed, 35 insertions(+), 47 deletions(-) diff --git a/apps/web-antd/src/api/mall/promotion/reward/rewardActivity.ts b/apps/web-antd/src/api/mall/promotion/reward/rewardActivity.ts index 2faf443b8..e59cad300 100644 --- a/apps/web-antd/src/api/mall/promotion/reward/rewardActivity.ts +++ b/apps/web-antd/src/api/mall/promotion/reward/rewardActivity.ts @@ -18,6 +18,7 @@ export namespace MallRewardActivityApi { export interface RewardActivity { id?: number; // 活动编号 name?: string; // 活动名称 + status?: number; // 活动状态 startTime?: Date; // 开始时间 endTime?: Date; // 结束时间 startAndEndTime?: Date[]; // 开始和结束时间(仅前端使用) diff --git a/apps/web-antd/src/views/mall/product/spu/components/sku-table-select.vue b/apps/web-antd/src/views/mall/product/spu/components/sku-table-select.vue index 3ff82032f..2679a9d4f 100644 --- a/apps/web-antd/src/views/mall/product/spu/components/sku-table-select.vue +++ b/apps/web-antd/src/views/mall/product/spu/components/sku-table-select.vue @@ -8,8 +8,6 @@ import { computed, ref } from 'vue'; import { useVbenModal } from '@vben/common-ui'; import { fenToYuan } from '@vben/utils'; -import { message } from 'ant-design-vue'; - import { useVbenVxeGrid } from '#/adapter/vxe-table'; import { getSpu } from '#/api/mall/product/spu'; @@ -61,6 +59,7 @@ const gridColumns = computed(() => [ }, ]); +// TODO @芋艿:要不要直接非 pager? const [Grid, gridApi] = useVbenVxeGrid({ gridOptions: { columns: gridColumns.value, @@ -76,17 +75,11 @@ const [Grid, gridApi] = useVbenVxeGrid({ if (!spuId.value) { return { items: [], total: 0 }; } - try { - const spu = await getSpu(spuId.value); - return { - items: spu.skus || [], - total: spu.skus?.length || 0, - }; - } catch (error) { - message.error('加载 SKU 数据失败'); - console.error(error); - return { items: [], total: 0 }; - } + const spu = await getSpu(spuId.value); + return { + items: spu.skus || [], + total: spu.skus?.length || 0, + }; }, }, }, @@ -113,12 +106,10 @@ const [Modal, modalApi] = useVbenModal({ spuId.value = undefined; return; } - const data = modalApi.getData(); if (!data?.spuId) { return; } - spuId.value = data.spuId; await gridApi.query(); }, diff --git a/apps/web-antd/src/views/mall/product/spu/components/spu-showcase.vue b/apps/web-antd/src/views/mall/product/spu/components/spu-showcase.vue index 1d75f8a8f..6b0547c20 100644 --- a/apps/web-antd/src/views/mall/product/spu/components/spu-showcase.vue +++ b/apps/web-antd/src/views/mall/product/spu/components/spu-showcase.vue @@ -28,17 +28,19 @@ const emit = defineEmits(['update:modelValue', 'change']); const productSpus = ref([]); const spuTableSelectRef = ref>(); +const isMultiple = computed(() => props.limit !== 1); // 是否为多选模式 /** 计算是否可以添加 */ const canAdd = computed(() => { - if (props.disabled) return false; - if (!props.limit) return true; + if (props.disabled) { + return false; + } + if (!props.limit) { + return true; + } return productSpus.value.length < props.limit; }); -/** 是否为多选模式 */ -const isMultiple = computed(() => props.limit !== 1); - /** 监听 modelValue 变化,加载商品详情 */ watch( () => props.modelValue, diff --git a/apps/web-antd/src/views/mall/product/spu/components/spu-table-select.vue b/apps/web-antd/src/views/mall/product/spu/components/spu-table-select.vue index e503a95f8..46bfb1e92 100644 --- a/apps/web-antd/src/views/mall/product/spu/components/spu-table-select.vue +++ b/apps/web-antd/src/views/mall/product/spu/components/spu-table-select.vue @@ -26,6 +26,7 @@ const emit = defineEmits<{ change: [spu: MallSpuApi.Spu | MallSpuApi.Spu[]]; }>(); +// TODO @芋艿:要不要加类型; const categoryList = ref([]); const categoryTreeList = ref([]); @@ -71,13 +72,11 @@ const formSchema = computed(() => [ /** 表格列配置 */ const gridColumns = computed(() => { const columns: VxeGridProps['columns'] = []; - if (props.multiple) { columns.push({ type: 'checkbox', width: 55 }); } else { columns.push({ type: 'radio', width: 55 }); } - columns.push( { field: 'id', @@ -109,7 +108,6 @@ const gridColumns = computed(() => { }, }, ); - return columns; }); @@ -129,14 +127,15 @@ const [Grid, gridApi] = useVbenVxeGrid({ reserve: true, } : undefined, - radioConfig: !props.multiple - ? { + radioConfig: props.multiple + ? undefined + : { reserve: true, - } - : undefined, + }, proxyConfig: { ajax: { async query({ page }: any, formValues: any) { + // TODO @芋艿:怎么简化下。 const data = await getSpuPage({ pageNo: page.currentPage, pageSize: page.pageSize, @@ -145,7 +144,6 @@ const [Grid, gridApi] = useVbenVxeGrid({ categoryId: formValues.categoryId || undefined, createTime: formValues.createTime || undefined, }); - return { items: data.list || [], total: data.total || 0, @@ -165,6 +163,7 @@ const [Grid, gridApi] = useVbenVxeGrid({ }); /** 多选:处理选中变化 */ +// TODO @芋艿:要不要清理掉? function handleCheckboxChange() { // vxe-table 自动管理选中状态,无需手动处理 } @@ -180,13 +179,16 @@ function handleRadioChange() { const [Modal, modalApi] = useVbenModal({ destroyOnClose: true, + // TODO @芋艿:看看怎么简化 onConfirm: props.multiple ? () => { - const selectedRows = gridApi.grid.getCheckboxRecords() as MallSpuApi.Spu[]; + const selectedRows = + gridApi.grid.getCheckboxRecords() as MallSpuApi.Spu[]; emit('change', selectedRows); modalApi.close(); } : undefined, + // TODO @芋艿:看看怎么简化? async onOpenChange(isOpen: boolean) { if (!isOpen) { gridApi.grid.clearCheckboxRow(); diff --git a/apps/web-antd/src/views/mall/product/spu/form/data.ts b/apps/web-antd/src/views/mall/product/spu/form/data.ts index d2ff7eeb5..3ca6e5c79 100644 --- a/apps/web-antd/src/views/mall/product/spu/form/data.ts +++ b/apps/web-antd/src/views/mall/product/spu/form/data.ts @@ -102,6 +102,7 @@ export function useInfoFormSchema(): VbenFormSchema[] { } /** 价格库存的表单 */ +// TODO @puhui999:貌似太宽了。。。屏幕小的,整个 table 展示补全哈~~ export function useSkuFormSchema( propertyList: any[] = [], isDetail: boolean = false, diff --git a/apps/web-antd/src/views/mall/product/spu/form/modules/sku-list.vue b/apps/web-antd/src/views/mall/product/spu/form/modules/sku-list.vue index 8c3b4a1f1..348f5f22a 100644 --- a/apps/web-antd/src/views/mall/product/spu/form/modules/sku-list.vue +++ b/apps/web-antd/src/views/mall/product/spu/form/modules/sku-list.vue @@ -212,7 +212,9 @@ function build( const result: MallSpuApi.Property[][] = []; const rest = build(propertyValuesList.slice(1)); const firstList = propertyValuesList[0]; - if (!firstList) return []; + if (!firstList) { + return []; + } for (const element of firstList) { for (const element_ of rest) { @@ -289,8 +291,6 @@ defineExpose({ - - From 2e505269220c1e9b3085f83b2e52e3e655e18fe1 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 1 Nov 2025 12:09:10 +0800 Subject: [PATCH 046/157] =?UTF-8?q?feat=EF=BC=9A=E3=80=90mall=E3=80=91diy?= =?UTF-8?q?=20editor=20=E7=9A=84=20promotion-article=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mobile/promotion-article/config.ts | 8 +++---- .../mobile/promotion-article/index.vue | 10 ++++----- .../mobile/promotion-article/property.vue | 21 +++++++++---------- 3 files changed, 17 insertions(+), 22 deletions(-) diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/promotion-article/config.ts b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/promotion-article/config.ts index 9a1fc4194..ac47bf4b5 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/promotion-article/config.ts +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/promotion-article/config.ts @@ -2,13 +2,11 @@ import type { ComponentStyle, DiyComponent } from '../../../util'; /** 营销文章属性 */ export interface PromotionArticleProperty { - // 文章编号 - id: number; - // 组件样式 - style: ComponentStyle; + id: number; // 文章编号 + style: ComponentStyle; // 组件样式 } -// 定义组件 +/** 定义组件 */ export const component = { id: 'PromotionArticle', name: '营销文章', diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/promotion-article/index.vue b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/promotion-article/index.vue index 10e9f5aa3..09f1ff673 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/promotion-article/index.vue +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/promotion-article/index.vue @@ -9,10 +9,10 @@ import * as ArticleApi from '#/api/mall/promotion/article/index'; /** 营销文章 */ defineOptions({ name: 'PromotionArticle' }); -// 定义属性 -const props = defineProps<{ property: PromotionArticleProperty }>(); -// 商品列表 -const article = ref(); + +const props = defineProps<{ property: PromotionArticleProperty }>(); // 定义属性 + +const article = ref(); // 商品列表 watch( () => props.property.id, @@ -29,5 +29,3 @@ watch( - - diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/promotion-article/property.vue b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/promotion-article/property.vue index 7a701c54f..d70503b17 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/promotion-article/property.vue +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/promotion-article/property.vue @@ -12,18 +12,19 @@ import * as ArticleApi from '#/api/mall/promotion/article/index'; import ComponentContainerProperty from '../../component-container-property.vue'; -// 营销文章属性面板 +/** 营销文章属性面板 */ defineOptions({ name: 'PromotionArticleProperty' }); const props = defineProps<{ modelValue: PromotionArticleProperty }>(); -const emit = defineEmits(['update:modelValue']); -const formData = useVModel(props, 'modelValue', emit); -// 文章列表 -const articles = ref([]); -// 加载中 -const loading = ref(false); -// 查询文章列表 +const emit = defineEmits(['update:modelValue']); + +const formData = useVModel(props, 'modelValue', emit); + +const articles = ref([]); // 文章列表 +const loading = ref(false); // 加载中 + +/** 查询文章列表 */ const queryArticleList = async (title?: string) => { loading.value = true; const { list } = await ArticleApi.getArticlePage({ @@ -35,7 +36,7 @@ const queryArticleList = async (title?: string) => { loading.value = false; }; -// 初始化 +/** 初始化 */ onMounted(() => { queryArticleList(); }); @@ -65,5 +66,3 @@ onMounted(() => { - - From 4bb631fb24fd755b380002e564f95270e81654a6 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 1 Nov 2025 19:58:34 +0800 Subject: [PATCH 047/157] =?UTF-8?q?feat=EF=BC=9A=E3=80=90mall=E3=80=91diy?= =?UTF-8?q?=20editor=20=E7=9A=84=20promotion-combination=20=E4=BC=98?= =?UTF-8?q?=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../mobile/promotion-combination/config.ts | 76 +++++++------------ .../mobile/promotion-combination/index.vue | 39 ++++------ .../mobile/promotion-combination/property.vue | 42 +++++----- 3 files changed, 59 insertions(+), 98 deletions(-) diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/promotion-combination/config.ts b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/promotion-combination/config.ts index f0497dc19..f9db86b73 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/promotion-combination/config.ts +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/promotion-combination/config.ts @@ -2,64 +2,40 @@ import type { ComponentStyle, DiyComponent } from '../../../util'; /** 拼团属性 */ export interface PromotionCombinationProperty { - // 布局类型:单列 | 三列 - layoutType: 'oneColBigImg' | 'oneColSmallImg' | 'twoCol'; - // 商品字段 + layoutType: 'oneColBigImg' | 'oneColSmallImg' | 'twoCol'; // 布局类型:单列 | 三列 fields: { - // 商品简介 - introduction: PromotionCombinationFieldProperty; - // 市场价 - marketPrice: PromotionCombinationFieldProperty; - // 商品名称 - name: PromotionCombinationFieldProperty; - // 商品价格 - price: PromotionCombinationFieldProperty; - // 商品销量 - salesCount: PromotionCombinationFieldProperty; - // 商品库存 - stock: PromotionCombinationFieldProperty; - }; - // 角标 + introduction: PromotionCombinationFieldProperty; // 商品简介 + marketPrice: PromotionCombinationFieldProperty; // 市场价 + name: PromotionCombinationFieldProperty; // 商品名称 + price: PromotionCombinationFieldProperty; // 商品价格 + salesCount: PromotionCombinationFieldProperty; // 商品销量 + stock: PromotionCombinationFieldProperty; // 商品库存 + }; // 商品字段 badge: { - // 角标图片 - imgUrl: string; - // 是否显示 - show: boolean; - }; - // 按钮 + imgUrl: string; // 角标图片 + show: boolean; // 是否显示 + }; // 角标 btnBuy: { - // 文字按钮:背景渐变起始颜色 - bgBeginColor: string; - // 文字按钮:背景渐变结束颜色 - bgEndColor: string; - // 图片按钮:图片地址 - imgUrl: string; - // 文字 - text: string; - // 类型:文字 | 图片 - type: 'img' | 'text'; - }; - // 上圆角 - borderRadiusTop: number; - // 下圆角 - borderRadiusBottom: number; - // 间距 - space: number; - // 拼团活动编号 - activityIds: number[]; - // 组件样式 - style: ComponentStyle; + bgBeginColor: string; // 文字按钮:背景渐变起始颜色 + bgEndColor: string; // 文字按钮:背景渐变结束颜色 + imgUrl: string; // 图片按钮:图片地址 + text: string; // 文字 + type: 'img' | 'text'; // 类型:文字 | 图片 + }; // 按钮 + borderRadiusTop: number; // 上圆角 + borderRadiusBottom: number; // 下圆角 + space: number; // 间距 + activityIds: number[]; // 拼团活动编号 + style: ComponentStyle; // 组件样式 } -// 商品字段 +/** 商品字段属性 */ export interface PromotionCombinationFieldProperty { - // 是否显示 - show: boolean; - // 颜色 - color: string; + show: boolean; // 是否显示 + color: string; // 颜色 } -// 定义组件 +/** 定义组件 */ export const component = { id: 'PromotionCombination', name: '拼团', diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/promotion-combination/index.vue b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/promotion-combination/index.vue index 82f1f5bd7..4be26abf4 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/promotion-combination/index.vue +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/promotion-combination/index.vue @@ -15,9 +15,9 @@ import * as CombinationActivityApi from '#/api/mall/promotion/combination/combin /** 拼团卡片 */ defineOptions({ name: 'PromotionCombination' }); -// 定义属性 + const props = defineProps<{ property: PromotionCombinationProperty }>(); -// 商品列表 + const spuList = ref([]); const spuIdList = ref([]); const combinationActivityList = ref< @@ -30,7 +30,7 @@ watch( try { // 新添加的拼团组件,是没有活动ID的 const activityIds = props.property.activityIds; - // 检查活动ID的有效性 + // 检查活动 ID 的有效性 if (Array.isArray(activityIds) && activityIds.length > 0) { // 获取拼团活动详情列表 combinationActivityList.value = @@ -70,28 +70,21 @@ watch( }, ); -/** - * 计算商品的间距 - * @param index 商品索引 - */ -const calculateSpace = (index: number) => { - // 商品的列数 - const columns = props.property.layoutType === 'twoCol' ? 2 : 1; - // 第一列没有左边距 - const marginLeft = index % columns === 0 ? '0' : `${props.property.space}px`; - // 第一行没有上边距 - const marginTop = index < columns ? '0' : `${props.property.space}px`; - +/** 计算商品的间距 */ +function calculateSpace(index: number) { + const columns = props.property.layoutType === 'twoCol' ? 2 : 1; // 商品的列数 + const marginLeft = index % columns === 0 ? '0' : `${props.property.space}px`; // 第一列没有左边距 + const marginTop = index < columns ? '0' : `${props.property.space}px`; // 第一行没有上边距 return { marginLeft, marginTop }; -}; +} -// 容器 const containerRef = ref(); -// 计算商品的宽度 + +/** 计算商品的宽度 */ const calculateWidth = () => { let width = '100%'; - // 双列时每列的宽度为:(总宽度 - 间距)/ 2 if (props.property.layoutType === 'twoCol') { + // 双列时每列的宽度为:(总宽度 - 间距)/ 2 width = `${(containerRef.value.offsetWidth - props.property.space) / 2}px`; } return { width }; @@ -117,7 +110,7 @@ const calculateWidth = () => { >
{
- ¥{{ fenToYuan(spu.marketPrice) }} + ¥{{ fenToYuan(spu.marketPrice!) }}
@@ -229,5 +222,3 @@ const calculateWidth = () => {
- - diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/promotion-combination/property.vue b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/promotion-combination/property.vue index 273580f44..fe222be0b 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/promotion-combination/property.vue +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/promotion-combination/property.vue @@ -1,17 +1,15 @@ @@ -186,5 +182,3 @@ onMounted(async () => { - - From b3e1dab487f6858d7a67152b969f5fe936332dac Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 1 Nov 2025 21:09:29 +0800 Subject: [PATCH 048/157] =?UTF-8?q?feat=EF=BC=9A=E3=80=90ele=E3=80=91?= =?UTF-8?q?=E3=80=90mall=E3=80=91product/spu=20=E7=9A=84=20components=20?= =?UTF-8?q?=E8=BF=81=E7=A7=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../product/spu/components/spu-showcase.vue | 27 +--- .../spu/components/spu-table-select.vue | 135 ++++++++---------- apps/web-ele/src/api/mall/product/category.ts | 2 +- .../mall/product/spu/components/index.ts | 1 - .../spu/components/sku-table-select.vue | 18 +-- .../product/spu/components/spu-showcase.vue | 22 +-- .../spu/components/spu-table-select.vue | 127 +++++++--------- .../src/views/mall/product/spu/data.ts | 2 - 8 files changed, 134 insertions(+), 200 deletions(-) diff --git a/apps/web-antd/src/views/mall/product/spu/components/spu-showcase.vue b/apps/web-antd/src/views/mall/product/spu/components/spu-showcase.vue index 6b0547c20..e1abcb255 100644 --- a/apps/web-antd/src/views/mall/product/spu/components/spu-showcase.vue +++ b/apps/web-antd/src/views/mall/product/spu/components/spu-showcase.vue @@ -26,8 +26,8 @@ const props = withDefaults(defineProps(), { const emit = defineEmits(['update:modelValue', 'change']); -const productSpus = ref([]); -const spuTableSelectRef = ref>(); +const productSpus = ref([]); // 已选择的商品列表 +const spuTableSelectRef = ref>(); // 商品选择表格组件引用 const isMultiple = computed(() => props.limit !== 1); // 是否为多选模式 /** 计算是否可以添加 */ @@ -47,12 +47,10 @@ watch( async (newValue) => { // eslint-disable-next-line unicorn/no-nested-ternary const ids = Array.isArray(newValue) ? newValue : newValue ? [newValue] : []; - if (ids.length === 0) { productSpus.value = []; return; } - // 只有商品发生变化时才重新查询 if ( productSpus.value.length === 0 || @@ -103,16 +101,16 @@ function emitSpuChange() {
+
+
@@ -140,17 +139,3 @@ function emitSpuChange() { @change="handleSpuSelected" /> - - diff --git a/apps/web-antd/src/views/mall/product/spu/components/spu-table-select.vue b/apps/web-antd/src/views/mall/product/spu/components/spu-table-select.vue index 46bfb1e92..236d4c264 100644 --- a/apps/web-antd/src/views/mall/product/spu/components/spu-table-select.vue +++ b/apps/web-antd/src/views/mall/product/spu/components/spu-table-select.vue @@ -2,6 +2,7 @@ diff --git a/apps/web-ele/src/api/mall/product/category.ts b/apps/web-ele/src/api/mall/product/category.ts index 12d7202f4..7ec8bf833 100644 --- a/apps/web-ele/src/api/mall/product/category.ts +++ b/apps/web-ele/src/api/mall/product/category.ts @@ -50,7 +50,7 @@ export function getCategoryList(params: any) { ); } -// 获得商品分类列表 +/** 获得商品分类列表 */ export function getCategorySimpleList() { return requestClient.get( '/product/category/list', diff --git a/apps/web-ele/src/views/mall/product/spu/components/index.ts b/apps/web-ele/src/views/mall/product/spu/components/index.ts index f73d34334..122cbcea0 100644 --- a/apps/web-ele/src/views/mall/product/spu/components/index.ts +++ b/apps/web-ele/src/views/mall/product/spu/components/index.ts @@ -1,4 +1,3 @@ export { default as SkuTableSelect } from './sku-table-select.vue'; export { default as SpuShowcase } from './spu-showcase.vue'; export { default as SpuTableSelect } from './spu-table-select.vue'; - diff --git a/apps/web-ele/src/views/mall/product/spu/components/sku-table-select.vue b/apps/web-ele/src/views/mall/product/spu/components/sku-table-select.vue index af6fdbc1c..11f9f887d 100644 --- a/apps/web-ele/src/views/mall/product/spu/components/sku-table-select.vue +++ b/apps/web-ele/src/views/mall/product/spu/components/sku-table-select.vue @@ -59,6 +59,15 @@ const gridColumns = computed(() => [ }, ]); +/** 处理选中 */ +function handleRadioChange() { + const selectedRow = gridApi.grid.getRadioRecord() as MallSpuApi.Sku; + if (selectedRow) { + emit('change', selectedRow); + modalApi.close(); + } +} + // TODO @芋艿:要不要直接非 pager? const [Grid, gridApi] = useVbenVxeGrid({ gridOptions: { @@ -89,15 +98,6 @@ const [Grid, gridApi] = useVbenVxeGrid({ }, }); -/** 处理选中 */ -function handleRadioChange() { - const selectedRow = gridApi.grid.getRadioRecord() as MallSpuApi.Sku; - if (selectedRow) { - emit('change', selectedRow); - modalApi.close(); - } -} - const [Modal, modalApi] = useVbenModal({ destroyOnClose: true, onOpenChange: async (isOpen: boolean) => { diff --git a/apps/web-ele/src/views/mall/product/spu/components/spu-showcase.vue b/apps/web-ele/src/views/mall/product/spu/components/spu-showcase.vue index dfa305aad..05568e5b0 100644 --- a/apps/web-ele/src/views/mall/product/spu/components/spu-showcase.vue +++ b/apps/web-ele/src/views/mall/product/spu/components/spu-showcase.vue @@ -26,8 +26,8 @@ const props = withDefaults(defineProps(), { const emit = defineEmits(['update:modelValue', 'change']); -const productSpus = ref([]); -const spuTableSelectRef = ref>(); +const productSpus = ref([]); // 已选择的商品列表 +const spuTableSelectRef = ref>(); // 商品选择表格组件引用 const isMultiple = computed(() => props.limit !== 1); // 是否为多选模式 /** 计算是否可以添加 */ @@ -101,7 +101,7 @@ function emitSpuChange() {
@@ -125,7 +125,7 @@ function emitSpuChange() {
@@ -140,17 +140,3 @@ function emitSpuChange() { @change="handleSpuSelected" /> - - diff --git a/apps/web-ele/src/views/mall/product/spu/components/spu-table-select.vue b/apps/web-ele/src/views/mall/product/spu/components/spu-table-select.vue index 76e2d9294..84a5b44c4 100644 --- a/apps/web-ele/src/views/mall/product/spu/components/spu-table-select.vue +++ b/apps/web-ele/src/views/mall/product/spu/components/spu-table-select.vue @@ -2,6 +2,7 @@ diff --git a/apps/web-ele/src/views/mall/product/spu/data.ts b/apps/web-ele/src/views/mall/product/spu/data.ts index 1037fa4f3..f667c6948 100644 --- a/apps/web-ele/src/views/mall/product/spu/data.ts +++ b/apps/web-ele/src/views/mall/product/spu/data.ts @@ -7,8 +7,6 @@ import { handleTree } from '@vben/utils'; import { getCategoryList } from '#/api/mall/product/category'; import { getRangePickerDefaultProps } from '#/utils'; -// TODO @霖:所有 mall 的 search 少了,请输入 xxx;表单也是类似 - /** 列表的搜索表单 */ export function useGridFormSchema(): VbenFormSchema[] { return [ From c6d6d1c1e87e9f93b853fa0ae7ec9af0f6c15bff Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 1 Nov 2025 21:18:49 +0800 Subject: [PATCH 049/157] =?UTF-8?q?feat=EF=BC=9A=E3=80=90ele=E3=80=91?= =?UTF-8?q?=E3=80=90mall=E3=80=91draggable=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../promotion/components/draggable/index.vue | 25 ++++++++----------- 1 file changed, 10 insertions(+), 15 deletions(-) diff --git a/apps/web-ele/src/views/mall/promotion/components/draggable/index.vue b/apps/web-ele/src/views/mall/promotion/components/draggable/index.vue index ad7f9f3df..d2901f395 100644 --- a/apps/web-ele/src/views/mall/promotion/components/draggable/index.vue +++ b/apps/web-ele/src/views/mall/promotion/components/draggable/index.vue @@ -1,6 +1,4 @@ - - + 添加 - - + + - - From b88004390013d826e5e0aff452ec1f9fb483d222 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 1 Nov 2025 21:19:05 +0800 Subject: [PATCH 050/157] =?UTF-8?q?feat=EF=BC=9A=E3=80=90mall=E3=80=91diy?= =?UTF-8?q?=20editor=20=E7=9A=84=20search-bar=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/mobile/search-bar/config.ts | 4 +- .../components/mobile/search-bar/index.vue | 48 +++---------------- .../components/mobile/search-bar/property.vue | 18 +++---- 3 files changed, 18 insertions(+), 52 deletions(-) diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/search-bar/config.ts b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/search-bar/config.ts index 01d5894d1..c471780e1 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/search-bar/config.ts +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/search-bar/config.ts @@ -13,10 +13,10 @@ export interface SearchProperty { style: ComponentStyle; } -// 文字位置 +/** 文字位置 */ export type PlaceholderPosition = 'center' | 'left'; -// 定义组件 +/** 定义组件 */ export const component = { id: 'SearchBar', name: '搜索框', diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/search-bar/index.vue b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/search-bar/index.vue index e7c770304..7463d7db6 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/search-bar/index.vue +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/search-bar/index.vue @@ -5,19 +5,19 @@ import { IconifyIcon } from '@vben/icons'; /** 搜索框 */ defineOptions({ name: 'SearchBar' }); + defineProps<{ property: SearchProperty }>(); - - diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/search-bar/property.vue b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/search-bar/property.vue index 5e1822078..4dca02da7 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/search-bar/property.vue +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/search-bar/property.vue @@ -11,6 +11,7 @@ import { ElCard, ElForm, ElFormItem, + ElInput, ElRadioButton, ElRadioGroup, ElSlider, @@ -18,7 +19,7 @@ import { ElTooltip, } from 'element-plus'; -import { Draggable } from '#/views/mall/promotion/components'; +import { ColorInput, Draggable } from '#/views/mall/promotion/components'; import ComponentContainerProperty from '../../component-container-property.vue'; @@ -26,10 +27,12 @@ import ComponentContainerProperty from '../../component-container-property.vue'; defineOptions({ name: 'SearchProperty' }); const props = defineProps<{ modelValue: SearchProperty }>(); + const emit = defineEmits(['update:modelValue']); + const formData = useVModel(props, 'modelValue', emit); -// 监听热词数组变化 +/** 监听热词数组变化 */ watch( () => formData.value.hotKeywords, (newVal) => { @@ -45,8 +48,7 @@ watch( \ No newline at end of file diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-card/property.vue b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-card/property.vue index 79a7eb080..46a0e16c5 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-card/property.vue +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-card/property.vue @@ -5,16 +5,16 @@ import { useVModel } from '@vueuse/core'; import ComponentContainerProperty from '../../component-container-property.vue'; -// 用户卡片属性面板 +/** 用户卡片属性面板 */ defineOptions({ name: 'UserCardProperty' }); const props = defineProps<{ modelValue: UserCardProperty }>(); + const emit = defineEmits(['update:modelValue']); + const formData = useVModel(props, 'modelValue', emit); - - diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-order/config.ts b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-order/config.ts index 25ca85065..e149b22f1 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-order/config.ts +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-order/config.ts @@ -2,11 +2,10 @@ import type { ComponentStyle, DiyComponent } from '../../../util'; /** 用户订单属性 */ export interface UserOrderProperty { - // 组件样式 - style: ComponentStyle; + style: ComponentStyle; // 组件样式 } -// 定义组件 +/** 定义组件 */ export const component = { id: 'UserOrder', name: '用户订单', diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-order/index.vue b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-order/index.vue index ab527acee..1c171b3eb 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-order/index.vue +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-order/index.vue @@ -5,13 +5,12 @@ import { ElImage } from 'element-plus'; /** 用户订单 */ defineOptions({ name: 'UserOrder' }); -// 定义属性 + +/** 定义属性 */ defineProps<{ property: UserOrderProperty }>(); - - + \ No newline at end of file diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-order/property.vue b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-order/property.vue index 48f0c0a41..2f9abe556 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-order/property.vue +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-order/property.vue @@ -5,16 +5,16 @@ import { useVModel } from '@vueuse/core'; import ComponentContainerProperty from '../../component-container-property.vue'; -// 用户订单属性面板 +/** 用户订单属性面板 */ defineOptions({ name: 'UserOrderProperty' }); const props = defineProps<{ modelValue: UserOrderProperty }>(); + const emit = defineEmits(['update:modelValue']); + const formData = useVModel(props, 'modelValue', emit); - - + \ No newline at end of file diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-wallet/config.ts b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-wallet/config.ts index 2b10d32fb..71d8d0245 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-wallet/config.ts +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-wallet/config.ts @@ -2,11 +2,10 @@ import type { ComponentStyle, DiyComponent } from '../../../util'; /** 用户资产属性 */ export interface UserWalletProperty { - // 组件样式 - style: ComponentStyle; + style: ComponentStyle; // 组件样式 } -// 定义组件 +/** 定义组件 */ export const component = { id: 'UserWallet', name: '用户资产', diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-wallet/index.vue b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-wallet/index.vue index 7581e54c9..4eabad045 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-wallet/index.vue +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-wallet/index.vue @@ -5,13 +5,12 @@ import { ElImage } from 'element-plus'; /** 用户资产 */ defineOptions({ name: 'UserWallet' }); -// 定义属性 + +/** 定义属性 */ defineProps<{ property: UserWalletProperty }>(); - - + \ No newline at end of file diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-wallet/property.vue b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-wallet/property.vue index 5c01b828e..74b374535 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-wallet/property.vue +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-wallet/property.vue @@ -5,11 +5,13 @@ import { useVModel } from '@vueuse/core'; import ComponentContainerProperty from '../../component-container-property.vue'; -// 用户资产属性面板 +/** 用户资产属性面板 */ defineOptions({ name: 'UserWalletProperty' }); const props = defineProps<{ modelValue: UserWalletProperty }>(); + const emit = defineEmits(['update:modelValue']); + const formData = useVModel(props, 'modelValue', emit); From d7cea8be392b0f3c5fef0171df0422b8f70a58ed Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 1 Nov 2025 21:42:23 +0800 Subject: [PATCH 055/157] =?UTF-8?q?feat=EF=BC=9A=E3=80=90mall=E3=80=91vide?= =?UTF-8?q?o-player=20=E4=BC=98=E5=8C=96?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../components/mobile/video-player/config.ts | 19 +++++++------------ .../components/mobile/video-player/index.vue | 13 ++----------- .../mobile/video-player/property.vue | 8 ++++---- 3 files changed, 13 insertions(+), 27 deletions(-) diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/video-player/config.ts b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/video-player/config.ts index bc9195575..ab7ccd311 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/video-player/config.ts +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/video-player/config.ts @@ -2,23 +2,18 @@ import type { ComponentStyle, DiyComponent } from '../../../util'; /** 视频播放属性 */ export interface VideoPlayerProperty { - // 视频链接 - videoUrl: string; - // 封面链接 - posterUrl: string; - // 是否自动播放 - autoplay: boolean; - // 组件样式 - style: VideoPlayerStyle; + videoUrl: string; // 视频链接 + posterUrl: string; // 封面链接 + autoplay: boolean; // 是否自动播放 + style: VideoPlayerStyle; // 组件样式 } -// 视频播放样式 +/** 视频播放样式 */ export interface VideoPlayerStyle extends ComponentStyle { - // 视频高度 - height: number; + height: number; // 视频高度 } -// 定义组件 +/** 定义组件 */ export const component = { id: 'VideoPlayer', name: '视频播放', diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/video-player/index.vue b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/video-player/index.vue index ddd448d96..b58577d5b 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/video-player/index.vue +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/video-player/index.vue @@ -11,13 +11,13 @@ defineProps<{ property: VideoPlayerProperty }>(); - - diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/video-player/property.vue b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/video-player/property.vue index 67c355905..c576d8f76 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/video-player/property.vue +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/video-player/property.vue @@ -9,11 +9,13 @@ import UploadImg from '#/components/upload/image-upload.vue'; import ComponentContainerProperty from '../../component-container-property.vue'; -// 视频播放属性面板 +/** 视频播放属性面板 */ defineOptions({ name: 'VideoPlayerProperty' }); const props = defineProps<{ modelValue: VideoPlayerProperty }>(); + const emit = defineEmits(['update:modelValue']); + const formData = useVModel(props, 'modelValue', emit); @@ -58,6 +60,4 @@ const formData = useVModel(props, 'modelValue', emit); - - - + \ No newline at end of file From 66c9398760a18637dcd734bd564f073af1b22b05 Mon Sep 17 00:00:00 2001 From: haohao <1036606149@qq.com> Date: Sat, 1 Nov 2025 21:53:22 +0800 Subject: [PATCH 056/157] =?UTF-8?q?fix:=20=E3=80=90antd=E3=80=91=E3=80=90i?= =?UTF-8?q?ot=E3=80=91=E4=BF=AE=E6=94=B9=E8=AE=BE=E5=A4=87=E7=8A=B6?= =?UTF-8?q?=E6=80=81=E5=AD=97=E5=85=B8=E4=B8=BA=20IOT=5FDEVICE=5FSTATE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- apps/web-antd/src/views/iot/device/device/data.ts | 6 +++--- apps/web-antd/src/views/iot/device/device/index.vue | 2 +- .../device/device/modules/components/DeviceTableSelect.vue | 4 ++-- .../iot/device/device/modules/detail/DeviceDetailsInfo.vue | 2 +- packages/constants/src/dict-enum.ts | 1 - 5 files changed, 7 insertions(+), 8 deletions(-) diff --git a/apps/web-antd/src/views/iot/device/device/data.ts b/apps/web-antd/src/views/iot/device/device/data.ts index 424f0ef92..5edd1cc0d 100644 --- a/apps/web-antd/src/views/iot/device/device/data.ts +++ b/apps/web-antd/src/views/iot/device/device/data.ts @@ -239,7 +239,7 @@ export function useGridFormSchema(): VbenFormSchema[] { label: '设备状态', component: 'Select', componentProps: { - options: getDictOptions(DICT_TYPE.IOT_DEVICE_STATUS, 'number'), + options: getDictOptions(DICT_TYPE.IOT_DEVICE_STATE, 'number'), placeholder: '请选择设备状态', allowClear: true, }, @@ -295,12 +295,12 @@ export function useGridColumns(): VxeTableGridOptions['columns'] { slots: { default: 'groups' }, }, { - field: 'status', + field: 'state', title: '设备状态', minWidth: 100, cellRender: { name: 'CellDict', - props: { type: DICT_TYPE.IOT_DEVICE_STATUS }, + props: { type: DICT_TYPE.IOT_DEVICE_STATE }, }, }, { diff --git a/apps/web-antd/src/views/iot/device/device/index.vue b/apps/web-antd/src/views/iot/device/device/index.vue index f83a7c14a..d06649d66 100644 --- a/apps/web-antd/src/views/iot/device/device/index.vue +++ b/apps/web-antd/src/views/iot/device/device/index.vue @@ -307,7 +307,7 @@ onMounted(async () => { style="width: 200px" > diff --git a/apps/web-antd/src/views/iot/device/device/modules/components/DeviceTableSelect.vue b/apps/web-antd/src/views/iot/device/device/modules/components/DeviceTableSelect.vue index efaad5976..8f8afc3e0 100644 --- a/apps/web-antd/src/views/iot/device/device/modules/components/DeviceTableSelect.vue +++ b/apps/web-antd/src/views/iot/device/device/modules/components/DeviceTableSelect.vue @@ -294,7 +294,7 @@ onMounted(async () => { style="width: 240px" > @@ -373,7 +373,7 @@ onMounted(async () => { diff --git a/apps/web-antd/src/views/iot/device/device/modules/detail/DeviceDetailsInfo.vue b/apps/web-antd/src/views/iot/device/device/modules/detail/DeviceDetailsInfo.vue index d4b6b06cb..5ba870c61 100644 --- a/apps/web-antd/src/views/iot/device/device/modules/detail/DeviceDetailsInfo.vue +++ b/apps/web-antd/src/views/iot/device/device/modules/detail/DeviceDetailsInfo.vue @@ -106,7 +106,7 @@ function handleAuthInfoDialogClose() { diff --git a/packages/constants/src/dict-enum.ts b/packages/constants/src/dict-enum.ts index c2ffca955..73a5c57dc 100644 --- a/packages/constants/src/dict-enum.ts +++ b/packages/constants/src/dict-enum.ts @@ -155,7 +155,6 @@ const IOT_DICT = { IOT_DATA_SINK_TYPE_ENUM: 'iot_data_sink_type_enum', // IoT 数据流转目的类型 IOT_DATA_TYPE: 'iot_data_type', // IOT 数据类型 IOT_DEVICE_STATE: 'iot_device_state', // IOT 设备状态 - IOT_DEVICE_STATUS: 'iot_device_status', // IOT 设备状态 IOT_LOCATION_TYPE: 'iot_location_type', // IOT 定位类型 IOT_NET_TYPE: 'iot_net_type', // IOT 联网方式 IOT_OTA_TASK_DEVICE_SCOPE: 'iot_ota_task_device_scope', // IoT OTA任务设备范围 From cc5477dc48bee73a3fcb4e40028411a4bcf85332 Mon Sep 17 00:00:00 2001 From: haohao <1036606149@qq.com> Date: Sat, 1 Nov 2025 21:55:01 +0800 Subject: [PATCH 057/157] =?UTF-8?q?feat:=20=E3=80=90antd=E3=80=91=E3=80=90?= =?UTF-8?q?iot=E3=80=91=E5=90=AF=E7=94=A8=E7=8A=B6=E6=80=81=E7=9A=84?= =?UTF-8?q?=E4=BA=A7=E5=93=81=E4=B8=8D=E8=83=BD=E5=88=A0=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../product/modules/ProductCardView.vue | 21 +++++++++++++++++-- 1 file changed, 19 insertions(+), 2 deletions(-) diff --git a/apps/web-antd/src/views/iot/product/product/modules/ProductCardView.vue b/apps/web-antd/src/views/iot/product/product/modules/ProductCardView.vue index 411ff50c1..255f3f335 100644 --- a/apps/web-antd/src/views/iot/product/product/modules/ProductCardView.vue +++ b/apps/web-antd/src/views/iot/product/product/modules/ProductCardView.vue @@ -195,16 +195,33 @@ defineExpose({ /> 物模型 + + +
From 4412d455a30f0b97a34a940b1fedee7b5e3633d6 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sat, 1 Nov 2025 22:50:24 +0800 Subject: [PATCH 058/157] =?UTF-8?q?feat=EF=BC=9A=E3=80=90antd=E3=80=91?= =?UTF-8?q?=E3=80=90ele=E3=80=91=E4=BB=A3=E7=A0=81=E9=A3=8E=E6=A0=BC?= =?UTF-8?q?=E7=BB=9F=E4=B8=80?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../views/infra/apiAccessLog/modules/detail.vue | 1 - .../views/infra/apiErrorLog/modules/detail.vue | 1 - .../views/infra/job/logger/modules/detail.vue | 1 - .../src/views/infra/job/modules/detail.vue | 1 - .../views/mall/trade/afterSale/detail/index.vue | 1 + .../src/views/mall/trade/order/detail/index.vue | 3 ++- .../src/views/pay/notify/modules/detail.vue | 1 - .../src/views/pay/order/modules/detail.vue | 1 - .../src/views/pay/refund/modules/detail.vue | 1 - .../src/views/pay/transfer/modules/detail.vue | 1 - .../src/views/system/loginlog/modules/detail.vue | 1 - .../src/views/system/mail/log/modules/detail.vue | 1 - .../system/notify/message/modules/detail.vue | 1 - .../views/system/notify/my/modules/detail.vue | 1 - .../views/system/operatelog/modules/detail.vue | 1 - .../src/views/system/sms/log/modules/detail.vue | 1 - .../views/system/social/user/modules/detail.vue | 3 --- .../web-ele/src/views/infra/apiAccessLog/data.ts | 4 ++-- .../views/infra/apiAccessLog/modules/detail.vue | 1 - .../views/infra/apiErrorLog/modules/detail.vue | 1 - .../views/infra/job/logger/modules/detail.vue | 2 +- .../src/views/infra/job/modules/detail.vue | 1 - .../mall/home/modules/operation-data-card.vue | 6 +++--- .../mall/statistics/trade/modules/trend-card.vue | 3 ++- .../trade/afterSale/modules/disagree-form.vue | 4 ++-- .../views/mall/trade/brokerage/user/index.vue | 14 +++++--------- .../src/views/mall/trade/order/detail/index.vue | 16 ++++++---------- apps/web-ele/src/views/pay/notify/data.ts | 1 - .../src/views/pay/notify/modules/detail.vue | 2 -- .../src/views/pay/order/modules/detail.vue | 1 - .../src/views/pay/refund/modules/detail.vue | 2 +- .../src/views/pay/transfer/modules/detail.vue | 2 +- .../src/views/system/loginlog/modules/detail.vue | 2 +- .../src/views/system/mail/log/modules/detail.vue | 2 +- .../system/notify/message/modules/detail.vue | 1 - .../views/system/notify/my/modules/detail.vue | 1 - .../views/system/operatelog/modules/detail.vue | 1 - .../src/views/system/sms/log/modules/detail.vue | 3 +-- .../views/system/social/user/modules/detail.vue | 2 -- 39 files changed, 29 insertions(+), 64 deletions(-) diff --git a/apps/web-antd/src/views/infra/apiAccessLog/modules/detail.vue b/apps/web-antd/src/views/infra/apiAccessLog/modules/detail.vue index b3de99cc7..badc9376c 100644 --- a/apps/web-antd/src/views/infra/apiAccessLog/modules/detail.vue +++ b/apps/web-antd/src/views/infra/apiAccessLog/modules/detail.vue @@ -14,7 +14,6 @@ const formData = ref(); const [Descriptions] = useDescription({ bordered: true, column: 1, - class: 'mx-4', schema: useDetailSchema(), }); diff --git a/apps/web-antd/src/views/infra/apiErrorLog/modules/detail.vue b/apps/web-antd/src/views/infra/apiErrorLog/modules/detail.vue index 9c4e44c9f..da52c17fa 100644 --- a/apps/web-antd/src/views/infra/apiErrorLog/modules/detail.vue +++ b/apps/web-antd/src/views/infra/apiErrorLog/modules/detail.vue @@ -14,7 +14,6 @@ const formData = ref(); const [Descriptions] = useDescription({ bordered: true, column: 1, - class: 'mx-4', schema: useDetailSchema(), }); diff --git a/apps/web-antd/src/views/infra/job/logger/modules/detail.vue b/apps/web-antd/src/views/infra/job/logger/modules/detail.vue index 18c868de4..ceb1b5bf1 100644 --- a/apps/web-antd/src/views/infra/job/logger/modules/detail.vue +++ b/apps/web-antd/src/views/infra/job/logger/modules/detail.vue @@ -15,7 +15,6 @@ const formData = ref(); const [Descriptions] = useDescription({ bordered: true, column: 1, - class: 'mx-4', schema: useDetailSchema(), }); diff --git a/apps/web-antd/src/views/infra/job/modules/detail.vue b/apps/web-antd/src/views/infra/job/modules/detail.vue index 145a19dab..f23149e2d 100644 --- a/apps/web-antd/src/views/infra/job/modules/detail.vue +++ b/apps/web-antd/src/views/infra/job/modules/detail.vue @@ -16,7 +16,6 @@ const nextTimes = ref([]); // 下一次执行时间 const [Descriptions] = useDescription({ bordered: true, column: 1, - class: 'mx-4', schema: useDetailSchema(), }); diff --git a/apps/web-antd/src/views/mall/trade/afterSale/detail/index.vue b/apps/web-antd/src/views/mall/trade/afterSale/detail/index.vue index c2a1fd9ac..85c513261 100644 --- a/apps/web-antd/src/views/mall/trade/afterSale/detail/index.vue +++ b/apps/web-antd/src/views/mall/trade/afterSale/detail/index.vue @@ -48,6 +48,7 @@ const afterSale = ref({ logs: [], }); +// TODO @xingyu:貌似 antd 相比 antd 来说,多了一个框?有啥办法只有 1 个么? const [OrderDescriptions] = useDescription({ title: '订单信息', bordered: false, diff --git a/apps/web-antd/src/views/mall/trade/order/detail/index.vue b/apps/web-antd/src/views/mall/trade/order/detail/index.vue index 89a2a1bfa..14c0db8c5 100644 --- a/apps/web-antd/src/views/mall/trade/order/detail/index.vue +++ b/apps/web-antd/src/views/mall/trade/order/detail/index.vue @@ -60,6 +60,7 @@ const deliveryExpressList = ref( const expressTrackList = ref([]); const pickUpStore = ref(); +// TODO @xingyu:貌似 antd 相比 antd 来说,多了一个框?有啥办法只有 1 个么? const [OrderInfoDescriptions] = useDescription({ title: '订单信息', bordered: false, @@ -337,7 +338,7 @@ onMounted(async () => {
diff --git a/apps/web-antd/src/views/pay/notify/modules/detail.vue b/apps/web-antd/src/views/pay/notify/modules/detail.vue index fb79db80a..90a6a67b0 100644 --- a/apps/web-antd/src/views/pay/notify/modules/detail.vue +++ b/apps/web-antd/src/views/pay/notify/modules/detail.vue @@ -19,7 +19,6 @@ const formData = ref(); const [Description] = useDescription({ bordered: true, column: 2, - class: 'mx-4', schema: useDetailSchema(), }); diff --git a/apps/web-antd/src/views/pay/order/modules/detail.vue b/apps/web-antd/src/views/pay/order/modules/detail.vue index 68b5426c2..2d4d84b10 100644 --- a/apps/web-antd/src/views/pay/order/modules/detail.vue +++ b/apps/web-antd/src/views/pay/order/modules/detail.vue @@ -15,7 +15,6 @@ const formData = ref(); const [Descriptions] = useDescription({ bordered: true, column: 2, - class: 'mx-4', schema: useDetailSchema(), }); diff --git a/apps/web-antd/src/views/pay/refund/modules/detail.vue b/apps/web-antd/src/views/pay/refund/modules/detail.vue index 79adf6d65..d78ea529d 100644 --- a/apps/web-antd/src/views/pay/refund/modules/detail.vue +++ b/apps/web-antd/src/views/pay/refund/modules/detail.vue @@ -15,7 +15,6 @@ const formData = ref(); const [Descriptions] = useDescription({ bordered: true, column: 2, - class: 'mx-4', schema: useDetailSchema(), }); diff --git a/apps/web-antd/src/views/pay/transfer/modules/detail.vue b/apps/web-antd/src/views/pay/transfer/modules/detail.vue index ea9fb84b6..83150697c 100644 --- a/apps/web-antd/src/views/pay/transfer/modules/detail.vue +++ b/apps/web-antd/src/views/pay/transfer/modules/detail.vue @@ -15,7 +15,6 @@ const formData = ref(); const [Descriptions] = useDescription({ bordered: true, column: 2, - class: 'mx-4', schema: useDetailSchema(), }); diff --git a/apps/web-antd/src/views/system/loginlog/modules/detail.vue b/apps/web-antd/src/views/system/loginlog/modules/detail.vue index a0970c5c2..4982a32b3 100644 --- a/apps/web-antd/src/views/system/loginlog/modules/detail.vue +++ b/apps/web-antd/src/views/system/loginlog/modules/detail.vue @@ -14,7 +14,6 @@ const formData = ref(); const [Descriptions] = useDescription({ bordered: true, column: 1, - class: 'mx-4', schema: useDetailSchema(), }); diff --git a/apps/web-antd/src/views/system/mail/log/modules/detail.vue b/apps/web-antd/src/views/system/mail/log/modules/detail.vue index e9fe28d76..3b04a9d04 100644 --- a/apps/web-antd/src/views/system/mail/log/modules/detail.vue +++ b/apps/web-antd/src/views/system/mail/log/modules/detail.vue @@ -14,7 +14,6 @@ const formData = ref(); const [Descriptions] = useDescription({ bordered: true, column: 2, - class: 'mx-4', schema: useDetailSchema(), }); diff --git a/apps/web-antd/src/views/system/notify/message/modules/detail.vue b/apps/web-antd/src/views/system/notify/message/modules/detail.vue index 7b4afe83e..a0e100dd4 100644 --- a/apps/web-antd/src/views/system/notify/message/modules/detail.vue +++ b/apps/web-antd/src/views/system/notify/message/modules/detail.vue @@ -14,7 +14,6 @@ const formData = ref(); const [Descriptions] = useDescription({ bordered: true, column: 1, - class: 'mx-4', schema: useDetailSchema(), }); diff --git a/apps/web-antd/src/views/system/notify/my/modules/detail.vue b/apps/web-antd/src/views/system/notify/my/modules/detail.vue index 7b4afe83e..a0e100dd4 100644 --- a/apps/web-antd/src/views/system/notify/my/modules/detail.vue +++ b/apps/web-antd/src/views/system/notify/my/modules/detail.vue @@ -14,7 +14,6 @@ const formData = ref(); const [Descriptions] = useDescription({ bordered: true, column: 1, - class: 'mx-4', schema: useDetailSchema(), }); diff --git a/apps/web-antd/src/views/system/operatelog/modules/detail.vue b/apps/web-antd/src/views/system/operatelog/modules/detail.vue index e69d8b20d..5ada4818a 100644 --- a/apps/web-antd/src/views/system/operatelog/modules/detail.vue +++ b/apps/web-antd/src/views/system/operatelog/modules/detail.vue @@ -14,7 +14,6 @@ const formData = ref(); const [Descriptions] = useDescription({ bordered: true, column: 1, - class: 'mx-4', schema: useDetailSchema(), }); diff --git a/apps/web-antd/src/views/system/sms/log/modules/detail.vue b/apps/web-antd/src/views/system/sms/log/modules/detail.vue index 71cfb2c3a..2831f6ff5 100644 --- a/apps/web-antd/src/views/system/sms/log/modules/detail.vue +++ b/apps/web-antd/src/views/system/sms/log/modules/detail.vue @@ -14,7 +14,6 @@ const formData = ref(); const [Descriptions] = useDescription({ bordered: true, column: 2, - class: 'mx-4', schema: useDetailSchema(), }); diff --git a/apps/web-antd/src/views/system/social/user/modules/detail.vue b/apps/web-antd/src/views/system/social/user/modules/detail.vue index df24c9bab..de2b35cbf 100644 --- a/apps/web-antd/src/views/system/social/user/modules/detail.vue +++ b/apps/web-antd/src/views/system/social/user/modules/detail.vue @@ -16,9 +16,6 @@ const formData = ref(); const [Descriptions] = useDescription({ bordered: true, column: 1, - size: 'middle', - class: 'mx-4', - labelStyle: { width: '185px' }, schema: useDetailSchema(), }); diff --git a/apps/web-ele/src/views/infra/apiAccessLog/data.ts b/apps/web-ele/src/views/infra/apiAccessLog/data.ts index 0abdede2d..fb59f59b6 100644 --- a/apps/web-ele/src/views/infra/apiAccessLog/data.ts +++ b/apps/web-ele/src/views/infra/apiAccessLog/data.ts @@ -226,7 +226,7 @@ export function useDetailSchema(): DescriptionItemSchema[] { label: '请求时间', field: 'beginTime', render: (val, data) => { - if (data?.beginTime && data?.endTime) { + if (val && data?.endTime) { return `${formatDateTime(val)} ~ ${formatDateTime(data.endTime)}`; } return ''; @@ -245,7 +245,7 @@ export function useDetailSchema(): DescriptionItemSchema[] { render: (val, data) => { if (val === 0) { return '正常'; - } else if (data && data.resultMsg) { + } else if (val > 0 && data?.resultMsg) { return `失败 | ${val} | ${data.resultMsg}`; } return ''; diff --git a/apps/web-ele/src/views/infra/apiAccessLog/modules/detail.vue b/apps/web-ele/src/views/infra/apiAccessLog/modules/detail.vue index f5b3c65a3..0b3c4c7fa 100644 --- a/apps/web-ele/src/views/infra/apiAccessLog/modules/detail.vue +++ b/apps/web-ele/src/views/infra/apiAccessLog/modules/detail.vue @@ -14,7 +14,6 @@ const formData = ref(); const [Descriptions] = useDescription({ border: true, column: 1, - labelWidth: 110, schema: useDetailSchema(), }); diff --git a/apps/web-ele/src/views/infra/apiErrorLog/modules/detail.vue b/apps/web-ele/src/views/infra/apiErrorLog/modules/detail.vue index bfe5fbd23..705cfdcd0 100644 --- a/apps/web-ele/src/views/infra/apiErrorLog/modules/detail.vue +++ b/apps/web-ele/src/views/infra/apiErrorLog/modules/detail.vue @@ -14,7 +14,6 @@ const formData = ref(); const [Descriptions] = useDescription({ border: true, column: 1, - labelWidth: 110, schema: useDetailSchema(), }); diff --git a/apps/web-ele/src/views/infra/job/logger/modules/detail.vue b/apps/web-ele/src/views/infra/job/logger/modules/detail.vue index 5a5e7a7ad..3fd440e47 100644 --- a/apps/web-ele/src/views/infra/job/logger/modules/detail.vue +++ b/apps/web-ele/src/views/infra/job/logger/modules/detail.vue @@ -13,8 +13,8 @@ import { useDetailSchema } from '../data'; const formData = ref(); const [Descriptions] = useDescription({ + border: true, column: 1, - labelWidth: 140, schema: useDetailSchema(), }); diff --git a/apps/web-ele/src/views/infra/job/modules/detail.vue b/apps/web-ele/src/views/infra/job/modules/detail.vue index 01528a091..4774573d1 100644 --- a/apps/web-ele/src/views/infra/job/modules/detail.vue +++ b/apps/web-ele/src/views/infra/job/modules/detail.vue @@ -16,7 +16,6 @@ const nextTimes = ref([]); // 下一次执行时间 const [Descriptions] = useDescription({ border: true, column: 1, - labelWidth: 140, schema: useDetailSchema(), }); diff --git a/apps/web-ele/src/views/mall/home/modules/operation-data-card.vue b/apps/web-ele/src/views/mall/home/modules/operation-data-card.vue index 4f6354bfe..4e98089db 100644 --- a/apps/web-ele/src/views/mall/home/modules/operation-data-card.vue +++ b/apps/web-ele/src/views/mall/home/modules/operation-data-card.vue @@ -95,9 +95,9 @@ onActivated(() => { /** 初始化 */ onMounted(() => { - getOrderData(); - getProductData(); - getWalletRechargeData(); + loadOrderData(); + loadProductData(); + loadWalletRechargeData(); }); diff --git a/apps/web-ele/src/views/mall/statistics/trade/modules/trend-card.vue b/apps/web-ele/src/views/mall/statistics/trade/modules/trend-card.vue index 3173e0bdd..9aa2d279a 100644 --- a/apps/web-ele/src/views/mall/statistics/trade/modules/trend-card.vue +++ b/apps/web-ele/src/views/mall/statistics/trade/modules/trend-card.vue @@ -27,6 +27,7 @@ import { getTradeStatisticsList, } from '#/api/mall/statistics/trade'; import ShortcutDateRangePicker from '#/components/shortcut-date-range-picker/shortcut-date-range-picker.vue'; +import { $t } from '#/locales'; import { getTradeTrendChartOptions } from './trend-chart-options'; @@ -138,7 +139,7 @@ async function handleExport() { - 导出 + {{ $t('page.action.export') }}
diff --git a/apps/web-ele/src/views/mall/trade/afterSale/modules/disagree-form.vue b/apps/web-ele/src/views/mall/trade/afterSale/modules/disagree-form.vue index 47f8a365a..8675c0553 100644 --- a/apps/web-ele/src/views/mall/trade/afterSale/modules/disagree-form.vue +++ b/apps/web-ele/src/views/mall/trade/afterSale/modules/disagree-form.vue @@ -9,7 +9,7 @@ import { $t } from '@vben/locales'; import { ElMessage } from 'element-plus'; import { useVbenForm } from '#/adapter/form'; -import * as AfterSaleApi from '#/api/mall/trade/afterSale/index'; +import { disagreeAfterSale } from '#/api/mall/trade/afterSale'; import { useDisagreeFormSchema } from '../data'; @@ -40,7 +40,7 @@ const [Modal, modalApi] = useVbenModal({ try { const data = (await formApi.getValues()) as MallAfterSaleApi.DisagreeRequest; - await AfterSaleApi.disagreeAfterSale(data); + await disagreeAfterSale(data); // 关闭并提示 await modalApi.close(); emit('success'); diff --git a/apps/web-ele/src/views/mall/trade/brokerage/user/index.vue b/apps/web-ele/src/views/mall/trade/brokerage/user/index.vue index d66be3c56..5b7d958dc 100644 --- a/apps/web-ele/src/views/mall/trade/brokerage/user/index.vue +++ b/apps/web-ele/src/views/mall/trade/brokerage/user/index.vue @@ -93,18 +93,14 @@ async function handleBrokerageEnabledChange( }) .then(async () => { // 更新推广资格 - const res = await updateBrokerageEnabled({ + await updateBrokerageEnabled({ id: row.id!, enabled: newEnabled, }); - if (res) { - // 提示并返回成功 - ElMessage.success($t('ui.actionMessage.operationSuccess')); - handleRefresh(); - resolve(true); - } else { - reject(new Error('更新失败')); - } + // 提示并返回成功 + ElMessage.success($t('ui.actionMessage.operationSuccess')); + handleRefresh(); + resolve(true); }) .catch(() => { reject(new Error('取消操作')); diff --git a/apps/web-ele/src/views/mall/trade/order/detail/index.vue b/apps/web-ele/src/views/mall/trade/order/detail/index.vue index d0700e91c..bb4629305 100644 --- a/apps/web-ele/src/views/mall/trade/order/detail/index.vue +++ b/apps/web-ele/src/views/mall/trade/order/detail/index.vue @@ -18,9 +18,10 @@ import { useTabs } from '@vben/hooks'; import { ElCard, ElLoading, ElMessage, ElTag } from 'element-plus'; import { useVbenVxeGrid } from '#/adapter/vxe-table'; -import * as DeliveryExpressApi from '#/api/mall/trade/delivery/express'; -import * as DeliveryPickUpStoreApi from '#/api/mall/trade/delivery/pickUpStore'; +import { getSimpleDeliveryExpressList } from '#/api/mall/trade/delivery/express'; +import { getDeliveryPickUpStore } from '#/api/mall/trade/delivery/pickUpStore'; import * as TradeOrderApi from '#/api/mall/trade/order'; +import { getExpressTrackList } from '#/api/mall/trade/order'; import { useDescription } from '#/components/description'; import { DictTag } from '#/components/dict-tag'; import { TableAction } from '#/components/table-action'; @@ -169,12 +170,9 @@ async function getDetail() { // 如果配送方式为快递,则查询物流公司 if (res.deliveryType === DeliveryTypeEnum.EXPRESS.type) { - deliveryExpressList.value = - await DeliveryExpressApi.getSimpleDeliveryExpressList(); + deliveryExpressList.value = await getSimpleDeliveryExpressList(); if (res.logisticsId) { - expressTrackList.value = await TradeOrderApi.getExpressTrackList( - res.id!, - ); + expressTrackList.value = await getExpressTrackList(res.id!); expressTrackGridApi.setGridOptions({ data: expressTrackList.value || [], }); @@ -183,9 +181,7 @@ async function getDetail() { res.deliveryType === DeliveryTypeEnum.PICK_UP.type && res.pickUpStoreId ) { - pickUpStore.value = await DeliveryPickUpStoreApi.getDeliveryPickUpStore( - res.pickUpStoreId, - ); + pickUpStore.value = await getDeliveryPickUpStore(res.pickUpStoreId); } } finally { loading.value = false; diff --git a/apps/web-ele/src/views/pay/notify/data.ts b/apps/web-ele/src/views/pay/notify/data.ts index d94c31865..5917b416c 100644 --- a/apps/web-ele/src/views/pay/notify/data.ts +++ b/apps/web-ele/src/views/pay/notify/data.ts @@ -90,7 +90,6 @@ export function useGridFormSchema(): VbenFormSchema[] { componentProps: { ...getRangePickerDefaultProps(), clearable: true, - placeholder: ['开始日期', '结束日期'], }, }, ]; diff --git a/apps/web-ele/src/views/pay/notify/modules/detail.vue b/apps/web-ele/src/views/pay/notify/modules/detail.vue index 0375c6fa3..d5b7bb71c 100644 --- a/apps/web-ele/src/views/pay/notify/modules/detail.vue +++ b/apps/web-ele/src/views/pay/notify/modules/detail.vue @@ -19,8 +19,6 @@ const formData = ref(); const [Description] = useDescription({ border: true, column: 2, - direction: 'horizontal', - labelWidth: 140, schema: useDetailSchema(), }); diff --git a/apps/web-ele/src/views/pay/order/modules/detail.vue b/apps/web-ele/src/views/pay/order/modules/detail.vue index 452e63e18..99c261d77 100644 --- a/apps/web-ele/src/views/pay/order/modules/detail.vue +++ b/apps/web-ele/src/views/pay/order/modules/detail.vue @@ -15,7 +15,6 @@ const formData = ref(); const [Descriptions] = useDescription({ border: true, column: 2, - labelWidth: 140, schema: useDetailSchema(), }); diff --git a/apps/web-ele/src/views/pay/refund/modules/detail.vue b/apps/web-ele/src/views/pay/refund/modules/detail.vue index 7b02d9889..1b93a77e6 100644 --- a/apps/web-ele/src/views/pay/refund/modules/detail.vue +++ b/apps/web-ele/src/views/pay/refund/modules/detail.vue @@ -13,8 +13,8 @@ import { useDetailSchema } from '../data'; const formData = ref(); const [Descriptions] = useDescription({ + border: true, column: 2, - labelWidth: 140, schema: useDetailSchema(), }); diff --git a/apps/web-ele/src/views/pay/transfer/modules/detail.vue b/apps/web-ele/src/views/pay/transfer/modules/detail.vue index deb23fabf..86dd91569 100644 --- a/apps/web-ele/src/views/pay/transfer/modules/detail.vue +++ b/apps/web-ele/src/views/pay/transfer/modules/detail.vue @@ -13,8 +13,8 @@ import { useDetailSchema } from '../data'; const formData = ref(); const [Descriptions] = useDescription({ + border: true, column: 2, - labelWidth: 140, schema: useDetailSchema(), }); diff --git a/apps/web-ele/src/views/system/loginlog/modules/detail.vue b/apps/web-ele/src/views/system/loginlog/modules/detail.vue index 773069b9f..d1c9bea00 100644 --- a/apps/web-ele/src/views/system/loginlog/modules/detail.vue +++ b/apps/web-ele/src/views/system/loginlog/modules/detail.vue @@ -12,8 +12,8 @@ import { useDetailSchema } from '../data'; const formData = ref(); const [Descriptions] = useDescription({ + border: true, column: 1, - labelWidth: 110, schema: useDetailSchema(), }); diff --git a/apps/web-ele/src/views/system/mail/log/modules/detail.vue b/apps/web-ele/src/views/system/mail/log/modules/detail.vue index e70243d8b..ab0daa76e 100644 --- a/apps/web-ele/src/views/system/mail/log/modules/detail.vue +++ b/apps/web-ele/src/views/system/mail/log/modules/detail.vue @@ -12,8 +12,8 @@ import { useDetailSchema } from '../data'; const formData = ref(); const [Descriptions] = useDescription({ + border: true, column: 2, - labelWidth: 140, schema: useDetailSchema(), }); diff --git a/apps/web-ele/src/views/system/notify/message/modules/detail.vue b/apps/web-ele/src/views/system/notify/message/modules/detail.vue index 0db8555f5..f7dbc8f58 100644 --- a/apps/web-ele/src/views/system/notify/message/modules/detail.vue +++ b/apps/web-ele/src/views/system/notify/message/modules/detail.vue @@ -14,7 +14,6 @@ const formData = ref(); const [Descriptions] = useDescription({ border: true, column: 1, - labelWidth: 140, schema: useDetailSchema(), }); diff --git a/apps/web-ele/src/views/system/notify/my/modules/detail.vue b/apps/web-ele/src/views/system/notify/my/modules/detail.vue index 0db8555f5..f7dbc8f58 100644 --- a/apps/web-ele/src/views/system/notify/my/modules/detail.vue +++ b/apps/web-ele/src/views/system/notify/my/modules/detail.vue @@ -14,7 +14,6 @@ const formData = ref(); const [Descriptions] = useDescription({ border: true, column: 1, - labelWidth: 140, schema: useDetailSchema(), }); diff --git a/apps/web-ele/src/views/system/operatelog/modules/detail.vue b/apps/web-ele/src/views/system/operatelog/modules/detail.vue index d9d224f55..f4d8ae922 100644 --- a/apps/web-ele/src/views/system/operatelog/modules/detail.vue +++ b/apps/web-ele/src/views/system/operatelog/modules/detail.vue @@ -14,7 +14,6 @@ const formData = ref(); const [Descriptions] = useDescription({ border: true, column: 1, - labelWidth: 110, schema: useDetailSchema(), }); diff --git a/apps/web-ele/src/views/system/sms/log/modules/detail.vue b/apps/web-ele/src/views/system/sms/log/modules/detail.vue index 4fcd48df9..37af10f7e 100644 --- a/apps/web-ele/src/views/system/sms/log/modules/detail.vue +++ b/apps/web-ele/src/views/system/sms/log/modules/detail.vue @@ -12,9 +12,8 @@ import { useDetailSchema } from '../data'; const formData = ref(); const [Descriptions] = useDescription({ + border: true, column: 2, - direction: 'horizontal', - labelWidth: 140, schema: useDetailSchema(), }); diff --git a/apps/web-ele/src/views/system/social/user/modules/detail.vue b/apps/web-ele/src/views/system/social/user/modules/detail.vue index a70a29247..a4edf0018 100644 --- a/apps/web-ele/src/views/system/social/user/modules/detail.vue +++ b/apps/web-ele/src/views/system/social/user/modules/detail.vue @@ -16,8 +16,6 @@ const formData = ref(); const [Descriptions] = useDescription({ border: true, column: 1, - size: 'large', - labelWidth: 185, schema: useDetailSchema(), }); From cbe7797a1c998d180469fcffd973734245b97480 Mon Sep 17 00:00:00 2001 From: jason <2667446@qq.com> Date: Sat, 1 Nov 2025 22:55:45 +0800 Subject: [PATCH 059/157] =?UTF-8?q?feat:=20[antd]=20[bpm]=20=E4=BB=A3?= =?UTF-8?q?=E7=A0=81=E8=AF=84=E5=AE=A1=20todo=20=E4=BF=AE=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/bpm/model/definition/index.vue | 9 ++++--- .../src/views/bpm/model/form/index.vue | 2 -- .../model/form/modules/bpm-model-editor.vue | 10 +++---- .../modules/category-draggable-model.vue | 26 +++++++------------ .../bpm/processInstance/detail/index.vue | 11 ++++---- .../detail/modules/operation-button.vue | 6 +---- 6 files changed, 26 insertions(+), 38 deletions(-) diff --git a/apps/web-antd/src/views/bpm/model/definition/index.vue b/apps/web-antd/src/views/bpm/model/definition/index.vue index 759086bbb..d1c8bb7fb 100644 --- a/apps/web-antd/src/views/bpm/model/definition/index.vue +++ b/apps/web-antd/src/views/bpm/model/definition/index.vue @@ -32,15 +32,18 @@ function handleRefresh() { } /** 查看表单详情 */ -function handleFormDetail(row: BpmProcessDefinitionApi.ProcessDefinition) { +async function handleFormDetail( + row: BpmProcessDefinitionApi.ProcessDefinition, +) { if (row.formType === BpmModelFormType.NORMAL) { const data = { id: row.formId, }; formCreateDetailModalApi.setData(data).open(); } else { - // TODO 待实现 jason 这里要改么? - console.warn('业务表单待实现', row); + await router.push({ + path: row.formCustomCreatePath, + }); } } diff --git a/apps/web-antd/src/views/bpm/model/form/index.vue b/apps/web-antd/src/views/bpm/model/form/index.vue index 713bd440b..0a706750f 100644 --- a/apps/web-antd/src/views/bpm/model/form/index.vue +++ b/apps/web-antd/src/views/bpm/model/form/index.vue @@ -309,8 +309,6 @@ async function handleSave() { } } catch (error: any) { console.error('保存失败:', error); - // TODO @jason:这个提示,还要么??? - // message.warning(error.msg || '请完善所有步骤的必填信息'); } } diff --git a/apps/web-antd/src/views/bpm/model/form/modules/bpm-model-editor.vue b/apps/web-antd/src/views/bpm/model/form/modules/bpm-model-editor.vue index 781ab2a92..782c8974d 100644 --- a/apps/web-antd/src/views/bpm/model/form/modules/bpm-model-editor.vue +++ b/apps/web-antd/src/views/bpm/model/form/modules/bpm-model-editor.vue @@ -121,11 +121,9 @@ onBeforeUnmount(() => { /> - diff --git a/apps/web-antd/src/views/bpm/model/modules/category-draggable-model.vue b/apps/web-antd/src/views/bpm/model/modules/category-draggable-model.vue index e285077d2..1188b4ea7 100644 --- a/apps/web-antd/src/views/bpm/model/modules/category-draggable-model.vue +++ b/apps/web-antd/src/views/bpm/model/modules/category-draggable-model.vue @@ -238,15 +238,16 @@ async function handleDeleteCategory() { } /** 处理表单详情点击 */ -function handleFormDetail(row: any) { +async function handleFormDetail(row: any) { if (row.formType === BpmModelFormType.NORMAL) { const data = { id: row.formId, }; formCreateDetailModalApi.setData(data).open(); } else { - // TODO 待实现 jason:是不是已经 ok 啦? - console.warn('业务表单待实现', row); + await router.push({ + path: row.formCustomCreatePath, + }); } } @@ -547,7 +548,7 @@ function handleRenameSuccess() { - diff --git a/apps/web-antd/src/views/bpm/processInstance/detail/index.vue b/apps/web-antd/src/views/bpm/processInstance/detail/index.vue index 578f9aaaf..d22cb7288 100644 --- a/apps/web-antd/src/views/bpm/processInstance/detail/index.vue +++ b/apps/web-antd/src/views/bpm/processInstance/detail/index.vue @@ -183,14 +183,13 @@ function setFieldPermission(field: string, permission: string) { } } -// TODO @jason:这个还要么? /** * 操作成功后刷新 */ -// const refresh = () => { -// // 重新获取详情 -// getDetail(); -// }; +const refresh = () => { + // 重新获取详情 + getDetail(); +}; /** 监听 Tab 切换,当切换到 "record" 标签时刷新任务列表 */ watch( @@ -369,7 +368,7 @@ onMounted(async () => { :normal-form="detailForm" :normal-form-api="fApi" :writable-fields="writableFields" - @success="getDetail" + @success="refresh" />
diff --git a/apps/web-antd/src/views/bpm/processInstance/detail/modules/operation-button.vue b/apps/web-antd/src/views/bpm/processInstance/detail/modules/operation-button.vue index b6ab093fd..c7536dc15 100644 --- a/apps/web-antd/src/views/bpm/processInstance/detail/modules/operation-button.vue +++ b/apps/web-antd/src/views/bpm/processInstance/detail/modules/operation-button.vue @@ -700,9 +700,6 @@ defineExpose({ loadTodoTask }); - - diff --git a/apps/web-antd/src/views/mall/promotion/kefu/components/message/MessageItem.vue b/apps/web-antd/src/views/mall/promotion/kefu/components/message/MessageItem.vue index 22464b134..ceaefc0e3 100644 --- a/apps/web-antd/src/views/mall/promotion/kefu/components/message/MessageItem.vue +++ b/apps/web-antd/src/views/mall/promotion/kefu/components/message/MessageItem.vue @@ -3,14 +3,15 @@ import type { MallKefuMessageApi } from '#/api/mall/promotion/kefu/message'; import { UserTypeEnum } from '@vben/constants'; +/** 消息组件 */ defineOptions({ name: 'MessageItem' }); + defineProps<{ message: MallKefuMessageApi.Message; }>(); diff --git a/apps/web-antd/src/views/mall/promotion/kefu/components/tools/constants.ts b/apps/web-antd/src/views/mall/promotion/kefu/components/tools/constants.ts index a4d747ede..266a6cf02 100644 --- a/apps/web-antd/src/views/mall/promotion/kefu/components/tools/constants.ts +++ b/apps/web-antd/src/views/mall/promotion/kefu/components/tools/constants.ts @@ -1,4 +1,4 @@ -// 客服消息类型枚举类 +/** 客服消息类型枚举类 */ export const KeFuMessageContentTypeEnum = { TEXT: 1, // 文本消息 IMAGE: 2, // 图片消息 @@ -10,7 +10,7 @@ export const KeFuMessageContentTypeEnum = { ORDER: 11, // 订单消息" }; -// Promotion 的 WebSocket 消息类型枚举类 +/** Promotion 的 WebSocket 消息类型枚举类 */ export const WebSocketMessageTypeConstants = { KEFU_MESSAGE_TYPE: 'kefu_message_type', // 客服消息类型 KEFU_MESSAGE_ADMIN_READ: 'kefu_message_read_status_change', // 客服消息管理员已读 diff --git a/apps/web-antd/src/views/mall/promotion/kefu/components/tools/emoji.ts b/apps/web-antd/src/views/mall/promotion/kefu/components/tools/emoji.ts index 5481ce065..628696807 100644 --- a/apps/web-antd/src/views/mall/promotion/kefu/components/tools/emoji.ts +++ b/apps/web-antd/src/views/mall/promotion/kefu/components/tools/emoji.ts @@ -101,11 +101,7 @@ export const useEmoji = () => { return newData; }; - /** - * 获得所有表情 - * - * @return 表情列表 - */ + /** 获得所有表情 */ function getEmojiList(): Emoji[] { return emojiList.map((item) => ({ url: getEmojiFileByName(item.name), diff --git a/apps/web-antd/src/views/mall/promotion/kefu/index.vue b/apps/web-antd/src/views/mall/promotion/kefu/index.vue index 4197d7fde..1d52a1179 100644 --- a/apps/web-antd/src/views/mall/promotion/kefu/index.vue +++ b/apps/web-antd/src/views/mall/promotion/kefu/index.vue @@ -5,7 +5,7 @@ import { Page } from '@vben/common-ui'; import { useAccessStore } from '@vben/stores'; import { useWebSocket } from '@vueuse/core'; -import message from 'ant-design-vue'; +import { message } from 'ant-design-vue'; import { useMallKefuStore } from '#/store/mall/kefu'; @@ -80,6 +80,7 @@ watch( /** 加载指定会话的消息列表 */ const keFuChatBoxRef = ref>(); const memberInfoRef = ref>(); +// TODO @jawe:这里没导入 const handleChange = (conversation: KeFuConversationRespVO) => { keFuChatBoxRef.value?.getNewMessageList(conversation); memberInfoRef.value?.initHistory(conversation); @@ -88,7 +89,7 @@ const handleChange = (conversation: KeFuConversationRespVO) => { const keFuConversationRef = ref>(); /** 初始化 */ onMounted(() => { - /** 加载会话列表 */ + // 加载会话列表 kefuStore.setConversationList().then(() => { keFuConversationRef.value?.calculationLastMessageTime(); }); @@ -105,6 +106,7 @@ onBeforeUnmount(() => { - - diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/image-bar/index.vue b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/image-bar/index.vue index 08cf5ba34..5e9d2a53d 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/image-bar/index.vue +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/image-bar/index.vue @@ -17,5 +17,5 @@ defineProps<{ property: ImageBarProperty }>(); >
- + diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-card/index.vue b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-card/index.vue index e1cd58bc6..1092b097b 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-card/index.vue +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-card/index.vue @@ -13,8 +13,8 @@ defineProps<{ property: UserCardProperty }>(); \ No newline at end of file + diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-order/index.vue b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-order/index.vue index 1c171b3eb..b22c9e576 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-order/index.vue +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-order/index.vue @@ -13,4 +13,4 @@ defineProps<{ property: UserOrderProperty }>(); - \ No newline at end of file + diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-order/property.vue b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-order/property.vue index 2f9abe556..e670a1e44 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-order/property.vue +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-order/property.vue @@ -17,4 +17,4 @@ const formData = useVModel(props, 'modelValue', emit); \ No newline at end of file + diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-wallet/index.vue b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-wallet/index.vue index 4eabad045..f23986193 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-wallet/index.vue +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/user-wallet/index.vue @@ -13,4 +13,4 @@ defineProps<{ property: UserWalletProperty }>(); - \ No newline at end of file + diff --git a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/video-player/property.vue b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/video-player/property.vue index c576d8f76..248777f55 100644 --- a/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/video-player/property.vue +++ b/apps/web-ele/src/views/mall/promotion/components/diy-editor/components/mobile/video-player/property.vue @@ -40,7 +40,7 @@ const formData = useVModel(props, 'modelValue', emit); :file-type="['mp4']" :limit="1" :file-size="100" - class="min-w-[80px]" + class="min-w-20" /> @@ -49,7 +49,7 @@ const formData = useVModel(props, 'modelValue', emit); draggable="false" height="80px" width="100%" - class="min-w-[80px]" + class="min-w-20" :show-description="false" > @@ -60,4 +60,4 @@ const formData = useVModel(props, 'modelValue', emit); - \ No newline at end of file + diff --git a/apps/web-ele/src/views/mall/promotion/components/magic-cube-editor/index.vue b/apps/web-ele/src/views/mall/promotion/components/magic-cube-editor/index.vue index b985a8142..9223bb11c 100644 --- a/apps/web-ele/src/views/mall/promotion/components/magic-cube-editor/index.vue +++ b/apps/web-ele/src/views/mall/promotion/components/magic-cube-editor/index.vue @@ -255,11 +255,11 @@ const eachCube = (callback: (x: number, y: number, cube: Cube) => void) => { .cube { box-sizing: border-box; + line-height: 1; color: var(--el-text-color-secondary); text-align: center; cursor: pointer; border: 1px solid var(--el-border-color); - line-height: 1; :deep(.iconify) { display: inline-block; From 1a3ce89f4b2a54c1dd21a6a672acfc0fbd5ebf23 Mon Sep 17 00:00:00 2001 From: YunaiV Date: Sun, 2 Nov 2025 12:10:46 +0800 Subject: [PATCH 067/157] =?UTF-8?q?review=EF=BC=9A=E3=80=90antd=E3=80=91?= =?UTF-8?q?=E3=80=90ele=E3=80=91member=20=E5=A2=9E=E5=8A=A0=20order-list?= =?UTF-8?q?=20=E5=88=97=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../src/views/mall/trade/order/index.vue | 2 +- .../src/views/member/user/detail/index.vue | 6 +- .../user/detail/modules/account-info.vue | 4 +- .../member/user/detail/modules/basic-info.vue | 14 +- .../member/user/detail/modules/order-list.vue | 128 +++++++++ .../src/views/mall/trade/order/index.vue | 4 +- .../src/views/member/user/detail/index.vue | 8 +- .../user/detail/modules/account-info.vue | 1 - .../member/user/detail/modules/basic-info.vue | 1 - .../member/user/detail/modules/order-list.vue | 133 +++++++++ .../user/detail/modules/user-order-list.vue | 264 ------------------ 11 files changed, 280 insertions(+), 285 deletions(-) create mode 100644 apps/web-antd/src/views/member/user/detail/modules/order-list.vue create mode 100644 apps/web-ele/src/views/member/user/detail/modules/order-list.vue delete mode 100644 apps/web-ele/src/views/member/user/detail/modules/user-order-list.vue diff --git a/apps/web-antd/src/views/mall/trade/order/index.vue b/apps/web-antd/src/views/mall/trade/order/index.vue index 84387940e..dbd2e2145 100644 --- a/apps/web-antd/src/views/mall/trade/order/index.vue +++ b/apps/web-antd/src/views/mall/trade/order/index.vue @@ -117,7 +117,7 @@ const [Grid, gridApi] = useVbenVxeGrid({ {{ property.propertyName }} : {{ property.valueName }} diff --git a/apps/web-antd/src/views/member/user/detail/index.vue b/apps/web-antd/src/views/member/user/detail/index.vue index 991c3fa49..b0c0d322f 100644 --- a/apps/web-antd/src/views/member/user/detail/index.vue +++ b/apps/web-antd/src/views/member/user/detail/index.vue @@ -20,6 +20,7 @@ import AddressList from './modules/address-list.vue'; import BalanceList from './modules/balance-list.vue'; import BasicInfo from './modules/basic-info.vue'; import ExperienceRecordList from './modules/experience-record-list.vue'; +import OrderList from './modules/order-list.vue'; import PointList from './modules/point-list.vue'; import SignList from './modules/sign-list.vue'; @@ -100,10 +101,7 @@ onMounted(async () => { - -
-

订单管理

-
+
diff --git a/apps/web-antd/src/views/member/user/detail/modules/account-info.vue b/apps/web-antd/src/views/member/user/detail/modules/account-info.vue index d148e5158..1bc7a0c9c 100644 --- a/apps/web-antd/src/views/member/user/detail/modules/account-info.vue +++ b/apps/web-antd/src/views/member/user/detail/modules/account-info.vue @@ -8,7 +8,7 @@ import { Card } from 'ant-design-vue'; import { useDescription } from '#/components/description'; -withDefaults( +const props = withDefaults( defineProps<{ mode?: 'kefu' | 'member'; user: MemberUserApi.User; @@ -20,6 +20,8 @@ withDefaults( ); const [Descriptions] = useDescription({ + bordered: false, + column: props.mode === 'member' ? 2 : 1, schema: [ { field: 'levelName', diff --git a/apps/web-antd/src/views/member/user/detail/modules/basic-info.vue b/apps/web-antd/src/views/member/user/detail/modules/basic-info.vue index e19dd298f..c3a8b4294 100644 --- a/apps/web-antd/src/views/member/user/detail/modules/basic-info.vue +++ b/apps/web-antd/src/views/member/user/detail/modules/basic-info.vue @@ -11,7 +11,7 @@ import { Avatar, Card, Col, Row } from 'ant-design-vue'; import { useDescription } from '#/components/description'; import { DictTag } from '#/components/dict-tag'; -withDefaults( +const props = withDefaults( defineProps<{ mode?: 'kefu' | 'member'; user: MemberUserApi.User }>(), { mode: 'member', @@ -19,6 +19,8 @@ withDefaults( ); const [Descriptions] = useDescription({ + bordered: false, + column: props.mode === 'member' ? 2 : 1, schema: [ { field: 'name', @@ -35,10 +37,10 @@ const [Descriptions] = useDescription({ { field: 'sex', label: '性别', - content: (data) => + render: (val) => h(DictTag, { type: DICT_TYPE.SYSTEM_USER_SEX, - value: data.sex, + value: val, }), }, { @@ -52,17 +54,17 @@ const [Descriptions] = useDescription({ { field: 'birthday', label: '生日', - content: (data) => formatDate(data.birthday)?.toString() || '-', + render: (val) => formatDate(val)?.toString() || '-', }, { field: 'createTime', label: '注册时间', - content: (data) => formatDate(data.createTime)?.toString() || '-', + render: (val) => formatDate(val)?.toString() || '-', }, { field: 'loginDate', label: '最后登录时间', - content: (data) => formatDate(data.loginDate)?.toString() || '-', + render: (val) => formatDate(val)?.toString() || '-', }, ], }); diff --git a/apps/web-antd/src/views/member/user/detail/modules/order-list.vue b/apps/web-antd/src/views/member/user/detail/modules/order-list.vue new file mode 100644 index 000000000..23b5e1b30 --- /dev/null +++ b/apps/web-antd/src/views/member/user/detail/modules/order-list.vue @@ -0,0 +1,128 @@ + + + diff --git a/apps/web-ele/src/views/mall/trade/order/index.vue b/apps/web-ele/src/views/mall/trade/order/index.vue index ac9a14238..c19b0fdf4 100644 --- a/apps/web-ele/src/views/mall/trade/order/index.vue +++ b/apps/web-ele/src/views/mall/trade/order/index.vue @@ -122,7 +122,7 @@ const [Grid, gridApi] = useVbenVxeGrid({ {{ item.spuName }} @@ -133,7 +133,7 @@ const [Grid, gridApi] = useVbenVxeGrid({ class="flex items-center justify-between text-xs text-gray-500" > - 原价:{{ fenToYuan(item.price) }} 元 / 数量:{{ + 原价:{{ fenToYuan(item.price!) }} 元 / 数量:{{ item.count }}个 diff --git a/apps/web-ele/src/views/member/user/detail/index.vue b/apps/web-ele/src/views/member/user/detail/index.vue index 19d3b5e69..1fdb3d4ff 100644 --- a/apps/web-ele/src/views/member/user/detail/index.vue +++ b/apps/web-ele/src/views/member/user/detail/index.vue @@ -19,6 +19,7 @@ import AccountInfo from './modules/account-info.vue'; import BalanceList from './modules/balance-list.vue'; import BasicInfo from './modules/basic-info.vue'; import ExperienceRecordList from './modules/experience-record-list.vue'; +import OrderList from './modules/order-list.vue'; import PointList from './modules/point-list.vue'; import SignList from './modules/sign-list.vue'; import UserAddressList from './modules/user-address-list.vue'; @@ -26,7 +27,6 @@ import UserAfterSaleList from './modules/user-after-sale-list.vue'; import UserBrokerageList from './modules/user-brokerage-list.vue'; import UserCouponList from './modules/user-coupon-list.vue'; import UserFavoriteList from './modules/user-favorite-list.vue'; -import UserOrderList from './modules/user-order-list.vue'; const route = useRoute(); const { closeCurrentTab, refreshTab } = useTabs(); @@ -70,6 +70,7 @@ onMounted(async () => {
+