feat(cms): 新增网站订单模块并完善相关功能
- 在开发环境配置文件中启用API URL - 新增网站订单编辑组件,支持添加和修改订单功能 - 调整发货模态框宽度为50% - 将页面标题从"网宿软件"更新为"麦芽知电子商务" - 重构网站订单模型定义,增加多个订单相关字段 - 更新网站订单API接口,移除模块前缀 - 在商品模型中新增分销佣金相关字段 - 实现完整的网站订单管理页面,包含表格展示和操作功能
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
VITE_APP_NAME=后台管理(开发环境)
|
VITE_APP_NAME=后台管理(开发环境)
|
||||||
#VITE_API_URL=http://127.0.0.1:9200/api
|
VITE_API_URL=http://127.0.0.1:9200/api
|
||||||
#VITE_SERVER_API_URL=http://127.0.0.1:8000/api
|
#VITE_SERVER_API_URL=http://127.0.0.1:8000/api
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -4,7 +4,7 @@
|
|||||||
<meta charset="UTF-8" />
|
<meta charset="UTF-8" />
|
||||||
<link rel="icon" href="/favicon.ico" />
|
<link rel="icon" href="/favicon.ico" />
|
||||||
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
|
||||||
<title>网宿软件</title>
|
<title>麦芽知电子商务</title>
|
||||||
<style>
|
<style>
|
||||||
.ele-admin-loading {
|
.ele-admin-loading {
|
||||||
width: 36px;
|
width: 36px;
|
||||||
|
|||||||
@@ -1,14 +1,13 @@
|
|||||||
import request from '@/utils/request';
|
import request from '@/utils/request';
|
||||||
import type { ApiResult, PageResult } from '@/api';
|
import type { ApiResult, PageResult } from '@/api';
|
||||||
import type { CmsOrder, CmsOrderParam } from './model';
|
import type { CmsOrder, CmsOrderParam } from './model';
|
||||||
import { MODULES_API_URL } from '@/config/setting';
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 分页查询订单
|
* 分页查询网站订单
|
||||||
*/
|
*/
|
||||||
export async function pageCmsOrder(params: CmsOrderParam) {
|
export async function pageCmsOrder(params: CmsOrderParam) {
|
||||||
const res = await request.get<ApiResult<PageResult<CmsOrder>>>(
|
const res = await request.get<ApiResult<PageResult<CmsOrder>>>(
|
||||||
MODULES_API_URL + '/cms/cms-order/page',
|
'/cms/cms-order/page',
|
||||||
{
|
{
|
||||||
params
|
params
|
||||||
}
|
}
|
||||||
@@ -20,11 +19,11 @@ export async function pageCmsOrder(params: CmsOrderParam) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 查询订单列表
|
* 查询网站订单列表
|
||||||
*/
|
*/
|
||||||
export async function listCmsOrder(params?: CmsOrderParam) {
|
export async function listCmsOrder(params?: CmsOrderParam) {
|
||||||
const res = await request.get<ApiResult<CmsOrder[]>>(
|
const res = await request.get<ApiResult<CmsOrder[]>>(
|
||||||
MODULES_API_URL + '/cms/cms-order',
|
'/cms/cms-order',
|
||||||
{
|
{
|
||||||
params
|
params
|
||||||
}
|
}
|
||||||
@@ -36,11 +35,11 @@ export async function listCmsOrder(params?: CmsOrderParam) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 添加订单
|
* 添加网站订单
|
||||||
*/
|
*/
|
||||||
export async function addCmsOrder(data: CmsOrder) {
|
export async function addCmsOrder(data: CmsOrder) {
|
||||||
const res = await request.post<ApiResult<unknown>>(
|
const res = await request.post<ApiResult<unknown>>(
|
||||||
MODULES_API_URL + '/cms/cms-order',
|
'/cms/cms-order',
|
||||||
data
|
data
|
||||||
);
|
);
|
||||||
if (res.data.code === 0) {
|
if (res.data.code === 0) {
|
||||||
@@ -50,11 +49,11 @@ export async function addCmsOrder(data: CmsOrder) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 修改订单
|
* 修改网站订单
|
||||||
*/
|
*/
|
||||||
export async function updateCmsOrder(data: CmsOrder) {
|
export async function updateCmsOrder(data: CmsOrder) {
|
||||||
const res = await request.put<ApiResult<unknown>>(
|
const res = await request.put<ApiResult<unknown>>(
|
||||||
MODULES_API_URL + '/cms/cms-order',
|
'/cms/cms-order',
|
||||||
data
|
data
|
||||||
);
|
);
|
||||||
if (res.data.code === 0) {
|
if (res.data.code === 0) {
|
||||||
@@ -64,11 +63,11 @@ export async function updateCmsOrder(data: CmsOrder) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 删除订单
|
* 删除网站订单
|
||||||
*/
|
*/
|
||||||
export async function removeCmsOrder(id?: number) {
|
export async function removeCmsOrder(id?: number) {
|
||||||
const res = await request.delete<ApiResult<unknown>>(
|
const res = await request.delete<ApiResult<unknown>>(
|
||||||
MODULES_API_URL + '/cms/cms-order/' + id
|
'/cms/cms-order/' + id
|
||||||
);
|
);
|
||||||
if (res.data.code === 0) {
|
if (res.data.code === 0) {
|
||||||
return res.data.message;
|
return res.data.message;
|
||||||
@@ -77,11 +76,11 @@ export async function removeCmsOrder(id?: number) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 批量删除订单
|
* 批量删除网站订单
|
||||||
*/
|
*/
|
||||||
export async function removeBatchCmsOrder(data: (number | undefined)[]) {
|
export async function removeBatchCmsOrder(data: (number | undefined)[]) {
|
||||||
const res = await request.delete<ApiResult<unknown>>(
|
const res = await request.delete<ApiResult<unknown>>(
|
||||||
MODULES_API_URL + '/cms/cms-order/batch',
|
'/cms/cms-order/batch',
|
||||||
{
|
{
|
||||||
data
|
data
|
||||||
}
|
}
|
||||||
@@ -93,11 +92,11 @@ export async function removeBatchCmsOrder(data: (number | undefined)[]) {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 根据id查询订单
|
* 根据id查询网站订单
|
||||||
*/
|
*/
|
||||||
export async function getCmsOrder(id: number) {
|
export async function getCmsOrder(id: number) {
|
||||||
const res = await request.get<ApiResult<CmsOrder>>(
|
const res = await request.get<ApiResult<CmsOrder>>(
|
||||||
MODULES_API_URL + '/cms/cms-order/' + id
|
'/cms/cms-order/' + id
|
||||||
);
|
);
|
||||||
if (res.data.code === 0 && res.data.data) {
|
if (res.data.code === 0 && res.data.data) {
|
||||||
return res.data.data;
|
return res.data.data;
|
||||||
|
|||||||
@@ -1,47 +1,149 @@
|
|||||||
import type { PageParam } from '@/api';
|
import type { PageParam } from '@/api';
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单
|
* 网站订单
|
||||||
*/
|
*/
|
||||||
export interface CmsOrder {
|
export interface CmsOrder {
|
||||||
// 订单号
|
// id
|
||||||
orderId?: number;
|
id?: number;
|
||||||
|
// 订单类型,0售前咨询 1售后服务 2意见反馈
|
||||||
|
type?: number;
|
||||||
// 订单标题
|
// 订单标题
|
||||||
title?: string;
|
title?: string;
|
||||||
// 订单编号
|
// 公司/团队名称
|
||||||
orderNo?: string;
|
company?: string;
|
||||||
// 订单类型,0商城 1询价 2留言
|
|
||||||
type?: number;
|
|
||||||
// 关联项目ID,配合订单类型使用
|
|
||||||
itemId?: number;
|
|
||||||
// 真实姓名
|
|
||||||
realName?: string;
|
|
||||||
// 手机号码
|
|
||||||
phone?: string;
|
|
||||||
// 电子邮箱
|
|
||||||
email?: string;
|
|
||||||
// 收货地址
|
|
||||||
address?: string;
|
|
||||||
// 订单内容
|
// 订单内容
|
||||||
content?: string;
|
content?: string;
|
||||||
// 订单附件
|
// 订单编号
|
||||||
files?: string;
|
orderNo?: string;
|
||||||
|
// 快递/自提
|
||||||
|
deliveryType?: number;
|
||||||
|
// 下单渠道,0网站 1微信小程序 2其他
|
||||||
|
channel?: number;
|
||||||
|
// 微信支付交易号号
|
||||||
|
transactionId?: string;
|
||||||
|
// 微信退款订单号
|
||||||
|
refundOrder?: string;
|
||||||
|
// 商户ID
|
||||||
|
merchantId?: number;
|
||||||
|
// 商户名称
|
||||||
|
merchantName?: string;
|
||||||
|
// 商户编号
|
||||||
|
merchantCode?: string;
|
||||||
|
// 使用的优惠券id
|
||||||
|
couponId?: number;
|
||||||
|
// 使用的会员卡id
|
||||||
|
cardId?: string;
|
||||||
|
// 关联管理员id
|
||||||
|
adminId?: number;
|
||||||
|
// 核销管理员id
|
||||||
|
confirmId?: number;
|
||||||
|
// IC卡号
|
||||||
|
icCard?: string;
|
||||||
|
// 真实姓名
|
||||||
|
realName?: string;
|
||||||
|
// 关联收货地址
|
||||||
|
addressId?: number;
|
||||||
|
// 收货地址
|
||||||
|
address?: string;
|
||||||
|
//
|
||||||
|
addressLat?: string;
|
||||||
|
//
|
||||||
|
addressLng?: string;
|
||||||
|
// 自提店铺id
|
||||||
|
selfTakeMerchantId?: number;
|
||||||
|
// 自提店铺
|
||||||
|
selfTakeMerchantName?: string;
|
||||||
|
// 配送开始时间
|
||||||
|
sendStartTime?: string;
|
||||||
|
// 配送结束时间
|
||||||
|
sendEndTime?: string;
|
||||||
|
// 发货店铺id
|
||||||
|
expressMerchantId?: number;
|
||||||
|
// 发货店铺
|
||||||
|
expressMerchantName?: string;
|
||||||
// 订单总额
|
// 订单总额
|
||||||
totalPrice?: string;
|
totalPrice?: string;
|
||||||
|
// 减少的金额,使用VIP会员折扣、优惠券抵扣、优惠券折扣后减去的价格
|
||||||
|
reducePrice?: string;
|
||||||
// 实际付款
|
// 实际付款
|
||||||
payPrice?: string;
|
payPrice?: string;
|
||||||
// 报价询价
|
// 用于统计
|
||||||
price?: string;
|
price?: string;
|
||||||
|
// 价钱,用于积分赠送
|
||||||
|
money?: string;
|
||||||
|
// 取消时间
|
||||||
|
cancelTime?: string;
|
||||||
|
// 取消原因
|
||||||
|
cancelReason?: string;
|
||||||
|
// 退款金额
|
||||||
|
refundMoney?: string;
|
||||||
|
// 教练价格
|
||||||
|
coachPrice?: string;
|
||||||
// 购买数量
|
// 购买数量
|
||||||
totalNum?: number;
|
totalNum?: number;
|
||||||
|
// 教练id
|
||||||
|
coachId?: number;
|
||||||
|
// 商品ID
|
||||||
|
formId?: number;
|
||||||
|
// 支付的用户id
|
||||||
|
payUserId?: number;
|
||||||
|
// 0余额支付,1微信支付,2支付宝支付,3银联支付,4现金支付,5POS机支付,6免费,7积分支付
|
||||||
|
payType?: number;
|
||||||
|
// 微信支付子类型:JSAPI小程序支付,NATIVE扫码支付
|
||||||
|
wechatPayType?: string;
|
||||||
|
// 0余额支付,1微信支付,2支付宝支付,3银联支付,4现金支付,5POS机支付,6免费,7积分支付
|
||||||
|
friendPayType?: number;
|
||||||
|
// 0未付款,1已付款
|
||||||
|
payStatus?: number;
|
||||||
|
// 0未使用,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款
|
||||||
|
orderStatus?: number;
|
||||||
|
// 发货状态(10未发货 20已发货 30部分发货)
|
||||||
|
deliveryStatus?: number;
|
||||||
|
// 无需发货备注
|
||||||
|
deliveryNote?: string;
|
||||||
|
// 发货时间
|
||||||
|
deliveryTime?: string;
|
||||||
|
// 评价状态(0未评价 1已评价)
|
||||||
|
evaluateStatus?: number;
|
||||||
|
// 评价时间
|
||||||
|
evaluateTime?: string;
|
||||||
|
// 优惠类型:0无、1抵扣优惠券、2折扣优惠券、3、VIP月卡、4VIP年卡,5VIP次卡、6VIP会员卡、7IC月卡、8IC年卡、9IC次卡、10IC会员卡、11免费订单、12VIP充值卡、13IC充值卡、14VIP季卡、15IC季卡
|
||||||
|
couponType?: number;
|
||||||
|
// 优惠说明
|
||||||
|
couponDesc?: string;
|
||||||
// 二维码地址,保存订单号,支付成功后才生成
|
// 二维码地址,保存订单号,支付成功后才生成
|
||||||
qrcode?: string;
|
qrcode?: string;
|
||||||
// 下单渠道,0网站 1小程序 2其他
|
// vip月卡年卡、ic月卡年卡回退次数
|
||||||
channel?: number;
|
returnNum?: number;
|
||||||
|
// vip充值回退金额
|
||||||
|
returnMoney?: string;
|
||||||
|
// 预约详情开始时间数组
|
||||||
|
startTime?: string;
|
||||||
|
// 是否已开具发票:0未开发票,1已开发票,2不能开具发票
|
||||||
|
isInvoice?: number;
|
||||||
|
// 发票流水号
|
||||||
|
invoiceNo?: string;
|
||||||
|
// 商家留言
|
||||||
|
merchantRemarks?: string;
|
||||||
|
// 支付时间
|
||||||
|
payTime?: string;
|
||||||
|
// 退款时间
|
||||||
|
refundTime?: string;
|
||||||
|
// 申请退款时间
|
||||||
|
refundApplyTime?: string;
|
||||||
// 过期时间
|
// 过期时间
|
||||||
expirationTime?: string;
|
expirationTime?: string;
|
||||||
|
// 自提码
|
||||||
|
selfTakeCode?: string;
|
||||||
|
// 是否已收到赠品
|
||||||
|
hasTakeGift?: string;
|
||||||
|
// 对账情况:0=未对账;1=已对账;3=已对账,金额对不上;4=未查询到该订单
|
||||||
|
checkBill?: number;
|
||||||
// 订单是否已结算(0未结算 1已结算)
|
// 订单是否已结算(0未结算 1已结算)
|
||||||
isSettled?: boolean;
|
isSettled?: number;
|
||||||
|
// 系统版本号 0当前版本 value=其他版本
|
||||||
|
version?: number;
|
||||||
// 用户id
|
// 用户id
|
||||||
userId?: number;
|
userId?: number;
|
||||||
// 备注
|
// 备注
|
||||||
@@ -52,15 +154,16 @@ export interface CmsOrder {
|
|||||||
deleted?: number;
|
deleted?: number;
|
||||||
// 租户id
|
// 租户id
|
||||||
tenantId?: number;
|
tenantId?: number;
|
||||||
|
// 修改时间
|
||||||
|
updateTime?: string;
|
||||||
// 创建时间
|
// 创建时间
|
||||||
createTime?: string;
|
createTime?: string;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 订单搜索条件
|
* 网站订单搜索条件
|
||||||
*/
|
*/
|
||||||
export interface CmsOrderParam extends PageParam {
|
export interface CmsOrderParam extends PageParam {
|
||||||
orderId?: number;
|
id?: number;
|
||||||
isSettled?: number;
|
|
||||||
keywords?: string;
|
keywords?: string;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -124,6 +124,19 @@ export interface ShopGoods {
|
|||||||
canUseDate?: string;
|
canUseDate?: string;
|
||||||
ensureTag?: string;
|
ensureTag?: string;
|
||||||
expiredDay?: number;
|
expiredDay?: number;
|
||||||
|
|
||||||
|
// --- 分销/佣金(新字段,后端保持 snake_case)---
|
||||||
|
// 是否开启分销佣金:0关闭 1开启
|
||||||
|
isOpenCommission?: number;
|
||||||
|
// 分佣类型:10固定金额 20百分比
|
||||||
|
commissionType?: number;
|
||||||
|
// 一级/二级/三级分销佣金(单位以服务端为准)
|
||||||
|
firstMoney?: number;
|
||||||
|
secondMoney?: number;
|
||||||
|
thirdMoney?: number;
|
||||||
|
// 一级/二级分红(单位以服务端为准)
|
||||||
|
firstDividend?: number;
|
||||||
|
secondDividend?: number;
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface BathSet {
|
export interface BathSet {
|
||||||
|
|||||||
757
src/views/cms/cmsOrder/components/cmsOrderEdit.vue
Normal file
757
src/views/cms/cmsOrder/components/cmsOrderEdit.vue
Normal file
@@ -0,0 +1,757 @@
|
|||||||
|
<!-- 编辑弹窗 -->
|
||||||
|
<template>
|
||||||
|
<ele-modal
|
||||||
|
:width="800"
|
||||||
|
:visible="visible"
|
||||||
|
:maskClosable="false"
|
||||||
|
:maxable="maxable"
|
||||||
|
:title="isUpdate ? '编辑网站订单' : '添加网站订单'"
|
||||||
|
:body-style="{ paddingBottom: '28px' }"
|
||||||
|
@update:visible="updateVisible"
|
||||||
|
@ok="save"
|
||||||
|
>
|
||||||
|
<a-form
|
||||||
|
ref="formRef"
|
||||||
|
:model="form"
|
||||||
|
:rules="rules"
|
||||||
|
:label-col="styleResponsive ? { md: 4, sm: 5, xs: 24 } : { flex: '90px' }"
|
||||||
|
:wrapper-col="
|
||||||
|
styleResponsive ? { md: 19, sm: 19, xs: 24 } : { flex: '1' }
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<a-form-item label="订单类型,0售前咨询 1售后服务 2意见反馈" name="type">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入订单类型,0售前咨询 1售后服务 2意见反馈"
|
||||||
|
v-model:value="form.type"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="订单标题" name="title">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入订单标题"
|
||||||
|
v-model:value="form.title"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="公司/团队名称" name="company">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入公司/团队名称"
|
||||||
|
v-model:value="form.company"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="订单内容" name="content">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入订单内容"
|
||||||
|
v-model:value="form.content"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="订单编号" name="orderNo">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入订单编号"
|
||||||
|
v-model:value="form.orderNo"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="快递/自提" name="deliveryType">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入快递/自提"
|
||||||
|
v-model:value="form.deliveryType"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="下单渠道,0网站 1微信小程序 2其他" name="channel">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入下单渠道,0网站 1微信小程序 2其他"
|
||||||
|
v-model:value="form.channel"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="微信支付交易号号" name="transactionId">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入微信支付交易号号"
|
||||||
|
v-model:value="form.transactionId"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="微信退款订单号" name="refundOrder">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入微信退款订单号"
|
||||||
|
v-model:value="form.refundOrder"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="商户ID" name="merchantId">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入商户ID"
|
||||||
|
v-model:value="form.merchantId"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="商户名称" name="merchantName">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入商户名称"
|
||||||
|
v-model:value="form.merchantName"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="商户编号" name="merchantCode">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入商户编号"
|
||||||
|
v-model:value="form.merchantCode"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="使用的优惠券id" name="couponId">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入使用的优惠券id"
|
||||||
|
v-model:value="form.couponId"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="使用的会员卡id" name="cardId">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入使用的会员卡id"
|
||||||
|
v-model:value="form.cardId"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="关联管理员id" name="adminId">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入关联管理员id"
|
||||||
|
v-model:value="form.adminId"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="核销管理员id" name="confirmId">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入核销管理员id"
|
||||||
|
v-model:value="form.confirmId"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="IC卡号" name="icCard">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入IC卡号"
|
||||||
|
v-model:value="form.icCard"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="真实姓名" name="realName">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入真实姓名"
|
||||||
|
v-model:value="form.realName"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="关联收货地址" name="addressId">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入关联收货地址"
|
||||||
|
v-model:value="form.addressId"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="收货地址" name="address">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入收货地址"
|
||||||
|
v-model:value="form.address"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="" name="addressLat">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入"
|
||||||
|
v-model:value="form.addressLat"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="" name="addressLng">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入"
|
||||||
|
v-model:value="form.addressLng"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="自提店铺id" name="selfTakeMerchantId">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入自提店铺id"
|
||||||
|
v-model:value="form.selfTakeMerchantId"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="自提店铺" name="selfTakeMerchantName">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入自提店铺"
|
||||||
|
v-model:value="form.selfTakeMerchantName"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="配送开始时间" name="sendStartTime">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入配送开始时间"
|
||||||
|
v-model:value="form.sendStartTime"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="配送结束时间" name="sendEndTime">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入配送结束时间"
|
||||||
|
v-model:value="form.sendEndTime"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="发货店铺id" name="expressMerchantId">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入发货店铺id"
|
||||||
|
v-model:value="form.expressMerchantId"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="发货店铺" name="expressMerchantName">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入发货店铺"
|
||||||
|
v-model:value="form.expressMerchantName"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="订单总额" name="totalPrice">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入订单总额"
|
||||||
|
v-model:value="form.totalPrice"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="减少的金额,使用VIP会员折扣、优惠券抵扣、优惠券折扣后减去的价格" name="reducePrice">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入减少的金额,使用VIP会员折扣、优惠券抵扣、优惠券折扣后减去的价格"
|
||||||
|
v-model:value="form.reducePrice"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="实际付款" name="payPrice">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入实际付款"
|
||||||
|
v-model:value="form.payPrice"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="用于统计" name="price">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入用于统计"
|
||||||
|
v-model:value="form.price"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="价钱,用于积分赠送" name="money">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入价钱,用于积分赠送"
|
||||||
|
v-model:value="form.money"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="取消时间" name="cancelTime">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入取消时间"
|
||||||
|
v-model:value="form.cancelTime"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="取消原因" name="cancelReason">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入取消原因"
|
||||||
|
v-model:value="form.cancelReason"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="退款金额" name="refundMoney">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入退款金额"
|
||||||
|
v-model:value="form.refundMoney"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="教练价格" name="coachPrice">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入教练价格"
|
||||||
|
v-model:value="form.coachPrice"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="购买数量" name="totalNum">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入购买数量"
|
||||||
|
v-model:value="form.totalNum"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="教练id" name="coachId">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入教练id"
|
||||||
|
v-model:value="form.coachId"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="商品ID" name="formId">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入商品ID"
|
||||||
|
v-model:value="form.formId"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="支付的用户id" name="payUserId">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入支付的用户id"
|
||||||
|
v-model:value="form.payUserId"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="0余额支付,1微信支付,2支付宝支付,3银联支付,4现金支付,5POS机支付,6免费,7积分支付" name="payType">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入0余额支付,1微信支付,2支付宝支付,3银联支付,4现金支付,5POS机支付,6免费,7积分支付"
|
||||||
|
v-model:value="form.payType"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="微信支付子类型:JSAPI小程序支付,NATIVE扫码支付" name="wechatPayType">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入微信支付子类型:JSAPI小程序支付,NATIVE扫码支付"
|
||||||
|
v-model:value="form.wechatPayType"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="0余额支付,1微信支付,2支付宝支付,3银联支付,4现金支付,5POS机支付,6免费,7积分支付" name="friendPayType">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入0余额支付,1微信支付,2支付宝支付,3银联支付,4现金支付,5POS机支付,6免费,7积分支付"
|
||||||
|
v-model:value="form.friendPayType"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="0未付款,1已付款" name="payStatus">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入0未付款,1已付款"
|
||||||
|
v-model:value="form.payStatus"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="0未使用,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款" name="orderStatus">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入0未使用,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款"
|
||||||
|
v-model:value="form.orderStatus"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="发货状态(10未发货 20已发货 30部分发货)" name="deliveryStatus">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入发货状态(10未发货 20已发货 30部分发货)"
|
||||||
|
v-model:value="form.deliveryStatus"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="无需发货备注" name="deliveryNote">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入无需发货备注"
|
||||||
|
v-model:value="form.deliveryNote"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="发货时间" name="deliveryTime">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入发货时间"
|
||||||
|
v-model:value="form.deliveryTime"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="评价状态(0未评价 1已评价)" name="evaluateStatus">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入评价状态(0未评价 1已评价)"
|
||||||
|
v-model:value="form.evaluateStatus"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="评价时间" name="evaluateTime">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入评价时间"
|
||||||
|
v-model:value="form.evaluateTime"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="优惠类型:0无、1抵扣优惠券、2折扣优惠券、3、VIP月卡、4VIP年卡,5VIP次卡、6VIP会员卡、7IC月卡、8IC年卡、9IC次卡、10IC会员卡、11免费订单、12VIP充值卡、13IC充值卡、14VIP季卡、15IC季卡" name="couponType">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入优惠类型:0无、1抵扣优惠券、2折扣优惠券、3、VIP月卡、4VIP年卡,5VIP次卡、6VIP会员卡、7IC月卡、8IC年卡、9IC次卡、10IC会员卡、11免费订单、12VIP充值卡、13IC充值卡、14VIP季卡、15IC季卡"
|
||||||
|
v-model:value="form.couponType"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="优惠说明" name="couponDesc">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入优惠说明"
|
||||||
|
v-model:value="form.couponDesc"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="二维码地址,保存订单号,支付成功后才生成" name="qrcode">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入二维码地址,保存订单号,支付成功后才生成"
|
||||||
|
v-model:value="form.qrcode"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="vip月卡年卡、ic月卡年卡回退次数" name="returnNum">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入vip月卡年卡、ic月卡年卡回退次数"
|
||||||
|
v-model:value="form.returnNum"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="vip充值回退金额" name="returnMoney">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入vip充值回退金额"
|
||||||
|
v-model:value="form.returnMoney"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="预约详情开始时间数组" name="startTime">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入预约详情开始时间数组"
|
||||||
|
v-model:value="form.startTime"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="是否已开具发票:0未开发票,1已开发票,2不能开具发票" name="isInvoice">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入是否已开具发票:0未开发票,1已开发票,2不能开具发票"
|
||||||
|
v-model:value="form.isInvoice"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="发票流水号" name="invoiceNo">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入发票流水号"
|
||||||
|
v-model:value="form.invoiceNo"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="商家留言" name="merchantRemarks">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入商家留言"
|
||||||
|
v-model:value="form.merchantRemarks"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="支付时间" name="payTime">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入支付时间"
|
||||||
|
v-model:value="form.payTime"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="退款时间" name="refundTime">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入退款时间"
|
||||||
|
v-model:value="form.refundTime"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="申请退款时间" name="refundApplyTime">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入申请退款时间"
|
||||||
|
v-model:value="form.refundApplyTime"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="过期时间" name="expirationTime">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入过期时间"
|
||||||
|
v-model:value="form.expirationTime"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="自提码" name="selfTakeCode">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入自提码"
|
||||||
|
v-model:value="form.selfTakeCode"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="是否已收到赠品" name="hasTakeGift">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入是否已收到赠品"
|
||||||
|
v-model:value="form.hasTakeGift"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="对账情况:0=未对账;1=已对账;3=已对账,金额对不上;4=未查询到该订单" name="checkBill">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入对账情况:0=未对账;1=已对账;3=已对账,金额对不上;4=未查询到该订单"
|
||||||
|
v-model:value="form.checkBill"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="订单是否已结算(0未结算 1已结算)" name="isSettled">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入订单是否已结算(0未结算 1已结算)"
|
||||||
|
v-model:value="form.isSettled"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="系统版本号 0当前版本 value=其他版本" name="version">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入系统版本号 0当前版本 value=其他版本"
|
||||||
|
v-model:value="form.version"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="用户id" name="userId">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入用户id"
|
||||||
|
v-model:value="form.userId"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="备注" name="comments">
|
||||||
|
<a-textarea
|
||||||
|
:rows="4"
|
||||||
|
:maxlength="200"
|
||||||
|
placeholder="请输入描述"
|
||||||
|
v-model:value="form.comments"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="排序号" name="sortNumber">
|
||||||
|
<a-input-number
|
||||||
|
:min="0"
|
||||||
|
:max="9999"
|
||||||
|
class="ele-fluid"
|
||||||
|
placeholder="请输入排序号"
|
||||||
|
v-model:value="form.sortNumber"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="是否删除, 0否, 1是" name="deleted">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入是否删除, 0否, 1是"
|
||||||
|
v-model:value="form.deleted"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="修改时间" name="updateTime">
|
||||||
|
<a-input
|
||||||
|
allow-clear
|
||||||
|
placeholder="请输入修改时间"
|
||||||
|
v-model:value="form.updateTime"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-form>
|
||||||
|
</ele-modal>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { ref, reactive, watch } from 'vue';
|
||||||
|
import { Form, message } from 'ant-design-vue';
|
||||||
|
import { assignObject, uuid } from 'ele-admin-pro';
|
||||||
|
import { addCmsOrder, updateCmsOrder } from '@/api/cms/cmsOrder';
|
||||||
|
import { CmsOrder } from '@/api/cms/cmsOrder/model';
|
||||||
|
import { useThemeStore } from '@/store/modules/theme';
|
||||||
|
import { storeToRefs } from 'pinia';
|
||||||
|
import { ItemType } from 'ele-admin-pro/es/ele-image-upload/types';
|
||||||
|
import { FormInstance } from 'ant-design-vue/es/form';
|
||||||
|
import { FileRecord } from '@/api/system/file/model';
|
||||||
|
|
||||||
|
// 是否是修改
|
||||||
|
const isUpdate = ref(false);
|
||||||
|
const useForm = Form.useForm;
|
||||||
|
// 是否开启响应式布局
|
||||||
|
const themeStore = useThemeStore();
|
||||||
|
const { styleResponsive } = storeToRefs(themeStore);
|
||||||
|
|
||||||
|
const props = defineProps<{
|
||||||
|
// 弹窗是否打开
|
||||||
|
visible: boolean;
|
||||||
|
// 修改回显的数据
|
||||||
|
data?: CmsOrder | null;
|
||||||
|
}>();
|
||||||
|
|
||||||
|
const emit = defineEmits<{
|
||||||
|
(e: 'done'): void;
|
||||||
|
(e: 'update:visible', visible: boolean): void;
|
||||||
|
}>();
|
||||||
|
|
||||||
|
// 提交状态
|
||||||
|
const loading = ref(false);
|
||||||
|
// 是否显示最大化切换按钮
|
||||||
|
const maxable = ref(true);
|
||||||
|
// 表格选中数据
|
||||||
|
const formRef = ref<FormInstance | null>(null);
|
||||||
|
const images = ref<ItemType[]>([]);
|
||||||
|
|
||||||
|
// 用户信息
|
||||||
|
const form = reactive<CmsOrder>({
|
||||||
|
id: undefined,
|
||||||
|
type: undefined,
|
||||||
|
title: undefined,
|
||||||
|
company: undefined,
|
||||||
|
content: undefined,
|
||||||
|
orderNo: undefined,
|
||||||
|
deliveryType: undefined,
|
||||||
|
channel: undefined,
|
||||||
|
transactionId: undefined,
|
||||||
|
refundOrder: undefined,
|
||||||
|
merchantId: undefined,
|
||||||
|
merchantName: undefined,
|
||||||
|
merchantCode: undefined,
|
||||||
|
couponId: undefined,
|
||||||
|
cardId: undefined,
|
||||||
|
adminId: undefined,
|
||||||
|
confirmId: undefined,
|
||||||
|
icCard: undefined,
|
||||||
|
realName: undefined,
|
||||||
|
addressId: undefined,
|
||||||
|
address: undefined,
|
||||||
|
addressLat: undefined,
|
||||||
|
addressLng: undefined,
|
||||||
|
selfTakeMerchantId: undefined,
|
||||||
|
selfTakeMerchantName: undefined,
|
||||||
|
sendStartTime: undefined,
|
||||||
|
sendEndTime: undefined,
|
||||||
|
expressMerchantId: undefined,
|
||||||
|
expressMerchantName: undefined,
|
||||||
|
totalPrice: undefined,
|
||||||
|
reducePrice: undefined,
|
||||||
|
payPrice: undefined,
|
||||||
|
price: undefined,
|
||||||
|
money: undefined,
|
||||||
|
cancelTime: undefined,
|
||||||
|
cancelReason: undefined,
|
||||||
|
refundMoney: undefined,
|
||||||
|
coachPrice: undefined,
|
||||||
|
totalNum: undefined,
|
||||||
|
coachId: undefined,
|
||||||
|
formId: undefined,
|
||||||
|
payUserId: undefined,
|
||||||
|
payType: undefined,
|
||||||
|
wechatPayType: undefined,
|
||||||
|
friendPayType: undefined,
|
||||||
|
payStatus: undefined,
|
||||||
|
orderStatus: undefined,
|
||||||
|
deliveryStatus: undefined,
|
||||||
|
deliveryNote: undefined,
|
||||||
|
deliveryTime: undefined,
|
||||||
|
evaluateStatus: undefined,
|
||||||
|
evaluateTime: undefined,
|
||||||
|
couponType: undefined,
|
||||||
|
couponDesc: undefined,
|
||||||
|
qrcode: undefined,
|
||||||
|
returnNum: undefined,
|
||||||
|
returnMoney: undefined,
|
||||||
|
startTime: undefined,
|
||||||
|
isInvoice: undefined,
|
||||||
|
invoiceNo: undefined,
|
||||||
|
merchantRemarks: undefined,
|
||||||
|
payTime: undefined,
|
||||||
|
refundTime: undefined,
|
||||||
|
refundApplyTime: undefined,
|
||||||
|
expirationTime: undefined,
|
||||||
|
selfTakeCode: undefined,
|
||||||
|
hasTakeGift: undefined,
|
||||||
|
checkBill: undefined,
|
||||||
|
isSettled: undefined,
|
||||||
|
version: undefined,
|
||||||
|
userId: undefined,
|
||||||
|
comments: undefined,
|
||||||
|
sortNumber: undefined,
|
||||||
|
deleted: undefined,
|
||||||
|
tenantId: undefined,
|
||||||
|
updateTime: undefined,
|
||||||
|
createTime: undefined,
|
||||||
|
cmsOrderId: undefined,
|
||||||
|
cmsOrderName: '',
|
||||||
|
status: 0,
|
||||||
|
comments: '',
|
||||||
|
sortNumber: 100
|
||||||
|
});
|
||||||
|
|
||||||
|
/* 更新visible */
|
||||||
|
const updateVisible = (value: boolean) => {
|
||||||
|
emit('update:visible', value);
|
||||||
|
};
|
||||||
|
|
||||||
|
// 表单验证规则
|
||||||
|
const rules = reactive({
|
||||||
|
cmsOrderName: [
|
||||||
|
{
|
||||||
|
required: true,
|
||||||
|
type: 'string',
|
||||||
|
message: '请填写网站订单名称',
|
||||||
|
trigger: 'blur'
|
||||||
|
}
|
||||||
|
]
|
||||||
|
});
|
||||||
|
|
||||||
|
const chooseImage = (data: FileRecord) => {
|
||||||
|
images.value.push({
|
||||||
|
uid: data.id,
|
||||||
|
url: data.path,
|
||||||
|
status: 'done'
|
||||||
|
});
|
||||||
|
form.image = data.path;
|
||||||
|
};
|
||||||
|
|
||||||
|
const onDeleteItem = (index: number) => {
|
||||||
|
images.value.splice(index, 1);
|
||||||
|
form.image = '';
|
||||||
|
};
|
||||||
|
|
||||||
|
const { resetFields } = useForm(form, rules);
|
||||||
|
|
||||||
|
/* 保存编辑 */
|
||||||
|
const save = () => {
|
||||||
|
if (!formRef.value) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
formRef.value
|
||||||
|
.validate()
|
||||||
|
.then(() => {
|
||||||
|
loading.value = true;
|
||||||
|
const formData = {
|
||||||
|
...form
|
||||||
|
};
|
||||||
|
const saveOrUpdate = isUpdate.value ? updateCmsOrder : addCmsOrder;
|
||||||
|
saveOrUpdate(formData)
|
||||||
|
.then((msg) => {
|
||||||
|
loading.value = false;
|
||||||
|
message.success(msg);
|
||||||
|
updateVisible(false);
|
||||||
|
emit('done');
|
||||||
|
})
|
||||||
|
.catch((e) => {
|
||||||
|
loading.value = false;
|
||||||
|
message.error(e.message);
|
||||||
|
});
|
||||||
|
})
|
||||||
|
.catch(() => {});
|
||||||
|
};
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => props.visible,
|
||||||
|
(visible) => {
|
||||||
|
if (visible) {
|
||||||
|
images.value = [];
|
||||||
|
if (props.data) {
|
||||||
|
assignObject(form, props.data);
|
||||||
|
if(props.data.image){
|
||||||
|
images.value.push({
|
||||||
|
uid: uuid(),
|
||||||
|
url: props.data.image,
|
||||||
|
status: 'done'
|
||||||
|
})
|
||||||
|
}
|
||||||
|
isUpdate.value = true;
|
||||||
|
} else {
|
||||||
|
isUpdate.value = false;
|
||||||
|
}
|
||||||
|
} else {
|
||||||
|
resetFields();
|
||||||
|
}
|
||||||
|
},
|
||||||
|
{ immediate: true }
|
||||||
|
);
|
||||||
|
</script>
|
||||||
42
src/views/cms/cmsOrder/components/search.vue
Normal file
42
src/views/cms/cmsOrder/components/search.vue
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
<!-- 搜索表单 -->
|
||||||
|
<template>
|
||||||
|
<a-space :size="10" style="flex-wrap: wrap">
|
||||||
|
<a-button type="primary" class="ele-btn-icon" @click="add">
|
||||||
|
<template #icon>
|
||||||
|
<PlusOutlined />
|
||||||
|
</template>
|
||||||
|
<span>添加</span>
|
||||||
|
</a-button>
|
||||||
|
</a-space>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { PlusOutlined } from '@ant-design/icons-vue';
|
||||||
|
import type { GradeParam } from '@/api/user/grade/model';
|
||||||
|
import { watch } from 'vue';
|
||||||
|
|
||||||
|
const props = withDefaults(
|
||||||
|
defineProps<{
|
||||||
|
// 选中的角色
|
||||||
|
selection?: [];
|
||||||
|
}>(),
|
||||||
|
{}
|
||||||
|
);
|
||||||
|
|
||||||
|
const emit = defineEmits<{
|
||||||
|
(e: 'search', where?: GradeParam): void;
|
||||||
|
(e: 'add'): void;
|
||||||
|
(e: 'remove'): void;
|
||||||
|
(e: 'batchMove'): void;
|
||||||
|
}>();
|
||||||
|
|
||||||
|
// 新增
|
||||||
|
const add = () => {
|
||||||
|
emit('add');
|
||||||
|
};
|
||||||
|
|
||||||
|
watch(
|
||||||
|
() => props.selection,
|
||||||
|
() => {}
|
||||||
|
);
|
||||||
|
</script>
|
||||||
662
src/views/cms/cmsOrder/index.vue
Normal file
662
src/views/cms/cmsOrder/index.vue
Normal file
@@ -0,0 +1,662 @@
|
|||||||
|
<template>
|
||||||
|
<a-page-header :title="getPageTitle()" @back="() => $router.go(-1)">
|
||||||
|
<a-card :bordered="false" :body-style="{ padding: '16px' }">
|
||||||
|
<ele-pro-table
|
||||||
|
ref="tableRef"
|
||||||
|
row-key="id"
|
||||||
|
:columns="columns"
|
||||||
|
:datasource="datasource"
|
||||||
|
:customRow="customRow"
|
||||||
|
tool-class="ele-toolbar-form"
|
||||||
|
class="sys-org-table"
|
||||||
|
>
|
||||||
|
<template #toolbar>
|
||||||
|
<search
|
||||||
|
@search="reload"
|
||||||
|
:selection="selection"
|
||||||
|
@add="openEdit"
|
||||||
|
@remove="removeBatch"
|
||||||
|
@batchMove="openMove"
|
||||||
|
/>
|
||||||
|
</template>
|
||||||
|
<template #bodyCell="{ column, record }">
|
||||||
|
<template v-if="column.key === 'image'">
|
||||||
|
<a-image :src="record.image" :width="50" />
|
||||||
|
</template>
|
||||||
|
<template v-if="column.key === 'status'">
|
||||||
|
<a-tag v-if="record.status === 0" color="green">显示</a-tag>
|
||||||
|
<a-tag v-if="record.status === 1" color="red">隐藏</a-tag>
|
||||||
|
</template>
|
||||||
|
<template v-if="column.key === 'action'">
|
||||||
|
<a-space>
|
||||||
|
<a @click="openEdit(record)">修改</a>
|
||||||
|
<a-divider type="vertical" />
|
||||||
|
<a-popconfirm
|
||||||
|
title="确定要删除此记录吗?"
|
||||||
|
@confirm="remove(record)"
|
||||||
|
>
|
||||||
|
<a class="ele-text-danger">删除</a>
|
||||||
|
</a-popconfirm>
|
||||||
|
</a-space>
|
||||||
|
</template>
|
||||||
|
</template>
|
||||||
|
</ele-pro-table>
|
||||||
|
</a-card>
|
||||||
|
|
||||||
|
<!-- 编辑弹窗 -->
|
||||||
|
<CmsOrderEdit v-model:visible="showEdit" :data="current" @done="reload" />
|
||||||
|
</a-page-header>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script lang="ts" setup>
|
||||||
|
import { createVNode, ref, computed } from 'vue';
|
||||||
|
import { message, Modal } from 'ant-design-vue';
|
||||||
|
import { ExclamationCircleOutlined } from '@ant-design/icons-vue';
|
||||||
|
import type { EleProTable } from 'ele-admin-pro';
|
||||||
|
import { toDateString } from 'ele-admin-pro';
|
||||||
|
import type {
|
||||||
|
DatasourceFunction,
|
||||||
|
ColumnItem
|
||||||
|
} from 'ele-admin-pro/es/ele-pro-table/types';
|
||||||
|
import Search from './components/search.vue';
|
||||||
|
import {getPageTitle} from '@/utils/common';
|
||||||
|
import CmsOrderEdit from './components/cmsOrderEdit.vue';
|
||||||
|
import { pageCmsOrder, removeCmsOrder, removeBatchCmsOrder } from '@/api/cms/cmsOrder';
|
||||||
|
import type { CmsOrder, CmsOrderParam } from '@/api/cms/cmsOrder/model';
|
||||||
|
|
||||||
|
// 表格实例
|
||||||
|
const tableRef = ref<InstanceType<typeof EleProTable> | null>(null);
|
||||||
|
|
||||||
|
// 表格选中数据
|
||||||
|
const selection = ref<CmsOrder[]>([]);
|
||||||
|
// 当前编辑数据
|
||||||
|
const current = ref<CmsOrder | null>(null);
|
||||||
|
// 是否显示编辑弹窗
|
||||||
|
const showEdit = ref(false);
|
||||||
|
// 是否显示批量移动弹窗
|
||||||
|
const showMove = ref(false);
|
||||||
|
// 加载状态
|
||||||
|
const loading = ref(true);
|
||||||
|
|
||||||
|
// 表格数据源
|
||||||
|
const datasource: DatasourceFunction = ({
|
||||||
|
page,
|
||||||
|
limit,
|
||||||
|
where,
|
||||||
|
orders,
|
||||||
|
filters
|
||||||
|
}) => {
|
||||||
|
if (filters) {
|
||||||
|
where.status = filters.status;
|
||||||
|
}
|
||||||
|
return pageCmsOrder({
|
||||||
|
...where,
|
||||||
|
...orders,
|
||||||
|
page,
|
||||||
|
limit
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
// 完整的列配置(包含所有字段)
|
||||||
|
const columns = ref<ColumnItem[]>([
|
||||||
|
{
|
||||||
|
title: 'id',
|
||||||
|
dataIndex: 'id',
|
||||||
|
key: 'id',
|
||||||
|
width: 90,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '订单类型,0售前咨询 1售后服务 2意见反馈',
|
||||||
|
dataIndex: 'type',
|
||||||
|
key: 'type',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '订单标题',
|
||||||
|
dataIndex: 'title',
|
||||||
|
key: 'title',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '公司/团队名称',
|
||||||
|
dataIndex: 'company',
|
||||||
|
key: 'company',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '订单内容',
|
||||||
|
dataIndex: 'content',
|
||||||
|
key: 'content',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '订单编号',
|
||||||
|
dataIndex: 'orderNo',
|
||||||
|
key: 'orderNo',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '快递/自提',
|
||||||
|
dataIndex: 'deliveryType',
|
||||||
|
key: 'deliveryType',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '下单渠道,0网站 1微信小程序 2其他',
|
||||||
|
dataIndex: 'channel',
|
||||||
|
key: 'channel',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '微信支付交易号号',
|
||||||
|
dataIndex: 'transactionId',
|
||||||
|
key: 'transactionId',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '微信退款订单号',
|
||||||
|
dataIndex: 'refundOrder',
|
||||||
|
key: 'refundOrder',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '商户ID',
|
||||||
|
dataIndex: 'merchantId',
|
||||||
|
key: 'merchantId',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '商户名称',
|
||||||
|
dataIndex: 'merchantName',
|
||||||
|
key: 'merchantName',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '商户编号',
|
||||||
|
dataIndex: 'merchantCode',
|
||||||
|
key: 'merchantCode',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '使用的优惠券id',
|
||||||
|
dataIndex: 'couponId',
|
||||||
|
key: 'couponId',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '使用的会员卡id',
|
||||||
|
dataIndex: 'cardId',
|
||||||
|
key: 'cardId',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '关联管理员id',
|
||||||
|
dataIndex: 'adminId',
|
||||||
|
key: 'adminId',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '核销管理员id',
|
||||||
|
dataIndex: 'confirmId',
|
||||||
|
key: 'confirmId',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'IC卡号',
|
||||||
|
dataIndex: 'icCard',
|
||||||
|
key: 'icCard',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '真实姓名',
|
||||||
|
dataIndex: 'realName',
|
||||||
|
key: 'realName',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '关联收货地址',
|
||||||
|
dataIndex: 'addressId',
|
||||||
|
key: 'addressId',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '收货地址',
|
||||||
|
dataIndex: 'address',
|
||||||
|
key: 'address',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '',
|
||||||
|
dataIndex: 'addressLat',
|
||||||
|
key: 'addressLat',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '',
|
||||||
|
dataIndex: 'addressLng',
|
||||||
|
key: 'addressLng',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '自提店铺id',
|
||||||
|
dataIndex: 'selfTakeMerchantId',
|
||||||
|
key: 'selfTakeMerchantId',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '自提店铺',
|
||||||
|
dataIndex: 'selfTakeMerchantName',
|
||||||
|
key: 'selfTakeMerchantName',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '配送开始时间',
|
||||||
|
dataIndex: 'sendStartTime',
|
||||||
|
key: 'sendStartTime',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '配送结束时间',
|
||||||
|
dataIndex: 'sendEndTime',
|
||||||
|
key: 'sendEndTime',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '发货店铺id',
|
||||||
|
dataIndex: 'expressMerchantId',
|
||||||
|
key: 'expressMerchantId',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '发货店铺',
|
||||||
|
dataIndex: 'expressMerchantName',
|
||||||
|
key: 'expressMerchantName',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '订单总额',
|
||||||
|
dataIndex: 'totalPrice',
|
||||||
|
key: 'totalPrice',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '减少的金额,使用VIP会员折扣、优惠券抵扣、优惠券折扣后减去的价格',
|
||||||
|
dataIndex: 'reducePrice',
|
||||||
|
key: 'reducePrice',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '实际付款',
|
||||||
|
dataIndex: 'payPrice',
|
||||||
|
key: 'payPrice',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '用于统计',
|
||||||
|
dataIndex: 'price',
|
||||||
|
key: 'price',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '价钱,用于积分赠送',
|
||||||
|
dataIndex: 'money',
|
||||||
|
key: 'money',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '取消时间',
|
||||||
|
dataIndex: 'cancelTime',
|
||||||
|
key: 'cancelTime',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '取消原因',
|
||||||
|
dataIndex: 'cancelReason',
|
||||||
|
key: 'cancelReason',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '退款金额',
|
||||||
|
dataIndex: 'refundMoney',
|
||||||
|
key: 'refundMoney',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '教练价格',
|
||||||
|
dataIndex: 'coachPrice',
|
||||||
|
key: 'coachPrice',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '购买数量',
|
||||||
|
dataIndex: 'totalNum',
|
||||||
|
key: 'totalNum',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '教练id',
|
||||||
|
dataIndex: 'coachId',
|
||||||
|
key: 'coachId',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '商品ID',
|
||||||
|
dataIndex: 'formId',
|
||||||
|
key: 'formId',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '支付的用户id',
|
||||||
|
dataIndex: 'payUserId',
|
||||||
|
key: 'payUserId',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '0余额支付,1微信支付,2支付宝支付,3银联支付,4现金支付,5POS机支付,6免费,7积分支付',
|
||||||
|
dataIndex: 'payType',
|
||||||
|
key: 'payType',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '微信支付子类型:JSAPI小程序支付,NATIVE扫码支付',
|
||||||
|
dataIndex: 'wechatPayType',
|
||||||
|
key: 'wechatPayType',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '0余额支付,1微信支付,2支付宝支付,3银联支付,4现金支付,5POS机支付,6免费,7积分支付',
|
||||||
|
dataIndex: 'friendPayType',
|
||||||
|
key: 'friendPayType',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '0未付款,1已付款',
|
||||||
|
dataIndex: 'payStatus',
|
||||||
|
key: 'payStatus',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '0未使用,1已完成,2已取消,3取消中,4退款申请中,5退款被拒绝,6退款成功,7客户端申请退款',
|
||||||
|
dataIndex: 'orderStatus',
|
||||||
|
key: 'orderStatus',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '发货状态(10未发货 20已发货 30部分发货)',
|
||||||
|
dataIndex: 'deliveryStatus',
|
||||||
|
key: 'deliveryStatus',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '无需发货备注',
|
||||||
|
dataIndex: 'deliveryNote',
|
||||||
|
key: 'deliveryNote',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '发货时间',
|
||||||
|
dataIndex: 'deliveryTime',
|
||||||
|
key: 'deliveryTime',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '评价状态(0未评价 1已评价)',
|
||||||
|
dataIndex: 'evaluateStatus',
|
||||||
|
key: 'evaluateStatus',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '评价时间',
|
||||||
|
dataIndex: 'evaluateTime',
|
||||||
|
key: 'evaluateTime',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '优惠类型:0无、1抵扣优惠券、2折扣优惠券、3、VIP月卡、4VIP年卡,5VIP次卡、6VIP会员卡、7IC月卡、8IC年卡、9IC次卡、10IC会员卡、11免费订单、12VIP充值卡、13IC充值卡、14VIP季卡、15IC季卡',
|
||||||
|
dataIndex: 'couponType',
|
||||||
|
key: 'couponType',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '优惠说明',
|
||||||
|
dataIndex: 'couponDesc',
|
||||||
|
key: 'couponDesc',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '二维码地址,保存订单号,支付成功后才生成',
|
||||||
|
dataIndex: 'qrcode',
|
||||||
|
key: 'qrcode',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'vip月卡年卡、ic月卡年卡回退次数',
|
||||||
|
dataIndex: 'returnNum',
|
||||||
|
key: 'returnNum',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: 'vip充值回退金额',
|
||||||
|
dataIndex: 'returnMoney',
|
||||||
|
key: 'returnMoney',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '预约详情开始时间数组',
|
||||||
|
dataIndex: 'startTime',
|
||||||
|
key: 'startTime',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '是否已开具发票:0未开发票,1已开发票,2不能开具发票',
|
||||||
|
dataIndex: 'isInvoice',
|
||||||
|
key: 'isInvoice',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '发票流水号',
|
||||||
|
dataIndex: 'invoiceNo',
|
||||||
|
key: 'invoiceNo',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '商家留言',
|
||||||
|
dataIndex: 'merchantRemarks',
|
||||||
|
key: 'merchantRemarks',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '支付时间',
|
||||||
|
dataIndex: 'payTime',
|
||||||
|
key: 'payTime',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '退款时间',
|
||||||
|
dataIndex: 'refundTime',
|
||||||
|
key: 'refundTime',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '申请退款时间',
|
||||||
|
dataIndex: 'refundApplyTime',
|
||||||
|
key: 'refundApplyTime',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '过期时间',
|
||||||
|
dataIndex: 'expirationTime',
|
||||||
|
key: 'expirationTime',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '自提码',
|
||||||
|
dataIndex: 'selfTakeCode',
|
||||||
|
key: 'selfTakeCode',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '是否已收到赠品',
|
||||||
|
dataIndex: 'hasTakeGift',
|
||||||
|
key: 'hasTakeGift',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '对账情况:0=未对账;1=已对账;3=已对账,金额对不上;4=未查询到该订单',
|
||||||
|
dataIndex: 'checkBill',
|
||||||
|
key: 'checkBill',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '订单是否已结算(0未结算 1已结算)',
|
||||||
|
dataIndex: 'isSettled',
|
||||||
|
key: 'isSettled',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '系统版本号 0当前版本 value=其他版本',
|
||||||
|
dataIndex: 'version',
|
||||||
|
key: 'version',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '用户id',
|
||||||
|
dataIndex: 'userId',
|
||||||
|
key: 'userId',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '备注',
|
||||||
|
dataIndex: 'comments',
|
||||||
|
key: 'comments',
|
||||||
|
ellipsis: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '排序号',
|
||||||
|
dataIndex: 'sortNumber',
|
||||||
|
key: 'sortNumber',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '是否删除, 0否, 1是',
|
||||||
|
dataIndex: 'deleted',
|
||||||
|
key: 'deleted',
|
||||||
|
width: 120
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '修改时间',
|
||||||
|
dataIndex: 'updateTime',
|
||||||
|
key: 'updateTime',
|
||||||
|
width: 200,
|
||||||
|
align: 'center',
|
||||||
|
sorter: true,
|
||||||
|
ellipsis: true,
|
||||||
|
customRender: ({ text }) => toDateString(text, 'yyyy-MM-dd HH:mm:ss')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '创建时间',
|
||||||
|
dataIndex: 'createTime',
|
||||||
|
key: 'createTime',
|
||||||
|
width: 200,
|
||||||
|
align: 'center',
|
||||||
|
sorter: true,
|
||||||
|
ellipsis: true,
|
||||||
|
customRender: ({ text }) => toDateString(text, 'yyyy-MM-dd HH:mm:ss')
|
||||||
|
},
|
||||||
|
{
|
||||||
|
title: '操作',
|
||||||
|
key: 'action',
|
||||||
|
width: 180,
|
||||||
|
fixed: 'right',
|
||||||
|
align: 'center',
|
||||||
|
hideInSetting: true
|
||||||
|
}
|
||||||
|
]);
|
||||||
|
|
||||||
|
/* 搜索 */
|
||||||
|
const reload = (where?: CmsOrderParam) => {
|
||||||
|
selection.value = [];
|
||||||
|
tableRef?.value?.reload({ where: where });
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 打开编辑弹窗 */
|
||||||
|
const openEdit = (row?: CmsOrder) => {
|
||||||
|
current.value = row ?? null;
|
||||||
|
showEdit.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 打开批量移动弹窗 */
|
||||||
|
const openMove = () => {
|
||||||
|
showMove.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 删除单个 */
|
||||||
|
const remove = (row: CmsOrder) => {
|
||||||
|
const hide = message.loading('请求中..', 0);
|
||||||
|
removeCmsOrder(row.id)
|
||||||
|
.then((msg) => {
|
||||||
|
hide();
|
||||||
|
message.success(msg);
|
||||||
|
reload();
|
||||||
|
})
|
||||||
|
.catch((e) => {
|
||||||
|
hide();
|
||||||
|
message.error(e.message);
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 批量删除 */
|
||||||
|
const removeBatch = () => {
|
||||||
|
if (!selection.value.length) {
|
||||||
|
message.error('请至少选择一条数据');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
Modal.confirm({
|
||||||
|
title: '提示',
|
||||||
|
content: '确定要删除选中的记录吗?',
|
||||||
|
icon: createVNode(ExclamationCircleOutlined),
|
||||||
|
maskClosable: true,
|
||||||
|
onOk: () => {
|
||||||
|
const hide = message.loading('请求中..', 0);
|
||||||
|
removeBatchCmsOrder(selection.value.map((d) => d.id))
|
||||||
|
.then((msg) => {
|
||||||
|
hide();
|
||||||
|
message.success(msg);
|
||||||
|
reload();
|
||||||
|
})
|
||||||
|
.catch((e) => {
|
||||||
|
hide();
|
||||||
|
message.error(e.message);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 查询 */
|
||||||
|
const query = () => {
|
||||||
|
loading.value = true;
|
||||||
|
};
|
||||||
|
|
||||||
|
/* 自定义行属性 */
|
||||||
|
const customRow = (record: CmsOrder) => {
|
||||||
|
return {
|
||||||
|
// 行点击事件
|
||||||
|
onClick: () => {
|
||||||
|
// console.log(record);
|
||||||
|
},
|
||||||
|
// 行双击事件
|
||||||
|
onDblclick: () => {
|
||||||
|
openEdit(record);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
};
|
||||||
|
query();
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<script lang="ts">
|
||||||
|
export default {
|
||||||
|
name: 'CmsOrder'
|
||||||
|
};
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style lang="less" scoped></style>
|
||||||
@@ -139,8 +139,7 @@
|
|||||||
<a-descriptions-item label="技术支持">
|
<a-descriptions-item label="技术支持">
|
||||||
<span
|
<span
|
||||||
class="cursor-pointer"
|
class="cursor-pointer"
|
||||||
@click="openNew(`https://websoft.top/order/3429.html`)"
|
>麦芽知电子商务</span
|
||||||
>网宿软件</span
|
|
||||||
>
|
>
|
||||||
</a-descriptions-item>
|
</a-descriptions-item>
|
||||||
</a-descriptions>
|
</a-descriptions>
|
||||||
|
|||||||
@@ -143,8 +143,7 @@
|
|||||||
<a-descriptions-item label="技术支持">
|
<a-descriptions-item label="技术支持">
|
||||||
<span
|
<span
|
||||||
class="cursor-pointer"
|
class="cursor-pointer"
|
||||||
@click="openNew(`https://websoft.top`)"
|
>麦芽知电子商务</span
|
||||||
>网宿软件</span
|
|
||||||
>
|
>
|
||||||
</a-descriptions-item>
|
</a-descriptions-item>
|
||||||
</a-descriptions>
|
</a-descriptions>
|
||||||
|
|||||||
@@ -241,25 +241,25 @@
|
|||||||
align: 'center'
|
align: 'center'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '一级佣金(10%)',
|
title: '一级佣金',
|
||||||
dataIndex: 'firstNickname',
|
dataIndex: 'firstNickname',
|
||||||
key: 'firstNickname',
|
key: 'firstNickname',
|
||||||
align: 'center'
|
align: 'center'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '二级佣金(5%)',
|
title: '二级佣金',
|
||||||
dataIndex: 'secondNickname',
|
dataIndex: 'secondNickname',
|
||||||
key: 'secondNickname',
|
key: 'secondNickname',
|
||||||
align: 'center'
|
align: 'center'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '一级门店分红(2%/3%)',
|
title: '一级门店分红',
|
||||||
dataIndex: 'firstDividendUserName',
|
dataIndex: 'firstDividendUserName',
|
||||||
key: 'firstDividendUserName',
|
key: 'firstDividendUserName',
|
||||||
align: 'center'
|
align: 'center'
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '二级门店分红(1%)',
|
title: '二级门店分红',
|
||||||
dataIndex: 'secondDividendUserName',
|
dataIndex: 'secondDividendUserName',
|
||||||
key: 'secondDividendUserName',
|
key: 'secondDividendUserName',
|
||||||
align: 'center'
|
align: 'center'
|
||||||
|
|||||||
@@ -439,7 +439,7 @@
|
|||||||
:un-checked-value="0"
|
:un-checked-value="0"
|
||||||
/>
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
<a-form-item label="是否开启分红角色功能" v-if="!merchantId">
|
<a-form-item label="是否开启分红功能" v-if="!merchantId">
|
||||||
<a-switch
|
<a-switch
|
||||||
size="small"
|
size="small"
|
||||||
v-model:checked="form.commissionRole"
|
v-model:checked="form.commissionRole"
|
||||||
@@ -459,6 +459,115 @@
|
|||||||
</a-input>
|
</a-input>
|
||||||
</a-space>
|
</a-space>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
|
|
||||||
|
<a-divider orientation="left">分销设置</a-divider>
|
||||||
|
<a-form-item label="是否开启分销" name="isOpenCommission">
|
||||||
|
<a-switch
|
||||||
|
size="small"
|
||||||
|
v-model:checked="form.isOpenCommission"
|
||||||
|
:checked-value="1"
|
||||||
|
:un-checked-value="0"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
<template v-if="form.isOpenCommission === 1">
|
||||||
|
<a-form-item label="分佣类型" name="commissionType">
|
||||||
|
<a-radio-group v-model:value="form.commissionType">
|
||||||
|
<a-radio :value="10">固定金额</a-radio>
|
||||||
|
<a-radio :value="20">百分比(0.1代表10%)</a-radio>
|
||||||
|
</a-radio-group>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item
|
||||||
|
:label="form.commissionType === 20 ? '一级佣金(%)' : '一级佣金(元)'"
|
||||||
|
name="firstMoney"
|
||||||
|
>
|
||||||
|
<a-input-number
|
||||||
|
v-model:value="form.firstMoney"
|
||||||
|
:min="0"
|
||||||
|
:max="form.commissionType === 20 ? 1 : undefined"
|
||||||
|
:precision="2"
|
||||||
|
style="width: 250px"
|
||||||
|
:placeholder="
|
||||||
|
form.commissionType === 20
|
||||||
|
? '请输入一级佣金百分比'
|
||||||
|
: '请输入一级佣金金额'
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<template #addonAfter>{{
|
||||||
|
form.commissionType === 20 ? '%' : '元'
|
||||||
|
}}</template>
|
||||||
|
</a-input-number>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item
|
||||||
|
:label="form.commissionType === 20 ? '二级佣金(%)' : '二级佣金(元)'"
|
||||||
|
name="secondMoney"
|
||||||
|
>
|
||||||
|
<a-input-number
|
||||||
|
v-model:value="form.secondMoney"
|
||||||
|
:min="0"
|
||||||
|
:max="form.commissionType === 20 ? 1 : undefined"
|
||||||
|
:precision="2"
|
||||||
|
style="width: 250px"
|
||||||
|
:placeholder="
|
||||||
|
form.commissionType === 20
|
||||||
|
? '请输入二级佣金百分比'
|
||||||
|
: '请输入二级佣金金额'
|
||||||
|
"
|
||||||
|
>
|
||||||
|
<template #addonAfter>{{
|
||||||
|
form.commissionType === 20 ? '%' : '元'
|
||||||
|
}}</template>
|
||||||
|
</a-input-number>
|
||||||
|
</a-form-item>
|
||||||
|
<!-- <a-form-item-->
|
||||||
|
<!-- :label="form.commissionType === 20 ? '三级佣金(%)' : '三级佣金(元)'"-->
|
||||||
|
<!-- name="thirdMoney"-->
|
||||||
|
<!-- >-->
|
||||||
|
<!-- <a-input-number-->
|
||||||
|
<!-- v-model:value="form.thirdMoney"-->
|
||||||
|
<!-- :min="0"-->
|
||||||
|
<!-- :max="form.commissionType === 20 ? 100 : undefined"-->
|
||||||
|
<!-- :precision="2"-->
|
||||||
|
<!-- style="width: 250px"-->
|
||||||
|
<!-- :placeholder="-->
|
||||||
|
<!-- form.commissionType === 20-->
|
||||||
|
<!-- ? '请输入三级佣金百分比'-->
|
||||||
|
<!-- : '请输入三级佣金金额'-->
|
||||||
|
<!-- "-->
|
||||||
|
<!-- >-->
|
||||||
|
<!-- <template #addonAfter>{{-->
|
||||||
|
<!-- form.commissionType === 20 ? '%' : '元'-->
|
||||||
|
<!-- }}</template>-->
|
||||||
|
<!-- </a-input-number>-->
|
||||||
|
<!-- </a-form-item>-->
|
||||||
|
<a-form-item label="一级分红" name="firstDividend">
|
||||||
|
<a-input-number
|
||||||
|
v-model:value="form.firstDividend"
|
||||||
|
:min="0"
|
||||||
|
:max="form.commissionType === 20 ? 1 : undefined"
|
||||||
|
:precision="2"
|
||||||
|
style="width: 250px"
|
||||||
|
placeholder="请输入一级分红"
|
||||||
|
>
|
||||||
|
<template #addonAfter>{{
|
||||||
|
form.commissionType === 20 ? '%' : '元'
|
||||||
|
}}</template>
|
||||||
|
</a-input-number>
|
||||||
|
</a-form-item>
|
||||||
|
<a-form-item label="二级分红" name="secondDividend">
|
||||||
|
<a-input-number
|
||||||
|
v-model:value="form.secondDividend"
|
||||||
|
:min="0"
|
||||||
|
:max="form.commissionType === 20 ? 1 : undefined"
|
||||||
|
:precision="2"
|
||||||
|
style="width: 250px"
|
||||||
|
placeholder="请输入二级分红"
|
||||||
|
>
|
||||||
|
<template #addonAfter>{{
|
||||||
|
form.commissionType === 20 ? '%' : '元'
|
||||||
|
}}</template>
|
||||||
|
</a-input-number>
|
||||||
|
</a-form-item>
|
||||||
|
</template>
|
||||||
<template v-if="form.type === 1 || merchantId">
|
<template v-if="form.type === 1 || merchantId">
|
||||||
<a-form-item label="可用日期">
|
<a-form-item label="可用日期">
|
||||||
<a-select v-model:value="canUseDate" mode="multiple">
|
<a-select v-model:value="canUseDate" mode="multiple">
|
||||||
@@ -988,6 +1097,14 @@ const form = reactive<ShopGoods>({
|
|||||||
categoryName: undefined,
|
categoryName: undefined,
|
||||||
specs: 0,
|
specs: 0,
|
||||||
commissionRole: 0,
|
commissionRole: 0,
|
||||||
|
// 分销佣金(新字段,后端保持 snake_case)
|
||||||
|
isOpenCommission: 0,
|
||||||
|
commissionType: 10,
|
||||||
|
firstMoney: 0,
|
||||||
|
secondMoney: 0,
|
||||||
|
thirdMoney: 0,
|
||||||
|
firstDividend: 0,
|
||||||
|
secondDividend: 0,
|
||||||
position: undefined,
|
position: undefined,
|
||||||
price: undefined,
|
price: undefined,
|
||||||
originPrice: undefined,
|
originPrice: undefined,
|
||||||
@@ -1724,6 +1841,29 @@ const save = () => {
|
|||||||
if (ensureTag.value.length) form.ensureTag = ensureTag.value.join();
|
if (ensureTag.value.length) form.ensureTag = ensureTag.value.join();
|
||||||
if (canUseDate.value.length) form.canUseDate = canUseDate.value.join();
|
if (canUseDate.value.length) form.canUseDate = canUseDate.value.join();
|
||||||
|
|
||||||
|
// 分销关闭时,避免把历史值一并保存到后端
|
||||||
|
if (form.isOpenCommission !== 1) {
|
||||||
|
form.commissionType = 10;
|
||||||
|
form.firstMoney = 0;
|
||||||
|
form.secondMoney = 0;
|
||||||
|
form.thirdMoney = 0;
|
||||||
|
form.firstDividend = 0;
|
||||||
|
form.secondDividend = 0;
|
||||||
|
}
|
||||||
|
if (form.isOpenCommission === 1 && form.commissionType === 20) {
|
||||||
|
// 百分比:约定 0-100(后端如用万分比/小数可再调整)
|
||||||
|
const invalidPercent =
|
||||||
|
(form.firstMoney ?? 0) > 100 ||
|
||||||
|
(form.secondMoney ?? 0) > 100 ||
|
||||||
|
(form.thirdMoney ?? 0) > 100 ||
|
||||||
|
(form.firstMoney ?? 0) < 0 ||
|
||||||
|
(form.secondMoney ?? 0) < 0 ||
|
||||||
|
(form.thirdMoney ?? 0) < 0;
|
||||||
|
if (invalidPercent) {
|
||||||
|
return message.error('佣金百分比需在 0~100 之间');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
// if (form.dealerGift && !form.dealerGiftNum) return message.error('请输入经销商赠品数量');
|
// if (form.dealerGift && !form.dealerGiftNum) return message.error('请输入经销商赠品数量');
|
||||||
if (form.commissionRole === 1) {
|
if (form.commissionRole === 1) {
|
||||||
for (let i = 0; i < form.goodsRoleCommission.length; i++) {
|
for (let i = 0; i < form.goodsRoleCommission.length; i++) {
|
||||||
@@ -1875,6 +2015,9 @@ watch(
|
|||||||
ensureTagItem.value = '';
|
ensureTagItem.value = '';
|
||||||
if (props.data) {
|
if (props.data) {
|
||||||
assignObject(form, props.data);
|
assignObject(form, props.data);
|
||||||
|
if (form.commissionType === undefined || form.commissionType === null) {
|
||||||
|
form.commissionType = 10;
|
||||||
|
}
|
||||||
if (props.data.image) {
|
if (props.data.image) {
|
||||||
images.value.push({
|
images.value.push({
|
||||||
uid: uuid(),
|
uid: uuid(),
|
||||||
|
|||||||
@@ -3,7 +3,7 @@
|
|||||||
<a-modal
|
<a-modal
|
||||||
:visible="visible"
|
:visible="visible"
|
||||||
title="订单发送货"
|
title="订单发送货"
|
||||||
width="600px"
|
width="50%"
|
||||||
:confirm-loading="loading"
|
:confirm-loading="loading"
|
||||||
@update:visible="updateVisible"
|
@update:visible="updateVisible"
|
||||||
@ok="handleSubmit"
|
@ok="handleSubmit"
|
||||||
|
|||||||
@@ -324,14 +324,12 @@
|
|||||||
title: '订单编号',
|
title: '订单编号',
|
||||||
dataIndex: 'orderNo',
|
dataIndex: 'orderNo',
|
||||||
key: 'orderNo',
|
key: 'orderNo',
|
||||||
align: 'center',
|
align: 'center'
|
||||||
width: 200
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '商品信息',
|
title: '商品信息',
|
||||||
dataIndex: 'orderGoods',
|
dataIndex: 'orderGoods',
|
||||||
key: 'orderGoods',
|
key: 'orderGoods'
|
||||||
width: 360
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '实付金额',
|
title: '实付金额',
|
||||||
@@ -390,15 +388,13 @@
|
|||||||
dataIndex: 'createTime',
|
dataIndex: 'createTime',
|
||||||
key: 'createTime',
|
key: 'createTime',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
width: 180,
|
|
||||||
sorter: true,
|
sorter: true,
|
||||||
ellipsis: true,
|
|
||||||
customRender: ({ text }) => toDateString(text)
|
customRender: ({ text }) => toDateString(text)
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: '操作',
|
title: '操作',
|
||||||
key: 'action',
|
key: 'action',
|
||||||
width: 280,
|
width: 220,
|
||||||
fixed: 'right',
|
fixed: 'right',
|
||||||
align: 'center',
|
align: 'center',
|
||||||
hideInSetting: true
|
hideInSetting: true
|
||||||
|
|||||||
Reference in New Issue
Block a user