陈薪名
1 year ago
8 changed files with 285 additions and 98 deletions
@ -0,0 +1,134 @@ |
|||||
|
<template> |
||||
|
<Dialog v-model="dialogVisible" title="工位信息导入" width="400"> |
||||
|
<el-upload |
||||
|
ref="uploadRef" |
||||
|
v-model:file-list="fileList" |
||||
|
:action="importUrl + '?updateSupport=' + updateSupport" |
||||
|
:auto-upload="false" |
||||
|
:disabled="formLoading" |
||||
|
:headers="uploadHeaders" |
||||
|
:limit="1" |
||||
|
:on-error="submitFormError" |
||||
|
:on-exceed="handleExceed" |
||||
|
:on-success="submitFormSuccess" |
||||
|
accept=".xlsx, .xls" |
||||
|
drag |
||||
|
> |
||||
|
<Icon icon="ep:upload" /> |
||||
|
<div class="el-upload__text">将文件拖到此处,或<em>点击上传</em></div> |
||||
|
<template #tip> |
||||
|
<div class="el-upload__tip text-center"> |
||||
|
<div class="el-upload__tip"> |
||||
|
<el-checkbox v-model="updateSupport" /> |
||||
|
是否更新已经存在的工位信息数据 |
||||
|
</div> |
||||
|
<span>仅允许导入 xls、xlsx 格式文件。</span> |
||||
|
<el-link |
||||
|
:underline="false" |
||||
|
style="font-size: 12px; vertical-align: baseline" |
||||
|
type="primary" |
||||
|
@click="importTemplate" |
||||
|
> |
||||
|
下载模板 |
||||
|
</el-link> |
||||
|
</div> |
||||
|
</template> |
||||
|
</el-upload> |
||||
|
<template #footer> |
||||
|
<el-button :disabled="formLoading" type="primary" @click="submitForm">确 定</el-button> |
||||
|
<el-button @click="dialogVisible = false">取 消</el-button> |
||||
|
</template> |
||||
|
</Dialog> |
||||
|
</template> |
||||
|
<script lang="ts" setup> |
||||
|
import * as WorkstationApi from '@/api/wms/workstation' |
||||
|
import { getAccessToken, getTenantId } from '@/utils/auth' |
||||
|
import download from '@/utils/download' |
||||
|
|
||||
|
defineOptions({ name: 'WmsItembasicImportForm' }) |
||||
|
|
||||
|
const message = useMessage() // 消息弹窗 |
||||
|
|
||||
|
const dialogVisible = ref(false) // 弹窗的是否展示 |
||||
|
const formLoading = ref(false) // 表单的加载中 |
||||
|
const uploadRef = ref() |
||||
|
const importUrl = |
||||
|
import.meta.env.VITE_BASE_URL + import.meta.env.VITE_API_URL + '/wms/workstation/import' |
||||
|
const uploadHeaders = ref() // 上传 Header 头 |
||||
|
const fileList = ref([]) // 文件列表 |
||||
|
const updateSupport = ref(0) // 是否更新已经存在的物品基本信息数据 |
||||
|
|
||||
|
/** 打开弹窗 */ |
||||
|
const open = () => { |
||||
|
dialogVisible.value = true |
||||
|
resetForm() |
||||
|
} |
||||
|
defineExpose({ open }) // 提供 open 方法,用于打开弹窗 |
||||
|
|
||||
|
/** 提交表单 */ |
||||
|
const submitForm = async () => { |
||||
|
if (fileList.value.length == 0) { |
||||
|
message.error('请上传文件') |
||||
|
return |
||||
|
} |
||||
|
// 提交请求 |
||||
|
uploadHeaders.value = { |
||||
|
Authorization: 'Bearer ' + getAccessToken(), |
||||
|
'tenant-id': getTenantId() |
||||
|
} |
||||
|
formLoading.value = true |
||||
|
uploadRef.value!.submit() |
||||
|
} |
||||
|
|
||||
|
/** 文件上传成功 */ |
||||
|
const emits = defineEmits(['success']) |
||||
|
const submitFormSuccess = (response: any) => { |
||||
|
if (response.code !== 0) { |
||||
|
message.error(response.msg) |
||||
|
formLoading.value = false |
||||
|
return |
||||
|
} |
||||
|
// 拼接提示语 |
||||
|
// const data = response.data |
||||
|
// console.log(data) |
||||
|
// let text = '上传成功数量:' + data.createUsernames.length + ';' |
||||
|
// for (let username of data.createUsernames) { |
||||
|
// text += '< ' + username + ' >' |
||||
|
// } |
||||
|
// text += '更新成功数量:' + data.updateUsernames.length + ';' |
||||
|
// for (const username of data.updateUsernames) { |
||||
|
// text += '< ' + username + ' >' |
||||
|
// } |
||||
|
// text += '更新失败数量:' + Object.keys(data.failureUsernames).length + ';' |
||||
|
// for (const username in data.failureUsernames) { |
||||
|
// text += '< ' + username + ': ' + data.failureUsernames[username] + ' >' |
||||
|
// } |
||||
|
// message.alert(text) |
||||
|
// 发送操作成功的事件 |
||||
|
emits('success') |
||||
|
} |
||||
|
|
||||
|
/** 上传错误提示 */ |
||||
|
const submitFormError = (): void => { |
||||
|
message.error('上传失败,请您重新上传!') |
||||
|
formLoading.value = false |
||||
|
} |
||||
|
|
||||
|
/** 重置表单 */ |
||||
|
const resetForm = () => { |
||||
|
// 重置上传状态和文件 |
||||
|
formLoading.value = false |
||||
|
uploadRef.value?.clearFiles() |
||||
|
} |
||||
|
|
||||
|
/** 文件数超出提示 */ |
||||
|
const handleExceed = (): void => { |
||||
|
message.error('最多只能上传一个文件!') |
||||
|
} |
||||
|
|
||||
|
/** 下载模板操作 */ |
||||
|
const importTemplate = async () => { |
||||
|
const res = await WorkstationApi.importWorkstationTemplate() |
||||
|
download.excel(res, '工位信息导入模版.xls') |
||||
|
} |
||||
|
</script> |
Loading…
Reference in new issue