From 757822f3ba5eca08ed92d89425979601f590e37e Mon Sep 17 00:00:00 2001 From: gxwebsoft Date: Thu, 23 May 2024 15:42:41 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=8C=E6=88=90=E6=8D=A2=E5=9C=BA=E5=9C=B0?= =?UTF-8?q?=E5=8A=9F=E8=83=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.development | 4 +- src/api/booking/emergency/index.ts | 106 ++++ src/api/booking/emergency/model/index.ts | 35 ++ src/api/booking/field/model/index.ts | 4 + src/api/booking/period/model/index.ts | 8 + src/api/booking/userCoupon/index.ts | 106 ++++ src/api/booking/userCoupon/model/index.ts | 59 +++ src/api/index.ts | 3 + src/api/layout/index.ts | 29 ++ src/api/shop/order/model/index.ts | 4 + src/api/shop/orderInfo/model/index.ts | 62 ++- src/api/user/userCoupon/index.ts | 106 ++++ src/api/user/userCoupon/model/index.ts | 59 +++ .../components/select-data.vue | 210 ++++++++ src/components/SelectBookingField/index.vue | 59 +++ .../data/components/SelectMerchant/index.vue | 62 +++ .../booking/data/components/orderEdit.vue | 459 ++++++++++++++++++ .../booking/data/components/orderInfo.vue | 439 +++++++++++++++++ src/views/booking/data/components/search.vue | 140 ++++++ src/views/booking/data/index.vue | 438 +++++++++++++++++ .../booking/order/components/orderInfo.vue | 24 +- src/views/booking/order/components/search.vue | 2 +- src/views/booking/order/index.vue | 59 ++- .../mp-weixin/home/components/simulator.vue | 53 +- 24 files changed, 2444 insertions(+), 86 deletions(-) create mode 100644 src/api/booking/emergency/index.ts create mode 100644 src/api/booking/emergency/model/index.ts create mode 100644 src/api/booking/userCoupon/index.ts create mode 100644 src/api/booking/userCoupon/model/index.ts create mode 100644 src/api/user/userCoupon/index.ts create mode 100644 src/api/user/userCoupon/model/index.ts create mode 100644 src/components/SelectBookingField/components/select-data.vue create mode 100644 src/components/SelectBookingField/index.vue create mode 100644 src/views/booking/data/components/SelectMerchant/index.vue create mode 100644 src/views/booking/data/components/orderEdit.vue create mode 100644 src/views/booking/data/components/orderInfo.vue create mode 100644 src/views/booking/data/components/search.vue create mode 100644 src/views/booking/data/index.vue diff --git a/.env.development b/.env.development index 6941c97..914ba38 100644 --- a/.env.development +++ b/.env.development @@ -1,10 +1,10 @@ VITE_APP_NAME=后台管理系统 VITE_SOCKET_URL=wss://server.gxwebsoft.com -#VITE_SERVER_URL=https://server.gxwebsoft.com/api +VITE_SERVER_URL=https://server.gxwebsoft.com/api #VITE_API_URL=https://modules.gxwebsoft.com/api VITE_API_URL=http://127.0.0.1:9099/api -VITE_SERVER_URL=http://127.0.0.1:9091/api +#VITE_SERVER_URL=http://127.0.0.1:9091/api #VITE_SOCKET_URL=ws://localhost:9191 #VITE_API_URL=https://server.gxwebsoft.com/api #VITE_API_URL=http://103.233.255.195:9300/api diff --git a/src/api/booking/emergency/index.ts b/src/api/booking/emergency/index.ts new file mode 100644 index 0000000..65ba7f8 --- /dev/null +++ b/src/api/booking/emergency/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { Emergency, EmergencyParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询紧急联系人管理 + */ +export async function pageEmergency(params: EmergencyParam) { + const res = await request.get>>( + MODULES_API_URL + '/booking/emergency/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询紧急联系人管理列表 + */ +export async function listEmergency(params?: EmergencyParam) { + const res = await request.get>( + MODULES_API_URL + '/booking/emergency', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加紧急联系人管理 + */ +export async function addEmergency(data: Emergency) { + const res = await request.post>( + MODULES_API_URL + '/booking/emergency', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改紧急联系人管理 + */ +export async function updateEmergency(data: Emergency) { + const res = await request.put>( + MODULES_API_URL + '/booking/emergency', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除紧急联系人管理 + */ +export async function removeEmergency(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/booking/emergency/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除紧急联系人管理 + */ +export async function removeBatchEmergency(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/booking/emergency/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询紧急联系人管理 + */ +export async function getEmergency(id: number) { + const res = await request.get>( + MODULES_API_URL + '/booking/emergency/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/booking/emergency/model/index.ts b/src/api/booking/emergency/model/index.ts new file mode 100644 index 0000000..a1da5c9 --- /dev/null +++ b/src/api/booking/emergency/model/index.ts @@ -0,0 +1,35 @@ +import type { PageParam } from '@/api'; + +/** + * 紧急联系人管理 + */ +export interface Emergency { + // ID + emergencyId?: number; + // 姓名 + name?: string; + // 手机号 + phone?: string; + // 关联用户 + userId?: number; + // 商户ID + merchantId?: number; + // 备注 + comments?: string; + // 状态 + status?: number; + // 排序号 + sortNumber?: number; + // 租户id + tenantId?: number; + // 创建时间 + createTime?: string; +} + +/** + * 紧急联系人管理搜索条件 + */ +export interface EmergencyParam extends PageParam { + emergencyId?: number; + keywords?: string; +} diff --git a/src/api/booking/field/model/index.ts b/src/api/booking/field/model/index.ts index ce6cb4d..0b595ac 100644 --- a/src/api/booking/field/model/index.ts +++ b/src/api/booking/field/model/index.ts @@ -1,4 +1,5 @@ import type { PageParam } from '@/api'; +import { OrderInfo } from "@/api/shop/orderInfo/model"; /** * 场馆场地 @@ -47,6 +48,9 @@ export interface Field { tenantId?: number; // 创建时间 createTime?: string; + orderId?: number; + orderInfoList?: OrderInfo[]; + orderKey?: string; } /** diff --git a/src/api/booking/period/model/index.ts b/src/api/booking/period/model/index.ts index 1dd14c3..88525ab 100644 --- a/src/api/booking/period/model/index.ts +++ b/src/api/booking/period/model/index.ts @@ -1,4 +1,5 @@ import type { PageParam } from '@/api'; +import { Field } from "@/api/booking/field/model"; /** * 场地时段 @@ -40,6 +41,7 @@ export interface Period { tenantId?: number; // 创建时间 createTime?: string; + fieldList?: Field[]; } /** @@ -48,4 +50,10 @@ export interface Period { export interface PeriodParam extends PageParam { periodId?: number; keywords?: string; + dateTime?: string; + isStatus?: number; + timePeriod?: string; + week?: number; + startTime?: string; + half?: number; } diff --git a/src/api/booking/userCoupon/index.ts b/src/api/booking/userCoupon/index.ts new file mode 100644 index 0000000..ecfcdfa --- /dev/null +++ b/src/api/booking/userCoupon/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { UserCoupon, UserCouponParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询我的优惠券 + */ +export async function pageUserCoupon(params: UserCouponParam) { + const res = await request.get>>( + MODULES_API_URL + '/booking/user-coupon/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询我的优惠券列表 + */ +export async function listUserCoupon(params?: UserCouponParam) { + const res = await request.get>( + MODULES_API_URL + '/booking/user-coupon', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加我的优惠券 + */ +export async function addUserCoupon(data: UserCoupon) { + const res = await request.post>( + MODULES_API_URL + '/booking/user-coupon', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改我的优惠券 + */ +export async function updateUserCoupon(data: UserCoupon) { + const res = await request.put>( + MODULES_API_URL + '/booking/user-coupon', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除我的优惠券 + */ +export async function removeUserCoupon(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/booking/user-coupon/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除我的优惠券 + */ +export async function removeBatchUserCoupon(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/booking/user-coupon/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询我的优惠券 + */ +export async function getUserCoupon(id: number) { + const res = await request.get>( + MODULES_API_URL + '/booking/user-coupon/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/booking/userCoupon/model/index.ts b/src/api/booking/userCoupon/model/index.ts new file mode 100644 index 0000000..3649ebb --- /dev/null +++ b/src/api/booking/userCoupon/model/index.ts @@ -0,0 +1,59 @@ +import type { PageParam } from '@/api'; + +/** + * 我的优惠券 + */ +export interface UserCoupon { + // id + id?: number; + // 优惠劵id + couponId?: number; + // 优惠券名称 + name?: string; + // 优惠券类型(10满减券 20折扣券) + type?: number; + // 满减券-减免金额 + reducePrice?: string; + // 折扣券-折扣率(0-100) + discount?: number; + // 最低消费金额 + minPrice?: string; + // 到期类型(10领取后生效 20固定时间) + expireType?: number; + // 领取后生效-有效天数 + expireDay?: number; + // 有效期开始时间 + startTime?: number; + // 有效期结束时间 + endTime?: number; + // 适用范围(10全部商品 20指定商品) + applyRange?: number; + // 适用范围配置(json格式) + applyRangeConfig?: string; + // 是否过期(0未过期 1已过期) + isExpire?: number; + // 是否已使用(0未使用 1已使用) + isUse?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0待使用, 1已使用, 2已失效 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 我的优惠券搜索条件 + */ +export interface UserCouponParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/index.ts b/src/api/index.ts index 4e651e7..401f07f 100644 --- a/src/api/index.ts +++ b/src/api/index.ts @@ -44,4 +44,7 @@ export interface PageParam { createTimeStart?: string; // 结束时间 createTimeEnd?: string; + + showSoldStatus?: boolean; + dateTime?: string; } diff --git a/src/api/layout/index.ts b/src/api/layout/index.ts index 854c9a0..982aa4b 100644 --- a/src/api/layout/index.ts +++ b/src/api/layout/index.ts @@ -43,6 +43,35 @@ export async function getUserInfo(): Promise { return Promise.reject(new Error(res.data.message)); } +/** + * 获取服务器时间(实时) + * @return + */ +export async function getServerTime() { + const res = await request.get>( + MODULES_API_URL + '/cms/website/getServerTime' + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 获取未来7天的日期 + * @return + */ +export async function getNext7day() { + const res = await request.get>( + MODULES_API_URL + '/cms/website/getNext7day' + ); + console.log('res.data.code: ', res.data.code); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + /** * 向子模块传递token * @param url diff --git a/src/api/shop/order/model/index.ts b/src/api/shop/order/model/index.ts index df05a54..55a77df 100644 --- a/src/api/shop/order/model/index.ts +++ b/src/api/shop/order/model/index.ts @@ -108,7 +108,11 @@ export interface OrderParam extends PageParam { orderId?: number; keywords?: string; userId?: number; + week?: number; + isStatus?: number; merchantId?: number; merchantCode?: string; merchantName?: string; + startTime?: string; + dateTime?: string; } diff --git a/src/api/shop/orderInfo/model/index.ts b/src/api/shop/orderInfo/model/index.ts index 1f2e848..491de54 100644 --- a/src/api/shop/orderInfo/model/index.ts +++ b/src/api/shop/orderInfo/model/index.ts @@ -1,53 +1,65 @@ import type { PageParam } from '@/api'; /** - * + * 场地 */ export interface OrderInfo { - // + // 自增ID id?: number; // 关联订单表id - oid?: number; - // 关联场馆id - sid?: number; + orderId?: number; + // 组合数据:日期+时间段+场馆id+场地id + orderCode?: string; + // 关联商户ID + merchantId?: number; + // 商户名称 + merchantName?: string; // 关联场地id - fid?: number; - // 场馆 - siteName?: string; - // 场地 + fieldId?: number; + // 场地名称 fieldName?: string; - // 预约时间段 - dateTime?: string; // 单价 price?: string; // 儿童价 childrenPrice?: string; // 成人人数 - adultNum?: string; + adultNum?: number; // 儿童人数 - childrenNum?: string; - // 1已付款,2未付款,3无需付款或占用状态 - payStatus?: string; - // 是否免费:1免费、2收费 + childrenNum?: number; + // 0 未付款 1已付款,2无需付款或占用状态 + payStatus?: number; + // 是否免费:0收费、1免费 isFree?: string; - // 是否支持儿童票:1支持,2不支持 + // 是否支持儿童票:0不支持、1支持 isChildren?: string; - // 预订类型:1全场,2半场 - type?: string; - // 组合数据:日期+时间段+场馆id+场地id - mergeData?: string; + // 系统版本 0当前版本 其他版本 + version?: number; + // 预订类型:0全场,1半场 + isHalf?: string; + // 预约时间段 + timePeriod?: string; + // 预定日期 + dateTime?: string; // 开场时间 - startTime?: number; - // 下单时间 - orderTime?: number; + startTime?: string; + // 结束时间 + endTime?: string; // 毫秒时间戳 timeFlag?: string; + // 备注 + comments?: string; + // 用户id + userId?: number; // 租户id tenantId?: number; + // 更新时间 + updateTime?: string; + // 创建时间 + createTime?: string; } /** - * 搜索条件 + * 场地搜索条件 */ export interface OrderInfoParam extends PageParam { id?: number; diff --git a/src/api/user/userCoupon/index.ts b/src/api/user/userCoupon/index.ts new file mode 100644 index 0000000..ecfcdfa --- /dev/null +++ b/src/api/user/userCoupon/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { UserCoupon, UserCouponParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询我的优惠券 + */ +export async function pageUserCoupon(params: UserCouponParam) { + const res = await request.get>>( + MODULES_API_URL + '/booking/user-coupon/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询我的优惠券列表 + */ +export async function listUserCoupon(params?: UserCouponParam) { + const res = await request.get>( + MODULES_API_URL + '/booking/user-coupon', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加我的优惠券 + */ +export async function addUserCoupon(data: UserCoupon) { + const res = await request.post>( + MODULES_API_URL + '/booking/user-coupon', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改我的优惠券 + */ +export async function updateUserCoupon(data: UserCoupon) { + const res = await request.put>( + MODULES_API_URL + '/booking/user-coupon', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除我的优惠券 + */ +export async function removeUserCoupon(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/booking/user-coupon/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除我的优惠券 + */ +export async function removeBatchUserCoupon(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/booking/user-coupon/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询我的优惠券 + */ +export async function getUserCoupon(id: number) { + const res = await request.get>( + MODULES_API_URL + '/booking/user-coupon/' + id + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} diff --git a/src/api/user/userCoupon/model/index.ts b/src/api/user/userCoupon/model/index.ts new file mode 100644 index 0000000..3649ebb --- /dev/null +++ b/src/api/user/userCoupon/model/index.ts @@ -0,0 +1,59 @@ +import type { PageParam } from '@/api'; + +/** + * 我的优惠券 + */ +export interface UserCoupon { + // id + id?: number; + // 优惠劵id + couponId?: number; + // 优惠券名称 + name?: string; + // 优惠券类型(10满减券 20折扣券) + type?: number; + // 满减券-减免金额 + reducePrice?: string; + // 折扣券-折扣率(0-100) + discount?: number; + // 最低消费金额 + minPrice?: string; + // 到期类型(10领取后生效 20固定时间) + expireType?: number; + // 领取后生效-有效天数 + expireDay?: number; + // 有效期开始时间 + startTime?: number; + // 有效期结束时间 + endTime?: number; + // 适用范围(10全部商品 20指定商品) + applyRange?: number; + // 适用范围配置(json格式) + applyRangeConfig?: string; + // 是否过期(0未过期 1已过期) + isExpire?: number; + // 是否已使用(0未使用 1已使用) + isUse?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 状态, 0待使用, 1已使用, 2已失效 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 用户ID + userId?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 我的优惠券搜索条件 + */ +export interface UserCouponParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/components/SelectBookingField/components/select-data.vue b/src/components/SelectBookingField/components/select-data.vue new file mode 100644 index 0000000..e57f9a2 --- /dev/null +++ b/src/components/SelectBookingField/components/select-data.vue @@ -0,0 +1,210 @@ + + + + diff --git a/src/components/SelectBookingField/index.vue b/src/components/SelectBookingField/index.vue new file mode 100644 index 0000000..df89c18 --- /dev/null +++ b/src/components/SelectBookingField/index.vue @@ -0,0 +1,59 @@ + + + diff --git a/src/views/booking/data/components/SelectMerchant/index.vue b/src/views/booking/data/components/SelectMerchant/index.vue new file mode 100644 index 0000000..b519e39 --- /dev/null +++ b/src/views/booking/data/components/SelectMerchant/index.vue @@ -0,0 +1,62 @@ + + + + diff --git a/src/views/booking/data/components/orderEdit.vue b/src/views/booking/data/components/orderEdit.vue new file mode 100644 index 0000000..3320629 --- /dev/null +++ b/src/views/booking/data/components/orderEdit.vue @@ -0,0 +1,459 @@ + + + + diff --git a/src/views/booking/data/components/orderInfo.vue b/src/views/booking/data/components/orderInfo.vue new file mode 100644 index 0000000..5216d39 --- /dev/null +++ b/src/views/booking/data/components/orderInfo.vue @@ -0,0 +1,439 @@ + + + + + diff --git a/src/views/booking/data/components/search.vue b/src/views/booking/data/components/search.vue new file mode 100644 index 0000000..7100f64 --- /dev/null +++ b/src/views/booking/data/components/search.vue @@ -0,0 +1,140 @@ + + + + + + diff --git a/src/views/booking/data/index.vue b/src/views/booking/data/index.vue new file mode 100644 index 0000000..0fdd22d --- /dev/null +++ b/src/views/booking/data/index.vue @@ -0,0 +1,438 @@ + + + + + + diff --git a/src/views/booking/order/components/orderInfo.vue b/src/views/booking/order/components/orderInfo.vue index 97312f3..4032017 100644 --- a/src/views/booking/order/components/orderInfo.vue +++ b/src/views/booking/order/components/orderInfo.vue @@ -141,29 +141,7 @@ :data-source="form.orderInfoList" :columns="columns" :pagination="false" - > - - + /> diff --git a/src/views/booking/order/components/search.vue b/src/views/booking/order/components/search.vue index b00fe7d..23024e7 100644 --- a/src/views/booking/order/components/search.vue +++ b/src/views/booking/order/components/search.vue @@ -14,7 +14,7 @@ @search="search" @pressEnter="search" /> - 生成支付二维码 + 重置 @@ -236,6 +247,7 @@ if (filters) { where.status = filters.status; } + where.type = 1; return pageOrder({ ...where, ...orders, @@ -298,6 +310,13 @@ key: 'payStatus', align: 'center' }, + { + title: '付款时间', + dataIndex: 'payTime', + key: 'payTime', + align: 'center', + customRender: ({ text }) => toDateString(text, 'yyyy-MM-dd HH:mm:ss') + }, { title: '订单状态', dataIndex: 'orderStatus', @@ -317,11 +336,12 @@ align: 'center' }, { - title: '付款时间', - dataIndex: 'payTime', - key: 'payTime', + title: '类型', + dataIndex: 'type', + key: 'type', align: 'center', - customRender: ({ text }) => toDateString(text, 'yyyy-MM-dd HH:mm:ss') + customRender: ({ text }) => + ['商城订单', '客户预定', '俱乐部训练场', '活动订场'][text] }, // { // title: '申请退款时间', @@ -427,15 +447,14 @@ - diff --git a/src/views/cms/mp-weixin/home/components/simulator.vue b/src/views/cms/mp-weixin/home/components/simulator.vue index d142f61..cc41965 100644 --- a/src/views/cms/mp-weixin/home/components/simulator.vue +++ b/src/views/cms/mp-weixin/home/components/simulator.vue @@ -13,20 +13,28 @@