Browse Source

Merge remote-tracking branch 'origin/dev-frontend'

panqiuyao 8 months ago
parent
commit
97e4f5b7a0

+ 3 - 3
frontend/src/views/Photography/components/LoadingDialog.vue

@@ -25,7 +25,7 @@
       <slot name="errList"></slot>
 
       <el-button
-        :disabled="showButton"
+        :disabled="disabledButton"
         type="primary"
         class="action-button   button--primary1  mar-top-20"
         @click="handleButtonClick"
@@ -43,14 +43,14 @@ interface Props {
   modelValue: boolean
   progress?: number
   message?: string
-  showButton?: boolean
+  disabledButton?: boolean
   buttonText?: string
 }
 
 const props = withDefaults(defineProps<Props>(), {
   progress: 0,
   message: '正在为您处理,请稍后',
-  showButton: true,
+  disabledButton: true,
   buttonText: '处理完毕,点击打开最终图片目录'
 })
 

+ 63 - 42
frontend/src/views/Photography/detail.vue

@@ -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);
 }