| 
					
				 | 
			
			
				@@ -1,10 +1,16 @@ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 <script setup lang="tsx"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import { ref } from 'vue'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-import { fetchGetPointsList, fetchImportPoints } from '@/service/api/government/points'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+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 { ModalMethods } from '@/components/zt/Modal/types'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 import type { FormSchema } from '@/components/zt/Form/types/form'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+import SVGIcon from '@/components/custom/svg-icon.vue'; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const importTemplateRef = ref<ModalMethods>(); 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 const ModalColumns: NaiveUI.TableColumn<Api.government.PointsRecharge>[] = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -38,6 +44,28 @@ const ModalColumns: NaiveUI.TableColumn<Api.government.PointsRecharge>[] = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     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', 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -50,10 +78,77 @@ const searchSchemas: FormSchema[] = [ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     component: 'NInput' 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   } 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 ]; 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				- 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-const [registerTable] = useTable({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+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, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    schemas: searchSchemas.slice(0, 1), 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     inline: false, 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     size: 'small', 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     labelPlacement: 'left', 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -87,6 +182,11 @@ const [registerModal, { openModal }] = useModal({ 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				   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) { 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -99,16 +199,24 @@ async function handleSubmitImport(file: File) { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				 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="ModalColumns" :api="fetchGetPointsList" @register="registerTable"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <ZTable :show-table-action="false" :columns="outColumns" :api="fetchGetPointsOutList" @register="registerTable"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <template #prefix> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <NButton size="small" @click="openModal">充值积分</NButton> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       </template> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				     </ZTable> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-    <BasicModal @register="registerModal"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				+    <BasicModal @register="registerModal" @after-leave="refresh"> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				       <LayoutTable> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         <ZTable 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           :show-table-action="false" 
			 | 
		
	
	
		
			
				| 
					
				 | 
			
			
				@@ -118,12 +226,14 @@ function handleOpenPoints() { 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				         > 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				           <template #prefix> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				             <NButton size="small" @click="handleOpenPoints">导入积分</NButton> 
			 | 
		
	
		
			
				 | 
				 | 
			
			
				-            <NButton size="small">导入记录</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" 
			 |