1
1
<!-- 客户导入窗口 -->
2
2
<template >
3
3
<Dialog v-model =" dialogVisible" title =" 客户导入" width =" 400" >
4
+ <div class =" flex items-center my-10px" >
5
+ <span class =" mr-10px" >负责人</span >
6
+ <el-select v-model =" ownerUserId" class =" !w-240px" clearable >
7
+ <el-option
8
+ v-for =" item in userOptions"
9
+ :key =" item.id"
10
+ :label =" item.nickname"
11
+ :value =" item.id"
12
+ />
13
+ </el-select >
14
+ </div >
4
15
<el-upload
5
16
ref =" uploadRef"
6
17
v-model:file-list =" fileList"
7
18
:auto-upload =" false"
8
19
:disabled =" formLoading"
9
- :headers =" uploadHeaders"
10
20
:limit =" 1"
11
- :on-error =" submitFormError"
12
21
:on-exceed =" handleExceed"
13
- :on-success =" submitFormSuccess"
14
22
accept =" .xlsx, .xls"
15
23
action =" none"
16
24
drag
43
51
</template >
44
52
<script lang="ts" setup>
45
53
import * as CustomerApi from ' @/api/crm/customer'
46
- import { getAccessToken , getTenantId } from ' @/utils/auth'
47
54
import download from ' @/utils/download'
48
55
import type { UploadUserFile } from ' element-plus'
56
+ import * as UserApi from ' @/api/system/user'
57
+ import { useUserStore } from ' @/store/modules/user'
49
58
50
59
defineOptions ({ name: ' SystemUserImportForm' })
51
60
@@ -54,15 +63,18 @@ const message = useMessage() // 消息弹窗
54
63
const dialogVisible = ref (false ) // 弹窗的是否展示
55
64
const formLoading = ref (false ) // 表单的加载中
56
65
const uploadRef = ref ()
57
- const uploadHeaders = ref () // 上传 Header 头
58
66
const fileList = ref <UploadUserFile []>([]) // 文件列表
59
67
const updateSupport = ref (false ) // 是否更新已经存在的客户数据
68
+ const ownerUserId = ref <undefined | number >() // 负责人编号
69
+ const userOptions = ref <UserApi .UserVO []>([]) // 用户列表
60
70
61
71
/** 打开弹窗 */
62
- const open = () => {
72
+ const open = async () => {
63
73
dialogVisible .value = true
64
- fileList .value = []
65
- resetForm ()
74
+ await resetForm ()
75
+ // 获得用户列表
76
+ userOptions .value = await UserApi .getSimpleUserList ()
77
+ ownerUserId .value = useUserStore ().getUser .id
66
78
}
67
79
defineExpose ({ open }) // 提供 open 方法,用于打开弹窗
68
80
@@ -72,17 +84,20 @@ const submitForm = async () => {
72
84
message .error (' 请上传文件' )
73
85
return
74
86
}
75
- // 提交请求
76
- uploadHeaders .value = {
77
- Authorization: ' Bearer ' + getAccessToken (),
78
- ' tenant-id' : getTenantId ()
79
- }
87
+
80
88
formLoading .value = true
81
- const formData = new FormData ()
82
- formData .append (' updateSupport' , updateSupport .value )
83
- formData .append (' file' , fileList .value [0 ].raw )
84
- // TODO @芋艿:后面是不是可以采用这种形式,去掉 uploadHeaders
85
- await CustomerApi .handleImport (formData )
89
+ try {
90
+ const formData = new FormData ()
91
+ formData .append (' updateSupport' , String (updateSupport .value ))
92
+ formData .append (' file' , fileList .value [0 ].raw as Blob )
93
+ formData .append (' ownerUserId' , String (ownerUserId .value ))
94
+ const res = await CustomerApi .handleImport (formData )
95
+ submitFormSuccess (res )
96
+ } catch {
97
+ submitFormError ()
98
+ } finally {
99
+ formLoading .value = false
100
+ }
86
101
}
87
102
88
103
/** 文件上传成功 */
@@ -108,6 +123,8 @@ const submitFormSuccess = (response: any) => {
108
123
text += ' < ' + customerName + ' : ' + data .failureCustomerNames [customerName ] + ' >'
109
124
}
110
125
message .alert (text )
126
+ formLoading .value = false
127
+ dialogVisible .value = false
111
128
// 发送操作成功的事件
112
129
emits (' success' )
113
130
}
@@ -119,9 +136,12 @@ const submitFormError = (): void => {
119
136
}
120
137
121
138
/** 重置表单 */
122
- const resetForm = () => {
139
+ const resetForm = async () => {
123
140
// 重置上传状态和文件
124
- formLoading .value = false
141
+ fileList .value = []
142
+ updateSupport .value = false
143
+ ownerUserId .value = undefined
144
+ await nextTick ()
125
145
uploadRef .value ?.clearFiles ()
126
146
}
127
147
0 commit comments