add
Some checks failed
CI / Test (ubuntu-latest) (push) Has been cancelled
CI / Test (windows-latest) (push) Has been cancelled
CI / Lint (ubuntu-latest) (push) Has been cancelled
CI / Lint (windows-latest) (push) Has been cancelled
CI / Check (ubuntu-latest) (push) Has been cancelled
CI / Check (windows-latest) (push) Has been cancelled
CI / CI OK (push) Has been cancelled
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
Deploy Website on push / Deploy Push Playground Ftp (push) Has been cancelled
Deploy Website on push / Deploy Push Docs Ftp (push) Has been cancelled
Deploy Website on push / Deploy Push Antd Ftp (push) Has been cancelled
Deploy Website on push / Deploy Push Element Ftp (push) Has been cancelled
Deploy Website on push / Deploy Push Naive Ftp (push) Has been cancelled
Deploy Website on push / Rerun on failure (push) Has been cancelled
Release Drafter / update_release_draft (push) Has been cancelled
Some checks failed
CI / Test (ubuntu-latest) (push) Has been cancelled
CI / Test (windows-latest) (push) Has been cancelled
CI / Lint (ubuntu-latest) (push) Has been cancelled
CI / Lint (windows-latest) (push) Has been cancelled
CI / Check (ubuntu-latest) (push) Has been cancelled
CI / Check (windows-latest) (push) Has been cancelled
CI / CI OK (push) Has been cancelled
CodeQL / Analyze (javascript-typescript) (push) Has been cancelled
Deploy Website on push / Deploy Push Playground Ftp (push) Has been cancelled
Deploy Website on push / Deploy Push Docs Ftp (push) Has been cancelled
Deploy Website on push / Deploy Push Antd Ftp (push) Has been cancelled
Deploy Website on push / Deploy Push Element Ftp (push) Has been cancelled
Deploy Website on push / Deploy Push Naive Ftp (push) Has been cancelled
Deploy Website on push / Rerun on failure (push) Has been cancelled
Release Drafter / update_release_draft (push) Has been cancelled
This commit is contained in:
@@ -368,6 +368,37 @@ async function getAgentCommissionList(
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 更新代理佣金状态
|
||||||
|
*/
|
||||||
|
async function updateAgentCommissionStatus(
|
||||||
|
id: number,
|
||||||
|
status: number,
|
||||||
|
) {
|
||||||
|
return requestClient.post<{ success: boolean }>(
|
||||||
|
'/agent/agent-commission/update-status',
|
||||||
|
{
|
||||||
|
id,
|
||||||
|
status,
|
||||||
|
},
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 批量解冻代理佣金
|
||||||
|
*/
|
||||||
|
async function batchUnfreezeAgentCommission(
|
||||||
|
agentId?: number,
|
||||||
|
) {
|
||||||
|
return requestClient.post<{
|
||||||
|
success: boolean;
|
||||||
|
count: number;
|
||||||
|
amount: number;
|
||||||
|
}>('/agent/agent-commission/batch-unfreeze', {
|
||||||
|
agent_id: agentId,
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取代理奖励列表
|
* 获取代理奖励列表
|
||||||
*/
|
*/
|
||||||
@@ -541,6 +572,7 @@ async function getAgentLinkProductStatistics() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
export {
|
export {
|
||||||
|
batchUnfreezeAgentCommission,
|
||||||
getAgentCommissionDeductionList,
|
getAgentCommissionDeductionList,
|
||||||
getAgentCommissionList,
|
getAgentCommissionList,
|
||||||
getAgentLinkList,
|
getAgentLinkList,
|
||||||
@@ -556,6 +588,7 @@ export {
|
|||||||
getMembershipRechargeOrderList,
|
getMembershipRechargeOrderList,
|
||||||
getWithdrawalStatistics,
|
getWithdrawalStatistics,
|
||||||
reviewBankCardWithdrawal,
|
reviewBankCardWithdrawal,
|
||||||
|
updateAgentCommissionStatus,
|
||||||
updateAgentMembershipConfig,
|
updateAgentMembershipConfig,
|
||||||
updateAgentProductionConfig,
|
updateAgentProductionConfig,
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -1,8 +1,11 @@
|
|||||||
import type { VbenFormSchema } from '#/adapter/form';
|
import type { VbenFormSchema } from '#/adapter/form';
|
||||||
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
|
import type { VxeTableGridOptions } from '#/adapter/vxe-table';
|
||||||
|
import type { AgentApi } from '#/api';
|
||||||
|
|
||||||
// 佣金记录列表列配置
|
// 佣金记录列表列配置
|
||||||
export function useCommissionColumns(): VxeTableGridOptions['columns'] {
|
export function useCommissionColumns(
|
||||||
|
onActionClick?: (params: { code: string; row: AgentApi.AgentCommissionListItem }) => void,
|
||||||
|
): VxeTableGridOptions['columns'] {
|
||||||
return [
|
return [
|
||||||
{
|
{
|
||||||
field: 'agent_id',
|
field: 'agent_id',
|
||||||
@@ -46,6 +49,41 @@ export function useCommissionColumns(): VxeTableGridOptions['columns'] {
|
|||||||
sortable: true,
|
sortable: true,
|
||||||
sortType: 'string' as const,
|
sortType: 'string' as const,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
align: 'center',
|
||||||
|
cellRender: {
|
||||||
|
name: 'CellOperation',
|
||||||
|
attrs: {
|
||||||
|
nameField: 'id',
|
||||||
|
nameTitle: '操作',
|
||||||
|
onClick: onActionClick,
|
||||||
|
},
|
||||||
|
options: [
|
||||||
|
{
|
||||||
|
code: 'unfreeze',
|
||||||
|
text: '解冻',
|
||||||
|
type: 'primary',
|
||||||
|
disabled: (row: AgentApi.AgentCommissionListItem) => row?.status !== 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: 'cancel',
|
||||||
|
text: '取消',
|
||||||
|
type: 'default',
|
||||||
|
disabled: (row: AgentApi.AgentCommissionListItem) => row?.status !== 1,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
code: 'settled',
|
||||||
|
text: '已结算',
|
||||||
|
type: 'success',
|
||||||
|
disabled: (row: AgentApi.AgentCommissionListItem) => row?.status !== 0,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
},
|
||||||
|
field: 'operation',
|
||||||
|
fixed: 'right',
|
||||||
|
title: '操作',
|
||||||
|
width: 300,
|
||||||
|
},
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -2,9 +2,14 @@
|
|||||||
import { computed } from 'vue';
|
import { computed } from 'vue';
|
||||||
|
|
||||||
import { Page } from '@vben/common-ui';
|
import { Page } from '@vben/common-ui';
|
||||||
|
import { Button, message, Modal } from 'ant-design-vue';
|
||||||
|
|
||||||
import { useVbenVxeGrid } from '#/adapter/vxe-table';
|
import { useVbenVxeGrid } from '#/adapter/vxe-table';
|
||||||
import { getAgentCommissionList } from '#/api/agent';
|
import {
|
||||||
|
batchUnfreezeAgentCommission,
|
||||||
|
getAgentCommissionList,
|
||||||
|
updateAgentCommissionStatus,
|
||||||
|
} from '#/api/agent';
|
||||||
|
|
||||||
import { useCommissionColumns, useCommissionFormSchema } from './data';
|
import { useCommissionColumns, useCommissionFormSchema } from './data';
|
||||||
|
|
||||||
@@ -24,14 +29,116 @@ const queryParams = computed(() => ({
|
|||||||
...(props.agentId ? { agent_id: props.agentId } : {}),
|
...(props.agentId ? { agent_id: props.agentId } : {}),
|
||||||
}));
|
}));
|
||||||
|
|
||||||
|
// 操作处理函数
|
||||||
|
function onActionClick({ code, row }: { code: string; row: any }) {
|
||||||
|
switch (code) {
|
||||||
|
case 'unfreeze':
|
||||||
|
onUnfreeze(row);
|
||||||
|
break;
|
||||||
|
case 'cancel':
|
||||||
|
onCancel(row);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const [Grid] = useVbenVxeGrid({
|
|
||||||
|
// 解冻佣金到用户余额
|
||||||
|
async function onUnfreeze(row: any) {
|
||||||
|
if (row.status !== 1) {
|
||||||
|
message.warning('只有冻结中的佣金才能解冻');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Modal.confirm({
|
||||||
|
title: '确认解冻',
|
||||||
|
content: `确定要解冻佣金金额 ¥${row.amount.toFixed(2)} 吗?解冻后将转入用户钱包余额。`,
|
||||||
|
okText: '确认解冻',
|
||||||
|
cancelText: '取消',
|
||||||
|
onOk: async () => {
|
||||||
|
try {
|
||||||
|
await updateAgentCommissionStatus(row.id, 0);
|
||||||
|
message.success('佣金已解冻并转入用户钱包余额');
|
||||||
|
onRefresh();
|
||||||
|
} catch (error) {
|
||||||
|
message.error('操作失败,请重试');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 取消佣金
|
||||||
|
async function onCancel(row: any) {
|
||||||
|
if (row.status !== 1) {
|
||||||
|
message.warning('只有冻结中的佣金才能取消');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
Modal.confirm({
|
||||||
|
title: '确认取消',
|
||||||
|
content: `确定要取消佣金金额 ¥${row.amount.toFixed(2)} 吗?取消后将无法恢复。`,
|
||||||
|
okText: '确认取消',
|
||||||
|
cancelText: '返回',
|
||||||
|
onOk: async () => {
|
||||||
|
try {
|
||||||
|
await updateAgentCommissionStatus(row.id, 2);
|
||||||
|
message.success('佣金已取消');
|
||||||
|
onRefresh();
|
||||||
|
} catch (error) {
|
||||||
|
message.error('操作失败,请重试');
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
// 刷新列表
|
||||||
|
function onRefresh() {
|
||||||
|
gridApi.query();
|
||||||
|
}
|
||||||
|
|
||||||
|
// 批量解冻佣金
|
||||||
|
async function onBatchUnfreeze() {
|
||||||
|
const content = props.agentId
|
||||||
|
? '确定要一键解冻当前代理商所有冻结中的佣金吗?解冻后将全部转入用户钱包余额。'
|
||||||
|
: '确定要一键解冻所有冻结中的佣金吗?解冻后将全部转入用户钱包余额。';
|
||||||
|
|
||||||
|
Modal.confirm({
|
||||||
|
title: '批量解冻确认',
|
||||||
|
content,
|
||||||
|
okText: '确认解冻',
|
||||||
|
cancelText: '取消',
|
||||||
|
onOk: async () => {
|
||||||
|
try {
|
||||||
|
const result = await batchUnfreezeAgentCommission(props.agentId);
|
||||||
|
message.success(
|
||||||
|
`批量解冻成功!共解冻 ${result.count} 条记录,总金额 ¥${result.amount.toFixed(2)}`,
|
||||||
|
);
|
||||||
|
onRefresh();
|
||||||
|
} catch (error) {
|
||||||
|
message.error('批量解冻失败,请重试');
|
||||||
|
}
|
||||||
|
},
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
const [Grid, gridApi] = useVbenVxeGrid({
|
||||||
formOptions: {
|
formOptions: {
|
||||||
schema: useCommissionFormSchema(),
|
schema: useCommissionFormSchema(),
|
||||||
submitOnChange: true,
|
submitOnChange: true,
|
||||||
},
|
},
|
||||||
gridOptions: {
|
gridOptions: {
|
||||||
columns: useCommissionColumns(),
|
columns: useCommissionColumns(onActionClick),
|
||||||
|
height: 'auto',
|
||||||
|
keepSource: true,
|
||||||
|
rowConfig: {
|
||||||
|
keyField: 'id',
|
||||||
|
},
|
||||||
|
toolbarConfig: {
|
||||||
|
custom: true,
|
||||||
|
export: false,
|
||||||
|
refresh: { code: 'query' },
|
||||||
|
search: true,
|
||||||
|
zoom: true,
|
||||||
|
},
|
||||||
proxyConfig: {
|
proxyConfig: {
|
||||||
ajax: {
|
ajax: {
|
||||||
query: async ({
|
query: async ({
|
||||||
@@ -60,6 +167,13 @@ const [Grid] = useVbenVxeGrid({
|
|||||||
|
|
||||||
<template>
|
<template>
|
||||||
<Page :auto-content-height="!agentId">
|
<Page :auto-content-height="!agentId">
|
||||||
<Grid :table-title="agentId ? '佣金记录列表' : '所有佣金记录'" />
|
<Grid :table-title="agentId ? '佣金记录列表' : '所有佣金记录'">
|
||||||
|
<template #toolbar-tools>
|
||||||
|
<Button type="primary" @click="onBatchUnfreeze">
|
||||||
|
<span class="mr-1">⚡</span>
|
||||||
|
一键解冻
|
||||||
|
</Button>
|
||||||
|
</template>
|
||||||
|
</Grid>
|
||||||
</Page>
|
</Page>
|
||||||
</template>
|
</template>
|
||||||
|
|||||||
Reference in New Issue
Block a user