| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246 | 
							- <script setup lang="tsx">
 
- import { ref, useTemplateRef } from 'vue';
 
- import {
 
-   fetchGetFailPointsList,
 
-   fetchGetPointsList,
 
-   fetchGetPointsOutList,
 
-   fetchImportPoints
 
- } from '@/service/api/government/points';
 
- import { useTable } from '@/components/zt/Table/hooks/useTable';
 
- import { useModal } from '@/components/zt/Modal/hooks/useModal';
 
- import type { FormSchema } from '@/components/zt/Form/types/form';
 
- import SVGIcon from '@/components/custom/svg-icon.vue';
 
- const importTemplateRef = useTemplateRef('importTemplateRef');
 
- const ModalColumns: NaiveUI.TableColumn<Api.government.PointsRecharge>[] = [
 
-   {
 
-     key: 'channelName',
 
-     title: '所属企业',
 
-     align: 'center'
 
-   },
 
-   {
 
-     key: 'userName',
 
-     title: '员工姓名',
 
-     align: 'center'
 
-   },
 
-   {
 
-     key: 'userPhone',
 
-     title: '员工手机号',
 
-     align: 'center'
 
-   },
 
-   {
 
-     key: 'points',
 
-     title: '充值积分',
 
-     align: 'center'
 
-   },
 
-   {
 
-     key: 'expiryDate',
 
-     title: '过期日期',
 
-     align: 'center'
 
-   },
 
-   {
 
-     key: 'createTime',
 
-     title: '创建时间',
 
-     align: 'center'
 
-   }
 
- ];
 
- const outColumns: NaiveUI.TableColumn<Api.government.PointsRechargeVO>[] = [
 
-   {
 
-     key: 'channelName',
 
-     title: '所属企业',
 
-     align: 'center'
 
-   },
 
-   {
 
-     key: 'totalPoints',
 
-     title: '总充值积分',
 
-     align: 'center'
 
-   },
 
-   {
 
-     key: 'totalUserCount',
 
-     title: '总充值人次',
 
-     align: 'center'
 
-   },
 
-   {
 
-     key: 'createTime',
 
-     title: '操作时间',
 
-     align: 'center'
 
-   }
 
- ];
 
- const searchSchemas: FormSchema[] = [
 
-   {
 
-     field: 'channelName',
 
-     label: '企业名称',
 
-     component: 'NInput'
 
-   },
 
-   {
 
-     field: 'userPhone',
 
-     label: '员工手机号',
 
-     component: 'NInput'
 
-   }
 
- ];
 
- const failColumns: NaiveUI.TableColumn<Api.government.PointsFailureRecordVO>[] = [
 
-   {
 
-     key: 'index',
 
-     title: '序号',
 
-     align: 'center',
 
-     render(_, rowIndex) {
 
-       return rowIndex + 1;
 
-     }
 
-   },
 
-   {
 
-     key: 'name',
 
-     title: '任务名称',
 
-     align: 'center'
 
-   },
 
-   {
 
-     key: 'createTime',
 
-     title: '时间',
 
-     align: 'center',
 
-     render(row) {
 
-       return (
 
-         <div>
 
-           <div>创建时间:{row.createTime}</div>
 
-           <div>完成时间:{row.createTime}</div>
 
-         </div>
 
-       );
 
-     }
 
-   },
 
-   {
 
-     key: 'totalUserCount',
 
-     title: '操作人',
 
-     align: 'center',
 
-     render(row) {
 
-       return (
 
-         <div>
 
-           <div>{row.createByRole}</div>
 
-           <div>({row.createByName})</div>
 
-         </div>
 
-       );
 
-     }
 
-   },
 
-   {
 
-     key: 'successStatus',
 
-     title: '状态',
 
-     align: 'center',
 
-     width: 240,
 
-     render(row) {
 
-       return (
 
-         <div class={'flex items-center'}>
 
-           共{Number(row.successStatus) + Number(row.failureStatus)}条,成功:{row.successStatus},
 
-           <span class={'flex items-center text-red-500'}>
 
-             失败:
 
-             {row.failureStatus}
 
-             {row.failureStatus != 0 && (
 
-               <div onClick={() => hanleExportFailure(row.code)}>
 
-                 <SVGIcon
 
-                   icon={'tdesign:download'}
 
-                   class={'ml-1 cursor-pointer text-20px'}
 
-                   style={'color:var(--n-color)'}
 
-                 ></SVGIcon>
 
-               </div>
 
-             )}
 
-           </span>
 
-         </div>
 
-       );
 
-     }
 
-   }
 
- ];
 
- const failData = ref<Api.government.PointsFailureRecordVO[]>([]);
 
- const [registerTable, { refresh }] = useTable({
 
-   searchFormConfig: {
 
-     schemas: searchSchemas.slice(0, 1),
 
-     inline: false,
 
-     size: 'small',
 
-     labelPlacement: 'left',
 
-     isFull: false
 
-   },
 
-   tableConfig: {
 
-     keyField: 'id',
 
-     title: '充值积分',
 
-     showAddButton: false
 
-   }
 
- });
 
- const [registerModalTable, { refresh: refreshModal }] = useTable({
 
-   searchFormConfig: {
 
-     schemas: searchSchemas,
 
-     inline: false,
 
-     size: 'small',
 
-     labelPlacement: 'left',
 
-     isFull: false
 
-   },
 
-   tableConfig: {
 
-     keyField: 'id',
 
-     title: '积分列表',
 
-     showAddButton: false,
 
-     minHeight: 400
 
-   }
 
- });
 
- const [registerModal, { openModal }] = useModal({
 
-   title: '充值积分',
 
-   height: 800,
 
-   showFooter: false,
 
-   width: 1200
 
- });
 
- const [registerModalFail, { openModal: openModalFail }] = useModal({
 
-   title: '导入记录',
 
-   height: 400,
 
-   showFooter: false
 
- });
 
- async function handleSubmitImport(file: File) {
 
-   const { error } = await fetchImportPoints(file);
 
-   if (!error) {
 
-     importTemplateRef.value?.closeModal();
 
-     refreshModal();
 
-   } else {
 
-     importTemplateRef.value?.setSubLoading(false);
 
-   }
 
- }
 
- function handleOpenPoints() {
 
-   importTemplateRef.value?.openModal();
 
- }
 
- async function openImportModal() {
 
-   openModalFail();
 
-   const { data } = await fetchGetFailPointsList();
 
-   failData.value = data as Api.government.PointsFailureRecordVO[];
 
- }
 
- function hanleExportFailure(code: string) {
 
-   window.open(`${import.meta.env.VITE_SERVICE_BASE_URL}/platform/pointsFailureRecord/export?code=${code}`, '_blank');
 
- }
 
- </script>
 
- <template>
 
-   <LayoutTable>
 
-     <ZTable :show-table-action="false" :columns="outColumns" :api="fetchGetPointsOutList" @register="registerTable">
 
-       <template #prefix>
 
-         <NButton size="small" @click="openModal">充值积分</NButton>
 
-       </template>
 
-     </ZTable>
 
-     <BasicModal @register="registerModal" @after-leave="refresh">
 
-       <LayoutTable>
 
-         <ZTable
 
-           :show-table-action="false"
 
-           :columns="ModalColumns"
 
-           :api="fetchGetPointsList"
 
-           @register="registerModalTable"
 
-         >
 
-           <template #prefix>
 
-             <NButton size="small" @click="handleOpenPoints">导入积分</NButton>
 
-             <NButton size="small" @click="openImportModal">导入记录</NButton>
 
-           </template>
 
-         </ZTable>
 
-       </LayoutTable>
 
-     </BasicModal>
 
-     <BasicModal @register="registerModalFail">
 
-       <NDataTable :columns="failColumns" :data="failData" size="small" remote class="sm:h-full" />
 
-     </BasicModal>
 
-     <ZImportTemplate
 
-       ref="importTemplateRef"
 
-       url="/platform/pointsRecharge/exportTemplate"
 
-       template-text="导入积分模版.xlsx"
 
-       modal-text="导入积分"
 
-       @submit="handleSubmitImport"
 
-     ></ZImportTemplate>
 
-   </LayoutTable>
 
- </template>
 
- <style scoped></style>
 
 
  |