fix: todo
parent
2369f06654
commit
f30a3451de
|
|
@ -59,6 +59,9 @@ const Textarea = defineAsyncComponent(() =>
|
|||
const TimePicker = defineAsyncComponent(
|
||||
() => import('ant-design-vue/es/time-picker'),
|
||||
);
|
||||
const TimeRangePicker = defineAsyncComponent(() =>
|
||||
import('ant-design-vue/es/time-picker').then((res) => res.TimeRangePicker),
|
||||
);
|
||||
const TreeSelect = defineAsyncComponent(
|
||||
() => import('ant-design-vue/es/tree-select'),
|
||||
);
|
||||
|
|
@ -126,6 +129,7 @@ export type ComponentType =
|
|||
| 'Switch'
|
||||
| 'Textarea'
|
||||
| 'TimePicker'
|
||||
| 'TimeRangePicker'
|
||||
| 'TreeSelect'
|
||||
| 'Upload'
|
||||
| BaseFormComponentType;
|
||||
|
|
@ -195,6 +199,7 @@ async function initComponentAdapter() {
|
|||
Textarea: withDefaultPlaceholder(Textarea, 'input'),
|
||||
RichTextarea,
|
||||
TimePicker,
|
||||
TimeRangePicker,
|
||||
TreeSelect: withDefaultPlaceholder(TreeSelect, 'select'),
|
||||
Upload,
|
||||
FileUpload,
|
||||
|
|
|
|||
|
|
@ -113,6 +113,8 @@ export namespace MallSpuApi {
|
|||
createTime?: Date;
|
||||
/** 商品状态 */
|
||||
status?: number;
|
||||
/** 浏览量 */
|
||||
browseCount?: number;
|
||||
}
|
||||
|
||||
/** 商品状态更新 */
|
||||
|
|
|
|||
|
|
@ -31,6 +31,8 @@ export namespace MallDeliveryPickUpStoreApi {
|
|||
status: number;
|
||||
/** 绑定用户编号组数 */
|
||||
verifyUserIds: number[];
|
||||
/** 营业时间 用于fieldMappingTime */
|
||||
rangeTime: any[];
|
||||
}
|
||||
|
||||
/** 绑定自提店员请求 */
|
||||
|
|
|
|||
|
|
@ -16,6 +16,7 @@ export namespace PayAppApi {
|
|||
merchantId: number;
|
||||
merchantName: string;
|
||||
createTime?: Date;
|
||||
channelCodes: string[];
|
||||
}
|
||||
|
||||
/** 更新状态请求 */
|
||||
|
|
|
|||
|
|
@ -1,76 +1,76 @@
|
|||
// import type { RouteRecordRaw } from 'vue-router';
|
||||
import type { RouteRecordRaw } from 'vue-router';
|
||||
|
||||
// const routes: RouteRecordRaw[] = [
|
||||
// {
|
||||
// path: '/mall/product',
|
||||
// name: 'ProductCenter',
|
||||
// meta: {
|
||||
// title: '商品中心',
|
||||
// icon: 'lucide:shopping-bag',
|
||||
// keepAlive: true,
|
||||
// hideInMenu: true,
|
||||
// },
|
||||
// children: [
|
||||
// {
|
||||
// path: 'spu/add',
|
||||
// name: 'ProductSpuAdd',
|
||||
// meta: {
|
||||
// title: '商品添加',
|
||||
// activeMenu: '/mall/product/spu',
|
||||
// },
|
||||
// component: () => import('#/views/mall/product/spu/form/index.vue'),
|
||||
// },
|
||||
// {
|
||||
// path: String.raw`spu/edit/:id(\d+)`,
|
||||
// name: 'ProductSpuEdit',
|
||||
// meta: {
|
||||
// title: '商品编辑',
|
||||
// activeMenu: '/mall/product/spu',
|
||||
// },
|
||||
// component: () => import('#/views/mall/product/spu/form/index.vue'),
|
||||
// },
|
||||
// {
|
||||
// path: String.raw`spu/detail/:id(\d+)`,
|
||||
// name: 'ProductSpuDetail',
|
||||
// meta: {
|
||||
// title: '商品详情',
|
||||
// activeMenu: '/crm/business',
|
||||
// },
|
||||
// component: () => import('#/views/mall/product/spu/form/index.vue'),
|
||||
// },
|
||||
// ],
|
||||
// },
|
||||
// {
|
||||
// path: '/mall/trade',
|
||||
// name: 'TradeCenter',
|
||||
// meta: {
|
||||
// title: '交易中心',
|
||||
// icon: 'lucide:shopping-cart',
|
||||
// keepAlive: true,
|
||||
// hideInMenu: true,
|
||||
// },
|
||||
// children: [
|
||||
// {
|
||||
// path: String.raw`order/detail/:id(\d+)`,
|
||||
// name: 'TradeOrderDetail',
|
||||
// meta: {
|
||||
// title: '订单详情',
|
||||
// activeMenu: '/mall/trade/order',
|
||||
// },
|
||||
// component: () => import('#/views/mall/trade/order/detail/index.vue'),
|
||||
// },
|
||||
// {
|
||||
// path: String.raw`after-sale/detail/:id(\d+)`,
|
||||
// name: 'TradeAfterSaleDetail',
|
||||
// meta: {
|
||||
// title: '退款详情',
|
||||
// activeMenu: '/mall/trade/after-sale',
|
||||
// },
|
||||
// component: () =>
|
||||
// import('#/views/mall/trade/afterSale/detail/index.vue'),
|
||||
// },
|
||||
// ],
|
||||
// },
|
||||
// ];
|
||||
const routes: RouteRecordRaw[] = [
|
||||
{
|
||||
path: '/mall/product',
|
||||
name: 'ProductCenter',
|
||||
meta: {
|
||||
title: '商品中心',
|
||||
icon: 'lucide:shopping-bag',
|
||||
keepAlive: true,
|
||||
hideInMenu: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: 'spu/add',
|
||||
name: 'ProductSpuAdd',
|
||||
meta: {
|
||||
title: '商品添加',
|
||||
activeMenu: '/mall/product/spu',
|
||||
},
|
||||
component: () => import('#/views/mall/product/spu/modules/form.vue'),
|
||||
},
|
||||
{
|
||||
path: String.raw`spu/edit/:id(\d+)`,
|
||||
name: 'ProductSpuEdit',
|
||||
meta: {
|
||||
title: '商品编辑',
|
||||
activeMenu: '/mall/product/spu',
|
||||
},
|
||||
component: () => import('#/views/mall/product/spu/modules/form.vue'),
|
||||
},
|
||||
{
|
||||
path: String.raw`spu/detail/:id(\d+)`,
|
||||
name: 'ProductSpuDetail',
|
||||
meta: {
|
||||
title: '商品详情',
|
||||
activeMenu: '/crm/business',
|
||||
},
|
||||
component: () => import('#/views/mall/product/spu/modules/detail.vue'),
|
||||
},
|
||||
],
|
||||
},
|
||||
{
|
||||
path: '/mall/trade',
|
||||
name: 'TradeCenter',
|
||||
meta: {
|
||||
title: '交易中心',
|
||||
icon: 'lucide:shopping-cart',
|
||||
keepAlive: true,
|
||||
hideInMenu: true,
|
||||
},
|
||||
children: [
|
||||
{
|
||||
path: String.raw`order/detail/:id(\d+)`,
|
||||
name: 'TradeOrderDetail',
|
||||
meta: {
|
||||
title: '订单详情',
|
||||
activeMenu: '/mall/trade/order',
|
||||
},
|
||||
component: () => import('#/views/mall/trade/order/modules/detail.vue'),
|
||||
},
|
||||
{
|
||||
path: String.raw`after-sale/detail/:id(\d+)`,
|
||||
name: 'TradeAfterSaleDetail',
|
||||
meta: {
|
||||
title: '退款详情',
|
||||
activeMenu: '/mall/trade/after-sale',
|
||||
},
|
||||
component: () =>
|
||||
import('#/views/mall/trade/afterSale/modules/detail.vue'),
|
||||
},
|
||||
],
|
||||
},
|
||||
];
|
||||
|
||||
// export default routes;
|
||||
export default routes;
|
||||
|
|
|
|||
|
|
@ -43,13 +43,12 @@ function handleEdit(row: MallCategoryApi.Category) {
|
|||
|
||||
/** 查看商品操作 */
|
||||
const router = useRouter(); // 路由
|
||||
const handleViewSpu = (id: number) => {
|
||||
// TODO @xingyu:貌似跳转不到详情;
|
||||
function handleViewSpu(id: number) {
|
||||
router.push({
|
||||
name: 'ProductSpu',
|
||||
query: { categoryId: id },
|
||||
});
|
||||
};
|
||||
}
|
||||
|
||||
/** 删除分类 */
|
||||
async function handleDelete(row: MallCategoryApi.Category) {
|
||||
|
|
|
|||
|
|
@ -269,7 +269,7 @@ onMounted(async () => {
|
|||
<!-- TODO @xingyu:展开的样子,有点丑 -->
|
||||
<Descriptions
|
||||
:column="4"
|
||||
class="mt-4"
|
||||
class="m-4"
|
||||
:label-style="{
|
||||
width: '100px',
|
||||
fontWeight: 'bold',
|
||||
|
|
@ -278,7 +278,7 @@ onMounted(async () => {
|
|||
:content-style="{ width: '100px', fontSize: '14px' }"
|
||||
>
|
||||
<Descriptions.Item label="商品分类">
|
||||
{{ treeToString(categoryList, row.categoryId as string) }}
|
||||
{{ treeToString(categoryList, row.categoryId!) }}
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label="商品名称">
|
||||
{{ row.name }}
|
||||
|
|
@ -291,7 +291,7 @@ onMounted(async () => {
|
|||
{{ fenToYuan(row.costPrice as number) }} 元
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label="浏览量">
|
||||
{{ row.browseCount as number }}
|
||||
{{ row.browseCount }}
|
||||
</Descriptions.Item>
|
||||
<Descriptions.Item label="虚拟销量">
|
||||
{{ row.virtualSalesCount }}
|
||||
|
|
@ -320,7 +320,7 @@ onMounted(async () => {
|
|||
danger: true,
|
||||
icon: ACTION_ICON.DELETE,
|
||||
auth: ['product:spu:delete'],
|
||||
ifShow: () => row.type === 4,
|
||||
ifShow: () => tabType === 4,
|
||||
popConfirm: {
|
||||
title: $t('ui.actionMessage.deleteConfirm', [row.name]),
|
||||
confirm: handleDelete.bind(null, row),
|
||||
|
|
@ -331,7 +331,6 @@ onMounted(async () => {
|
|||
type: 'link',
|
||||
icon: ACTION_ICON.EDIT,
|
||||
auth: ['product:spu:update'],
|
||||
ifShow: () => row.type === 4,
|
||||
onClick: handleStatus02Change.bind(
|
||||
null,
|
||||
row,
|
||||
|
|
@ -343,7 +342,6 @@ onMounted(async () => {
|
|||
type: 'link',
|
||||
icon: ACTION_ICON.EDIT,
|
||||
auth: ['product:spu:update'],
|
||||
ifShow: () => row.type !== 4,
|
||||
onClick: handleStatus02Change.bind(
|
||||
null,
|
||||
row,
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<script lang="ts" setup></script>
|
||||
|
||||
<template>
|
||||
detail
|
||||
<!-- TODO @xingyu:待开发 -->
|
||||
<div>detail</div>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -1,6 +1,6 @@
|
|||
<script lang="ts" setup></script>
|
||||
|
||||
<template>
|
||||
form
|
||||
<!-- TODO @xingyu:待开发 -->
|
||||
<div>form</div>
|
||||
</template>
|
||||
|
|
|
|||
|
|
@ -31,7 +31,6 @@ function openAfterSaleDetail(row: MallAfterSaleApi.AfterSale) {
|
|||
push({ name: 'TradeAfterSaleDetail', params: { id: row.id } });
|
||||
}
|
||||
|
||||
// TODO @xingyu:缺详情页
|
||||
/** 查看订单详情 */
|
||||
function openOrderDetail(row: MallAfterSaleApi.AfterSale) {
|
||||
push({ name: 'TradeOrderDetail', params: { id: row.id } });
|
||||
|
|
|
|||
|
|
@ -0,0 +1,6 @@
|
|||
<script lang="ts" setup></script>
|
||||
|
||||
<template>
|
||||
<!-- TODO @xingyu:待开发 -->
|
||||
<div>detail</div>
|
||||
</template>
|
||||
|
|
@ -7,14 +7,12 @@ import type { MallBrokerageUserApi } from '#/api/mall/trade/brokerage/user';
|
|||
import { ref } from 'vue';
|
||||
|
||||
import { useVbenModal } from '@vben/common-ui';
|
||||
import { BrokerageRecordBizTypeEnum } from '@vben/constants';
|
||||
import { BrokerageRecordBizTypeEnum, DICT_TYPE } from '@vben/constants';
|
||||
import { getDictOptions } from '@vben/hooks';
|
||||
import { fenToYuan } from '@vben/utils';
|
||||
|
||||
import { useVbenVxeGrid } from '#/adapter/vxe-table';
|
||||
import { getBrokerageRecordPage } from '#/api/mall/trade/brokerage/record';
|
||||
import { DICT_TYPE } from '@vben/constants';
|
||||
import { getDictOptions } from '@vben/hooks';
|
||||
|
||||
import { getRangePickerDefaultProps } from '#/utils';
|
||||
|
||||
/** 推广订单列表 */
|
||||
|
|
@ -52,16 +50,13 @@ function useFormSchema(): VbenFormSchema[] {
|
|||
{
|
||||
fieldName: 'sourceUserLevel',
|
||||
label: '用户类型',
|
||||
component: 'RadioGroup',
|
||||
// TODO @xingyu:这里会折行
|
||||
component: 'Select',
|
||||
componentProps: {
|
||||
options: [
|
||||
{ label: '全部', value: 0 },
|
||||
{ label: '一级推广人', value: 1 },
|
||||
{ label: '二级推广人', value: 2 },
|
||||
],
|
||||
buttonStyle: 'solid',
|
||||
optionType: 'button',
|
||||
},
|
||||
defaultValue: 0,
|
||||
},
|
||||
|
|
|
|||
|
|
@ -41,16 +41,13 @@ function useFormSchema(): VbenFormSchema[] {
|
|||
{
|
||||
fieldName: 'level',
|
||||
label: '用户类型',
|
||||
component: 'RadioGroup',
|
||||
// TODO @xingyu:这里会折行
|
||||
component: 'Select',
|
||||
componentProps: {
|
||||
options: [
|
||||
{ label: '全部', value: undefined },
|
||||
{ label: '一级推广人', value: '1' },
|
||||
{ label: '二级推广人', value: '2' },
|
||||
],
|
||||
buttonStyle: 'solid',
|
||||
optionType: 'button',
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
|
|||
|
|
@ -58,18 +58,22 @@ export function useFormSchema(): VbenFormSchema[] {
|
|||
label: '详细地址',
|
||||
rules: 'required',
|
||||
},
|
||||
// TODO @xingyu:时间类型不对
|
||||
{
|
||||
component: 'TimePicker',
|
||||
fieldName: 'openingTime',
|
||||
label: '营业开始时间',
|
||||
rules: 'required',
|
||||
},
|
||||
{
|
||||
component: 'TimePicker',
|
||||
fieldName: 'closingTime',
|
||||
label: '营业结束时间',
|
||||
component: 'TimeRangePicker',
|
||||
fieldName: 'rangeTime',
|
||||
label: '营业时间',
|
||||
rules: 'required',
|
||||
componentProps: {
|
||||
format: 'HH:mm',
|
||||
minuteStep: 15,
|
||||
disabledTime: () => {
|
||||
return {
|
||||
disabledHours: () => {
|
||||
return [0, 1, 2, 3, 4, 5, 6, 7];
|
||||
},
|
||||
};
|
||||
},
|
||||
},
|
||||
},
|
||||
{
|
||||
component: 'Input',
|
||||
|
|
|
|||
|
|
@ -18,7 +18,6 @@ import { useBindFormSchema } from '../data';
|
|||
|
||||
const emit = defineEmits(['success']);
|
||||
const formData = ref<MallDeliveryPickUpStoreApi.PickUpStore>();
|
||||
// TODO @xingyu:店员是多选;
|
||||
const getTitle = computed(() => {
|
||||
return formData.value?.id
|
||||
? $t('ui.actionTitle.edit', ['绑定店员'])
|
||||
|
|
|
|||
|
|
@ -6,6 +6,7 @@ import { computed, ref } from 'vue';
|
|||
import { useVbenModal } from '@vben/common-ui';
|
||||
|
||||
import { message } from 'ant-design-vue';
|
||||
import dayjs from 'dayjs';
|
||||
|
||||
import { useVbenForm } from '#/adapter/form';
|
||||
import {
|
||||
|
|
@ -33,6 +34,7 @@ const [Form, formApi] = useVbenForm({
|
|||
formItemClass: 'col-span-2',
|
||||
labelWidth: 120,
|
||||
},
|
||||
fieldMappingTime: [['rangeTime', ['openingTime', 'closingTime'], 'HH:mm']],
|
||||
layout: 'horizontal',
|
||||
schema: useFormSchema(),
|
||||
showDefaultActions: false,
|
||||
|
|
@ -73,6 +75,10 @@ const [Modal, modalApi] = useVbenModal({
|
|||
modalApi.lock();
|
||||
try {
|
||||
formData.value = await getDeliveryPickUpStore(data.id);
|
||||
formData.value.rangeTime = [
|
||||
dayjs(formData.value.openingTime, 'HH:mm'),
|
||||
dayjs(formData.value.closingTime, 'HH:mm'),
|
||||
];
|
||||
// 设置到 values
|
||||
await formApi.setValues(formData.value);
|
||||
} finally {
|
||||
|
|
|
|||
|
|
@ -33,7 +33,6 @@ function onRefresh() {
|
|||
gridApi.query();
|
||||
}
|
||||
const { push } = useRouter();
|
||||
// TODO xingyu:貌似详情,还点不进去哇?
|
||||
/** 详情 */
|
||||
function handleDetail(row: MallOrderApi.Order) {
|
||||
push({ name: 'TradeOrderDetail', params: { id: row.id } });
|
||||
|
|
|
|||
|
|
@ -0,0 +1,6 @@
|
|||
<script lang="ts" setup></script>
|
||||
|
||||
<template>
|
||||
<!-- TODO @xingyu:待开发 -->
|
||||
<div>detail</div>
|
||||
</template>
|
||||
|
|
@ -263,7 +263,7 @@ export function useGridColumns(): VxeTableGridOptions['columns'] {
|
|||
}
|
||||
|
||||
/** 修改用户等级 */
|
||||
export function useLeavelFormSchema(): VbenFormSchema[] {
|
||||
export function useLevelFormSchema(): VbenFormSchema[] {
|
||||
return [
|
||||
{
|
||||
component: 'Input',
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ import { $t } from '#/locales';
|
|||
import { useGridColumns, useGridFormSchema } from './data';
|
||||
import BalanceForm from './modules/balance-form.vue';
|
||||
import Form from './modules/form.vue';
|
||||
import LeavelForm from './modules/leavel-form.vue';
|
||||
import LevelForm from './modules/level-form.vue';
|
||||
import PointForm from './modules/point-form.vue';
|
||||
|
||||
const router = useRouter();
|
||||
|
|
@ -34,9 +34,8 @@ const [BalanceFormModal, balanceFormModalApi] = useVbenModal({
|
|||
destroyOnClose: true,
|
||||
});
|
||||
|
||||
// TODO @xingyu:拼写错误;
|
||||
const [LeavelFormModal, leavelFormModalApi] = useVbenModal({
|
||||
connectedComponent: LeavelForm,
|
||||
const [LevelFormModal, levelFormModalApi] = useVbenModal({
|
||||
connectedComponent: LevelForm,
|
||||
destroyOnClose: true,
|
||||
});
|
||||
|
||||
|
|
@ -64,7 +63,7 @@ function handleEdit(row: MemberUserApi.User) {
|
|||
|
||||
/** 修改会员等级 */
|
||||
function handleUpdateLevel(row: MemberUserApi.User) {
|
||||
leavelFormModalApi.setData(row).open();
|
||||
levelFormModalApi.setData(row).open();
|
||||
}
|
||||
|
||||
/** 修改会员积分 */
|
||||
|
|
@ -138,7 +137,7 @@ const [Grid, gridApi] = useVbenVxeGrid({
|
|||
<FormModal @success="onRefresh" />
|
||||
<PointFormModal @success="onRefresh" />
|
||||
<BalanceFormModal @success="onRefresh" />
|
||||
<LeavelFormModal @success="onRefresh" />
|
||||
<LevelFormModal @success="onRefresh" />
|
||||
<Grid table-title="会员列表">
|
||||
<template #toolbar-tools>
|
||||
<TableAction
|
||||
|
|
|
|||
|
|
@ -11,7 +11,7 @@ import { useVbenForm } from '#/adapter/form';
|
|||
import { getUser, updateUser } from '#/api/member/user';
|
||||
import { $t } from '#/locales';
|
||||
|
||||
import { useLeavelFormSchema } from '../data';
|
||||
import { useLevelFormSchema } from '../data';
|
||||
|
||||
const emit = defineEmits(['success']);
|
||||
const formData = ref<MemberUserApi.User>();
|
||||
|
|
@ -25,7 +25,7 @@ const [Form, formApi] = useVbenForm({
|
|||
labelWidth: 80,
|
||||
},
|
||||
layout: 'horizontal',
|
||||
schema: useLeavelFormSchema(),
|
||||
schema: useLevelFormSchema(),
|
||||
showDefaultActions: false,
|
||||
});
|
||||
|
||||
|
|
@ -80,13 +80,15 @@ export function useFormSchema(): VbenFormSchema[] {
|
|||
}
|
||||
|
||||
/** 搜索表单配置 */
|
||||
// TODO @xingyu:缺了 placeholder
|
||||
export function useGridFormSchema(): VbenFormSchema[] {
|
||||
return [
|
||||
{
|
||||
fieldName: 'name',
|
||||
label: '名称',
|
||||
component: 'Input',
|
||||
componentProps: {
|
||||
placeholder: '请输入名称',
|
||||
},
|
||||
},
|
||||
];
|
||||
}
|
||||
|
|
|
|||
|
|
@ -34,20 +34,18 @@ function handleCreate() {
|
|||
appFormModalApi.setData(null).open();
|
||||
}
|
||||
|
||||
function handleEdit(row: Required<PayAppApi.App>) {
|
||||
function handleEdit(row: PayAppApi.App) {
|
||||
appFormModalApi.setData({ id: row.id }).open();
|
||||
}
|
||||
|
||||
async function handleDelete(row: Required<PayAppApi.App>) {
|
||||
async function handleDelete(row: PayAppApi.App) {
|
||||
const hideLoading = message.loading({
|
||||
content: $t('ui.actionMessage.deleting', [row.name]),
|
||||
key: 'action_key_msg',
|
||||
});
|
||||
try {
|
||||
await deleteApp(row.id as number);
|
||||
message.success({
|
||||
content: $t('ui.actionMessage.deleteSuccess', [row.name]),
|
||||
key: 'action_key_msg',
|
||||
});
|
||||
onRefresh();
|
||||
} finally {
|
||||
|
|
@ -180,7 +178,6 @@ const [Grid, gridApi] = useVbenVxeGrid({
|
|||
/>
|
||||
</template>
|
||||
<template #alipayAppConfig="{ row }">
|
||||
<!-- TODO @xingyu:channelCodes 爆红 -->
|
||||
<TableAction
|
||||
:actions="[
|
||||
{
|
||||
|
|
|
|||
|
|
@ -1,10 +1,10 @@
|
|||
import type { VbenFormSchema } from '#/adapter/form';
|
||||
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
|
||||
|
||||
import { getAppList } from '#/api/pay/app';
|
||||
import { DICT_TYPE } from '@vben/constants';
|
||||
import { getDictOptions } from '@vben/hooks';
|
||||
|
||||
import { getAppList } from '#/api/pay/app';
|
||||
import { getRangePickerDefaultProps } from '#/utils';
|
||||
|
||||
/** 列表的搜索表单 */
|
||||
|
|
@ -33,12 +33,16 @@ export function useGridFormSchema(): VbenFormSchema[] {
|
|||
componentProps: {
|
||||
allowClear: true,
|
||||
options: getDictOptions(DICT_TYPE.PAY_NOTIFY_TYPE, 'number'),
|
||||
placeholder: '请选择通知类型',
|
||||
},
|
||||
},
|
||||
{
|
||||
fieldName: 'dataId',
|
||||
label: '关联编号',
|
||||
component: 'Input',
|
||||
componentProps: {
|
||||
placeholder: '请输入关联编号',
|
||||
},
|
||||
},
|
||||
{
|
||||
fieldName: 'status',
|
||||
|
|
@ -47,12 +51,16 @@ export function useGridFormSchema(): VbenFormSchema[] {
|
|||
componentProps: {
|
||||
allowClear: true,
|
||||
options: getDictOptions(DICT_TYPE.PAY_NOTIFY_STATUS, 'number'),
|
||||
placeholder: '请选择通知状态',
|
||||
},
|
||||
},
|
||||
{
|
||||
fieldName: 'merchantOrderId',
|
||||
label: '商户订单编号',
|
||||
component: 'Input',
|
||||
componentProps: {
|
||||
placeholder: '请输入商户订单编号',
|
||||
},
|
||||
},
|
||||
{
|
||||
fieldName: 'createTime',
|
||||
|
|
@ -61,12 +69,12 @@ export function useGridFormSchema(): VbenFormSchema[] {
|
|||
componentProps: {
|
||||
...getRangePickerDefaultProps(),
|
||||
allowClear: true,
|
||||
placeholder: ['开始日期', '结束日期'],
|
||||
},
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
// TODO @xingyu:缺少 placeholder
|
||||
/** 列表的字段 */
|
||||
export function useGridColumns(): VxeTableGridOptions['columns'] {
|
||||
return [
|
||||
|
|
|
|||
|
|
@ -8,13 +8,15 @@ import { getDictOptions } from '@vben/hooks';
|
|||
import { getRangePickerDefaultProps } from '#/utils';
|
||||
|
||||
/** 列表的搜索表单 */
|
||||
// TODO @xingyu:少了 placeholder
|
||||
export function useGridFormSchema(): VbenFormSchema[] {
|
||||
return [
|
||||
{
|
||||
fieldName: 'userId',
|
||||
label: '用户编号',
|
||||
component: 'Input',
|
||||
componentProps: {
|
||||
placeholder: '请输入用户编号',
|
||||
},
|
||||
},
|
||||
{
|
||||
fieldName: 'userType',
|
||||
|
|
@ -22,6 +24,7 @@ export function useGridFormSchema(): VbenFormSchema[] {
|
|||
component: 'Select',
|
||||
componentProps: {
|
||||
options: getDictOptions(DICT_TYPE.USER_TYPE, 'number'),
|
||||
placeholder: '请选择用户类型',
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -31,6 +34,7 @@ export function useGridFormSchema(): VbenFormSchema[] {
|
|||
componentProps: {
|
||||
allowClear: true,
|
||||
...getRangePickerDefaultProps(),
|
||||
placeholder: ['开始日期', '结束日期'],
|
||||
},
|
||||
},
|
||||
];
|
||||
|
|
|
|||
|
|
@ -14,6 +14,9 @@ export function useFormSchema(): VbenFormSchema[] {
|
|||
label: '套餐名',
|
||||
component: 'Input',
|
||||
rules: 'required',
|
||||
componentProps: {
|
||||
placeholder: '请输入套餐名称',
|
||||
},
|
||||
},
|
||||
{
|
||||
fieldName: 'payPrice',
|
||||
|
|
@ -24,6 +27,7 @@ export function useFormSchema(): VbenFormSchema[] {
|
|||
min: 0,
|
||||
precision: 2,
|
||||
step: 0.01,
|
||||
placeholder: '请输入支付金额',
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -35,6 +39,7 @@ export function useFormSchema(): VbenFormSchema[] {
|
|||
min: 0,
|
||||
precision: 2,
|
||||
step: 0.01,
|
||||
placeholder: '请输入赠送金额',
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -44,19 +49,22 @@ export function useFormSchema(): VbenFormSchema[] {
|
|||
rules: 'required',
|
||||
componentProps: {
|
||||
options: getDictOptions(DICT_TYPE.COMMON_STATUS, 'number'),
|
||||
placeholder: '请选择开启状态',
|
||||
},
|
||||
},
|
||||
];
|
||||
}
|
||||
|
||||
/** 列表的搜索表单 */
|
||||
// TODO @xingyu:少了 placeholder
|
||||
export function useGridFormSchema(): VbenFormSchema[] {
|
||||
return [
|
||||
{
|
||||
fieldName: 'name',
|
||||
label: '套餐名称',
|
||||
component: 'Input',
|
||||
componentProps: {
|
||||
placeholder: '请输入套餐名称',
|
||||
},
|
||||
},
|
||||
{
|
||||
fieldName: 'status',
|
||||
|
|
@ -65,6 +73,7 @@ export function useGridFormSchema(): VbenFormSchema[] {
|
|||
componentProps: {
|
||||
allowClear: true,
|
||||
options: getDictOptions(DICT_TYPE.COMMON_STATUS, 'number'),
|
||||
placeholder: '请选择状态',
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
@ -74,6 +83,7 @@ export function useGridFormSchema(): VbenFormSchema[] {
|
|||
componentProps: {
|
||||
allowClear: true,
|
||||
...getRangePickerDefaultProps(),
|
||||
placeholder: ['开始日期', '结束日期'],
|
||||
},
|
||||
},
|
||||
];
|
||||
|
|
|
|||
|
|
@ -7,14 +7,12 @@ import type { MallBrokerageUserApi } from '#/api/mall/trade/brokerage/user';
|
|||
import { ref } from 'vue';
|
||||
|
||||
import { useVbenModal } from '@vben/common-ui';
|
||||
import { BrokerageRecordBizTypeEnum } from '@vben/constants';
|
||||
import { BrokerageRecordBizTypeEnum, DICT_TYPE } from '@vben/constants';
|
||||
import { getDictOptions } from '@vben/hooks';
|
||||
import { fenToYuan } from '@vben/utils';
|
||||
|
||||
import { useVbenVxeGrid } from '#/adapter/vxe-table';
|
||||
import { getBrokerageRecordPage } from '#/api/mall/trade/brokerage/record';
|
||||
import { DICT_TYPE } from '@vben/constants';
|
||||
import { getDictOptions } from '@vben/hooks';
|
||||
|
||||
import { getRangePickerDefaultProps } from '#/utils';
|
||||
|
||||
/** 推广订单列表 */
|
||||
|
|
@ -52,16 +50,13 @@ function useFormSchema(): VbenFormSchema[] {
|
|||
{
|
||||
fieldName: 'sourceUserLevel',
|
||||
label: '用户类型',
|
||||
component: 'RadioGroup',
|
||||
// TODO @霖:这里会折行
|
||||
component: 'Select',
|
||||
componentProps: {
|
||||
options: [
|
||||
{ label: '全部', value: 0 },
|
||||
{ label: '一级推广人', value: 1 },
|
||||
{ label: '二级推广人', value: 2 },
|
||||
],
|
||||
buttonStyle: 'solid',
|
||||
optionType: 'button',
|
||||
},
|
||||
defaultValue: 0,
|
||||
},
|
||||
|
|
|
|||
Loading…
Reference in New Issue