From 6fd420d0f3386047bad0113bf5714267aade2fd4 Mon Sep 17 00:00:00 2001
From: wupengfei <834520024@qq.com>
Date: 星期一, 21 七月 2025 09:33:20 +0800
Subject: [PATCH] Merge branch 'master' into dev-3.4.2.5
---
src/constants/reward.ts | 28 ++
src/services/api/typings.d.ts | 36 +++
src/views/Reward/RewardApplyTradeCheck.vue | 228 ++++++++++++++++++++
src/views/Reward/constants/index.ts | 1
src/router/index.ts | 13 +
src/services/api/ParkBountyApply.ts | 15 +
src/views/Reward/components/RewardApplyTradeCheckDialog.vue | 236 +++++++++++++++++++++
src/views/Reward/constants/columns.ts | 81 +++++++
8 files changed, 637 insertions(+), 1 deletions(-)
diff --git a/src/constants/reward.ts b/src/constants/reward.ts
index a97d833..ce66d20 100644
--- a/src/constants/reward.ts
+++ b/src/constants/reward.ts
@@ -177,3 +177,31 @@
[BillStatusEnum.NeedUpload]: '寰呭畬鍠�',
[BillStatusEnum.HasUpload]: '宸蹭笂浼�',
};
+
+export enum EnumParkBountyTradeDetailAuditStatus {
+ /// 寰呭鏍�
+ Wait = 10,
+
+ /// 瀹℃牳閫氳繃
+ Pass = 20,
+
+ /// 椹冲洖
+ Reject = 30,
+}
+
+export const EnumParkBountyTradeDetailAuditStatusText = {
+ [EnumParkBountyTradeDetailAuditStatus.Wait]: '寰呭鏍�',
+ [EnumParkBountyTradeDetailAuditStatus.Pass]: '瀹℃牳閫氳繃',
+ [EnumParkBountyTradeDetailAuditStatus.Reject]: '椹冲洖',
+};
+
+export const EnumParkBountyTradeDetailAuditStatusTextForAdudit = {
+ [EnumParkBountyTradeDetailAuditStatus.Pass]: '閫氳繃',
+ [EnumParkBountyTradeDetailAuditStatus.Reject]: '椹冲洖',
+};
+
+export const EnumParkBountyTradeDetailAuditStatusTag = {
+ [EnumParkBountyTradeDetailAuditStatus.Wait]: 'warning',
+ [EnumParkBountyTradeDetailAuditStatus.Pass]: 'success',
+ [EnumParkBountyTradeDetailAuditStatus.Reject]: 'danger',
+};
diff --git a/src/router/index.ts b/src/router/index.ts
index cb3837d..6314848 100644
--- a/src/router/index.ts
+++ b/src/router/index.ts
@@ -234,6 +234,19 @@
icon: 'home',
},
},
+ {
+ path: '/RewardApplyTradeCheck',
+ name: 'RewardApplyTradeCheck',
+ hidden: false,
+ alwaysShow: true,
+ component: () => import('@/views/Reward/RewardApplyTradeCheck.vue'),
+ meta: {
+ rank: 10034,
+ title: '鍑鸿处瀹℃壒',
+ // rootMenu: true,
+ icon: 'home',
+ },
+ },
],
},
// {
diff --git a/src/services/api/ParkBountyApply.ts b/src/services/api/ParkBountyApply.ts
index c5f1a4b..1ebaf72 100644
--- a/src/services/api/ParkBountyApply.ts
+++ b/src/services/api/ParkBountyApply.ts
@@ -17,6 +17,21 @@
});
}
+/** 濂栧姳閲�-鍑鸿处 POST /api/ParkBountyApply/AuditParkBountyApplyTrade */
+export async function auditParkBountyApplyTrade(
+ body: API.AuditParkBountyTradeInput,
+ options?: API.RequestConfig
+) {
+ return request<number>('/api/ParkBountyApply/AuditParkBountyApplyTrade', {
+ method: 'POST',
+ headers: {
+ 'Content-Type': 'application/json',
+ },
+ data: body,
+ ...(options || {}),
+ });
+}
+
/** 鎾ゅ洖鐢虫姤 GET /api/ParkBountyApply/CancelParkBountyApply */
export async function cancelParkBountyApply(
// 鍙犲姞鐢熸垚鐨凱aram绫诲瀷 (闈瀊ody鍙傛暟swagger榛樿娌℃湁鐢熸垚瀵硅薄)
diff --git a/src/services/api/typings.d.ts b/src/services/api/typings.d.ts
index 341d709..1047a13 100644
--- a/src/services/api/typings.d.ts
+++ b/src/services/api/typings.d.ts
@@ -2374,6 +2374,16 @@
checkUserId?: string;
}
+ interface AuditParkBountyTradeInput {
+ /** 鍑鸿处璁板綍Id */
+ id?: string;
+ auditStatus?: EnumParkBountyTradeDetailAuditStatus;
+ /** 瀹℃牳澶囨敞 */
+ auditRemark?: string;
+ /** 瀹℃牳鍑瘉 */
+ payAuditFileUrl?: string;
+ }
+
interface AuditWalletBatchTransferDetailInput {
id?: string;
opStatus?: BatchIssuanceRegulatorsStatusEnum;
@@ -5908,6 +5918,8 @@
configuration?: Record<string, any>;
}
+ type EnumParkBountyTradeDetailAuditStatus = 10 | 20 | 30;
+
interface ExportBountyApplyData {
/** 浼佷笟鍚嶇О */
enterpriseName: string;
@@ -8563,11 +8575,26 @@
/** 鍑鸿处缁撴潫鏃ユ湡 */
transferTimeEnd?: string;
enterpriseId?: string;
+ auditStatus?: EnumParkBountyTradeDetailAuditStatus;
}
interface GetParkBountyTradeDetailOutput {
+ enterpriseId?: string;
+ /** 璐﹀彿 */
+ userName?: string;
+ /** 浼佷笟鍚嶇О */
+ enterpriseName?: string;
+ /** 鐢佃瘽 */
+ contactPhone?: string;
+ /** 绀句細缁熶竴淇$敤浠g爜 */
+ societyCreditCode?: string;
+ authType?: EnterpriseTypeEnum;
+ /** 鐢宠鍥尯 */
+ parkName?: string;
+ /** 鐢宠鍥尯绫诲瀷 */
+ parkTypeName?: string;
id?: string;
- /** 鏈�杩戝嚭璐﹂噾棰� */
+ /** 鍑鸿处閲戦 */
tradeAmount?: number;
/** 鍑鸿处鍑瘉 */
payFileUrl?: string;
@@ -8579,6 +8606,13 @@
/** 濂栧姳閲戜綑棰� */
remianAmount?: number;
financeType?: FinanceTypeEnum;
+ auditStatus?: EnumParkBountyTradeDetailAuditStatus;
+ /** 瀹℃牳澶囨敞 */
+ auditRemark?: string;
+ /** 瀹℃牳鏃堕棿 */
+ auditTime?: string;
+ /** 瀹℃牳鍑瘉 */
+ payAuditFileUrl?: string;
}
interface GetParkBountyTradeDetailOutputPageOutput {
diff --git a/src/views/Reward/RewardApplyTradeCheck.vue b/src/views/Reward/RewardApplyTradeCheck.vue
new file mode 100644
index 0000000..32b478b
--- /dev/null
+++ b/src/views/Reward/RewardApplyTradeCheck.vue
@@ -0,0 +1,228 @@
+<template>
+ <LoadingLayout :loading="state.loading">
+ <AppContainer>
+ <ProTableQueryFilterBar @on-reset="reset">
+ <template #query>
+ <QueryFilterItem tip-content="鐢宠鍑鸿处鏃ユ湡">
+ <FieldDatePicker
+ v-model="extraParamState.creationTime"
+ type="daterange"
+ range-separator="~"
+ start-placeholder="寮�濮嬫棩鏈�"
+ end-placeholder="缁撴潫鏃ユ湡"
+ clearable
+ @change="getList()"
+ ></FieldDatePicker>
+ </QueryFilterItem>
+ <QueryFilterItem>
+ <SearchInput
+ v-model="extraParamState.searchKeyWord"
+ style="width: 200px"
+ placeholder="浼佷笟鍚嶇О/淇$敤浠g爜"
+ @on-click-search="getList"
+ >
+ </SearchInput>
+ </QueryFilterItem>
+ </template>
+ </ProTableQueryFilterBar>
+ <ProTableV2
+ v-bind="proTableProps"
+ :columns="RewardApplyTradeCheckColumns"
+ :operationBtns="operationBtns"
+ >
+ </ProTableV2>
+ <RewardApplyTradeCheckDialog v-bind="dialogProps"></RewardApplyTradeCheckDialog>
+ </AppContainer>
+ </LoadingLayout>
+</template>
+
+<script setup lang="ts">
+import {
+ ProTableQueryFilterBar,
+ OperationBtnType,
+ ProTableV2,
+ SearchInput,
+ LoadingLayout,
+ AppContainer,
+ QueryFilterItem,
+ useTable,
+ FieldDatePicker,
+ useFormDialog,
+ UploadUserFile,
+ defineOperationBtns,
+} from '@bole-core/components';
+import { Message, OrderInputType } from '@bole-core/core';
+import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
+import {
+ EnterpriseType,
+ EnterpriseTypeText,
+ EnumParkBountyTradeDetailAuditStatus,
+ EnumParkBountyTradeDetailAuditStatusTag,
+ EnumParkBountyTradeDetailAuditStatusText,
+} from '@/constants';
+import { ModelValueType } from 'element-plus';
+import RewardApplyTradeCheckDialog from './components/RewardApplyTradeCheckDialog.vue';
+import { convertApi2FormUrlOnlyOne, format } from '@/utils';
+import { RewardApplyTradeCheckColumns } from './constants';
+
+defineOptions({
+ name: 'RewardApplyTradeCheck',
+});
+
+const operationBtns = defineOperationBtns([
+ {
+ data: {
+ enCode: 'detailBtn',
+ name: '璇︽儏',
+ },
+ emits: {
+ onClick: (role) => openDialog(role, true),
+ },
+ extraProps: {
+ hide: (row: API.GetParkBountyTradeDetailOutput) =>
+ row.auditStatus === EnumParkBountyTradeDetailAuditStatus.Wait,
+ },
+ },
+ {
+ data: {
+ enCode: 'checkBtn',
+ name: '瀹℃壒',
+ },
+ emits: {
+ onClick: (row) => openDialog(row),
+ },
+ extraProps: {
+ hide: (row: API.GetParkBountyTradeDetailOutput) =>
+ row.auditStatus !== EnumParkBountyTradeDetailAuditStatus.Wait,
+ },
+ },
+]);
+
+const BaseState = {
+ loading: true,
+};
+
+const state = reactive({ ...BaseState });
+
+onMounted(async () => {
+ await getList();
+ state.loading = false;
+});
+
+const {
+ getDataSource: getList,
+ proTableProps,
+ paginationState,
+ extraParamState,
+ reset,
+} = useTable(
+ async ({ pageIndex, pageSize }, extraParamState) => {
+ try {
+ let params: API.GetParkBountyTradeDetailByIdInput = {
+ pageModel: {
+ rows: pageSize,
+ page: pageIndex,
+ orderInput: extraParamState.orderInput,
+ },
+ searchKeyWord: extraParamState.searchKeyWord,
+ // transferTimeBegin: format(extraParamState.transferTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
+ // transferTimeEnd: format(extraParamState.transferTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
+ creationTimeBegin: format(extraParamState.creationTime?.[0] ?? '', 'YYYY-MM-DD 00:00:00'),
+ creationTimeEnd: format(extraParamState.creationTime?.[1] ?? '', 'YYYY-MM-DD 23:59:59'),
+ // "enterpriseId": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
+ // "auditStatus": 10
+ };
+ let res = await parkBountyApplyServices.getParkBountyTradeDetailList(params, {
+ showLoading: !state.loading,
+ });
+ return res;
+ } catch (error) {}
+ },
+ {
+ defaultExtraParams: {
+ searchKeyWord: '',
+ creationTime: [] as unknown as ModelValueType,
+ orderInput: [{ property: 'tradeTime', order: OrderInputType.Desc }],
+ },
+ columnsRenderProps: {
+ authType: { type: 'enum', valueEnum: EnterpriseTypeText },
+ tradeTime: { type: 'date', format: 'YYYY-MM-DD HH:mm:ss' },
+ tradeAmount: { type: 'money' },
+ remianAmount: { type: 'money' },
+ auditStatus: {
+ type: 'tag',
+ valueEnum: EnumParkBountyTradeDetailAuditStatusText,
+ tagTypeEnum: EnumParkBountyTradeDetailAuditStatusTag,
+ },
+ },
+ }
+);
+
+function openDialog(row: API.GetParkBountyTradeDetailOutput, isCheck = false) {
+ handleAdd({
+ id: row.id,
+ isCheck,
+ auditStatus:
+ row.auditStatus === EnumParkBountyTradeDetailAuditStatus.Reject
+ ? EnumParkBountyTradeDetailAuditStatus.Reject
+ : EnumParkBountyTradeDetailAuditStatus.Pass,
+ auditRemark: row.auditRemark,
+ payAuditFileUrl: convertApi2FormUrlOnlyOne(row.payAuditFileUrl),
+ userName: row.userName,
+ enterpriseName: row.enterpriseName,
+ societyCreditCode: row.societyCreditCode,
+ contactPhone: row.contactPhone,
+ authType: row.authType,
+ parkName: row.parkName,
+ parkTypeName: row.parkTypeName,
+ tradeAmount: row.tradeAmount,
+ remianAmount: row.remianAmount,
+ tradeTime: row.tradeTime,
+ auditTime: row.auditTime,
+ payRemark: row.payRemark,
+ payFileUrl: convertApi2FormUrlOnlyOne(row.payFileUrl),
+ });
+}
+
+const { dialogProps, handleAdd, handleEdit, editForm } = useFormDialog({
+ onConfirm: handleAddOrEdit,
+ defaultFormParams: {
+ id: '',
+ auditStatus: '' as any as EnumParkBountyTradeDetailAuditStatus,
+ auditRemark: '',
+ payAuditFileUrl: [] as UploadUserFile[],
+ isCheck: false,
+ userName: '',
+ enterpriseName: '',
+ societyCreditCode: '',
+ contactPhone: '',
+ authType: EnterpriseType.HREnterprise,
+ parkName: '',
+ parkTypeName: '',
+ tradeAmount: '' as any as number,
+ remianAmount: '' as any as number,
+ tradeTime: '',
+ auditTime: '',
+ payRemark: '',
+ payFileUrl: [] as UploadUserFile[],
+ },
+});
+
+async function handleAddOrEdit() {
+ try {
+ let params: API.AuditParkBountyTradeInput = {
+ id: editForm.id,
+ auditStatus: editForm.auditStatus,
+ /** 瀹℃牳澶囨敞 */
+ auditRemark: editForm.auditRemark,
+ /** 瀹℃牳鍑瘉 */
+ payAuditFileUrl: editForm.payAuditFileUrl?.[0]?.path ?? '',
+ };
+ let res = await parkBountyApplyServices.auditParkBountyApplyTrade(params);
+ if (res) {
+ Message.successMessage('鎿嶄綔鎴愬姛');
+ getList(paginationState.pageIndex);
+ }
+ } catch (error) {}
+}
+</script>
diff --git a/src/views/Reward/components/RewardApplyTradeCheckDialog.vue b/src/views/Reward/components/RewardApplyTradeCheckDialog.vue
new file mode 100644
index 0000000..42d82a7
--- /dev/null
+++ b/src/views/Reward/components/RewardApplyTradeCheckDialog.vue
@@ -0,0 +1,236 @@
+<template>
+ <ProDialog title="鍑鸿处瀹℃壒" v-model="visible" @close="onDialogClose" destroy-on-close draggable>
+ <PortraitTableWithAttachment v-bind="portraitTableWithAttachmentProps" />
+ <ProForm
+ :model="form"
+ ref="dialogForm"
+ label-width="90px"
+ style="margin-top: 20px"
+ :is-read="form.isCheck"
+ >
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2
+ label="瀹℃牳:"
+ prop="auditStatus"
+ :check-rules="[{ message: '璇烽�夋嫨瀹℃牳鐘舵��' }]"
+ >
+ <ProFormRadio
+ v-model="form.auditStatus"
+ :value-enum="EnumParkBountyTradeDetailAuditStatusTextForAdudit"
+ />
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol v-if="form.isCheck">
+ <ProFormColItem :span="12">
+ <ProFormItemV2 label="瀹℃牳鏃ユ湡:" prop="auditTime">
+ <ProFormDatePicker v-model="form.auditTime" type="date" format="YYYY-MM-DD HH:mm" />
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ <ProFormCol>
+ <ProFormColItem :span="12">
+ <ProFormItemV2
+ label="涓婁紶鍑瘉:"
+ prop="payAuditFileUrl"
+ :check-rules="[
+ {
+ message: '璇蜂笂浼犲嚟璇�',
+ type: 'upload',
+ },
+ ]"
+ >
+ <ProFormUpload
+ v-model:file-url="form.payAuditFileUrl"
+ :limit="1"
+ :showTip="false"
+ :limitFileSize="50"
+ ></ProFormUpload>
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+
+ <ProFormCol>
+ <ProFormColItem>
+ <ProFormItemV2
+ label="瀹℃牳鐞嗙敱:"
+ prop="auditRemark"
+ :required="form.auditStatus === EnumParkBountyTradeDetailAuditStatus.Reject"
+ :check-rules="[
+ {
+ message: '璇疯緭鍏ュ鏍哥悊鐢�',
+ validator: (rule, value, callback) => {
+ if (!value && form.auditStatus === EnumParkBountyTradeDetailAuditStatus.Reject) {
+ callback(new Error('璇疯緭鍏ラ┏鍥炵悊鐢�'));
+ }
+ callback();
+ },
+ },
+ ]"
+ >
+ <ProFormTextArea
+ v-model="form.auditRemark"
+ placeholder="璇疯緭鍏�"
+ show-word-limit
+ :maxlength="150"
+ ></ProFormTextArea>
+ </ProFormItemV2>
+ </ProFormColItem>
+ </ProFormCol>
+ </ProForm>
+ <template #footer>
+ <span class="dialog-footer">
+ <el-button @click="emit('onCancel')">鍙� 娑�</el-button>
+ <el-button type="primary" @click="handleConfirm">纭� 瀹�</el-button>
+ </span>
+ </template>
+ </ProDialog>
+</template>
+
+<script setup lang="ts">
+import { FormInstance } from 'element-plus';
+import {
+ ProDialog,
+ ProForm,
+ ProFormItemV2,
+ ProFormTextArea,
+ ProFormCol,
+ ProFormColItem,
+ ProFormRadio,
+ ProFormUpload,
+ ProFormDatePicker,
+ UploadUserFile,
+} from '@bole-core/components';
+import * as parkBountyApplyServices from '@/services/api/ParkBountyApply';
+import { usePortraitTableWithAttachment } from '@/hooks';
+import { convertApi2FormUrl, convertApi2FormUrlOnlyOne } from '@/utils';
+import { useQuery } from '@tanstack/vue-query';
+import {
+ EnumParkBountyTradeDetailAuditStatus,
+ EnumParkBountyTradeDetailAuditStatusTextForAdudit,
+ EnterpriseType,
+ EnterpriseTypeText,
+} from '@/constants';
+
+defineOptions({
+ name: 'WithdrawalApprovalAuditDialog',
+});
+
+// type Props = {};
+
+// const props = withDefaults(defineProps<Props>(), {});
+
+const visible = defineModel({ type: Boolean });
+
+type Form = {
+ title?: string;
+ id: string;
+ auditStatus: EnumParkBountyTradeDetailAuditStatus;
+ auditRemark: string;
+ payAuditFileUrl: UploadUserFile[];
+ isCheck: boolean;
+ userName: string;
+ enterpriseName: string;
+ societyCreditCode: string;
+ contactPhone: string;
+ authType: EnterpriseType;
+ parkName: string;
+ parkTypeName: string;
+ tradeAmount: number;
+ remianAmount: number;
+ tradeTime: string;
+ auditTime: string;
+ payRemark: string;
+ payFileUrl: UploadUserFile[];
+};
+
+const form = defineModel<Form>('form');
+
+const emit = defineEmits<{
+ (e: 'onConfirm'): void;
+ (e: 'onCancel'): void;
+}>();
+
+const { portraitTableWithAttachmentProps } = usePortraitTableWithAttachment({
+ data: form,
+ annexList: computed(() => form.value?.payFileUrl),
+ columns: [
+ {
+ label: '寮�鎴疯处鍙�',
+ key: 'userName',
+ formatter: () => '1511 2001 2920 0156 069',
+ },
+ {
+ label: '杩涜处鍗曚綅',
+ key: 'enterpriseName',
+ formatter: () => '澶钩璐骇淇濋櫓鏈夐檺鍏徃鎶氬窞涓績鏀叕鍙�',
+ },
+ {
+ label: '寮�鎴峰悕绉�',
+ key: 'societyCreditCode',
+ formatter: () => '澶钩璐骇淇濋櫓鏈夐檺鍏徃鎶氬窞涓績鏀叕鍙�',
+ },
+ {
+ label: '寮�鎴烽摱琛�',
+ key: 'contactPhone',
+ formatter: () => '涓浗宸ュ晢閾惰鑲′唤鏈夐檺鍏徃鎶氬窞璧d笢鏀',
+ },
+ // {
+ // label: '浼佷笟绫诲瀷',
+ // key: 'authType',
+ // type: 'enum',
+ // valueEnum: EnterpriseTypeText,
+ // },
+ // {
+ // label: '鎵�灞炲洯鍖�',
+ // key: 'parkName',
+ // },
+ // {
+ // label: '鍥尯绫诲瀷',
+ // key: 'parkTypeName',
+ // },
+ // {
+ // label: '娑堣垂绫诲瀷',
+ // key: 'payRemark',
+ // },
+ {
+ label: '鐢宠鍑鸿处閲戦',
+ key: 'tradeAmount',
+ type: 'money',
+ },
+ {
+ label: '鐢宠鍑鸿处鏃堕棿',
+ key: 'tradeTime',
+ type: 'date',
+ },
+ {
+ label: '璧勯噾浣欓',
+ key: 'remianAmount',
+ type: 'money',
+ },
+ ],
+});
+
+const dialogForm = ref<FormInstance>();
+
+function onDialogClose() {
+ if (!dialogForm.value) return;
+ dialogForm.value.resetFields();
+}
+
+function handleConfirm() {
+ if (!dialogForm.value) return;
+ if (form.value?.isCheck) {
+ emit('onCancel');
+ return;
+ }
+ dialogForm.value.validate((valid) => {
+ if (valid) {
+ emit('onConfirm');
+ } else {
+ return;
+ }
+ });
+}
+</script>
diff --git a/src/views/Reward/constants/columns.ts b/src/views/Reward/constants/columns.ts
new file mode 100644
index 0000000..58aab3c
--- /dev/null
+++ b/src/views/Reward/constants/columns.ts
@@ -0,0 +1,81 @@
+import { defineColumns } from '@bole-core/components';
+
+export const RewardApplyTradeCheckColumns = defineColumns([
+ {
+ id: '1',
+ enCode: 'userName',
+ name: '甯愬彿',
+ width: 160,
+ },
+ {
+ id: '2',
+ enCode: 'enterpriseName',
+ name: '浼佷笟鍚嶇О',
+ width: 160,
+ },
+ {
+ id: '3',
+ enCode: 'societyCreditCode',
+ name: '淇$敤浠g爜',
+ width: 160,
+ },
+ {
+ id: '4',
+ enCode: 'contactPhone',
+ name: '鐢佃瘽',
+ width: 160,
+ },
+ {
+ id: '5',
+ enCode: 'authType',
+ name: '浼佷笟绫诲瀷',
+ width: 160,
+ },
+ {
+ id: '6',
+ enCode: 'parkName',
+ name: '鎵�灞炲洯鍖�',
+ width: 160,
+ },
+ {
+ id: '7',
+ enCode: 'parkTypeName',
+ name: '鍥尯绫诲瀷',
+ },
+ {
+ id: '22',
+ enCode: 'auditStatus',
+ name: '瀹℃牳鐘舵��',
+ width: 160,
+ },
+ {
+ id: '21',
+ enCode: 'payRemark',
+ name: '娑堣垂绫诲瀷',
+ width: 160,
+ },
+ {
+ id: '10',
+ enCode: 'tradeAmount',
+ name: '鐢宠鍑鸿处閲戦',
+ width: 160,
+ },
+ {
+ id: '11',
+ enCode: 'tradeTime',
+ name: '鐢宠鍑鸿处鏃堕棿',
+ width: 160,
+ },
+ // {
+ // id: '12',
+ // enCode: 'payFileUrl',
+ // name: '鍑鸿处鍑瘉',
+ // width: 160,
+ // },
+ {
+ id: '9',
+ enCode: 'remianAmount',
+ name: '璧勯噾浣欓',
+ width: 160,
+ },
+]);
diff --git a/src/views/Reward/constants/index.ts b/src/views/Reward/constants/index.ts
new file mode 100644
index 0000000..a7f066b
--- /dev/null
+++ b/src/views/Reward/constants/index.ts
@@ -0,0 +1 @@
+export * from './columns';
--
Gitblit v1.9.1