Kaynağa Gözat

导入用户

刘洋 1 yıl önce
ebeveyn
işleme
8f18c097bd

+ 2 - 0
src/api/api-types/user.d.ts

@@ -235,6 +235,7 @@ export namespace User {
 
   type ImportUsersTemplate = BaseDefine<any, any>
   type ImportUsersFile = BaseDefine<any, any>
+  type ImportUsersFileNew = BaseDefine<any, any>
   type OnlineCheck = BaseDefine<any, any>
 
   type UnlockScreen = BaseDefine<{ password: string }, any>
@@ -266,6 +267,7 @@ export namespace User {
     unLockScreen: UnlockScreen
     importUsersTemplate: ImportUsersTemplate
     importUsersFile: ImportUsersFile
+    importUsersFileNew: ImportUsersFileNew
     onlineCheck: OnlineCheck
   }
 }

+ 7 - 0
src/api/user.ts

@@ -61,6 +61,13 @@ const UserApi: DefineApiModule<User.ApiMap> = {
     },
     timeout: 0,
   },
+  importUsersFileNew: {
+    url: '/api/user/import',
+    headers: {
+      'Content-Type': 'multipart/form-data',
+    },
+    timeout: 0,
+  },
   onlineCheck: '/api/user/online/signal',
 }
 

+ 2 - 2
src/hooks/useUploadFile.ts

@@ -2,8 +2,8 @@ import { ref } from 'vue'
 import { genFileId } from 'element-plus'
 import type { UploadFile, UploadProps, UploadRawFile, UploadInstance } from 'element-plus'
 
-const useUploadFile = () => {
-  const upload = ref<UploadInstance>()
+const useUploadFile = (upload: any) => {
+  // const upload = ref<UploadInstance>()
   const fileList = ref<UploadFile[]>([])
   const percentage = ref<number>(0)
 

+ 18 - 5
src/modules/admin-user/manage/index.vue

@@ -71,9 +71,19 @@
             </template>
           </el-popconfirm>
           <el-button v-else size="small" type="primary" @click="checkSelected('disabled')">禁用</el-button>
-          <el-button size="small" custom-1 @click="onExportUsers">导出</el-button>
           <el-upload
-            ref="upload"
+            ref="upload1"
+            v-model:file-list="fileList"
+            :limit="1"
+            :show-file-list="false"
+            :on-exceed="onExceed"
+            :auto-upload="false"
+          >
+            <el-button size="small" custom-1 class="m-l-base" :loading="importUsersLoading">导入</el-button>
+          </el-upload>
+          <el-button size="small" custom-1 class="m-l-base" @click="onExportUsers">导出</el-button>
+          <!-- <el-upload
+            ref="upload1"
             v-model:file-list="fileList"
             :limit="1"
             :show-file-list="false"
@@ -88,7 +98,7 @@
               :loading="importUsersLoading"
               >导入姓名</el-button
             >
-          </el-upload>
+          </el-upload> -->
           <!-- <el-link class="m-l-base" type="primary" @click="downTpl">导入姓名模板下载</el-link> -->
         </div>
         <base-table
@@ -186,10 +196,13 @@ import useMainStore from '@/store/main'
 import useVW from '@/hooks/useVW'
 import bus from '@/utils/bus'
 import type { ExtractMultipleApiResponse } from '@/api/api'
+import type { UploadInstance } from 'element-plus'
 const newPwd = ref('')
 const { push } = useRouter()
-const { fileList, upload, percentage, setPercentage, onExceed } = useUploadFile()
-const { fetch: importUsersFile, loading: importUsersLoading } = useFetch('importUsersFile')
+
+const upload1 = ref<UploadInstance>()
+const { fileList, upload, percentage, setPercentage, onExceed } = useUploadFile(upload1)
+const { fetch: importUsersFile, loading: importUsersLoading } = useFetch('importUsersFileNew')
 const importUsersModel = reactive<any>({
   file: void 0,
 })