<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="企业名称/信用代码"
|
@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>
|