| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315 | 
							- <script setup lang="tsx">
 
- import { ref } from 'vue';
 
- import { NButton, NPopconfirm, NSwitch } from 'naive-ui';
 
- import {
 
-   fetchAddUser,
 
-   fetchDeleteUser,
 
-   fetchEditUser,
 
-   fetchExportUser,
 
-   fetchGetImportRecordList,
 
-   fetchGetUserList
 
- } from '@/service/api/government/user-list';
 
- import { fetchGetAllChannelList } from '@/service/api/goods/store-goods';
 
- import { useTable } from '@/components/zt/Table/hooks/useTable';
 
- import { useModalFrom } from '@/components/zt/ModalForm/hooks/useModalForm';
 
- import type { ModalMethods } from '@/components/zt/Modal/types';
 
- import { useModal } from '@/components/zt/Modal/hooks/useModal';
 
- import SVGIcon from '@/components/custom/svg-icon.vue';
 
- const importTemplateRef = ref<ModalMethods>();
 
- const columns: NaiveUI.TableColumn<Api.government.userList>[] = [
 
-   {
 
-     key: 'channelName',
 
-     title: '所属企业',
 
-     align: 'center'
 
-   },
 
-   {
 
-     key: 'realName',
 
-     title: '员工姓名',
 
-     align: 'center'
 
-   },
 
-   {
 
-     key: 'userMobile',
 
-     title: '手机号码',
 
-     align: 'center'
 
-   },
 
-   {
 
-     key: 'total',
 
-     title: '总充值积分',
 
-     align: 'center'
 
-   },
 
-   {
 
-     key: 'available',
 
-     title: '当前可用积分',
 
-     align: 'center'
 
-   },
 
-   {
 
-     key: 'expired',
 
-     title: '已过期积分',
 
-     align: 'center'
 
-   },
 
-   {
 
-     key: 'used',
 
-     title: '已消耗积分',
 
-     align: 'center'
 
-   },
 
-   {
 
-     key: 'status',
 
-     title: '状态',
 
-     align: 'center',
 
-     render: row => {
 
-       return (
 
-         <NSwitch
 
-           uncheckedValue={0}
 
-           checkedValue={1}
 
-           value={row.status}
 
-           onUpdate:value={val => {
 
-             row.status = val;
 
-             fetchEditUser(row);
 
-           }}
 
-         ></NSwitch>
 
-       );
 
-     }
 
-   }
 
- ];
 
- const [registerTable, { refresh, setTableLoading }] = useTable({
 
-   searchFormConfig: {
 
-     schemas: [
 
-       {
 
-         field: 'channelId',
 
-         label: '所属企业',
 
-         component: 'ApiSelect',
 
-         componentProps: {
 
-           api: fetchGetAllChannelList,
 
-           labelFeild: 'channelName',
 
-           valueFeild: 'id'
 
-         }
 
-       },
 
-       {
 
-         field: 'realName',
 
-         label: '员工姓名',
 
-         component: 'NInput'
 
-       },
 
-       {
 
-         field: 'userMobile',
 
-         label: '手机号码',
 
-         component: 'NInput'
 
-       }
 
-     ],
 
-     inline: false,
 
-     size: 'small',
 
-     labelPlacement: 'left',
 
-     isFull: false
 
-   },
 
-   tableConfig: {
 
-     keyField: 'userId',
 
-     title: '员工列表',
 
-     showAddButton: true
 
-   }
 
- });
 
- const [registerModalTable] = useTable({
 
-   tableConfig: {
 
-     keyField: 'id',
 
-     title: '导入记录',
 
-     showTableHeaderAction: false,
 
-     showSearch: false,
 
-     minHeight: 400
 
-   }
 
- });
 
- const failColumns: NaiveUI.TableColumn<Api.government.importRecordList>[] = [
 
-   {
 
-     key: 'index',
 
-     title: '序号',
 
-     align: 'center',
 
-     render(_, rowIndex) {
 
-       return rowIndex + 1;
 
-     }
 
-   },
 
-   {
 
-     key: 'taskName',
 
-     title: '任务名称',
 
-     align: 'center'
 
-   },
 
-   {
 
-     key: 'createTime',
 
-     title: '时间',
 
-     align: 'center'
 
-   },
 
-   {
 
-     key: 'operator',
 
-     title: '操作人',
 
-     align: 'center'
 
-   },
 
-   {
 
-     key: 'result',
 
-     title: '状态',
 
-     align: 'center',
 
-     width: 240,
 
-     render(row) {
 
-       return (
 
-         <div class={'flex items-center'}>
 
-           共{Number(row.success) + Number(row.error)}条,成功:{row.success},
 
-           <span class={'flex items-center text-red-500'}>
 
-             失败:
 
-             {row.error}
 
-             {row.error != 0 && (
 
-               <div onClick={() => hanleExportFailure(row.batchNo)}>
 
-                 <SVGIcon
 
-                   icon={'tdesign:download'}
 
-                   class={'ml-1 cursor-pointer text-20px'}
 
-                   style={'color:var(--n-loading-color)'}
 
-                 ></SVGIcon>
 
-               </div>
 
-             )}
 
-           </span>
 
-         </div>
 
-       );
 
-     }
 
-   }
 
- ];
 
- function hanleExportFailure(batchNo: string) {
 
-   window.open(
 
-     `${import.meta.env.VITE_SERVICE_BASE_URL}/admin/enterprise/downloadErrorExcel?batchNo=${batchNo}`,
 
-     '_blank'
 
-   );
 
- }
 
- async function handleDelete(row: Api.government.userList) {
 
-   setTableLoading(true);
 
-   await fetchDeleteUser(row.userId);
 
-   console.log(row, 'row');
 
-   refresh();
 
- }
 
- const [registerModalForm, { openModal, closeModal, getFieldsValue, setFieldsValue }] = useModalFrom({
 
-   modalConfig: {
 
-     title: '员工 ',
 
-     width: 600,
 
-     isShowHeaderText: true,
 
-     height: 200
 
-   },
 
-   formConfig: {
 
-     schemas: [
 
-       {
 
-         label: '',
 
-         field: 'userId',
 
-         component: 'NInput',
 
-         show: false
 
-       },
 
-       {
 
-         field: 'realName',
 
-         label: '员工姓名',
 
-         component: 'NInput',
 
-         required: true
 
-       },
 
-       {
 
-         field: 'userMobile',
 
-         label: '手机号码',
 
-         component: 'NInput',
 
-         required: true,
 
-         componentProps: {
 
-           maxlength: 11
 
-         },
 
-         rules: [
 
-           {
 
-             pattern: /^1[3456789]\d{9}$/,
 
-             message: '请输入正确的手机号',
 
-             trigger: ['blur', 'input']
 
-           }
 
-         ]
 
-       },
 
-       {
 
-         field: 'channelId',
 
-         label: '所属企业',
 
-         component: 'ApiSelect',
 
-         componentProps: {
 
-           api: fetchGetAllChannelList,
 
-           labelFeild: 'channelName',
 
-           valueFeild: 'id'
 
-         },
 
-         required: true
 
-       }
 
-     ],
 
-     gridProps: {
 
-       cols: '1'
 
-     },
 
-     labelWidth: 120
 
-   }
 
- });
 
- const [registerModalFail, { openModal: openModalFail }] = useModal({
 
-   title: '导入记录',
 
-   height: 600,
 
-   showFooter: false,
 
-   width: 1200
 
- });
 
- async function handleSubmit() {
 
-   const form = await getFieldsValue();
 
-   if (form.userId) {
 
-     await fetchEditUser(form);
 
-   } else {
 
-     await fetchAddUser(form);
 
-   }
 
-   closeModal();
 
-   refresh();
 
- }
 
- async function edit(row: Recordable) {
 
-   openModal(row);
 
-   setFieldsValue(row);
 
- }
 
- function openImportModal() {
 
-   importTemplateRef.value?.openModal();
 
- }
 
- async function handleSubmitImport(file: File) {
 
-   const { error } = await fetchExportUser({ file });
 
-   if (!error) {
 
-     importTemplateRef.value?.closeModal();
 
-     refresh();
 
-   }
 
-   importTemplateRef.value?.setSubLoading(false);
 
- }
 
- </script>
 
- <template>
 
-   <LayoutTable>
 
-     <ZTable :columns="columns" :api="fetchGetUserList" @register="registerTable" @add="openModal">
 
-       <template #op="{ row }">
 
-         <NButton size="small" ghost type="primary" :disabled="Boolean(row.available)" @click="edit(row)">编辑</NButton>
 
-         <NPopconfirm @positive-click="handleDelete(row)">
 
-           <template #trigger>
 
-             <NButton size="small" type="error" ghost :disabled="Boolean(row.available)">删除</NButton>
 
-           </template>
 
-           确定删除吗?
 
-         </NPopconfirm>
 
-       </template>
 
-       <template #prefix>
 
-         <NSpace>
 
-           <NButton size="small" @click="openImportModal">导入员工</NButton>
 
-           <NButton size="small" @click="openModalFail">导入记录</NButton>
 
-         </NSpace>
 
-       </template>
 
-     </ZTable>
 
-     <ZImportTemplate
 
-       ref="importTemplateRef"
 
-       url="/admin/enterprise/downloadExcel"
 
-       template-text="员工导入模版.xlsx"
 
-       modal-text="导入员工"
 
-       @submit="handleSubmitImport"
 
-     ></ZImportTemplate>
 
-     <BasicModal @register="registerModalFail">
 
-       <LayoutTable>
 
-         <ZTable
 
-           :columns="failColumns"
 
-           :show-table-action="false"
 
-           :api="fetchGetImportRecordList"
 
-           @register="registerModalTable"
 
-         ></ZTable>
 
-       </LayoutTable>
 
-     </BasicModal>
 
-     <BasicModelForm @register-modal-form="registerModalForm" @submit-form="handleSubmit"></BasicModelForm>
 
-   </LayoutTable>
 
- </template>
 
- <style scoped></style>
 
 
  |