|
|
@@ -295,7 +295,7 @@
|
|
|
|
|
|
|
|
|
<loading-dialog v-if="loadingDialogVisible" v-model="loadingDialogVisible" :requesting="requesting" :progress="progress" :message="message"
|
|
|
- :disabled-button="disabledButton" :use-new-progress="useNewProgress" :progress-steps="progressSteps" @button-click="handleComplete">
|
|
|
+ :disabled-button="disabledButton" :use-new-progress="useNewProgress" :progress-steps="progressSteps" @button-click="handleComplete" :on-open-folder="openOutputDir">
|
|
|
<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>
|
|
|
@@ -433,7 +433,8 @@ const updateProgressStep = (msgType: string, stepData: any) => {
|
|
|
status: stepData.status,
|
|
|
current: stepData.current || 0,
|
|
|
total: stepData.total || 0,
|
|
|
- error: stepData.error || 0
|
|
|
+ error: stepData.error || 0,
|
|
|
+ folder: newSteps[stepIndex].folder || stepData.folder // 保持已有的folder或使用新的
|
|
|
}
|
|
|
progressSteps.value = newSteps
|
|
|
console.log('Updated step:', newSteps[stepIndex])
|
|
|
@@ -446,7 +447,8 @@ const updateProgressStep = (msgType: string, stepData: any) => {
|
|
|
status: stepData.status,
|
|
|
current: stepData.current || 0,
|
|
|
total: stepData.total || 0,
|
|
|
- error: stepData.error || 0
|
|
|
+ error: stepData.error || 0,
|
|
|
+ folder: stepData.folder // 添加folder字段
|
|
|
}]
|
|
|
console.log('Added new step:', progressSteps.value[progressSteps.value.length - 1])
|
|
|
}
|
|
|
@@ -535,13 +537,13 @@ onMounted(() => {
|
|
|
getLogolist()
|
|
|
|
|
|
loadDetailCache()
|
|
|
-})
|
|
|
|
|
|
-// 监听数据类型变化,自动保存到缓存
|
|
|
-watch(() => form.dataType, (newValue) => {
|
|
|
- if (newValue) {
|
|
|
- saveDataTypeToCache(newValue)
|
|
|
- }
|
|
|
+ // 初始化目录打开状态标记
|
|
|
+ window.segmentFolderOpened = false;
|
|
|
+ window.modelOrSceneFolderOpened = false;
|
|
|
+
|
|
|
+ // 监听子组件发出的打开目录事件
|
|
|
+ window.addEventListener('openFolder', handleOpenFolder);
|
|
|
})
|
|
|
|
|
|
// 页面卸载时清理监听器
|
|
|
@@ -553,8 +555,10 @@ onBeforeUnmount(() => {
|
|
|
clientStore.ipc.removeAllListeners(icpList.socket.message + '_upload_goods_progress');
|
|
|
clientStore.ipc.removeAllListeners(icpList.socket.message + '_detail_result_progress');
|
|
|
clearInterval(INTERVAL.value);
|
|
|
-})
|
|
|
|
|
|
+ // 移除事件监听器
|
|
|
+ window.removeEventListener('openFolder', handleOpenFolder);
|
|
|
+})
|
|
|
|
|
|
// 计算属性,获取当前页可见的模板
|
|
|
const visibleTemplates = computed(() => {
|
|
|
@@ -863,8 +867,8 @@ const handleSegmentProgressMessage = (data: any) => {
|
|
|
const messageData = {
|
|
|
goods_no: '',
|
|
|
temp_name: '',
|
|
|
- status: data.data.status,
|
|
|
- goods_art_nos: data.data.goods_art_nos,
|
|
|
+ status: data.data?.status || '',
|
|
|
+ goods_art_nos: data.data?.goods_art_nos || [],
|
|
|
msg: data.msg,
|
|
|
timestamp: Date.now()
|
|
|
}
|
|
|
@@ -875,12 +879,13 @@ const handleSegmentProgressMessage = (data: any) => {
|
|
|
|
|
|
// 更新新的进度条
|
|
|
if (data.progress) {
|
|
|
- if(['处理完成','处理失败'].includes( progressSteps.value[0].status)){
|
|
|
+ if(['处理完成','处理失败'].includes( progressSteps.value[0]?.status)){
|
|
|
return;
|
|
|
}
|
|
|
updateProgressStep('segment_progress', data.progress)
|
|
|
- if(data.progress?.status === '处理完成'){
|
|
|
- // openOutputDir()
|
|
|
+ if(data.progress?.folder && !window.segmentFolderOpened){
|
|
|
+ window.segmentFolderOpened = true;
|
|
|
+ openOutputDir(data.progress?.folder)
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -905,6 +910,11 @@ const handleUpperFooterProgressMessage = (data: any) => {
|
|
|
// 更新新的进度条
|
|
|
if (data.progress) {
|
|
|
updateProgressStep('upper_footer_progress', data.progress)
|
|
|
+ // 如果是处理完成状态且目录还未打开,则打开目录
|
|
|
+ if(data.progress?.folder && !window.modelOrSceneFolderOpened){
|
|
|
+ window.modelOrSceneFolderOpened = true;
|
|
|
+ openOutputDir(data.progress?.folder)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -928,6 +938,11 @@ const handleSceneProgressMessage = (data: any) => {
|
|
|
// 更新新的进度条
|
|
|
if (data.progress) {
|
|
|
updateProgressStep('scene_progress', data.progress)
|
|
|
+ // 如果是处理完成状态且目录还未打开,则打开目录
|
|
|
+ if(data.progress?.folder && !window.modelOrSceneFolderOpened){
|
|
|
+ window.modelOrSceneFolderOpened = true;
|
|
|
+ openOutputDir(data.progress?.folder)
|
|
|
+ }
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
@@ -955,14 +970,20 @@ const handleUploadGoodsProgressMessage = (data: any) => {
|
|
|
}
|
|
|
|
|
|
// 打开输出目录:appConfig.appPath + '/build/extraResources/py/output'
|
|
|
-const openOutputDir = () => {
|
|
|
+const openOutputDir = (path) => {
|
|
|
try {
|
|
|
- const pyPath = useConfigInfoStore?.appConfig?.pyPath || ''
|
|
|
- if (!pyPath) {
|
|
|
- ElMessage.error('未获取到应用目录 appPath')
|
|
|
- return
|
|
|
+ let fullPath = ''
|
|
|
+ if(path){
|
|
|
+ fullPath = path
|
|
|
+ }else{
|
|
|
+
|
|
|
+ const appPath = useConfigInfoStore?.appConfig?.appPath || ''
|
|
|
+ if (!appPath) {
|
|
|
+ ElMessage.error('未获取到应用目录 appPath')
|
|
|
+ return
|
|
|
+ }
|
|
|
+ fullPath = `${pyPath}\\output`
|
|
|
}
|
|
|
- const fullPath = `${pyPath}\\output`
|
|
|
clientStore.ipc.removeAllListeners(icpList.utils.shellFun);
|
|
|
clientStore.ipc.send(icpList.utils.shellFun, {
|
|
|
action: 'openPath',
|
|
|
@@ -1035,6 +1056,10 @@ const generate = async function () {
|
|
|
return
|
|
|
}
|
|
|
|
|
|
+ // 重置目录打开状态
|
|
|
+ window.segmentFolderOpened = false;
|
|
|
+ window.modelOrSceneFolderOpened = false;
|
|
|
+
|
|
|
if(form.services.length == 0){
|
|
|
ElMessage.error('请选择服务内容')
|
|
|
return
|
|
|
@@ -1252,7 +1277,7 @@ const generate = async function () {
|
|
|
message.value = loadingMsg
|
|
|
requesting.value = false // 重置请求状态,允许再次生成
|
|
|
|
|
|
- handleComplete()
|
|
|
+ // handleComplete()
|
|
|
}
|
|
|
// 部分成功
|
|
|
function handlePartSuccess(output_folder: string, partSuccessList) {
|
|
|
@@ -1410,8 +1435,13 @@ function openPhotographySeniorDetail() {
|
|
|
clientStore.ipc.send(icpList.utils.openMain, params);
|
|
|
}
|
|
|
|
|
|
-
|
|
|
-
|
|
|
+// 处理打开目录事件
|
|
|
+const handleOpenFolder = (event) => {
|
|
|
+ const { folder } = event.detail;
|
|
|
+ if (folder) {
|
|
|
+ openOutputDir(folder);
|
|
|
+ }
|
|
|
+}
|
|
|
|
|
|
const handleComplete = () => {
|
|
|
// loadingDialogVisible.value = false
|