|
|
@@ -137,7 +137,9 @@
|
|
|
<div class="flex-item left">
|
|
|
<div class="section-title">
|
|
|
<img src="@/assets/images/Photography/zhuangshi.png" style="width: 32px; height: 32px;" />
|
|
|
- 详情资料准备 (2选1)
|
|
|
+ 详情资料准备 (2选1)
|
|
|
+
|
|
|
+ <el-button v-if="form.dataType == '1'" type="text" class="mar-left-10 fs-16" @click="downloadExcel">下载商品基础资料模版</el-button>
|
|
|
</div>
|
|
|
</div>
|
|
|
|
|
|
@@ -169,8 +171,8 @@
|
|
|
</div>
|
|
|
|
|
|
|
|
|
- <loading-dialog v-model="loadingDialogVisible" :progress="progress" :message="message" :show-button="showButton"
|
|
|
- @button-click="handleComplete">
|
|
|
+ <loading-dialog v-model="loadingDialogVisible" :progress="progress" :message="message"
|
|
|
+ :disabled-button="disabledButton" @button-click="handleComplete">
|
|
|
<template v-if="partErrList && partErrList.length > 0" #errList>
|
|
|
<div v-for="(item, idx) in partErrList" :key="idx">
|
|
|
<span>{{ item.goods_art_no }}</span>:<span>{{ item.info }}</span>
|
|
|
@@ -231,14 +233,16 @@ const completeDirectory = ref('')
|
|
|
const loadingDialogVisible = ref(false)
|
|
|
const progress = ref(0)
|
|
|
const message = ref('正在为您处理,请稍后')
|
|
|
-const showButton = ref(true)
|
|
|
+const disabledButton = ref(true)
|
|
|
|
|
|
let templates = ref([])
|
|
|
let goods_art_nos = ref([])
|
|
|
let partErrList = ref([])
|
|
|
+const excel_template_url = ref('')
|
|
|
+
|
|
|
|
|
|
// 定义一个定时器变量
|
|
|
-const INTERVAL = ref<number | NodeJS.Timeout | null>(null);
|
|
|
+const INTERVAL = ref<number | NodeJS.Timeout | null>(null);
|
|
|
|
|
|
|
|
|
|
|
|
@@ -256,11 +260,11 @@ const form = reactive({
|
|
|
selectTemplate: {}, //选中的模板
|
|
|
dataType: '1', // 1: 选择excel文件 2: 系统对接
|
|
|
logo_path: '', // 主图LOGO
|
|
|
- excelFilePath: 'D:\\MyDocuments\\PythonCode\\MyPython\\red_dragonfly\\deal_pics\\auto_capture_V2\\auto_photo', // 商品基础资料EXCEL文件选择
|
|
|
+ excelFilePath: '', // 商品基础资料EXCEL文件选择
|
|
|
})
|
|
|
onMounted(() => {
|
|
|
const goods_art_data = route.query.goods_art_nos
|
|
|
- goods_art_nos.value = Array.isArray(goods_art_data) ? goods_art_data : [goods_art_data]
|
|
|
+ goods_art_nos.value = Array.isArray(goods_art_data) ? goods_art_data : [goods_art_data]
|
|
|
getCompanyTemplates()
|
|
|
})
|
|
|
|
|
|
@@ -286,10 +290,24 @@ const getCompanyTemplates = async () => {
|
|
|
if (templates.value.length > 0) {
|
|
|
form.selectTemplate = templates.value[0]
|
|
|
}
|
|
|
+ excel_template_url.value = data.excel_template_url
|
|
|
// 计算总页数
|
|
|
totalPage.value = Math.ceil(templates.value.length / itemsPerPage);
|
|
|
}
|
|
|
|
|
|
+const downloadExcel = () => {
|
|
|
+ const a = document.createElement('a')
|
|
|
+ a.href = excel_template_url.value,
|
|
|
+ a.download = '商品基础资料模版'
|
|
|
+ document.body.appendChild(a)
|
|
|
+ a.click()
|
|
|
+ setTimeout(() => {
|
|
|
+ document.body.removeChild(a);
|
|
|
+ }, 1000);
|
|
|
+}
|
|
|
+
|
|
|
+
|
|
|
+
|
|
|
|
|
|
const onCurrentChange = (page) => {
|
|
|
queryParams.current = page;
|
|
|
@@ -322,7 +340,7 @@ const generate = async function () {
|
|
|
// 开启进度弹窗
|
|
|
progress.value = 0
|
|
|
openLoadingDialog(20)
|
|
|
- console.log("%c Line:324 🍆 params", "color:#3f7cff", params);
|
|
|
+ console.log("params", "color:#3f7cff", params);
|
|
|
clientStore.ipc.removeAllListeners(icpList.generate.generatePhotoDetail);
|
|
|
clientStore.ipc.send(icpList.generate.generatePhotoDetail, params);
|
|
|
clientStore.ipc.on(icpList.generate.generatePhotoDetail, (event, result) => {
|
|
|
@@ -332,44 +350,40 @@ const generate = async function () {
|
|
|
clearInterval(INTERVAL.value)
|
|
|
if (result.code === 0) {
|
|
|
const { output_folder, list } = result.data
|
|
|
- // 若out_put_dir为空,说明全部生成失败,走失败处理
|
|
|
- // if (output_folder === '') {
|
|
|
- // console.log('全部生成失败')
|
|
|
- // handleFail('生成失败! 请联系管理员处理, 或稍后重试')
|
|
|
- // } else {
|
|
|
-
|
|
|
- // 判断 result.data.list 中 是否存在 success 为fals的 若存在 则走部分成功处理 否则走全部成功处理
|
|
|
- let hasFail = false
|
|
|
- list.map(item => {
|
|
|
- if (!item.success) {
|
|
|
- hasFail = true
|
|
|
- }
|
|
|
- })
|
|
|
- // 部分成功
|
|
|
- if (hasFail) {
|
|
|
- console.log('部分成功')
|
|
|
- handlePartSuccess(output_folder, list)
|
|
|
- } else { // 全部成功
|
|
|
- console.log('全部成功')
|
|
|
- handleSuccess(output_folder, '全部生成成功')
|
|
|
- }
|
|
|
- // }
|
|
|
-
|
|
|
+ const allSuccess = list.every(item => item.success);
|
|
|
+ const allFailure = list.every(item => !item.success);
|
|
|
+ if (allSuccess) {
|
|
|
+ console.log("全部成功")
|
|
|
+ handleSuccess(output_folder, '全部生成成功')
|
|
|
+ } else if (allFailure) {
|
|
|
+ console.log("全部失败");
|
|
|
+ handleFailure(list)
|
|
|
+ } else {
|
|
|
+ console.log("部分成功,部分失败");
|
|
|
+ handlePartSuccess(output_folder, list)
|
|
|
+ }
|
|
|
} else {
|
|
|
console.log('code全部生成失败')
|
|
|
handleFail(result.msg)
|
|
|
}
|
|
|
- //生成失败
|
|
|
+ //生成失败 (接口请求失败)
|
|
|
function handleFail(errorMsg: string) {
|
|
|
loadingDialogVisible.value = false
|
|
|
- showButton.value = false
|
|
|
+ disabledButton.value = false
|
|
|
if (errorMsg) {
|
|
|
ElMessage.error(errorMsg)
|
|
|
}
|
|
|
}
|
|
|
+
|
|
|
+ // 全部生成成功
|
|
|
+ function handleSuccess(href, loadingMsg) {
|
|
|
+ completeDirectory.value = href
|
|
|
+ progress.value = 100
|
|
|
+ disabledButton.value = false
|
|
|
+ message.value = loadingMsg
|
|
|
+ }
|
|
|
// 部分成功
|
|
|
function handlePartSuccess(output_folder: string, partSuccessList) {
|
|
|
- // 错误list展示 失败的货号整理成字符串,用逗号分隔
|
|
|
let errorList = []
|
|
|
partSuccessList.map(item => {
|
|
|
if (!item.success) {
|
|
|
@@ -377,21 +391,28 @@ const generate = async function () {
|
|
|
}
|
|
|
})
|
|
|
partErrList.value = errorList
|
|
|
- handleSuccess(output_folder, '部分货号生成失败',)
|
|
|
+ handleSuccess(output_folder, '部分货号生成失败')
|
|
|
}
|
|
|
- // 全部生成成功
|
|
|
- function handleSuccess(href, loadingMsg) {
|
|
|
- completeDirectory.value = href
|
|
|
+ // 全部生成失败
|
|
|
+ function handleFailure(partSuccessList) {
|
|
|
+ let errorList = []
|
|
|
+ partSuccessList.map(item => {
|
|
|
+ if (!item.success) {
|
|
|
+ errorList.push(item)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ partErrList.value = errorList
|
|
|
+ completeDirectory.value = ''
|
|
|
progress.value = 100
|
|
|
- showButton.value = false
|
|
|
- message.value = loadingMsg
|
|
|
+ disabledButton.value = true
|
|
|
+ message.value = '全部货号生成失败'
|
|
|
}
|
|
|
});
|
|
|
}
|
|
|
const openLoadingDialog = (timer: number) => {
|
|
|
loadingDialogVisible.value = true
|
|
|
|
|
|
- showButton.value = true
|
|
|
+ disabledButton.value = true
|
|
|
// 根据传入的秒数计算每次增加的进度值
|
|
|
const step = 100 / timer
|
|
|
INTERVAL.value = setInterval(() => {
|
|
|
@@ -451,7 +472,7 @@ const handleComplete = () => {
|
|
|
clientStore.ipc.removeAllListeners(icpList.utils.shellFun);
|
|
|
let params = {
|
|
|
action: 'openPath',
|
|
|
- params: completeDirectory.value?.replaceAll('/','\\')
|
|
|
+ params: completeDirectory.value?.replaceAll('/', '\\')
|
|
|
}
|
|
|
clientStore.ipc.send(icpList.utils.shellFun, params);
|
|
|
}
|