|
|
@@ -295,7 +295,7 @@
|
|
|
|
|
|
|
|
|
<loading-dialog v-if="loadingDialogVisible" v-model="loadingDialogVisible" :requesting="requesting" :progress="progress" :message="message"
|
|
|
- :disabled-button="disabledButton" @button-click="handleComplete">
|
|
|
+ :disabled-button="disabledButton" :use-new-progress="useNewProgress" :progress-steps="progressSteps" @button-click="handleComplete">
|
|
|
<template v-if="partErrList && partErrList.length > 0" #errList>
|
|
|
<div v-for="(item, idx) in partErrList" :key="idx">
|
|
|
<span v-if="item.goods_art_no">{{ item.goods_art_no }}:</span><span>{{ item.info }}</span>
|
|
|
@@ -316,7 +316,7 @@
|
|
|
<div v-for="(msg, index) in progressMessages" :key="index" class="message-item flex left">
|
|
|
<div class="message-time">{{ formatTime(msg.timestamp) }}</div>
|
|
|
<div class="message-content mar-left-10" v-if="msg">
|
|
|
- <span class="goods-no" v-if="msg.goods_art_nos">货号{{ msg.goods_art_nos.join(', ') }}:</span>
|
|
|
+ <span class="goods-no" v-if="msg.goods_art_nos && msg.goods_art_nos.length > 0">货号{{ msg.goods_art_nos.join(', ') }}:</span>
|
|
|
<span class="message-text">{{ msg.msg }}</span>
|
|
|
</div>
|
|
|
</div>
|
|
|
@@ -406,6 +406,67 @@ const loadingDialogVisible = ref(false)
|
|
|
const progress = ref(0)
|
|
|
const message = ref('正在为您处理,请稍后')
|
|
|
const disabledButton = ref(true)
|
|
|
+
|
|
|
+// 新的进度条相关数据
|
|
|
+const useNewProgress = ref(false)
|
|
|
+const progressSteps = ref<Array<{
|
|
|
+ msg_type: string
|
|
|
+ name: string
|
|
|
+ status: '等待处理' | '正在处理' | '处理完成' | '处理失败'
|
|
|
+ current: number
|
|
|
+ total: number
|
|
|
+ error: number
|
|
|
+}>>([])
|
|
|
+
|
|
|
+// 更新进度步骤
|
|
|
+const updateProgressStep = (msgType: string, stepData: any) => {
|
|
|
+ console.log('updateProgressStep called:', msgType, stepData)
|
|
|
+ const stepIndex = progressSteps.value.findIndex(step => step.msg_type === msgType)
|
|
|
+ if (stepIndex !== -1) {
|
|
|
+ // 更新现有步骤 - 使用新数组来确保响应式更新
|
|
|
+ const newSteps = [...progressSteps.value]
|
|
|
+ newSteps[stepIndex] = {
|
|
|
+ ...newSteps[stepIndex],
|
|
|
+ name: stepData.name, // 保持原有名称或使用新名称
|
|
|
+ status: stepData.status,
|
|
|
+ current: stepData.current || 0,
|
|
|
+ total: stepData.total || 0,
|
|
|
+ error: stepData.error || 0
|
|
|
+ }
|
|
|
+ progressSteps.value = newSteps
|
|
|
+ console.log('Updated step:', newSteps[stepIndex])
|
|
|
+ } else {
|
|
|
+ // 添加新步骤
|
|
|
+ progressSteps.value = [...progressSteps.value, {
|
|
|
+ msg_type: msgType,
|
|
|
+ name: stepData.name,
|
|
|
+ status: stepData.status,
|
|
|
+ current: stepData.current || 0,
|
|
|
+ total: stepData.total || 0,
|
|
|
+ error: stepData.error || 0
|
|
|
+ }]
|
|
|
+ console.log('Added new step:', progressSteps.value[progressSteps.value.length - 1])
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+// 获取步骤名称
|
|
|
+// 初始化进度步骤 - 从后端数据动态获取
|
|
|
+const initProgressSteps = (backendSteps?: any[]) => {
|
|
|
+ if (backendSteps && backendSteps.length > 0) {
|
|
|
+ // 使用后端返回的步骤数据
|
|
|
+ progressSteps.value = backendSteps.map(step => ({
|
|
|
+ msg_type: step.msg_type,
|
|
|
+ name: step.name,
|
|
|
+ status: '等待处理',
|
|
|
+ current: 0,
|
|
|
+ total: step.total || 0,
|
|
|
+ error: 0
|
|
|
+ }))
|
|
|
+ } else {
|
|
|
+ // 默认步骤(当后端没有返回步骤数据时使用)
|
|
|
+ progressSteps.value = []
|
|
|
+ }
|
|
|
+}
|
|
|
// 进度消息队列
|
|
|
const progressMessages = ref<Array<{
|
|
|
goods_no: string
|
|
|
@@ -757,6 +818,12 @@ const handleProgressMessage = (data: any) => {
|
|
|
// 更新当前显示的消息
|
|
|
message.value = data.data.goods_art_nos ? `货号${data.data.goods_art_nos.join(', ')}:${data.msg}` : `${data.msg}`
|
|
|
scrollMessageListToBottom()
|
|
|
+
|
|
|
+ // 更新新的进度条
|
|
|
+
|
|
|
+ if (data.progress) {
|
|
|
+ updateProgressStep('detail_progress', data.progress)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -777,6 +844,11 @@ const handleSegmentProgressMessage = (data: any) => {
|
|
|
// 更新当前显示的消息
|
|
|
message.value = data.data.goods_art_nos ? `货号${data.data.goods_art_nos.join(', ')}:${data.msg}` : `${data.msg}`
|
|
|
scrollMessageListToBottom()
|
|
|
+
|
|
|
+ // 更新新的进度条
|
|
|
+ if (data.progress) {
|
|
|
+ updateProgressStep('segment_progress', data.progress)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -795,6 +867,11 @@ const handleUpperFooterProgressMessage = (data: any) => {
|
|
|
progressMessages.value.push(messageData)
|
|
|
message.value = data.data.goods_art_nos ? `货号${data.data.goods_art_nos.join(', ')}:${data.msg}` : `${data.msg}`
|
|
|
scrollMessageListToBottom()
|
|
|
+
|
|
|
+ // 更新新的进度条
|
|
|
+ if (data.progress) {
|
|
|
+ updateProgressStep('upper_footer_progress', data.progress)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -813,6 +890,11 @@ const handleSceneProgressMessage = (data: any) => {
|
|
|
progressMessages.value.push(messageData)
|
|
|
message.value = data.data.goods_art_nos ? `货号${data.data.goods_art_nos.join(', ')}:${data.msg}` : `${data.msg}`
|
|
|
scrollMessageListToBottom()
|
|
|
+
|
|
|
+ // 更新新的进度条
|
|
|
+ if (data.progress) {
|
|
|
+ updateProgressStep('scene_progress', data.progress)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -831,6 +913,10 @@ const handleUploadGoodsProgressMessage = (data: any) => {
|
|
|
progressMessages.value.push(messageData)
|
|
|
message.value = data.data.goods_art_nos ? `货号${data.data.goods_art_nos.join(', ')}:${data.msg}` : `${data.msg}`
|
|
|
scrollMessageListToBottom()
|
|
|
+ // 更新新的进度条
|
|
|
+ if (data.progress) {
|
|
|
+ updateProgressStep('upload_goods_progress', data.progress)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -959,9 +1045,10 @@ const generate = async function () {
|
|
|
}
|
|
|
|
|
|
// 先进行检测
|
|
|
+ let checkResult;
|
|
|
try {
|
|
|
// ElMessage.info('正在检测参数,请稍候...');
|
|
|
- await checkParams();
|
|
|
+ checkResult = await checkParams();
|
|
|
// ElMessage.success('检测通过,开始生成...');
|
|
|
} catch (error) {
|
|
|
ElMessage.error(error.message || '检测失败,请检查参数');
|
|
|
@@ -1017,6 +1104,12 @@ const generate = async function () {
|
|
|
progressMessages.value = []
|
|
|
showMessageHistory.value = true
|
|
|
|
|
|
+ // 启用新的进度条并初始化步骤
|
|
|
+ useNewProgress.value = true
|
|
|
+ // 从检测结果中获取步骤信息
|
|
|
+ const backendSteps = checkResult?.data?.progress || []
|
|
|
+ initProgressSteps(backendSteps)
|
|
|
+
|
|
|
openLoadingDialog(goods_art_nos.value.length * 10)
|
|
|
clientStore.ipc.removeAllListeners(icpList.socket.message + '_detail_result_progress');
|
|
|
clientStore.ipc.send(icpList.generate.generatePhotoDetail, params);
|
|
|
@@ -1155,7 +1248,7 @@ const generate = async function () {
|
|
|
message.value = '全部货号生成失败'
|
|
|
|
|
|
}
|
|
|
- requesting.value = false
|
|
|
+ requesting.value = true
|
|
|
});
|
|
|
}
|
|
|
const openLoadingDialog = (timer: number) => {
|