fix: 解决合并冲突并更新依赖
解决多个组件模块的合并冲突,包括: - BPM流程实例创建页面 - 基础设施相关模块(API访问日志、错误日志等) - 商城促销相关组件 - 支付相关模块 - 系统管理模块 - Element Plus组件描述模块 - 依赖包更新 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
@@ -284,6 +284,17 @@ onMounted(() => {
|
||||
|
||||
<style lang="scss" scoped>
|
||||
// @jason:看看能不能通过 tailwindcss 简化下
|
||||
@keyframes bounce {
|
||||
0%,
|
||||
50% {
|
||||
transform: translateY(-5px);
|
||||
}
|
||||
|
||||
100% {
|
||||
transform: translateY(0);
|
||||
}
|
||||
}
|
||||
|
||||
.process-definition-container {
|
||||
.definition-item-card {
|
||||
.flow-icon-img {
|
||||
@@ -310,15 +321,4 @@ onMounted(() => {
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@keyframes bounce {
|
||||
0%,
|
||||
100% {
|
||||
transform: translateY(0);
|
||||
}
|
||||
|
||||
50% {
|
||||
transform: translateY(-5px);
|
||||
}
|
||||
}
|
||||
</style>
|
||||
|
||||
@@ -245,7 +245,7 @@ export function useDetailSchema(): DescriptionItemSchema[] {
|
||||
render: (val, data) => {
|
||||
if (val === 0) {
|
||||
return '正常';
|
||||
} else if (val > 0 && data?.resultCode > 0) {
|
||||
} else if (val > 0 && data?.resultMsg) {
|
||||
return `失败 | ${val} | ${data.resultMsg}`;
|
||||
}
|
||||
return '';
|
||||
|
||||
@@ -4,7 +4,6 @@ import type { HotZoneProperty } from './config';
|
||||
import { ref } from 'vue';
|
||||
|
||||
import { useVModel } from '@vueuse/core';
|
||||
|
||||
import { Button, Form, FormItem, Typography } from 'ant-design-vue';
|
||||
|
||||
import UploadImg from '#/components/upload/image-upload.vue';
|
||||
@@ -30,7 +29,12 @@ const handleOpenEditDialog = () => {
|
||||
<template>
|
||||
<ComponentContainerProperty v-model="formData.style">
|
||||
<!-- 表单 -->
|
||||
<Form :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }" :model="formData" class="mt-2">
|
||||
<Form
|
||||
:label-col="{ span: 6 }"
|
||||
:wrapper-col="{ span: 18 }"
|
||||
:model="formData"
|
||||
class="mt-2"
|
||||
>
|
||||
<FormItem label="上传图片" prop="imgUrl">
|
||||
<UploadImg
|
||||
v-model="formData.imgUrl"
|
||||
@@ -40,7 +44,9 @@ const handleOpenEditDialog = () => {
|
||||
:show-description="false"
|
||||
>
|
||||
<template #tip>
|
||||
<Typography.Text type="secondary" class="text-xs"> 推荐宽度 750</Typography.Text>
|
||||
<Typography.Text type="secondary" class="text-xs">
|
||||
推荐宽度 750
|
||||
</Typography.Text>
|
||||
</template>
|
||||
</UploadImg>
|
||||
</FormItem>
|
||||
|
||||
@@ -2,7 +2,6 @@
|
||||
import type { ImageBarProperty } from './config';
|
||||
|
||||
import { useVModel } from '@vueuse/core';
|
||||
|
||||
import { Form, FormItem } from 'ant-design-vue';
|
||||
|
||||
import UploadImg from '#/components/upload/image-upload.vue';
|
||||
@@ -20,7 +19,11 @@ const formData = useVModel(props, 'modelValue', emit);
|
||||
|
||||
<template>
|
||||
<ComponentContainerProperty v-model="formData.style">
|
||||
<Form :label-col="{ span: 6 }" :wrapper-col="{ span: 18 }" :model="formData">
|
||||
<Form
|
||||
:label-col="{ span: 6 }"
|
||||
:wrapper-col="{ span: 18 }"
|
||||
:model="formData"
|
||||
>
|
||||
<FormItem label="上传图片" prop="imgUrl">
|
||||
<UploadImg
|
||||
v-model="formData.imgUrl"
|
||||
|
||||
@@ -30,7 +30,7 @@ setInterval(() => {
|
||||
>
|
||||
<Image :src="property.iconUrl" class="h-[18px]" :preview="false" />
|
||||
<Divider type="vertical" />
|
||||
<div class="flex-1 pr-2 h-6 truncate leading-6">
|
||||
<div class="h-6 flex-1 truncate pr-2 leading-6">
|
||||
{{ property.contents?.[activeIndex]?.text }}
|
||||
</div>
|
||||
<IconifyIcon icon="ep:arrow-right" />
|
||||
|
||||
@@ -1,3 +1,4 @@
|
||||
<!-- eslint-disable unicorn/no-nested-ternary -->
|
||||
<!-- 积分活动橱窗组件 - 用于装修时展示和选择积分活动 -->
|
||||
<script lang="ts" setup>
|
||||
// TODO @puhui999:看看是不是整体优化下代码风格,参考别的模块
|
||||
@@ -95,9 +96,9 @@ watch(
|
||||
async () => {
|
||||
const ids = Array.isArray(props.modelValue)
|
||||
? props.modelValue
|
||||
: (props.modelValue
|
||||
: props.modelValue
|
||||
? [props.modelValue]
|
||||
: []);
|
||||
: [];
|
||||
|
||||
// 不需要返显
|
||||
if (ids.length === 0) {
|
||||
@@ -158,7 +159,7 @@ watch(
|
||||
<!-- 积分活动选择对话框 -->
|
||||
<PointTableSelect
|
||||
ref="pointActivityTableSelectRef"
|
||||
:multiple="limit != 1"
|
||||
:multiple="limit !== 1"
|
||||
@change="handleActivitySelected"
|
||||
/>
|
||||
</template>
|
||||
|
||||
@@ -153,4 +153,3 @@ const [Grid, gridApi] = useVbenVxeGrid({
|
||||
</Grid>
|
||||
</Page>
|
||||
</template>
|
||||
|
||||
|
||||
@@ -17,11 +17,9 @@ import { useDetailLogColumns, useDetailSchema } from '../data';
|
||||
const formData = ref<PayNotifyApi.NotifyTask>();
|
||||
|
||||
const [Description] = useDescription({
|
||||
componentProps: {
|
||||
bordered: true,
|
||||
column: 2,
|
||||
class: 'mx-4',
|
||||
},
|
||||
schema: useDetailSchema(),
|
||||
});
|
||||
|
||||
|
||||
@@ -13,11 +13,9 @@ import { useDetailSchema } from '../data';
|
||||
const formData = ref<PayOrderApi.Order>();
|
||||
|
||||
const [Descriptions] = useDescription({
|
||||
componentProps: {
|
||||
bordered: true,
|
||||
column: 2,
|
||||
class: 'mx-4',
|
||||
},
|
||||
schema: useDetailSchema(),
|
||||
});
|
||||
|
||||
|
||||
@@ -13,11 +13,9 @@ import { useDetailSchema } from '../data';
|
||||
const formData = ref<PayRefundApi.Refund>();
|
||||
|
||||
const [Descriptions] = useDescription({
|
||||
componentProps: {
|
||||
bordered: true,
|
||||
column: 2,
|
||||
class: 'mx-4',
|
||||
},
|
||||
schema: useDetailSchema(),
|
||||
});
|
||||
|
||||
|
||||
@@ -13,11 +13,9 @@ import { useDetailSchema } from '../data';
|
||||
const formData = ref<PayTransferApi.Transfer>();
|
||||
|
||||
const [Descriptions] = useDescription({
|
||||
componentProps: {
|
||||
bordered: true,
|
||||
column: 2,
|
||||
class: 'mx-4',
|
||||
},
|
||||
schema: useDetailSchema(),
|
||||
});
|
||||
|
||||
|
||||
@@ -12,11 +12,9 @@ import { useDetailSchema } from '../data';
|
||||
const formData = ref<SystemLoginLogApi.LoginLog>();
|
||||
|
||||
const [Descriptions] = useDescription({
|
||||
componentProps: {
|
||||
bordered: true,
|
||||
column: 1,
|
||||
class: 'mx-4',
|
||||
},
|
||||
schema: useDetailSchema(),
|
||||
});
|
||||
|
||||
|
||||
@@ -12,11 +12,9 @@ import { useDetailSchema } from '../data';
|
||||
const formData = ref<SystemMailLogApi.MailLog>();
|
||||
|
||||
const [Descriptions] = useDescription({
|
||||
componentProps: {
|
||||
bordered: true,
|
||||
column: 2,
|
||||
class: 'mx-4',
|
||||
},
|
||||
schema: useDetailSchema(),
|
||||
});
|
||||
|
||||
|
||||
@@ -12,11 +12,9 @@ import { useDetailSchema } from '../data';
|
||||
const formData = ref<SystemNotifyMessageApi.NotifyMessage>();
|
||||
|
||||
const [Descriptions] = useDescription({
|
||||
componentProps: {
|
||||
bordered: true,
|
||||
column: 1,
|
||||
class: 'mx-4',
|
||||
},
|
||||
schema: useDetailSchema(),
|
||||
});
|
||||
|
||||
|
||||
@@ -12,11 +12,9 @@ import { useDetailSchema } from '../data';
|
||||
const formData = ref<SystemNotifyMessageApi.NotifyMessage>();
|
||||
|
||||
const [Descriptions] = useDescription({
|
||||
componentProps: {
|
||||
bordered: true,
|
||||
column: 1,
|
||||
class: 'mx-4',
|
||||
},
|
||||
schema: useDetailSchema(),
|
||||
});
|
||||
|
||||
|
||||
@@ -12,11 +12,9 @@ import { useDetailSchema } from '../data';
|
||||
const formData = ref<SystemOperateLogApi.OperateLog>();
|
||||
|
||||
const [Descriptions] = useDescription({
|
||||
componentProps: {
|
||||
bordered: true,
|
||||
column: 1,
|
||||
class: 'mx-4',
|
||||
},
|
||||
schema: useDetailSchema(),
|
||||
});
|
||||
|
||||
|
||||
@@ -12,11 +12,9 @@ import { useDetailSchema } from '../data';
|
||||
const formData = ref<SystemSmsLogApi.SmsLog>();
|
||||
|
||||
const [Descriptions] = useDescription({
|
||||
componentProps: {
|
||||
bordered: true,
|
||||
column: 2,
|
||||
class: 'mx-4',
|
||||
},
|
||||
schema: useDetailSchema(),
|
||||
});
|
||||
|
||||
|
||||
@@ -14,13 +14,11 @@ import { useDetailSchema } from '../data';
|
||||
const formData = ref<SystemSocialUserApi.SocialUser>();
|
||||
|
||||
const [Descriptions] = useDescription({
|
||||
componentProps: {
|
||||
bordered: true,
|
||||
column: 1,
|
||||
size: 'middle',
|
||||
class: 'mx-4',
|
||||
labelStyle: { width: '185px' },
|
||||
},
|
||||
schema: useDetailSchema(),
|
||||
});
|
||||
|
||||
|
||||
@@ -10,8 +10,7 @@ import { get, getNestedValue, isFunction } from '@vben/utils';
|
||||
import { ElDescriptions, ElDescriptionsItem } from 'element-plus';
|
||||
|
||||
const props = {
|
||||
// TODO @星语:bordered 不生效;之前好像是 border
|
||||
bordered: { default: true, type: Boolean },
|
||||
border: { default: true, type: Boolean },
|
||||
column: {
|
||||
default: () => {
|
||||
return { lg: 3, md: 3, sm: 2, xl: 3, xs: 1, xxl: 4 };
|
||||
|
||||
@@ -32,8 +32,6 @@ export interface DescriptionProps extends ElDescriptionProps {
|
||||
schema: DescriptionItemSchema[];
|
||||
// 数据
|
||||
data: Recordable<any>;
|
||||
// 是否包含边框
|
||||
bordered?: boolean;
|
||||
}
|
||||
|
||||
export interface DescInstance {
|
||||
|
||||
@@ -245,7 +245,7 @@ export function useDetailSchema(): DescriptionItemSchema[] {
|
||||
render: (val, data) => {
|
||||
if (val === 0) {
|
||||
return '正常';
|
||||
} else if (data && data.resultCode > 0) {
|
||||
} else if (data && data.resultMsg) {
|
||||
return `失败 | ${val} | ${data.resultMsg}`;
|
||||
}
|
||||
return '';
|
||||
|
||||
@@ -11,8 +11,8 @@ import { useDetailSchema } from '../data';
|
||||
|
||||
const formData = ref<InfraApiAccessLogApi.ApiAccessLog>();
|
||||
|
||||
// TODO @xingyu:antd 和 el 这 2 个组件在这个模块的 detail.vue 不一样,看看是不是统一?还是就是区分的哈?
|
||||
const [Descriptions] = useDescription({
|
||||
border: true,
|
||||
column: 1,
|
||||
labelWidth: 110,
|
||||
schema: useDetailSchema(),
|
||||
|
||||
@@ -12,6 +12,7 @@ import { useDetailSchema } from '../data';
|
||||
const formData = ref<InfraApiErrorLogApi.ApiErrorLog>();
|
||||
|
||||
const [Descriptions] = useDescription({
|
||||
border: true,
|
||||
column: 1,
|
||||
labelWidth: 110,
|
||||
schema: useDetailSchema(),
|
||||
|
||||
@@ -14,6 +14,7 @@ const formData = ref<InfraJobApi.Job>(); // 任务详情
|
||||
const nextTimes = ref<Date[]>([]); // 下一次执行时间
|
||||
|
||||
const [Descriptions] = useDescription({
|
||||
border: true,
|
||||
column: 1,
|
||||
labelWidth: 140,
|
||||
schema: useDetailSchema(),
|
||||
|
||||
@@ -8,7 +8,7 @@ defineProps<{
|
||||
}>();
|
||||
|
||||
const [Descriptions] = useDescription({
|
||||
bordered: false,
|
||||
border: false,
|
||||
column: 6,
|
||||
schema: [
|
||||
{
|
||||
|
||||
@@ -1,4 +1,3 @@
|
||||
import type { MallAfterSaleApi } from '#/api/mall/trade/afterSale';
|
||||
import type { DescriptionItemSchema } from '#/components/description';
|
||||
|
||||
import { h } from 'vue';
|
||||
@@ -20,19 +19,19 @@ export function useOrderInfoSchema(): DescriptionItemSchema[] {
|
||||
{
|
||||
field: 'order.deliveryType',
|
||||
label: '配送方式',
|
||||
content: (data: MallAfterSaleApi.AfterSale) =>
|
||||
render: (val) =>
|
||||
h(DictTag, {
|
||||
type: DICT_TYPE.TRADE_DELIVERY_TYPE,
|
||||
value: data?.order?.deliveryType,
|
||||
value: val,
|
||||
}),
|
||||
},
|
||||
{
|
||||
field: 'order.type',
|
||||
label: '订单类型',
|
||||
content: (data: MallAfterSaleApi.AfterSale) =>
|
||||
render: (val) =>
|
||||
h(DictTag, {
|
||||
type: DICT_TYPE.TRADE_ORDER_TYPE,
|
||||
value: data?.order?.type,
|
||||
value: val,
|
||||
}),
|
||||
},
|
||||
{
|
||||
@@ -46,10 +45,10 @@ export function useOrderInfoSchema(): DescriptionItemSchema[] {
|
||||
{
|
||||
field: 'order.terminal',
|
||||
label: '订单来源',
|
||||
content: (data: MallAfterSaleApi.AfterSale) =>
|
||||
render: (val) =>
|
||||
h(DictTag, {
|
||||
type: DICT_TYPE.TERMINAL,
|
||||
value: data?.order?.terminal,
|
||||
value: val,
|
||||
}),
|
||||
},
|
||||
{
|
||||
@@ -67,10 +66,10 @@ export function useOrderInfoSchema(): DescriptionItemSchema[] {
|
||||
{
|
||||
field: 'order.payChannelCode',
|
||||
label: '付款方式',
|
||||
content: (data: MallAfterSaleApi.AfterSale) =>
|
||||
render: (val) =>
|
||||
h(DictTag, {
|
||||
type: DICT_TYPE.PAY_CHANNEL_CODE,
|
||||
value: data?.order?.payChannelCode,
|
||||
value: val,
|
||||
}),
|
||||
},
|
||||
{
|
||||
@@ -90,32 +89,30 @@ export function useAfterSaleInfoSchema(): DescriptionItemSchema[] {
|
||||
{
|
||||
field: 'auditTime',
|
||||
label: '申请时间',
|
||||
content: (data: MallAfterSaleApi.AfterSale) =>
|
||||
formatDate(data?.auditTime) as string,
|
||||
render: (val) => formatDate(val) as string,
|
||||
},
|
||||
{
|
||||
field: 'type',
|
||||
label: '售后类型',
|
||||
content: (data: MallAfterSaleApi.AfterSale) =>
|
||||
render: (val) =>
|
||||
h(DictTag, {
|
||||
type: DICT_TYPE.TRADE_AFTER_SALE_TYPE,
|
||||
value: data?.type,
|
||||
value: val,
|
||||
}),
|
||||
},
|
||||
{
|
||||
field: 'way',
|
||||
label: '售后方式',
|
||||
content: (data: MallAfterSaleApi.AfterSale) =>
|
||||
render: (val) =>
|
||||
h(DictTag, {
|
||||
type: DICT_TYPE.TRADE_AFTER_SALE_WAY,
|
||||
value: data?.way,
|
||||
value: val,
|
||||
}),
|
||||
},
|
||||
{
|
||||
field: 'refundPrice',
|
||||
label: '退款金额',
|
||||
content: (data: MallAfterSaleApi.AfterSale) =>
|
||||
fenToYuan(data?.refundPrice ?? 0),
|
||||
render: (val) => fenToYuan(val ?? 0),
|
||||
},
|
||||
{
|
||||
field: 'applyReason',
|
||||
@@ -128,8 +125,8 @@ export function useAfterSaleInfoSchema(): DescriptionItemSchema[] {
|
||||
{
|
||||
field: 'applyPicUrls',
|
||||
label: '凭证图片',
|
||||
content: (data) => {
|
||||
const images = data?.applyPicUrls || [];
|
||||
render: (val) => {
|
||||
const images = val || [];
|
||||
return h(
|
||||
'div',
|
||||
{ class: 'flex gap-10px' },
|
||||
@@ -153,16 +150,16 @@ export function useRefundStatusSchema(): DescriptionItemSchema[] {
|
||||
{
|
||||
field: 'status',
|
||||
label: '退款状态',
|
||||
content: (data) =>
|
||||
render: (val) =>
|
||||
h(DictTag, {
|
||||
type: DICT_TYPE.TRADE_AFTER_SALE_STATUS,
|
||||
value: data?.status,
|
||||
value: val,
|
||||
}),
|
||||
},
|
||||
{
|
||||
field: 'reminder',
|
||||
label: '提醒',
|
||||
content: () =>
|
||||
render: () =>
|
||||
h('div', { class: 'text-red-500 mb-10px' }, [
|
||||
h('div', '如果未发货,请点击同意退款给买家。'),
|
||||
h('div', '如果实际已发货,请主动与买家联系。'),
|
||||
|
||||
@@ -49,38 +49,29 @@ const afterSale = ref<MallAfterSaleApi.AfterSale>({
|
||||
});
|
||||
|
||||
const [OrderDescriptions] = useDescription({
|
||||
componentProps: {
|
||||
title: '订单信息',
|
||||
border: false,
|
||||
column: 3,
|
||||
direction: 'horizontal',
|
||||
labelWidth: 140,
|
||||
extra: '',
|
||||
},
|
||||
schema: useOrderInfoSchema(),
|
||||
});
|
||||
|
||||
const [AfterSaleDescriptions] = useDescription({
|
||||
componentProps: {
|
||||
title: '售后信息',
|
||||
border: false,
|
||||
column: 3,
|
||||
direction: 'horizontal',
|
||||
labelWidth: 140,
|
||||
extra: '',
|
||||
},
|
||||
schema: useAfterSaleInfoSchema(),
|
||||
});
|
||||
|
||||
const [RefundStatusDescriptions] = useDescription({
|
||||
componentProps: {
|
||||
title: '退款状态',
|
||||
border: false,
|
||||
column: 1,
|
||||
direction: 'horizontal',
|
||||
labelWidth: 140,
|
||||
extra: '',
|
||||
},
|
||||
schema: useRefundStatusSchema(),
|
||||
});
|
||||
|
||||
|
||||
@@ -1,5 +1,4 @@
|
||||
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
|
||||
import type { MallOrderApi } from '#/api/mall/trade/order';
|
||||
import type { DescriptionItemSchema } from '#/components/description';
|
||||
|
||||
import { h } from 'vue';
|
||||
@@ -23,19 +22,19 @@ export function useOrderInfoSchema(): DescriptionItemSchema[] {
|
||||
{
|
||||
field: 'type',
|
||||
label: '订单类型',
|
||||
content: (data: MallOrderApi.Order) =>
|
||||
render: (val) =>
|
||||
h(DictTag, {
|
||||
type: DICT_TYPE.TRADE_ORDER_TYPE,
|
||||
value: data?.type,
|
||||
value: val,
|
||||
}),
|
||||
},
|
||||
{
|
||||
field: 'terminal',
|
||||
label: '订单来源',
|
||||
content: (data: MallOrderApi.Order) =>
|
||||
render: (val) =>
|
||||
h(DictTag, {
|
||||
type: DICT_TYPE.TERMINAL,
|
||||
value: data?.terminal,
|
||||
value: val,
|
||||
}),
|
||||
},
|
||||
{
|
||||
@@ -53,10 +52,10 @@ export function useOrderInfoSchema(): DescriptionItemSchema[] {
|
||||
{
|
||||
field: 'payChannelCode',
|
||||
label: '付款方式',
|
||||
content: (data: MallOrderApi.Order) =>
|
||||
render: (val) =>
|
||||
h(DictTag, {
|
||||
type: DICT_TYPE.PAY_CHANNEL_CODE,
|
||||
value: data?.payChannelCode,
|
||||
value: val,
|
||||
}),
|
||||
},
|
||||
{
|
||||
@@ -72,16 +71,16 @@ export function useOrderStatusSchema(): DescriptionItemSchema[] {
|
||||
{
|
||||
field: 'status',
|
||||
label: '订单状态',
|
||||
content: (data: MallOrderApi.Order) =>
|
||||
render: (val) =>
|
||||
h(DictTag, {
|
||||
type: DICT_TYPE.TRADE_ORDER_STATUS,
|
||||
value: data?.status,
|
||||
value: val,
|
||||
}),
|
||||
},
|
||||
{
|
||||
field: 'reminder',
|
||||
label: '提醒',
|
||||
content: () =>
|
||||
render: () =>
|
||||
h('div', { class: 'space-y-1' }, [
|
||||
h('div', '买家付款成功后,货款将直接进入您的商户号(微信、支付宝)'),
|
||||
h('div', '请及时关注你发出的包裹状态,确保可以配送至买家手中'),
|
||||
@@ -100,66 +99,46 @@ export function useOrderPriceSchema(): DescriptionItemSchema[] {
|
||||
{
|
||||
field: 'totalPrice',
|
||||
label: '商品总额',
|
||||
content: (data: MallOrderApi.Order) =>
|
||||
`${fenToYuan(data?.totalPrice ?? 0)} 元`,
|
||||
render: (val) => `${fenToYuan(val ?? 0)} 元`,
|
||||
},
|
||||
{
|
||||
field: 'deliveryPrice',
|
||||
label: '运费金额',
|
||||
content: (data: MallOrderApi.Order) =>
|
||||
`${fenToYuan(data?.deliveryPrice ?? 0)} 元`,
|
||||
render: (val) => `${fenToYuan(val ?? 0)} 元`,
|
||||
},
|
||||
{
|
||||
field: 'adjustPrice',
|
||||
label: '订单调价',
|
||||
content: (data: MallOrderApi.Order) =>
|
||||
`${fenToYuan(data?.adjustPrice ?? 0)} 元`,
|
||||
render: (val) => `${fenToYuan(val ?? 0)} 元`,
|
||||
},
|
||||
{
|
||||
field: 'couponPrice',
|
||||
label: '优惠劵优惠',
|
||||
content: (data: MallOrderApi.Order) =>
|
||||
h(
|
||||
'span',
|
||||
{ class: 'text-red-500' },
|
||||
`${fenToYuan(data?.couponPrice ?? 0)} 元`,
|
||||
),
|
||||
render: (val) =>
|
||||
h('span', { class: 'text-red-500' }, `${fenToYuan(val ?? 0)} 元`),
|
||||
},
|
||||
{
|
||||
field: 'vipPrice',
|
||||
label: 'VIP 优惠',
|
||||
content: (data: MallOrderApi.Order) =>
|
||||
h(
|
||||
'span',
|
||||
{ class: 'text-red-500' },
|
||||
`${fenToYuan(data?.vipPrice ?? 0)} 元`,
|
||||
),
|
||||
render: (val) =>
|
||||
h('span', { class: 'text-red-500' }, `${fenToYuan(val ?? 0)} 元`),
|
||||
},
|
||||
{
|
||||
field: 'discountPrice',
|
||||
label: '活动优惠',
|
||||
content: (data: MallOrderApi.Order) =>
|
||||
h(
|
||||
'span',
|
||||
{ class: 'text-red-500' },
|
||||
`${fenToYuan(data?.discountPrice ?? 0)} 元`,
|
||||
),
|
||||
render: (val) =>
|
||||
h('span', { class: 'text-red-500' }, `${fenToYuan(val ?? 0)} 元`),
|
||||
},
|
||||
{
|
||||
field: 'pointPrice',
|
||||
label: '积分抵扣',
|
||||
content: (data: MallOrderApi.Order) =>
|
||||
h(
|
||||
'span',
|
||||
{ class: 'text-red-500' },
|
||||
`${fenToYuan(data?.pointPrice ?? 0)} 元`,
|
||||
),
|
||||
render: (val) =>
|
||||
h('span', { class: 'text-red-500' }, `${fenToYuan(val ?? 0)} 元`),
|
||||
},
|
||||
{
|
||||
field: 'payPrice',
|
||||
label: '应付金额',
|
||||
content: (data: MallOrderApi.Order) =>
|
||||
`${fenToYuan(data?.payPrice ?? 0)} 元`,
|
||||
render: (val) => `${fenToYuan(val ?? 0)} 元`,
|
||||
},
|
||||
];
|
||||
}
|
||||
@@ -170,10 +149,10 @@ export function useDeliveryInfoSchema(): DescriptionItemSchema[] {
|
||||
{
|
||||
field: 'deliveryType',
|
||||
label: '配送方式',
|
||||
content: (data: MallOrderApi.Order) =>
|
||||
render: (val) =>
|
||||
h(DictTag, {
|
||||
type: DICT_TYPE.TRADE_DELIVERY_TYPE,
|
||||
value: data?.deliveryType,
|
||||
value: val,
|
||||
}),
|
||||
},
|
||||
{
|
||||
@@ -187,14 +166,12 @@ export function useDeliveryInfoSchema(): DescriptionItemSchema[] {
|
||||
{
|
||||
field: 'receiverAddress',
|
||||
label: '收货地址',
|
||||
content: (data: MallOrderApi.Order) =>
|
||||
`${data?.receiverAreaName} ${data?.receiverDetailAddress}`.trim(),
|
||||
render: (val, data) => `${data?.receiverAreaName} ${val}`.trim(),
|
||||
},
|
||||
{
|
||||
field: 'deliveryTime',
|
||||
label: '发货时间',
|
||||
content: (data: MallOrderApi.Order) =>
|
||||
formatDateTime(data?.deliveryTime) as string,
|
||||
render: (val) => formatDateTime(val) as string,
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
@@ -57,38 +57,30 @@ const expressTrackList = ref<any[]>([]);
|
||||
const pickUpStore = ref<MallDeliveryPickUpStoreApi.PickUpStore | undefined>();
|
||||
|
||||
const [OrderInfoDescriptions] = useDescription({
|
||||
componentProps: {
|
||||
title: '订单信息',
|
||||
border: false,
|
||||
column: 3,
|
||||
},
|
||||
schema: useOrderInfoSchema(),
|
||||
});
|
||||
|
||||
const [OrderStatusDescriptions] = useDescription({
|
||||
componentProps: {
|
||||
title: '订单状态',
|
||||
border: false,
|
||||
column: 1,
|
||||
},
|
||||
schema: useOrderStatusSchema(),
|
||||
});
|
||||
|
||||
const [OrderPriceDescriptions] = useDescription({
|
||||
componentProps: {
|
||||
title: '费用信息',
|
||||
border: false,
|
||||
column: 4,
|
||||
},
|
||||
schema: useOrderPriceSchema(),
|
||||
});
|
||||
|
||||
const [DeliveryInfoDescriptions] = useDescription({
|
||||
componentProps: {
|
||||
title: '收货信息',
|
||||
border: false,
|
||||
column: 3,
|
||||
},
|
||||
schema: useDeliveryInfoSchema(),
|
||||
});
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
import type { VbenFormSchema } from '#/adapter/form';
|
||||
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
|
||||
import type { PayNotifyApi } from '#/api/pay/notify';
|
||||
import type { DescriptionItemSchema } from '#/components/description';
|
||||
|
||||
import { h } from 'vue';
|
||||
@@ -182,10 +181,10 @@ export function useDetailSchema(): DescriptionItemSchema[] {
|
||||
{
|
||||
field: 'type',
|
||||
label: '通知类型',
|
||||
content: (data: PayNotifyApi.NotifyTask) =>
|
||||
render: (val) =>
|
||||
h(DictTag, {
|
||||
type: DICT_TYPE.PAY_NOTIFY_TYPE,
|
||||
value: data?.type,
|
||||
value: val,
|
||||
}),
|
||||
},
|
||||
{
|
||||
@@ -195,10 +194,10 @@ export function useDetailSchema(): DescriptionItemSchema[] {
|
||||
{
|
||||
field: 'status',
|
||||
label: '通知状态',
|
||||
content: (data: PayNotifyApi.NotifyTask) =>
|
||||
render: (val) =>
|
||||
h(DictTag, {
|
||||
type: DICT_TYPE.PAY_NOTIFY_STATUS,
|
||||
value: data?.status,
|
||||
value: val,
|
||||
}),
|
||||
},
|
||||
{
|
||||
@@ -208,14 +207,12 @@ export function useDetailSchema(): DescriptionItemSchema[] {
|
||||
{
|
||||
field: 'lastExecuteTime',
|
||||
label: '最后通知时间',
|
||||
content: (data: PayNotifyApi.NotifyTask) =>
|
||||
formatDateTime(data?.lastExecuteTime) as string,
|
||||
render: (val) => formatDateTime(val) as string,
|
||||
},
|
||||
{
|
||||
field: 'nextNotifyTime',
|
||||
label: '下次通知时间',
|
||||
content: (data: PayNotifyApi.NotifyTask) =>
|
||||
formatDateTime(data?.nextNotifyTime) as string,
|
||||
render: (val) => formatDateTime(val) as string,
|
||||
},
|
||||
{
|
||||
field: 'notifyTimes',
|
||||
@@ -228,14 +225,12 @@ export function useDetailSchema(): DescriptionItemSchema[] {
|
||||
{
|
||||
field: 'createTime',
|
||||
label: '创建时间',
|
||||
content: (data: PayNotifyApi.NotifyTask) =>
|
||||
formatDateTime(data?.createTime) as string,
|
||||
render: (val) => formatDateTime(val) as string,
|
||||
},
|
||||
{
|
||||
field: 'updateTime',
|
||||
label: '更新时间',
|
||||
content: (data: PayNotifyApi.NotifyTask) =>
|
||||
formatDateTime(data?.updateTime) as string,
|
||||
render: (val) => formatDateTime(val) as string,
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
@@ -17,14 +17,10 @@ import { useDetailLogColumns, useDetailSchema } from '../data';
|
||||
const formData = ref<PayNotifyApi.NotifyTask>();
|
||||
|
||||
const [Description] = useDescription({
|
||||
componentProps: {
|
||||
border: true,
|
||||
column: 2,
|
||||
direction: 'horizontal',
|
||||
labelWidth: 140,
|
||||
title: '',
|
||||
extra: '',
|
||||
},
|
||||
schema: useDetailSchema(),
|
||||
});
|
||||
|
||||
|
||||
@@ -13,6 +13,7 @@ import { useDetailSchema } from '../data';
|
||||
const formData = ref<PayOrderApi.Order>();
|
||||
|
||||
const [Descriptions] = useDescription({
|
||||
border: true,
|
||||
column: 2,
|
||||
labelWidth: 140,
|
||||
schema: useDetailSchema(),
|
||||
|
||||
@@ -12,6 +12,7 @@ import { useDetailSchema } from '../data';
|
||||
const formData = ref<SystemNotifyMessageApi.NotifyMessage>();
|
||||
|
||||
const [Descriptions] = useDescription({
|
||||
border: true,
|
||||
column: 1,
|
||||
labelWidth: 140,
|
||||
schema: useDetailSchema(),
|
||||
|
||||
@@ -12,6 +12,7 @@ import { useDetailSchema } from '../data';
|
||||
const formData = ref<SystemNotifyMessageApi.NotifyMessage>();
|
||||
|
||||
const [Descriptions] = useDescription({
|
||||
border: true,
|
||||
column: 1,
|
||||
labelWidth: 140,
|
||||
schema: useDetailSchema(),
|
||||
|
||||
@@ -12,8 +12,8 @@ import { useDetailSchema } from '../data';
|
||||
const formData = ref<SystemOperateLogApi.OperateLog>();
|
||||
|
||||
const [Descriptions] = useDescription({
|
||||
border: true,
|
||||
column: 1,
|
||||
direction: 'horizontal',
|
||||
labelWidth: 110,
|
||||
schema: useDetailSchema(),
|
||||
});
|
||||
|
||||
@@ -14,7 +14,9 @@ import { useDetailSchema } from '../data';
|
||||
const formData = ref<SystemSocialUserApi.SocialUser>();
|
||||
|
||||
const [Descriptions] = useDescription({
|
||||
border: true,
|
||||
column: 1,
|
||||
size: 'large',
|
||||
labelWidth: 185,
|
||||
schema: useDetailSchema(),
|
||||
});
|
||||
|
||||
@@ -95,8 +95,8 @@
|
||||
"vue-tsc": "catalog:"
|
||||
},
|
||||
"engines": {
|
||||
"node": ">=20.10.0",
|
||||
"pnpm": ">=9.12.0"
|
||||
"node": ">=20.12.0",
|
||||
"pnpm": ">=10.14.0"
|
||||
},
|
||||
"packageManager": "pnpm@10.14.0",
|
||||
"pnpm": {
|
||||
|
||||
604
pnpm-lock.yaml
generated
604
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user