From cd0aa98dc0f31019d68f0c86fb34219092876433 Mon Sep 17 00:00:00 2001 From: b2894lxlx <517289602@qq.com> Date: Sat, 24 Oct 2026 13:32:34 +0800 Subject: [PATCH] 261024 --- .env.development | 4 +- src/api/shop/balanceChargeLog/index.ts | 122 +++ src/api/shop/balanceChargeLog/model/index.ts | 40 + src/api/shop/userBalanceLog/index.ts | 106 +++ src/api/shop/userBalanceLog/model/index.ts | 45 + src/api/think/thinkCard/index.ts | 13 + src/api/think/thinkCardBalance/index.ts | 106 +++ src/api/think/thinkCardBalance/model/index.ts | 31 + src/api/think/thinkFtpCheckBill/index.ts | 106 +++ .../think/thinkFtpCheckBill/model/index.ts | 55 ++ src/api/think/thinkInvoice/index.ts | 14 + src/api/think/thinkInvoice/model/index.ts | 5 +- src/api/think/thinkOrder/index.ts | 46 +- src/api/think/thinkOrder/model/index.ts | 21 + src/api/think/thinkOrderOffCheck/index.ts | 106 +++ .../think/thinkOrderOffCheck/model/index.ts | 43 + src/api/think/thinkSite/model/index.ts | 1 + src/api/think/thinkSmallRecharge/index.ts | 106 +++ .../think/thinkSmallRecharge/model/index.ts | 29 + .../think/thinkTrainingInstitution/index.ts | 118 +++ .../thinkTrainingInstitution/model/index.ts | 25 + src/api/think/thinkUserInAccess/index.ts | 106 +++ .../think/thinkUserInAccess/model/index.ts | 19 + src/api/think/thinkUsersBlack/index.ts | 106 +++ src/api/think/thinkUsersBlack/model/index.ts | 31 + src/api/think/thinkUsersVip/index.ts | 16 + src/api/think/thinkVip/model/index.ts | 5 + .../booking/finance/components/search.vue | 21 +- .../components/trainingBusinessReport.vue | 131 +++ src/views/booking/finance/index.vue | 127 +-- .../components/balanceChargeLogEdit.vue | 218 +++++ .../balanceChargeLog/components/search.vue | 55 ++ src/views/shop/balanceChargeLog/index.vue | 189 ++++ .../shop/userBalanceLog/components/search.vue | 42 + .../components/userBalanceLogEdit.vue | 260 ++++++ src/views/shop/userBalanceLog/index.vue | 238 +++++ .../think/thinkCard/components/invoice.vue | 24 +- src/views/think/thinkCard/index.vue | 859 ++++++++++-------- .../thinkCardBalance/components/search.vue | 42 + .../components/thinkCardBalanceEdit.vue | 209 +++++ src/views/think/thinkCardBalance/index.vue | 251 +++++ .../period/components/periodEdit.vue | 140 ++- .../thinkFtpCheckBill/components/search.vue | 52 ++ .../components/thinkFtpCheckBillEdit.vue | 289 ++++++ src/views/think/thinkFtpCheckBill/index.vue | 270 ++++++ .../components/thinkInvoiceEdit.vue | 4 +- src/views/think/thinkInvoice/index.vue | 29 +- .../think/thinkOrder/components/invoice.vue | 7 +- .../thinkOrder/components/invoiceByList.vue | 4 +- .../think/thinkOrder/components/orderInfo.vue | 24 +- .../think/thinkOrder/components/search.vue | 34 +- src/views/think/thinkOrder/index.vue | 6 + .../thinkOrderOffCheck/components/search.vue | 42 + .../components/thinkOrderOffCheckEdit.vue | 249 +++++ src/views/think/thinkOrderOffCheck/index.vue | 281 ++++++ .../thinkSite/components/thinkSiteEdit.vue | 9 +- src/views/think/thinkSite/index.vue | 4 +- .../thinkSmallRecharge/components/search.vue | 42 + .../components/thinkSmallRechargeEdit.vue | 201 ++++ src/views/think/thinkSmallRecharge/index.vue | 245 +++++ .../components/search.vue | 72 ++ .../thinkTrainingInstitutionEdit.vue | 171 ++++ .../think/thinkTrainingInstitution/index.vue | 201 ++++ .../thinkUserInAccess/components/search.vue | 42 + .../components/thinkUserInAccessEdit.vue | 168 ++++ src/views/think/thinkUserInAccess/index.vue | 212 +++++ .../thinkUsers/components/balanceRecharge.vue | 152 ++++ src/views/think/thinkUsers/index.vue | 22 +- .../thinkUsersBlack/components/search.vue | 85 ++ .../components/thinkUsersBlackEdit.vue | 211 +++++ src/views/think/thinkUsersBlack/index.vue | 222 +++++ src/views/think/thinkUsersVip/index.vue | 852 ++++++++++------- .../thinkVip/components/thinkVipEdit.vue | 523 +++++++---- src/views/think/thinkVip/index.vue | 9 +- 74 files changed, 7928 insertions(+), 1037 deletions(-) create mode 100644 src/api/shop/balanceChargeLog/index.ts create mode 100644 src/api/shop/balanceChargeLog/model/index.ts create mode 100644 src/api/shop/userBalanceLog/index.ts create mode 100644 src/api/shop/userBalanceLog/model/index.ts create mode 100644 src/api/think/thinkCardBalance/index.ts create mode 100644 src/api/think/thinkCardBalance/model/index.ts create mode 100644 src/api/think/thinkFtpCheckBill/index.ts create mode 100644 src/api/think/thinkFtpCheckBill/model/index.ts create mode 100644 src/api/think/thinkOrderOffCheck/index.ts create mode 100644 src/api/think/thinkOrderOffCheck/model/index.ts create mode 100644 src/api/think/thinkSmallRecharge/index.ts create mode 100644 src/api/think/thinkSmallRecharge/model/index.ts create mode 100644 src/api/think/thinkTrainingInstitution/index.ts create mode 100644 src/api/think/thinkTrainingInstitution/model/index.ts create mode 100644 src/api/think/thinkUserInAccess/index.ts create mode 100644 src/api/think/thinkUserInAccess/model/index.ts create mode 100644 src/api/think/thinkUsersBlack/index.ts create mode 100644 src/api/think/thinkUsersBlack/model/index.ts create mode 100644 src/views/booking/finance/components/trainingBusinessReport.vue create mode 100644 src/views/shop/balanceChargeLog/components/balanceChargeLogEdit.vue create mode 100644 src/views/shop/balanceChargeLog/components/search.vue create mode 100644 src/views/shop/balanceChargeLog/index.vue create mode 100644 src/views/shop/userBalanceLog/components/search.vue create mode 100644 src/views/shop/userBalanceLog/components/userBalanceLogEdit.vue create mode 100644 src/views/shop/userBalanceLog/index.vue create mode 100644 src/views/think/thinkCardBalance/components/search.vue create mode 100644 src/views/think/thinkCardBalance/components/thinkCardBalanceEdit.vue create mode 100644 src/views/think/thinkCardBalance/index.vue create mode 100644 src/views/think/thinkFtpCheckBill/components/search.vue create mode 100644 src/views/think/thinkFtpCheckBill/components/thinkFtpCheckBillEdit.vue create mode 100644 src/views/think/thinkFtpCheckBill/index.vue create mode 100644 src/views/think/thinkOrderOffCheck/components/search.vue create mode 100644 src/views/think/thinkOrderOffCheck/components/thinkOrderOffCheckEdit.vue create mode 100644 src/views/think/thinkOrderOffCheck/index.vue create mode 100644 src/views/think/thinkSmallRecharge/components/search.vue create mode 100644 src/views/think/thinkSmallRecharge/components/thinkSmallRechargeEdit.vue create mode 100644 src/views/think/thinkSmallRecharge/index.vue create mode 100644 src/views/think/thinkTrainingInstitution/components/search.vue create mode 100644 src/views/think/thinkTrainingInstitution/components/thinkTrainingInstitutionEdit.vue create mode 100644 src/views/think/thinkTrainingInstitution/index.vue create mode 100644 src/views/think/thinkUserInAccess/components/search.vue create mode 100644 src/views/think/thinkUserInAccess/components/thinkUserInAccessEdit.vue create mode 100644 src/views/think/thinkUserInAccess/index.vue create mode 100644 src/views/think/thinkUsers/components/balanceRecharge.vue create mode 100644 src/views/think/thinkUsersBlack/components/search.vue create mode 100644 src/views/think/thinkUsersBlack/components/thinkUsersBlackEdit.vue create mode 100644 src/views/think/thinkUsersBlack/index.vue diff --git a/.env.development b/.env.development index 4e479a6..d1f9ee7 100644 --- a/.env.development +++ b/.env.development @@ -2,8 +2,8 @@ VITE_APP_NAME=后台管理系统 VITE_SOCKET_URL=wss://server.gxwebsoft.com VITE_SERVER_URL=https://gxtyzx-server.websoft.top/api VITE_API_URL=https://gxtyzx-modules.websoft.top/api -VITE_THINK_URL=https://gxtyzx-api2.websoft.top/api -#VITE_THINK_URL=http://127.0.0.1:9099/api +#VITE_THINK_URL=https://gxtyzx-api2.websoft.top/api +VITE_THINK_URL=http://127.0.0.1:9099/api #VITE_SERVER_URL=http://127.0.0.1:30000/api diff --git a/src/api/shop/balanceChargeLog/index.ts b/src/api/shop/balanceChargeLog/index.ts new file mode 100644 index 0000000..b6fe50c --- /dev/null +++ b/src/api/shop/balanceChargeLog/index.ts @@ -0,0 +1,122 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { BalanceChargeLog, BalanceChargeLogParam } from './model'; +import { THINK_API_URL } from '@/config/setting'; + +/** + * 分页查询 + */ +export async function pageBalanceChargeLog(params: BalanceChargeLogParam) { + const res = await request.get>>( + THINK_API_URL + '/shop/balance-charge-log/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询列表 + */ +export async function listBalanceChargeLog(params?: BalanceChargeLogParam) { + const res = await request.get>( + THINK_API_URL + '/shop/balance-charge-log', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加 + */ +export async function addBalanceChargeLog(data: BalanceChargeLog) { + const res = await request.post>( + THINK_API_URL + '/shop/balance-charge-log', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改 + */ +export async function updateBalanceChargeLog(data: BalanceChargeLog) { + const res = await request.put>( + THINK_API_URL + '/shop/balance-charge-log', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 退款 + */ +export async function refundBalanceChargeLog(data: BalanceChargeLog) { + const res = await request.post>( + THINK_API_URL + '/shop/balance-charge-log/refund', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除 + */ +export async function removeBalanceChargeLog(id?: number) { + const res = await request.delete>( + THINK_API_URL + '/shop/balance-charge-log/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除 + */ +export async function removeBatchBalanceChargeLog( + data: (number | undefined)[] +) { + const res = await request.delete>( + THINK_API_URL + '/shop/balance-charge-log/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询 + */ +export async function getBalanceChargeLog(id: number) { + const res = await request.get>( + THINK_API_URL + '/shop/balance-charge-log/' + 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/shop/balanceChargeLog/model/index.ts b/src/api/shop/balanceChargeLog/model/index.ts new file mode 100644 index 0000000..c69d944 --- /dev/null +++ b/src/api/shop/balanceChargeLog/model/index.ts @@ -0,0 +1,40 @@ +import type { PageParam } from '@/api'; + +/** + * + */ +export interface BalanceChargeLog { + // + id?: number; + // + amount?: string; + // + orderNo?: string; + // 0未支付,1已支付,2已退款 + isPaid?: number; + // + paidNumber?: string; + // + userId?: number; + // 手机号 + phone?: string; + // 商城ID + tenantId?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; + // + remark?: string; +} + +/** + * 搜索条件 + */ +export interface BalanceChargeLogParam extends PageParam { + id?: number; + phone?: string; + orderNo?: string; + isPaid?: number; + keywords?: string; +} diff --git a/src/api/shop/userBalanceLog/index.ts b/src/api/shop/userBalanceLog/index.ts new file mode 100644 index 0000000..17a172a --- /dev/null +++ b/src/api/shop/userBalanceLog/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { UserBalanceLog, UserBalanceLogParam } from './model'; +import { THINK_API_URL } from '@/config/setting'; + +/** + * 分页查询用户余额变动明细表 + */ +export async function pageUserBalanceLog(params: UserBalanceLogParam) { + const res = await request.get>>( + THINK_API_URL + '/shop/user-balance-log/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询用户余额变动明细表列表 + */ +export async function listUserBalanceLog(params?: UserBalanceLogParam) { + const res = await request.get>( + THINK_API_URL + '/shop/user-balance-log', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加用户余额变动明细表 + */ +export async function addUserBalanceLog(data: UserBalanceLog) { + const res = await request.post>( + THINK_API_URL + '/shop/user-balance-log', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户余额变动明细表 + */ +export async function updateUserBalanceLog(data: UserBalanceLog) { + const res = await request.put>( + THINK_API_URL + '/shop/user-balance-log', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除用户余额变动明细表 + */ +export async function removeUserBalanceLog(id?: number) { + const res = await request.delete>( + THINK_API_URL + '/shop/user-balance-log/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除用户余额变动明细表 + */ +export async function removeBatchUserBalanceLog(data: (number | undefined)[]) { + const res = await request.delete>( + THINK_API_URL + '/shop/user-balance-log/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询用户余额变动明细表 + */ +export async function getUserBalanceLog(id: number) { + const res = await request.get>( + THINK_API_URL + '/shop/user-balance-log/' + 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/shop/userBalanceLog/model/index.ts b/src/api/shop/userBalanceLog/model/index.ts new file mode 100644 index 0000000..13b7952 --- /dev/null +++ b/src/api/shop/userBalanceLog/model/index.ts @@ -0,0 +1,45 @@ +import type { PageParam } from '@/api'; + +/** + * 用户余额变动明细表 + */ +export interface UserBalanceLog { + // 主键ID + logId?: number; + // 用户ID + userId?: number; + // 余额变动场景(0 用户充值 1用户消费 2管理员操作 3订单退款) + scene?: number; + // 变动金额 + money?: string; + // 变动后余额 + balance?: string; + // 管理员备注 + remark?: string; + // + orderId?: number; + // 操作人ID + adminId?: number; + // 排序(数字越小越靠前) + sortNumber?: number; + // 备注 + comments?: string; + // 状态, 0正常, 1冻结 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 租户id + tenantId?: number; + // 注册时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 用户余额变动明细表搜索条件 + */ +export interface UserBalanceLogParam extends PageParam { + logId?: number; + keywords?: string; +} diff --git a/src/api/think/thinkCard/index.ts b/src/api/think/thinkCard/index.ts index 028aaf4..912e75e 100644 --- a/src/api/think/thinkCard/index.ts +++ b/src/api/think/thinkCard/index.ts @@ -74,6 +74,19 @@ export async function updateThinkCard(data: ThinkCard) { return Promise.reject(new Error(res.data.message)); } +/** 修改卡片剩余金额/剩余次数(仅更新这两个字段) */ +export async function updateThinkCardRemaining(data: { + id: number; + num?: number; + remainingMoney?: string; +}) { + const res = await request.put>( + THINK_API_URL + '/think/think-card/remaining', data + ); + if (res.data.code === 0) return res.data.message; + return Promise.reject(new Error(res.data.message)); +} + /** * 删除 */ diff --git a/src/api/think/thinkCardBalance/index.ts b/src/api/think/thinkCardBalance/index.ts new file mode 100644 index 0000000..58f9b85 --- /dev/null +++ b/src/api/think/thinkCardBalance/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ThinkCardBalance, ThinkCardBalanceParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询卡余额记录 + */ +export async function pageThinkCardBalance(params: ThinkCardBalanceParam) { + const res = await request.get>>( + MODULES_API_URL + '/think/think-card-balance/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询卡余额记录列表 + */ +export async function listThinkCardBalance(params?: ThinkCardBalanceParam) { + const res = await request.get>( + MODULES_API_URL + '/think/think-card-balance', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加卡余额记录 + */ +export async function addThinkCardBalance(data: ThinkCardBalance) { + const res = await request.post>( + MODULES_API_URL + '/think/think-card-balance', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改卡余额记录 + */ +export async function updateThinkCardBalance(data: ThinkCardBalance) { + const res = await request.put>( + MODULES_API_URL + '/think/think-card-balance', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除卡余额记录 + */ +export async function removeThinkCardBalance(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/think/think-card-balance/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除卡余额记录 + */ +export async function removeBatchThinkCardBalance(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/think/think-card-balance/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询卡余额记录 + */ +export async function getThinkCardBalance(id: number) { + const res = await request.get>( + MODULES_API_URL + '/think/think-card-balance/' + 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/think/thinkCardBalance/model/index.ts b/src/api/think/thinkCardBalance/model/index.ts new file mode 100644 index 0000000..d6015ec --- /dev/null +++ b/src/api/think/thinkCardBalance/model/index.ts @@ -0,0 +1,31 @@ +import type { PageParam } from '@/api'; + +/** + * 卡余额记录 + */ +export interface ThinkCardBalance { + // + id?: number; + // + cid?: number; + // + vid?: number; + // + uid?: number; + // + balance?: string; + // 每次减少金额 + reduceEach?: string; + // 下单时间 + createTime?: number; + // + updateTime?: number; +} + +/** + * 卡余额记录搜索条件 + */ +export interface ThinkCardBalanceParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/think/thinkFtpCheckBill/index.ts b/src/api/think/thinkFtpCheckBill/index.ts new file mode 100644 index 0000000..aa7e64a --- /dev/null +++ b/src/api/think/thinkFtpCheckBill/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ThinkFtpCheckBill, ThinkFtpCheckBillParam } from './model'; +import { THINK_API_URL } from '@/config/setting'; + +/** + * 分页查询 + */ +export async function pageThinkFtpCheckBill(params: ThinkFtpCheckBillParam) { + const res = await request.get>>( + THINK_API_URL + '/think/think-ftp-check-bill/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询列表 + */ +export async function listThinkFtpCheckBill(params?: ThinkFtpCheckBillParam) { + const res = await request.get>( + THINK_API_URL + '/think/think-ftp-check-bill', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加 + */ +export async function addThinkFtpCheckBill(data: ThinkFtpCheckBill) { + const res = await request.post>( + THINK_API_URL + '/think/think-ftp-check-bill', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改 + */ +export async function updateThinkFtpCheckBill(data: ThinkFtpCheckBill) { + const res = await request.put>( + THINK_API_URL + '/think/think-ftp-check-bill', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除 + */ +export async function removeThinkFtpCheckBill(id?: number) { + const res = await request.delete>( + THINK_API_URL + '/think/think-ftp-check-bill/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除 + */ +export async function removeBatchThinkFtpCheckBill(data: (number | undefined)[]) { + const res = await request.delete>( + THINK_API_URL + '/think/think-ftp-check-bill/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询 + */ +export async function getThinkFtpCheckBill(id: number) { + const res = await request.get>( + THINK_API_URL + '/think/think-ftp-check-bill/' + 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/think/thinkFtpCheckBill/model/index.ts b/src/api/think/thinkFtpCheckBill/model/index.ts new file mode 100644 index 0000000..ec572b3 --- /dev/null +++ b/src/api/think/thinkFtpCheckBill/model/index.ts @@ -0,0 +1,55 @@ +import type { PageParam } from "@/api"; + +/** + * + */ +export interface ThinkFtpCheckBill { + // + id?: number; + // 终端号 + deviceNo?: string; + // 卡号 + cardNo?: string; + // + amount?: string; + // 结算金额 + settleAmount?: string; + // 手续费 + feeAmount?: string; + // 实际支付金额 + paidAmount?: string; + // 参考号 + refNo?: string; + // 流水号 + flowNo?: string; + // 卡类型 + cardType?: string; + // 发卡行 + postCardType?: string; + // 支付方式 + payType?: string; + // 银商订单号 + orderNo?: string; + // + payTime?: string; + // 租户id + tenantId?: number; + // 状态, 0已发布, 1待审核 2已驳回 3违规内容 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 搜索条件 + */ +export interface ThinkFtpCheckBillParam extends PageParam { + id?: number; + keywords?: string; + payTimeStart?: string; + payTimeEnd?: string; +} diff --git a/src/api/think/thinkInvoice/index.ts b/src/api/think/thinkInvoice/index.ts index da9c47c..06d2435 100644 --- a/src/api/think/thinkInvoice/index.ts +++ b/src/api/think/thinkInvoice/index.ts @@ -129,6 +129,20 @@ export async function doInvoice(data: ThinkInvoice) { return Promise.reject(new Error(res.data.message)); } +/** + * 更新发票状态 + */ +export async function getInvoiceRes(data: ThinkInvoice) { + const res = await request.post>( + THINK_API_URL + "/think/think-invoice/getRes", + data + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + export async function doInvoiceByListReq(data: ThinkInvoice) { const res = await request.post>( THINK_API_URL + "/think/think-invoice/doInvoiceByList", diff --git a/src/api/think/thinkInvoice/model/index.ts b/src/api/think/thinkInvoice/model/index.ts index 991db3a..85e0783 100644 --- a/src/api/think/thinkInvoice/model/index.ts +++ b/src/api/think/thinkInvoice/model/index.ts @@ -37,7 +37,7 @@ export interface ThinkInvoice { // 备注信息 info?: string; // 是否已开:1已开,2未开 - isOpen?: string; + isOpen?: number; // 发票类型:1纸质发票,2电子发票 type?: number; // 发票类型:1场地发票,2vip卡发票,3ic卡发票 @@ -51,6 +51,9 @@ export interface ThinkInvoice { // vid?: number; status?: number; + resJson?: string; + url?: string; + xmlUrl?: string; } /** diff --git a/src/api/think/thinkOrder/index.ts b/src/api/think/thinkOrder/index.ts index 8b0fffe..94aa30b 100644 --- a/src/api/think/thinkOrder/index.ts +++ b/src/api/think/thinkOrder/index.ts @@ -1,6 +1,10 @@ import request from "@/utils/request"; import type { ApiResult, PageResult } from "@/api"; -import type { ThinkOrder, ThinkOrderParam } from "./model"; +import type { + ThinkOrder, + ThinkOrderParam, + ThinkTrainingBusinessSection +} from "./model"; import { THINK_API_URL } from "@/config/setting"; /** @@ -76,6 +80,20 @@ export async function updateThinkOrder(data: ThinkOrder) { return Promise.reject(new Error(res.data.message)); } +/** + * 设置已开票 + */ +export async function setThinkOrderInvoice(ids: (number | undefined)[]) { + const res = await request.put>( + THINK_API_URL + "/think/think-order/set-invoice", + ids + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + export async function updateBatchThinkOrder(data: ThinkOrder[]) { const res = await request.put>( THINK_API_URL + "/think/think-order/batch", @@ -168,3 +186,29 @@ export async function getThinkOrderExcelDataForCard(params?: ThinkOrderParam) { } return Promise.reject(new Error(res.data.message)); } + +export async function getThinkOrderTrainingBusinessData( + params?: ThinkOrderParam +) { + const res = await request.post>( + THINK_API_URL + "/think/think-order/training-business-data", + params + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +export async function exportThinkOrderTrainingBusiness( + params?: ThinkOrderParam +) { + const res = await request.post>( + THINK_API_URL + "/think/think-order/training-business-export", + params + ); + 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/think/thinkOrder/model/index.ts b/src/api/think/thinkOrder/model/index.ts index 8dd9c97..adecb3d 100644 --- a/src/api/think/thinkOrder/model/index.ts +++ b/src/api/think/thinkOrder/model/index.ts @@ -98,4 +98,25 @@ export interface ThinkOrderParam extends PageParam { siteName?: string; keywords?: string; wechatOrder?: string; + createTimeStart?: number | string; + createTimeEnd?: number | string; +} + +export interface ThinkTrainingBusinessRow { + trainingInstitutionName?: string; + openCount?: number; + openAmount?: number | string; + verifyCount?: number; + verifyAmount?: number | string; + expiredCount?: number; + expiredAmount?: number | string; + unverifiedCount?: number; + remainingAmount?: number | string; +} + +export interface ThinkTrainingBusinessSection { + key?: string; + title?: string; + rows?: ThinkTrainingBusinessRow[]; + total?: ThinkTrainingBusinessRow; } diff --git a/src/api/think/thinkOrderOffCheck/index.ts b/src/api/think/thinkOrderOffCheck/index.ts new file mode 100644 index 0000000..66bfc1f --- /dev/null +++ b/src/api/think/thinkOrderOffCheck/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ThinkOrderOffCheck, ThinkOrderOffCheckParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询折扣审核 + */ +export async function pageThinkOrderOffCheck(params: ThinkOrderOffCheckParam) { + const res = await request.get>>( + MODULES_API_URL + '/think/think-order-off-check/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询折扣审核列表 + */ +export async function listThinkOrderOffCheck(params?: ThinkOrderOffCheckParam) { + const res = await request.get>( + MODULES_API_URL + '/think/think-order-off-check', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加折扣审核 + */ +export async function addThinkOrderOffCheck(data: ThinkOrderOffCheck) { + const res = await request.post>( + MODULES_API_URL + '/think/think-order-off-check', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改折扣审核 + */ +export async function updateThinkOrderOffCheck(data: ThinkOrderOffCheck) { + const res = await request.put>( + MODULES_API_URL + '/think/think-order-off-check', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除折扣审核 + */ +export async function removeThinkOrderOffCheck(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/think/think-order-off-check/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除折扣审核 + */ +export async function removeBatchThinkOrderOffCheck(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/think/think-order-off-check/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询折扣审核 + */ +export async function getThinkOrderOffCheck(id: number) { + const res = await request.get>( + MODULES_API_URL + '/think/think-order-off-check/' + 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/think/thinkOrderOffCheck/model/index.ts b/src/api/think/thinkOrderOffCheck/model/index.ts new file mode 100644 index 0000000..2cf132f --- /dev/null +++ b/src/api/think/thinkOrderOffCheck/model/index.ts @@ -0,0 +1,43 @@ +import type { PageParam } from '@/api'; + +/** + * 折扣审核 + */ +export interface ThinkOrderOffCheck { + // + id?: number; + // + oid?: number; + // + userId?: number; + // 原价 + originAmount?: string; + // 折扣 + rate?: string; + // 折后价 + offAmount?: string; + // 申请原因 + reqReason?: string; + // 拒绝原因 + refuseReason?: string; + // 审核人 + checkUid?: number; + // 租户id + tenantId?: number; + // 状态, 0已发布, 1待审核 2已驳回 3违规内容 + status?: number; + // 是否删除, 0否, 1是 + deleted?: number; + // 创建时间 + createTime?: string; + // 修改时间 + updateTime?: string; +} + +/** + * 折扣审核搜索条件 + */ +export interface ThinkOrderOffCheckParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/think/thinkSite/model/index.ts b/src/api/think/thinkSite/model/index.ts index f5a4c15..266a8b7 100644 --- a/src/api/think/thinkSite/model/index.ts +++ b/src/api/think/thinkSite/model/index.ts @@ -47,6 +47,7 @@ export interface ThinkSite { // 周末活动订场开关:1开,0关 weekendOpen?: number; dailyMaxNum?: number; + isOn?: number; album?: string; key?: number; value?: number; diff --git a/src/api/think/thinkSmallRecharge/index.ts b/src/api/think/thinkSmallRecharge/index.ts new file mode 100644 index 0000000..5a914cf --- /dev/null +++ b/src/api/think/thinkSmallRecharge/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ThinkSmallRecharge, ThinkSmallRechargeParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询 + */ +export async function pageThinkSmallRecharge(params: ThinkSmallRechargeParam) { + const res = await request.get>>( + MODULES_API_URL + '/think/think-small-recharge/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询列表 + */ +export async function listThinkSmallRecharge(params?: ThinkSmallRechargeParam) { + const res = await request.get>( + MODULES_API_URL + '/think/think-small-recharge', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加 + */ +export async function addThinkSmallRecharge(data: ThinkSmallRecharge) { + const res = await request.post>( + MODULES_API_URL + '/think/think-small-recharge', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改 + */ +export async function updateThinkSmallRecharge(data: ThinkSmallRecharge) { + const res = await request.put>( + MODULES_API_URL + '/think/think-small-recharge', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除 + */ +export async function removeThinkSmallRecharge(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/think/think-small-recharge/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除 + */ +export async function removeBatchThinkSmallRecharge(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/think/think-small-recharge/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询 + */ +export async function getThinkSmallRecharge(id: number) { + const res = await request.get>( + MODULES_API_URL + '/think/think-small-recharge/' + 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/think/thinkSmallRecharge/model/index.ts b/src/api/think/thinkSmallRecharge/model/index.ts new file mode 100644 index 0000000..c38bb9a --- /dev/null +++ b/src/api/think/thinkSmallRecharge/model/index.ts @@ -0,0 +1,29 @@ +import type { PageParam } from '@/api'; + +/** + * + */ +export interface ThinkSmallRecharge { + // + id?: number; + // + cid?: number; + // + vid?: number; + // + uid?: number; + // + amount?: string; + // 下单时间 + createTime?: number; + // + updateTime?: number; +} + +/** + * 搜索条件 + */ +export interface ThinkSmallRechargeParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/think/thinkTrainingInstitution/index.ts b/src/api/think/thinkTrainingInstitution/index.ts new file mode 100644 index 0000000..e1ef6b0 --- /dev/null +++ b/src/api/think/thinkTrainingInstitution/index.ts @@ -0,0 +1,118 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { + ThinkTrainingInstitution, + ThinkTrainingInstitutionParam +} from './model'; +import { THINK_API_URL } from '@/config/setting'; + +/** + * 分页查询培训机构 + */ +export async function pageThinkTrainingInstitution( + params: ThinkTrainingInstitutionParam +) { + const res = await request.get< + ApiResult> + >(THINK_API_URL + '/think/think-training-institution/page', { + params + }); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询培训机构列表 + */ +export async function listThinkTrainingInstitution( + params?: ThinkTrainingInstitutionParam +) { + const res = await request.get>( + THINK_API_URL + '/think/think-training-institution', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加培训机构 + */ +export async function addThinkTrainingInstitution( + data: ThinkTrainingInstitution +) { + const res = await request.post>( + THINK_API_URL + '/think/think-training-institution', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改培训机构 + */ +export async function updateThinkTrainingInstitution( + data: ThinkTrainingInstitution +) { + const res = await request.put>( + THINK_API_URL + '/think/think-training-institution', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除培训机构 + */ +export async function removeThinkTrainingInstitution(id?: number) { + const res = await request.delete>( + THINK_API_URL + '/think/think-training-institution/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除培训机构 + */ +export async function removeBatchThinkTrainingInstitution( + data: (number | undefined)[] +) { + const res = await request.delete>( + THINK_API_URL + '/think/think-training-institution/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据ID查询培训机构 + */ +export async function getThinkTrainingInstitution(id: number) { + const res = await request.get>( + THINK_API_URL + '/think/think-training-institution/' + 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/think/thinkTrainingInstitution/model/index.ts b/src/api/think/thinkTrainingInstitution/model/index.ts new file mode 100644 index 0000000..188f158 --- /dev/null +++ b/src/api/think/thinkTrainingInstitution/model/index.ts @@ -0,0 +1,25 @@ +import type { PageParam } from '@/api'; + +/** + * 培训机构 + */ +export interface ThinkTrainingInstitution { + // 主键ID + id?: number; + // 机构名称 + name?: string; + // 联系人 + contactName?: string; + // 联系方式 + contactPhone?: string; + // 创建时间 + createTime?: string | number; +} + +/** + * 培训机构搜索条件 + */ +export interface ThinkTrainingInstitutionParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/think/thinkUserInAccess/index.ts b/src/api/think/thinkUserInAccess/index.ts new file mode 100644 index 0000000..74087e4 --- /dev/null +++ b/src/api/think/thinkUserInAccess/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ThinkUserInAccess, ThinkUserInAccessParam } from './model'; +import { MODULES_API_URL } from '@/config/setting'; + +/** + * 分页查询能刷脸开闸的用户列表 + */ +export async function pageThinkUserInAccess(params: ThinkUserInAccessParam) { + const res = await request.get>>( + MODULES_API_URL + '/think/think-user-in-access/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询能刷脸开闸的用户列表列表 + */ +export async function listThinkUserInAccess(params?: ThinkUserInAccessParam) { + const res = await request.get>( + MODULES_API_URL + '/think/think-user-in-access', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加能刷脸开闸的用户列表 + */ +export async function addThinkUserInAccess(data: ThinkUserInAccess) { + const res = await request.post>( + MODULES_API_URL + '/think/think-user-in-access', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改能刷脸开闸的用户列表 + */ +export async function updateThinkUserInAccess(data: ThinkUserInAccess) { + const res = await request.put>( + MODULES_API_URL + '/think/think-user-in-access', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除能刷脸开闸的用户列表 + */ +export async function removeThinkUserInAccess(id?: number) { + const res = await request.delete>( + MODULES_API_URL + '/think/think-user-in-access/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除能刷脸开闸的用户列表 + */ +export async function removeBatchThinkUserInAccess(data: (number | undefined)[]) { + const res = await request.delete>( + MODULES_API_URL + '/think/think-user-in-access/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据id查询能刷脸开闸的用户列表 + */ +export async function getThinkUserInAccess(id: number) { + const res = await request.get>( + MODULES_API_URL + '/think/think-user-in-access/' + 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/think/thinkUserInAccess/model/index.ts b/src/api/think/thinkUserInAccess/model/index.ts new file mode 100644 index 0000000..939d183 --- /dev/null +++ b/src/api/think/thinkUserInAccess/model/index.ts @@ -0,0 +1,19 @@ +import type { PageParam } from '@/api'; + +/** + * 能刷脸开闸的用户列表 + */ +export interface ThinkUserInAccess { + // + id?: number; + // + uid?: number; +} + +/** + * 能刷脸开闸的用户列表搜索条件 + */ +export interface ThinkUserInAccessParam extends PageParam { + id?: number; + keywords?: string; +} diff --git a/src/api/think/thinkUsersBlack/index.ts b/src/api/think/thinkUsersBlack/index.ts new file mode 100644 index 0000000..97faa40 --- /dev/null +++ b/src/api/think/thinkUsersBlack/index.ts @@ -0,0 +1,106 @@ +import request from '@/utils/request'; +import type { ApiResult, PageResult } from '@/api'; +import type { ThinkUsersBlack, ThinkUsersBlackParam } from './model'; +import { THINK_API_URL } from '@/config/setting'; + +/** + * 分页查询用户黑名单 + */ +export async function pageThinkUsersBlack(params: ThinkUsersBlackParam) { + const res = await request.get>>( + THINK_API_URL + '/think/think-users-black/page', + { + params + } + ); + if (res.data.code === 0) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 查询用户黑名单列表 + */ +export async function listThinkUsersBlack(params?: ThinkUsersBlackParam) { + const res = await request.get>( + THINK_API_URL + '/think/think-users-black', + { + params + } + ); + if (res.data.code === 0 && res.data.data) { + return res.data.data; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 添加用户黑名单 + */ +export async function addThinkUsersBlack(data: ThinkUsersBlack) { + const res = await request.post>( + THINK_API_URL + '/think/think-users-black', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 修改用户黑名单 + */ +export async function updateThinkUsersBlack(data: ThinkUsersBlack) { + const res = await request.put>( + THINK_API_URL + '/think/think-users-black', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 删除用户黑名单 + */ +export async function removeThinkUsersBlack(id?: number) { + const res = await request.delete>( + THINK_API_URL + '/think/think-users-black/' + id + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 批量删除用户黑名单 + */ +export async function removeBatchThinkUsersBlack(data: (number | undefined)[]) { + const res = await request.delete>( + THINK_API_URL + '/think/think-users-black/batch', + { + data + } + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + +/** + * 根据ID查询用户黑名单 + */ +export async function getThinkUsersBlack(id: number) { + const res = await request.get>( + THINK_API_URL + '/think/think-users-black/' + 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/think/thinkUsersBlack/model/index.ts b/src/api/think/thinkUsersBlack/model/index.ts new file mode 100644 index 0000000..7120ca4 --- /dev/null +++ b/src/api/think/thinkUsersBlack/model/index.ts @@ -0,0 +1,31 @@ +import type { PageParam } from '@/api'; + +/** + * 用户黑名单 + */ +export interface ThinkUsersBlack { + // 主键ID + id?: number; + // 用户ID + uid?: number; + // 姓名 + truename?: string; + // 手机号 + phone?: string; + // 状态:1生效;2失效 + status?: number; + // 失效时间 + expireTime?: string; + // 添加时间 + createTime?: string; +} + +/** + * 用户黑名单搜索条件 + */ +export interface ThinkUsersBlackParam extends PageParam { + id?: number; + uid?: number; + status?: number; + expireTime?: string; +} diff --git a/src/api/think/thinkUsersVip/index.ts b/src/api/think/thinkUsersVip/index.ts index 10834c5..f96f7f6 100644 --- a/src/api/think/thinkUsersVip/index.ts +++ b/src/api/think/thinkUsersVip/index.ts @@ -63,6 +63,22 @@ export async function updateThinkUsersVip(data: ThinkUsersVip) { return Promise.reject(new Error(res.data.message)); } +/** 修改会员卡剩余金额/剩余次数(仅更新这两个字段) */ +export async function updateThinkUsersVipRemaining(data: { + id: number; + num?: number; + remainingMoney?: string; +}) { + const res = await request.put>( + THINK_API_URL + '/think/think-users-vip/remaining', + data + ); + if (res.data.code === 0) { + return res.data.message; + } + return Promise.reject(new Error(res.data.message)); +} + /** * 删除 */ diff --git a/src/api/think/thinkVip/model/index.ts b/src/api/think/thinkVip/model/index.ts index e8fc691..8b6dcb9 100644 --- a/src/api/think/thinkVip/model/index.ts +++ b/src/api/think/thinkVip/model/index.ts @@ -36,6 +36,10 @@ export interface ThinkVip { cardType?: number; // vip卡等级类型:1特殊vip卡,2普通vip卡 vipType?: number; + // 培训机构ID + trainingInstitutionId?: number; + // 培训机构名称 + trainingInstitutionName?: string; // 特殊卡开发凭证图 pic?: string; // VIP充值卡价格组 @@ -60,6 +64,7 @@ export interface ThinkVip { export interface ThinkVipParam{ id?: number; isSale?: number; + trainingInstitutionId?: number; createTimeStart?: number; createTimeEnd?: number; timeStart?: number; diff --git a/src/views/booking/finance/components/search.vue b/src/views/booking/finance/components/search.vue index 71c0693..5fa2b35 100644 --- a/src/views/booking/finance/components/search.vue +++ b/src/views/booking/finance/components/search.vue @@ -25,15 +25,21 @@ import { ref, watch } from "vue"; import { ThinkOrderInfoParam } from "@/api/think/thinkOrderInfo/model"; import { messageLoading } from "ele-admin-pro"; import dayjs from "dayjs"; -import { thinkOrderExportData } from "@/api/think/thinkOrder"; +import { + exportThinkOrderTrainingBusiness, + thinkOrderExportData +} from "@/api/think/thinkOrder"; import { ThinkOrder, ThinkOrderParam } from "@/api/think/thinkOrder/model"; const props = withDefaults( defineProps<{ // 选中的角色 selection?: []; + type?: number; }>(), - {} + { + type: 0 + } ); const emit = defineEmits<{ @@ -85,7 +91,16 @@ const reload = () => { // 导出 const handleExport = async () => { const hide = messageLoading("导出中...", 0); - const res = await thinkOrderExportData(where); + const [d1, d2] = dateRange.value ?? []; + const params = { + ...where, + createTimeStart: d1 ? dayjs(d1).unix() : undefined, + createTimeEnd: d2 ? dayjs(d2).unix() : undefined + }; + const res = + props.type === 2 + ? await exportThinkOrderTrainingBusiness(params) + : await thinkOrderExportData(params); hide(); window.open(res.url); }; diff --git a/src/views/booking/finance/components/trainingBusinessReport.vue b/src/views/booking/finance/components/trainingBusinessReport.vue new file mode 100644 index 0000000..5f81c78 --- /dev/null +++ b/src/views/booking/finance/components/trainingBusinessReport.vue @@ -0,0 +1,131 @@ + + + + + diff --git a/src/views/booking/finance/index.vue b/src/views/booking/finance/index.vue index b5973d7..ba1104b 100644 --- a/src/views/booking/finance/index.vue +++ b/src/views/booking/finance/index.vue @@ -3,91 +3,118 @@
- 收款汇总表 - 收入日报表及汇总表 + + 收款汇总表 + + + 收入日报表及汇总表 + + + 培训业务报表 + - + - - +
- + + diff --git a/src/views/shop/userBalanceLog/components/search.vue b/src/views/shop/userBalanceLog/components/search.vue new file mode 100644 index 0000000..eb0c711 --- /dev/null +++ b/src/views/shop/userBalanceLog/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/shop/userBalanceLog/components/userBalanceLogEdit.vue b/src/views/shop/userBalanceLog/components/userBalanceLogEdit.vue new file mode 100644 index 0000000..ea9cbf2 --- /dev/null +++ b/src/views/shop/userBalanceLog/components/userBalanceLogEdit.vue @@ -0,0 +1,260 @@ + + + + diff --git a/src/views/shop/userBalanceLog/index.vue b/src/views/shop/userBalanceLog/index.vue new file mode 100644 index 0000000..e16b567 --- /dev/null +++ b/src/views/shop/userBalanceLog/index.vue @@ -0,0 +1,238 @@ + + + + + + + diff --git a/src/views/think/thinkCard/components/invoice.vue b/src/views/think/thinkCard/components/invoice.vue index 1e39563..1f3dc1d 100644 --- a/src/views/think/thinkCard/components/invoice.vue +++ b/src/views/think/thinkCard/components/invoice.vue @@ -82,12 +82,12 @@ v-model:value="form.email" /> - + @@ -97,14 +97,14 @@ - + 场地发票 vip卡发票 IC卡发票 - + 普票 专票 @@ -118,10 +118,8 @@ import { Form, message } from 'ant-design-vue'; import { assignObject, uuid } from 'ele-admin-pro'; import { - addThinkInvoice, doInvoice, pageThinkInvoice, - updateThinkInvoice } from '@/api/think/thinkInvoice'; import { ThinkInvoice } from '@/api/think/thinkInvoice/model'; import { useThemeStore } from '@/store/modules/theme'; @@ -191,7 +189,6 @@ price: [ { required: true, - type: 'number', message: '请填写发票金额', trigger: 'blur' } @@ -214,10 +211,6 @@ ] }); - const onChangeInvoice = (data: ThinkInvoice) => { - console.log(data); - console.log(form); - }; const { resetFields } = useForm(form, rules); @@ -255,14 +248,17 @@ () => props.visible, (visible) => { if (visible) { + const random = uuid(); + const random1 = uuid(); // 第一次开票 isUpdate.value = false; form.oid = props.data?.id; form.price = props.data?.price; - form.incoiveNum = props.data?.code; - form.orderNum = props.data?.code; + form.incoiveNum = random1; + form.orderNum = random; form.vid = props.data?.vid; form.phone = props.data?.phone; + form.uid = props.data?.uid; form.itype = 3; // 开过票 @@ -272,7 +268,7 @@ isUpdate.value = true; form.oid = props.data?.id; form.price = props.data?.price; - form.incoiveNum = props.data?.code; + form.incoiveNum = random1; form.vid = props.data?.vid; form.phone = props.data?.phone; } diff --git a/src/views/think/thinkCard/index.vue b/src/views/think/thinkCard/index.vue index 0938698..ebf62e3 100644 --- a/src/views/think/thinkCard/index.vue +++ b/src/views/think/thinkCard/index.vue @@ -7,7 +7,6 @@ row-key="id" :columns="columns" :datasource="datasource" - :customRow="customRow" :selection="selection" :scroll="{ x: 3800 }" tool-class="ele-toolbar-form" @@ -46,11 +45,13 @@ 注销 - 开票 + 开票 + + diff --git a/src/views/think/thinkCardBalance/components/search.vue b/src/views/think/thinkCardBalance/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/think/thinkCardBalance/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/think/thinkCardBalance/components/thinkCardBalanceEdit.vue b/src/views/think/thinkCardBalance/components/thinkCardBalanceEdit.vue new file mode 100644 index 0000000..e4eae47 --- /dev/null +++ b/src/views/think/thinkCardBalance/components/thinkCardBalanceEdit.vue @@ -0,0 +1,209 @@ + + + + diff --git a/src/views/think/thinkCardBalance/index.vue b/src/views/think/thinkCardBalance/index.vue new file mode 100644 index 0000000..6e750a0 --- /dev/null +++ b/src/views/think/thinkCardBalance/index.vue @@ -0,0 +1,251 @@ + + + + + + + diff --git a/src/views/think/thinkField/period/components/periodEdit.vue b/src/views/think/thinkField/period/components/periodEdit.vue index dd3b764..60604e8 100644 --- a/src/views/think/thinkField/period/components/periodEdit.vue +++ b/src/views/think/thinkField/period/components/periodEdit.vue @@ -129,23 +129,28 @@ - -
+ +
{{ index + 1 }}号价格
-

{{ dayjs(`${month}-${(index + 1)}`).format("YYYY-MM-DD") }} - {{ weekStr[dayjs(`${month}-${(index + 1)}`).format("d")] }}的价格,温馨提示:如价格填写0则代表当日免费。

+

{{ dayjs(`${month}-${String(index + 1).padStart(2, '0')}`).format("YYYY-MM-DD") }} + {{ weekStr[dayjs(`${month}-${String(index + 1).padStart(2, '0')}`).format("d")] }}的价格,温馨提示:如价格填写0则代表当日免费。

{{ index + 1 }}号半场价格
-

{{ dayjs(`${month}-${(index + 1)}`).format("YYYY-MM-DD") }} - {{ weekStr[dayjs(`${month}-${(index + 1)}`).format("d")] +

{{ dayjs(`${month}-${String(index + 1).padStart(2, '0')}`).format("YYYY-MM-DD") }} + {{ weekStr[dayjs(`${month}-${String(index + 1).padStart(2, '0')}`).format("d")] }}的半场价格,温馨提示:如价格填写0则代表当日免费。

@@ -275,12 +280,23 @@ const save = () => { return; } formData.week = JSON.stringify(formData.week); - formData.prices = JSON.stringify({ - [month.value]: prices.value.map(item => item ? item.toString() : '') - }); - formData.halfPrices = JSON.stringify({ - [month.value]: halfPrices.value.map(item => item ? item.toString() : '') - }); + // 只保留当前选中月份的价格数据 + const dayPrices = normalizeDayPrices(prices.value, month.value).map( + (item) => + item !== "" && item !== null && item !== undefined + ? String(item) + : "" + ); + const dayHalfPrices = normalizeDayPrices( + halfPrices.value, + month.value + ).map((item) => + item !== "" && item !== null && item !== undefined ? String(item) : "" + ); + formData.prices = JSON.stringify({ [month.value]: dayPrices }); + formData.halfPrices = JSON.stringify({ [month.value]: dayHalfPrices }); + form.prices = formData.prices; + form.halfPrices = formData.halfPrices; formData.timePeriod = `${formData.timePeriod1} - ${formData.timePeriod2}`; formData.startTime = `${formData.timePeriod1?.replace(":", "")}`; console.log(formData) @@ -308,6 +324,19 @@ const prices = ref([]); const halfPrices = ref([]); const showCal = ref(false); const openCal = () => { + // 打开日历前先按当前月份校正数据结构,避免脏数据导致表格无法渲染 + const priceMap = parsePriceMap(form.prices); + const halfPriceMap = parsePriceMap(form.halfPrices); + // 仅使用当前月份的数据;若 form 中是其他月份则重建空结构 + if (priceMap[month.value]) { + prices.value = normalizeDayPrices(priceMap[month.value], month.value); + halfPrices.value = normalizeDayPrices( + halfPriceMap[month.value], + month.value + ); + } else { + resetMonthPrices(month.value); + } showCal.value = true; }; @@ -321,21 +350,52 @@ const weekStr = ref([ "星期六" ]); -const makePrices = () => { - const dayNum = dayjs().daysInMonth(); - prices.value = []; - for (let i = 0; i < dayNum; i++) { - prices.value.push(""); +/** 安全解析价格 JSON */ +const parsePriceMap = (value?: string | null): Record => { + if (!value || value === "0") return {}; + try { + const parsed = JSON.parse(value); + return parsed && typeof parsed === "object" ? parsed : {}; + } catch { + return {}; } - // console.log(prices.value); +}; + +/** 按指定月份天数生成/校正价格数组 */ +const normalizeDayPrices = (source?: any[] | null, targetMonth?: string) => { + const dayNum = dayjs(`${targetMonth || month.value}-01`).daysInMonth(); + const result: any[] = []; + for (let i = 0; i < dayNum; i++) { + const val = source?.[i]; + result.push(val !== undefined && val !== null ? val : ""); + } + return result; +}; + +const makePrices = () => { + prices.value = normalizeDayPrices(null); }; const makeHalfPrices = () => { - const dayNum = dayjs().daysInMonth(); - halfPrices.value = []; - for (let i = 0; i < dayNum; i++) { - halfPrices.value.push(""); - } + halfPrices.value = normalizeDayPrices(null); +}; + +/** 按目标月天数重置为空的 prices / halfPrices */ +const resetMonthPrices = (targetMonth: string) => { + if (!targetMonth) return; + prices.value = normalizeDayPrices(null, targetMonth); + halfPrices.value = normalizeDayPrices(null, targetMonth); + // 同步 form:只保留当前这一个月份 + form.prices = JSON.stringify({ [targetMonth]: prices.value }); + form.halfPrices = JSON.stringify({ [targetMonth]: halfPrices.value }); +}; + +/** 切换月份:丢弃旧月份,按新月份天数重建价格结构 */ +const onMonthChange = (value: string | null) => { + const nextMonth = value || month.value; + if (!nextMonth) return; + month.value = nextMonth; + resetMonthPrices(nextMonth); }; watch( @@ -354,26 +414,24 @@ watch( form.week = JSON.parse(props.data.week); } isUpdate.value = true; - if (props.data?.prices === "0") { - makePrices(); - } else { - const keys = Object.keys(JSON.parse(props.data?.prices)) - month.value = keys[0] - const pricesItem = JSON.parse(props.data?.prices)[month.value]; - if (pricesItem) prices.value = pricesItem; - else makePrices(); - } - if (props.data?.halfPrices === "0") { - makeHalfPrices(); - } else { - const keys = Object.keys(JSON.parse(props.data?.prices)) - month.value = keys[0] - const halfPricesItem = JSON.parse(props.data?.halfPrices)[month.value]; - if (halfPricesItem) halfPrices.value = halfPricesItem; - else makeHalfPrices(); - } + const priceMap = parsePriceMap(props.data?.prices); + const halfPriceMap = parsePriceMap(props.data?.halfPrices); + const keys = Object.keys(priceMap); + if (keys.length) month.value = keys[0]; + else month.value = dayjs().format("YYYY-MM"); + // 回显时校正结构,且 form 只保留这一个月份 + prices.value = normalizeDayPrices(priceMap[month.value], month.value); + halfPrices.value = normalizeDayPrices( + halfPriceMap[month.value], + month.value + ); + form.prices = JSON.stringify({ [month.value]: prices.value }); + form.halfPrices = JSON.stringify({ [month.value]: halfPrices.value }); } else { isUpdate.value = false; + month.value = dayjs().format("YYYY-MM"); + makePrices(); + makeHalfPrices(); } } else { resetFields(); diff --git a/src/views/think/thinkFtpCheckBill/components/search.vue b/src/views/think/thinkFtpCheckBill/components/search.vue new file mode 100644 index 0000000..b1cd6fb --- /dev/null +++ b/src/views/think/thinkFtpCheckBill/components/search.vue @@ -0,0 +1,52 @@ + + + + diff --git a/src/views/think/thinkFtpCheckBill/components/thinkFtpCheckBillEdit.vue b/src/views/think/thinkFtpCheckBill/components/thinkFtpCheckBillEdit.vue new file mode 100644 index 0000000..b4af71a --- /dev/null +++ b/src/views/think/thinkFtpCheckBill/components/thinkFtpCheckBillEdit.vue @@ -0,0 +1,289 @@ + + + + diff --git a/src/views/think/thinkFtpCheckBill/index.vue b/src/views/think/thinkFtpCheckBill/index.vue new file mode 100644 index 0000000..158763d --- /dev/null +++ b/src/views/think/thinkFtpCheckBill/index.vue @@ -0,0 +1,270 @@ + + + + + + + diff --git a/src/views/think/thinkInvoice/components/thinkInvoiceEdit.vue b/src/views/think/thinkInvoice/components/thinkInvoiceEdit.vue index bbe685d..ebfb79e 100644 --- a/src/views/think/thinkInvoice/components/thinkInvoiceEdit.vue +++ b/src/views/think/thinkInvoice/components/thinkInvoiceEdit.vue @@ -117,11 +117,11 @@ v-model:value="form.email" /> - + diff --git a/src/views/think/thinkInvoice/index.vue b/src/views/think/thinkInvoice/index.vue index ab11336..81aee6a 100644 --- a/src/views/think/thinkInvoice/index.vue +++ b/src/views/think/thinkInvoice/index.vue @@ -58,10 +58,14 @@ 发票额度已不够使用

- - 开票 - - 拒绝 + + 更新状态 + 已拒绝 @@ -94,7 +98,7 @@ import ThinkInvoiceEdit from "./components/thinkInvoiceEdit.vue"; import { pageThinkInvoice, removeThinkInvoice, - removeBatchThinkInvoice, updateThinkInvoice, doInvoice, thinkInvoiceData + removeBatchThinkInvoice, updateThinkInvoice, doInvoice, thinkInvoiceData, getInvoiceRes } from "@/api/think/thinkInvoice"; import type { ThinkInvoice, @@ -147,7 +151,7 @@ const columns = ref([ { title: "操作", key: "action", - width: 180, + width: 220, fixed: "left", align: "center", hideInSetting: true @@ -312,6 +316,19 @@ const openInvoice = async (row: ThinkInvoice) => { reload(); }; +const updateInvoiceStatus = async (row: ThinkInvoice) => { + const hide = message.loading("请求中..", 0); + try { + await getInvoiceRes({ id: row.id }); + hide(); + message.success("状态已更新"); + reload(); + } catch (e) { + hide(); + message.error((e as Error).message); + } +}; + const refuse = async (row: ThinkInvoice) => { await updateThinkInvoice({ id: row.id, diff --git a/src/views/think/thinkOrder/components/invoice.vue b/src/views/think/thinkOrder/components/invoice.vue index cff124c..c0870bc 100644 --- a/src/views/think/thinkOrder/components/invoice.vue +++ b/src/views/think/thinkOrder/components/invoice.vue @@ -5,7 +5,7 @@ :visible="visible" :maskClosable="false" :maxable="maxable" - :title="isUpdate ? '开具发票2' : '开具发票'" + :title="isUpdate ? '开具发票' : '开具发票'" :body-style="{ paddingBottom: '28px' }" @update:visible="updateVisible" @ok="save" @@ -103,12 +103,12 @@ v-model:value="form.email" />
- + @@ -212,7 +212,6 @@ price: [ { required: true, - type: 'number', message: '请填写发票金额', trigger: 'blur' } diff --git a/src/views/think/thinkOrder/components/invoiceByList.vue b/src/views/think/thinkOrder/components/invoiceByList.vue index 759b96b..e492be9 100644 --- a/src/views/think/thinkOrder/components/invoiceByList.vue +++ b/src/views/think/thinkOrder/components/invoiceByList.vue @@ -82,12 +82,12 @@ v-model:value="form.email" /> - + diff --git a/src/views/think/thinkOrder/components/orderInfo.vue b/src/views/think/thinkOrder/components/orderInfo.vue index 826ed0d..9fe3bfa 100644 --- a/src/views/think/thinkOrder/components/orderInfo.vue +++ b/src/views/think/thinkOrder/components/orderInfo.vue @@ -86,17 +86,19 @@ 现金 POS机 VIP月卡 - formVIP年卡 - formVIP次卡 - formIC月卡 - formIC年卡 - formIC次卡 - form免费 - formVIP充值卡 - formIC充值卡 - form积分支付 - formVIP季卡 - formIC季卡 + VIP年卡 + VIP次卡 + IC月卡 + IC年卡 + IC次卡 + 免费 + VIP充值卡 + IC充值卡 + 积分支付 + VIP季卡 + IC季卡 + 对公 + 余额 + + + - + @@ -253,6 +256,7 @@ const form = reactive({ info: undefined, tel: undefined, sortNumber: undefined, + sort: undefined, type: undefined, num: undefined, proportion: undefined, @@ -261,6 +265,7 @@ const form = reactive({ updateTime: undefined, weekendOpen: undefined, dailyMaxNum: -1, + isOn: 1, album: '', }); diff --git a/src/views/think/thinkSite/index.vue b/src/views/think/thinkSite/index.vue index 5de795d..5240ac7 100644 --- a/src/views/think/thinkSite/index.vue +++ b/src/views/think/thinkSite/index.vue @@ -102,7 +102,9 @@ // 表格数据源 const datasource: DatasourceFunction = () => { - return listThinkSite(); + return listThinkSite({ + isAdmin: true + }); }; // 表格列配置 diff --git a/src/views/think/thinkSmallRecharge/components/search.vue b/src/views/think/thinkSmallRecharge/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/think/thinkSmallRecharge/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/think/thinkSmallRecharge/components/thinkSmallRechargeEdit.vue b/src/views/think/thinkSmallRecharge/components/thinkSmallRechargeEdit.vue new file mode 100644 index 0000000..045d543 --- /dev/null +++ b/src/views/think/thinkSmallRecharge/components/thinkSmallRechargeEdit.vue @@ -0,0 +1,201 @@ + + + + diff --git a/src/views/think/thinkSmallRecharge/index.vue b/src/views/think/thinkSmallRecharge/index.vue new file mode 100644 index 0000000..14f5903 --- /dev/null +++ b/src/views/think/thinkSmallRecharge/index.vue @@ -0,0 +1,245 @@ + + + + + + + diff --git a/src/views/think/thinkTrainingInstitution/components/search.vue b/src/views/think/thinkTrainingInstitution/components/search.vue new file mode 100644 index 0000000..6b79fa7 --- /dev/null +++ b/src/views/think/thinkTrainingInstitution/components/search.vue @@ -0,0 +1,72 @@ + + + diff --git a/src/views/think/thinkTrainingInstitution/components/thinkTrainingInstitutionEdit.vue b/src/views/think/thinkTrainingInstitution/components/thinkTrainingInstitutionEdit.vue new file mode 100644 index 0000000..e1242fa --- /dev/null +++ b/src/views/think/thinkTrainingInstitution/components/thinkTrainingInstitutionEdit.vue @@ -0,0 +1,171 @@ + + + diff --git a/src/views/think/thinkTrainingInstitution/index.vue b/src/views/think/thinkTrainingInstitution/index.vue new file mode 100644 index 0000000..1f2d52d --- /dev/null +++ b/src/views/think/thinkTrainingInstitution/index.vue @@ -0,0 +1,201 @@ + + + + + + + diff --git a/src/views/think/thinkUserInAccess/components/search.vue b/src/views/think/thinkUserInAccess/components/search.vue new file mode 100644 index 0000000..82fea9d --- /dev/null +++ b/src/views/think/thinkUserInAccess/components/search.vue @@ -0,0 +1,42 @@ + + + + diff --git a/src/views/think/thinkUserInAccess/components/thinkUserInAccessEdit.vue b/src/views/think/thinkUserInAccess/components/thinkUserInAccessEdit.vue new file mode 100644 index 0000000..96239d4 --- /dev/null +++ b/src/views/think/thinkUserInAccess/components/thinkUserInAccessEdit.vue @@ -0,0 +1,168 @@ + + + + diff --git a/src/views/think/thinkUserInAccess/index.vue b/src/views/think/thinkUserInAccess/index.vue new file mode 100644 index 0000000..756cd72 --- /dev/null +++ b/src/views/think/thinkUserInAccess/index.vue @@ -0,0 +1,212 @@ + + + + + + + diff --git a/src/views/think/thinkUsers/components/balanceRecharge.vue b/src/views/think/thinkUsers/components/balanceRecharge.vue new file mode 100644 index 0000000..a467dca --- /dev/null +++ b/src/views/think/thinkUsers/components/balanceRecharge.vue @@ -0,0 +1,152 @@ + + + diff --git a/src/views/think/thinkUsers/index.vue b/src/views/think/thinkUsers/index.vue index 9f80a4b..46735a4 100644 --- a/src/views/think/thinkUsers/index.vue +++ b/src/views/think/thinkUsers/index.vue @@ -49,7 +49,7 @@ @@ -83,6 +88,7 @@ } from 'ele-admin-pro/es/ele-pro-table/types'; import Search from './components/search.vue'; import Edit from './components/thinkUsersEdit.vue'; + import BalanceRecharge from './components/balanceRecharge.vue'; import { pageThinkUsers, removeThinkUsers, @@ -101,8 +107,12 @@ const selection = ref([]); // 当前编辑数据 const current = ref(null); + // 当前充值数据 + const rechargeCurrent = ref(null); // 是否显示编辑弹窗 const showEdit = ref(false); + // 是否显示充值弹窗 + const showRecharge = ref(false); // 是否显示批量移动弹窗 const showMove = ref(false); // 加载状态 @@ -183,8 +193,8 @@ }, { title: '余额', - dataIndex: 'money', - key: 'money', + dataIndex: 'balance', + key: 'balance', align: 'center', sorter: true }, @@ -254,6 +264,12 @@ showEdit.value = true; }; + /* 打开充值弹窗 */ + const openRecharge = (row: ThinkUsers) => { + rechargeCurrent.value = row; + showRecharge.value = true; + }; + /* 打开批量移动弹窗 */ const openMove = () => { showMove.value = true; diff --git a/src/views/think/thinkUsersBlack/components/search.vue b/src/views/think/thinkUsersBlack/components/search.vue new file mode 100644 index 0000000..48ee725 --- /dev/null +++ b/src/views/think/thinkUsersBlack/components/search.vue @@ -0,0 +1,85 @@ + + + diff --git a/src/views/think/thinkUsersBlack/components/thinkUsersBlackEdit.vue b/src/views/think/thinkUsersBlack/components/thinkUsersBlackEdit.vue new file mode 100644 index 0000000..33ade8b --- /dev/null +++ b/src/views/think/thinkUsersBlack/components/thinkUsersBlackEdit.vue @@ -0,0 +1,211 @@ + + + diff --git a/src/views/think/thinkUsersBlack/index.vue b/src/views/think/thinkUsersBlack/index.vue new file mode 100644 index 0000000..0ad12cf --- /dev/null +++ b/src/views/think/thinkUsersBlack/index.vue @@ -0,0 +1,222 @@ + + + + + + + diff --git a/src/views/think/thinkUsersVip/index.vue b/src/views/think/thinkUsersVip/index.vue index 48c62b9..0e1cbb8 100644 --- a/src/views/think/thinkUsersVip/index.vue +++ b/src/views/think/thinkUsersVip/index.vue @@ -4,10 +4,9 @@ 全额退款 + >全额退款 + + + diff --git a/src/views/think/thinkVip/components/thinkVipEdit.vue b/src/views/think/thinkVip/components/thinkVipEdit.vue index cbf6d1e..024cad5 100644 --- a/src/views/think/thinkVip/components/thinkVipEdit.vue +++ b/src/views/think/thinkVip/components/thinkVipEdit.vue @@ -30,8 +30,32 @@ 特殊vip卡 普通vip卡 + 培训卡 + + + + {{ item.name }} + + + 成人卡 @@ -63,8 +87,17 @@ - - + + {{ item.name }} @@ -142,8 +175,11 @@ - + - - - + + + 是 @@ -177,191 +213,324 @@ diff --git a/src/views/think/thinkVip/index.vue b/src/views/think/thinkVip/index.vue index d68a768..f73ef97 100644 --- a/src/views/think/thinkVip/index.vue +++ b/src/views/think/thinkVip/index.vue @@ -230,7 +230,14 @@ key: 'vipType', sorter: true, align: 'center', - customRender: ({ text }) => ['', '特殊VIP卡', '普通VIP卡'][text] + customRender: ({ text }) => ['', '特殊VIP卡', '普通VIP卡', '培训卡'][text] + }, + { + title: '培训机构', + dataIndex: 'trainingInstitutionName', + key: 'trainingInstitutionName', + align: 'center', + ellipsis: true }, { title: '卡类型',