diff --git a/apps/web-antd/src/views/mall/trade/delivery/pickUpStore/data.ts b/apps/web-antd/src/views/mall/trade/delivery/pickUpStore/data.ts index 612d9aaef..e2cdade24 100644 --- a/apps/web-antd/src/views/mall/trade/delivery/pickUpStore/data.ts +++ b/apps/web-antd/src/views/mall/trade/delivery/pickUpStore/data.ts @@ -86,7 +86,6 @@ export function useFormSchema(): VbenFormSchema[] { rules: 'required', componentProps: { format: 'HH:mm', - minuteStep: 15, placeholder: ['开始时间', '结束时间'], }, }, diff --git a/apps/web-antd/src/views/mall/trade/delivery/pickUpStore/index.vue b/apps/web-antd/src/views/mall/trade/delivery/pickUpStore/index.vue index e4a724e0c..6274262f2 100644 --- a/apps/web-antd/src/views/mall/trade/delivery/pickUpStore/index.vue +++ b/apps/web-antd/src/views/mall/trade/delivery/pickUpStore/index.vue @@ -3,7 +3,6 @@ import type { VxeTableGridOptions } from '#/adapter/vxe-table'; import type { MallDeliveryPickUpStoreApi } from '#/api/mall/trade/delivery/pickUpStore'; import { Page, useVbenModal } from '@vben/common-ui'; -import { isEmpty } from '@vben/utils'; import { message } from 'ant-design-vue'; diff --git a/apps/web-antd/src/views/system/tenant/data.ts b/apps/web-antd/src/views/system/tenant/data.ts index df1499f5c..2d0552c4b 100644 --- a/apps/web-antd/src/views/system/tenant/data.ts +++ b/apps/web-antd/src/views/system/tenant/data.ts @@ -9,6 +9,7 @@ import { z } from '#/adapter/form'; import { getTenantPackageList } from '#/api/system/tenant-package'; import { getRangePickerDefaultProps } from '#/utils'; +// TODO @xingyu:这个不用 ref 么? let tenantPackageList: SystemTenantPackageApi.TenantPackage[] = []; async function getTenantPackageData() { diff --git a/apps/web-ele/src/api/mall/trade/delivery/pickUpStore/index.ts b/apps/web-ele/src/api/mall/trade/delivery/pickUpStore/index.ts index fe1d9d395..321df41fb 100644 --- a/apps/web-ele/src/api/mall/trade/delivery/pickUpStore/index.ts +++ b/apps/web-ele/src/api/mall/trade/delivery/pickUpStore/index.ts @@ -29,19 +29,18 @@ export namespace MallDeliveryPickUpStoreApi { longitude: number; /** 状态 */ status: number; + /** 营业时间 用于fieldMappingTime */ + rangeTime: any[]; /** 绑定用户编号组数 */ - verifyUserIds: number[]; + verifyUserIds?: number[]; + verifyUsers?: any[]; } /** 绑定自提店员请求 */ - export interface BindStaffRequest { + export interface DeliveryPickUpBindReqVO { id?: number; - /** 门店名称 */ - name: string; - /** 门店编号 */ - storeId: number; /** 用户编号列表 */ - userIds: number[]; + verifyUserIds: number[]; } } @@ -87,8 +86,8 @@ export function deleteDeliveryPickUpStore(id: number) { } /** 绑定自提店员 */ -export function bindStoreStaffId( - data: MallDeliveryPickUpStoreApi.BindStaffRequest, +export function bindDeliveryPickUpStore( + data: MallDeliveryPickUpStoreApi.DeliveryPickUpBindReqVO, ) { return requestClient.post('/trade/delivery/pick-up-store/bind', data); } diff --git a/apps/web-ele/src/views/mall/trade/delivery/pickUpStore/data.ts b/apps/web-ele/src/views/mall/trade/delivery/pickUpStore/data.ts index fa445f7a4..b99d8decd 100644 --- a/apps/web-ele/src/views/mall/trade/delivery/pickUpStore/data.ts +++ b/apps/web-ele/src/views/mall/trade/delivery/pickUpStore/data.ts @@ -20,76 +20,76 @@ export function useFormSchema(): VbenFormSchema[] { show: () => false, }, }, - { - component: 'ImageUpload', - fieldName: 'logo', - label: '门店 logo', - rules: 'required', - }, { component: 'Input', fieldName: 'name', label: '门店名称', rules: 'required', + componentProps: { + placeholder: '请输入门店名称', + }, }, { component: 'Input', fieldName: 'phone', label: '门店手机', rules: 'mobileRequired', + componentProps: { + placeholder: '请输入门店手机', + }, + }, + { + component: 'ImageUpload', + fieldName: 'logo', + label: '门店 logo', + rules: 'required', + formItemClass: 'col-span-2', + componentProps: { + placeholder: '请上传门店 logo', + }, + help: '推荐 180x180 图片分辨率', }, { component: 'Textarea', fieldName: 'introduction', label: '门店简介', + formItemClass: 'col-span-2', + componentProps: { + placeholder: '请输入门店简介', + rows: 4, + }, }, { fieldName: 'areaId', - label: '地址', + label: '门店所在地区', component: 'ApiTreeSelect', + rules: 'required', componentProps: { api: () => getAreaTree(), labelField: 'name', valueField: 'id', childrenField: 'children', + placeholder: '请选择省市区', }, }, { component: 'Input', fieldName: 'detailAddress', - label: '详细地址', - rules: 'required', - }, - // TODO @霖:时间类型不对 - { - component: 'TimePicker', - fieldName: 'openingTime', - label: '营业开始时间', + label: '门店详细地址', rules: 'required', + componentProps: { + placeholder: '请输入门店详细地址', + }, }, { component: 'TimePicker', - fieldName: 'closingTime', - label: '营业结束时间', + fieldName: 'rangeTime', + label: '营业时间', rules: 'required', - }, - { - component: 'Input', - fieldName: 'longitude', - label: '经度', - rules: 'required', - }, - { - component: 'Input', - fieldName: 'latitude', - label: '纬度', - rules: 'required', - }, - // TODO @霖:缺少地图 - { - component: 'Input', - fieldName: 'getGeo', - label: '获取经纬度', + componentProps: { + isRange: true, + format: 'HH:mm', + }, }, { fieldName: 'status', @@ -102,6 +102,24 @@ export function useFormSchema(): VbenFormSchema[] { }, rules: z.number().default(CommonStatusEnum.ENABLE), }, + { + component: 'Input', + fieldName: 'longitude', + label: '经度', + rules: 'required', + componentProps: { + placeholder: '请输入门店经度', + }, + }, + { + component: 'Input', + fieldName: 'latitude', + label: '纬度', + rules: 'required', + componentProps: { + placeholder: '请输入门店纬度', + }, + }, ]; } @@ -134,25 +152,9 @@ export function useBindFormSchema(): VbenFormSchema[] { api: () => getSimpleUserList(), labelField: 'nickname', valueField: 'id', - mode: 'tags', + multiple: true, clearable: true, - }, - }, - { - component: 'Select', - fieldName: 'verifyUsers', - label: '店员列表', - rules: 'required', - componentProps: { - options: [], - mode: 'tags', - }, - dependencies: { - triggerFields: ['verifyUserIds'], - trigger(values, form) { - form.setFieldValue('verifyUsers', values.verifyUserIds); - }, - disabled: true, + placeholder: '请选择门店店员', }, }, ]; @@ -165,11 +167,19 @@ export function useGridFormSchema(): VbenFormSchema[] { fieldName: 'phone', label: '门店手机', component: 'Input', + componentProps: { + placeholder: '请输入门店手机', + clearable: true, + }, }, { fieldName: 'name', label: '门店名称', component: 'Input', + componentProps: { + placeholder: '请输入门店名称', + clearable: true, + }, }, { fieldName: 'status', @@ -178,6 +188,7 @@ export function useGridFormSchema(): VbenFormSchema[] { componentProps: { clearable: true, options: getDictOptions(DICT_TYPE.COMMON_STATUS, 'number'), + placeholder: '请选择门店状态', }, }, { @@ -198,10 +209,12 @@ export function useGridColumns(): VxeTableGridOptions['columns'] { { field: 'id', title: '编号', + minWidth: 80, }, { field: 'logo', title: '门店 logo', + minWidth: 100, cellRender: { name: 'CellImage', }, @@ -209,18 +222,22 @@ export function useGridColumns(): VxeTableGridOptions['columns'] { { field: 'name', title: '门店名称', + minWidth: 150, }, { field: 'phone', title: '门店手机', + minWidth: 120, }, { field: 'detailAddress', title: '地址', + minWidth: 200, }, { field: 'openingTime', title: '营业时间', + minWidth: 160, formatter: ({ row }) => { return `${row.openingTime} ~ ${row.closingTime}`; }, @@ -228,6 +245,7 @@ export function useGridColumns(): VxeTableGridOptions['columns'] { { field: 'status', title: '开启状态', + minWidth: 100, cellRender: { name: 'CellDict', props: { type: DICT_TYPE.COMMON_STATUS }, @@ -236,11 +254,12 @@ export function useGridColumns(): VxeTableGridOptions['columns'] { { field: 'createTime', title: '创建时间', + minWidth: 160, formatter: 'formatDateTime', }, { title: '操作', - width: 200, + width: 220, fixed: 'right', slots: { default: 'actions' }, }, diff --git a/apps/web-ele/src/views/mall/trade/delivery/pickUpStore/index.vue b/apps/web-ele/src/views/mall/trade/delivery/pickUpStore/index.vue index 70f97117d..a36a448ac 100644 --- a/apps/web-ele/src/views/mall/trade/delivery/pickUpStore/index.vue +++ b/apps/web-ele/src/views/mall/trade/delivery/pickUpStore/index.vue @@ -28,7 +28,7 @@ const [BindFormModal, bindFormModalApi] = useVbenModal({ }); /** 刷新表格 */ -function onRefresh() { +function handleRefresh() { gridApi.query(); } @@ -55,7 +55,7 @@ async function handleDelete(row: MallDeliveryPickUpStoreApi.PickUpStore) { try { await deleteDeliveryPickUpStore(row.id as number); ElMessage.success($t('ui.actionMessage.deleteSuccess', [row.name])); - onRefresh(); + handleRefresh(); } finally { loadingInstance.close(); } @@ -82,6 +82,7 @@ const [Grid, gridApi] = useVbenVxeGrid({ }, rowConfig: { keyField: 'id', + isHover: true, }, toolbarConfig: { refresh: true, @@ -93,7 +94,7 @@ const [Grid, gridApi] = useVbenVxeGrid({