|
|
@@ -173,7 +173,14 @@
|
|
|
|
|
|
|
|
|
<loading-dialog v-model="loadingDialogVisible" :progress="progress" :message="message" :show-button="showButton"
|
|
|
- @button-click="handleComplete" />
|
|
|
+ @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>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+
|
|
|
+ </loading-dialog>
|
|
|
<el-dialog v-model="dialogVisible">
|
|
|
<img style="width: 100%;" :src="dialogImageUrl" alt="Preview Image" />
|
|
|
</el-dialog>
|
|
|
@@ -227,6 +234,12 @@ const showButton = ref(true)
|
|
|
|
|
|
let templates = ref([])
|
|
|
let goods_art_nos = ref([])
|
|
|
+let partErrList = ref([])
|
|
|
+
|
|
|
+// 定义一个定时器变量
|
|
|
+const INTERVAL = ref<number | NodeJS.Timeout | null>(null);
|
|
|
+
|
|
|
+
|
|
|
|
|
|
|
|
|
// 状态变量
|
|
|
@@ -245,7 +258,8 @@ const form = reactive({
|
|
|
excelFilePath: 'D:\\MyDocuments\\PythonCode\\MyPython\\red_dragonfly\\deal_pics\\auto_capture_V2\\auto_photo', // 商品基础资料EXCEL文件选择
|
|
|
})
|
|
|
onMounted(() => {
|
|
|
- goods_art_nos.value = route.query.goods_art_nos
|
|
|
+ const goods_art_data = route.query.goods_art_nos
|
|
|
+ goods_art_nos.value = Array.isArray(goods_art_data) ? goods_art_data : [goods_art_data]
|
|
|
getCompanyTemplates()
|
|
|
})
|
|
|
|
|
|
@@ -296,7 +310,7 @@ const generate = async function () {
|
|
|
})
|
|
|
})
|
|
|
const params = {
|
|
|
- goods_art_no: goods_art_nos.value,
|
|
|
+ goods_art_no: JSON.parse(JSON.stringify(goods_art_nos.value)),
|
|
|
logo_path: form.logo_path,
|
|
|
temp_name: form.selectTemplate.template_id,
|
|
|
excel_path: '',
|
|
|
@@ -304,42 +318,90 @@ const generate = async function () {
|
|
|
temp_list,
|
|
|
token,
|
|
|
}
|
|
|
- loadingDialogVisible.value = true
|
|
|
+ // 开启进度弹窗
|
|
|
progress.value = 0
|
|
|
- showButton.value = true
|
|
|
-
|
|
|
- const interval = setInterval(() => {
|
|
|
- if (progress.value < 100) {
|
|
|
- progress.value += 10
|
|
|
- }
|
|
|
- }, 1000)
|
|
|
+ openLoadingDialog(20)
|
|
|
+ console.log("%c Line:324 🍆 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) => {
|
|
|
+ console.log('result', result)
|
|
|
+ partErrList.value = []
|
|
|
clientStore.ipc.removeAllListeners(icpList.generate.generatePhotoDetail);
|
|
|
- console.log("%c Line:306 🍻 result", "color:#42b983", result);
|
|
|
- clearInterval(interval)
|
|
|
+ clearInterval(INTERVAL.value)
|
|
|
if (result.code === 0) {
|
|
|
- const href = result.data.out_put_dir
|
|
|
- completeDirectory.value = href
|
|
|
- progress.value = 100
|
|
|
- message.value = '全部处理完毕'
|
|
|
- showButton.value = false
|
|
|
+ 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, '全部生成成功')
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
} else {
|
|
|
+ console.log('code全部生成失败')
|
|
|
+ handleFail(result.msg)
|
|
|
+ }
|
|
|
+ //生成失败
|
|
|
+ function handleFail(errorMsg: string) {
|
|
|
+ loadingDialogVisible.value = false
|
|
|
showButton.value = false
|
|
|
- if (result.msg) {
|
|
|
- ElMessage.error(result.msg)
|
|
|
+ if (errorMsg) {
|
|
|
+ ElMessage.error(errorMsg)
|
|
|
}
|
|
|
}
|
|
|
+ // 部分成功
|
|
|
+ function handlePartSuccess(output_folder: string, partSuccessList) {
|
|
|
+ // 错误list展示 失败的货号整理成字符串,用逗号分隔
|
|
|
+ let errorList = []
|
|
|
+ partSuccessList.map(item => {
|
|
|
+ if (!item.success) {
|
|
|
+ errorList.push(item)
|
|
|
+ }
|
|
|
+ })
|
|
|
+ console.log("%c Line:376 🍖 errorList", "color:#2eafb0", errorList);
|
|
|
+ partErrList.value = errorList
|
|
|
+ handleSuccess(output_folder, '部分货号生成失败',)
|
|
|
+ }
|
|
|
+ // 全部生成成功
|
|
|
+ function handleSuccess(href, loadingMsg) {
|
|
|
+ completeDirectory.value = href
|
|
|
+ progress.value = 100
|
|
|
+ showButton.value = false
|
|
|
+ message.value = loadingMsg
|
|
|
+ }
|
|
|
});
|
|
|
+}
|
|
|
+const openLoadingDialog = (timer: number) => {
|
|
|
+ loadingDialogVisible.value = true
|
|
|
+
|
|
|
+ showButton.value = true
|
|
|
+ // 根据传入的秒数计算每次增加的进度值
|
|
|
+ const step = 100 / timer
|
|
|
+ INTERVAL.value = setInterval(() => {
|
|
|
+ if (progress.value < 100) {
|
|
|
+ progress.value = Math.round(progress.value + step)
|
|
|
+ }
|
|
|
+ }, 1000)
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
-
|
|
|
const onInput = (value) => {
|
|
|
form.logo_path = value
|
|
|
}
|
|
|
@@ -380,33 +442,16 @@ function openPhotographySeniorDetail() {
|
|
|
}
|
|
|
|
|
|
|
|
|
-const startProcess = () => {
|
|
|
- loadingDialogVisible.value = true
|
|
|
- progress.value = 0
|
|
|
- showButton.value = true
|
|
|
- // 模拟进度更新
|
|
|
- const interval = setInterval(() => {
|
|
|
- if (progress.value < 100) {
|
|
|
- progress.value += 10
|
|
|
- } else {
|
|
|
- clearInterval(interval)
|
|
|
- message.value = '全部处理完毕'
|
|
|
- showButton.value = false
|
|
|
- }
|
|
|
- }, 500)
|
|
|
-}
|
|
|
+
|
|
|
|
|
|
const handleComplete = () => {
|
|
|
loadingDialogVisible.value = false
|
|
|
// 这里可以添加打开目录的逻辑
|
|
|
- // 打开目录
|
|
|
clientStore.ipc.removeAllListeners(icpList.utils.openDirectory);
|
|
|
- console.log('打开目录')
|
|
|
clientStore.ipc.removeAllListeners(icpList.utils.shellFun);
|
|
|
let params = {
|
|
|
- action: 'openPath',
|
|
|
- params: completeDirectory.value
|
|
|
- // params: 'C:\Users\\21333\\Desktop\\HQT\\151405492752642685067862.jpg'
|
|
|
+ action: 'openPath',
|
|
|
+ params: completeDirectory.value
|
|
|
}
|
|
|
clientStore.ipc.send(icpList.utils.shellFun, params);
|
|
|
}
|