From 33dbc6a161554f3a897f9e9273feb4f2c1b47381 Mon Sep 17 00:00:00 2001
From: chenlu <1320612696@qq.com>
Date: 星期一, 15 十二月 2025 17:04:27 +0800
Subject: [PATCH] Merge branch 'master' of http://10.153.19.25:10105/r/ERP_override

---
 north-glass-erp/northglass-erp/src/components/sd/order/UploadPicture.vue |   92 +++++++++++++++++++++++++++++++---------------
 1 files changed, 62 insertions(+), 30 deletions(-)

diff --git a/north-glass-erp/northglass-erp/src/components/sd/order/UploadPicture.vue b/north-glass-erp/northglass-erp/src/components/sd/order/UploadPicture.vue
index 0b54627..7cb8bb5 100644
--- a/north-glass-erp/northglass-erp/src/components/sd/order/UploadPicture.vue
+++ b/north-glass-erp/northglass-erp/src/components/sd/order/UploadPicture.vue
@@ -6,7 +6,9 @@
 } from '@element-plus/icons-vue'
 import { ElMessage, ElMessageBox } from 'element-plus'
 import request from "@/utils/requestByFile"
+import {useI18n} from "vue-i18n";
 
+const { t } = useI18n()
 const uploadRef = ref()
 const fileList = ref([])
 const converting = ref(false)
@@ -19,7 +21,8 @@
 let result = ref(null)
 let props = defineProps({
   rowIndex:null,
-  orderId:null
+  orderId:null,
+  state:null
 })
 
 const form = reactive({
@@ -44,7 +47,7 @@
   request.post(`/orderFile/deleteOrderNumberFile/${props.orderId}/${props.rowIndex.orderNumber}`).then(res=>{
     result.value = null
     conversionResult.value = null
-    ElMessage.success("鍒犻櫎鎴愬姛")
+    ElMessage.success(t("basicData.msg.deleteSuccess"))
   })
 }
 
@@ -72,9 +75,25 @@
       return value;
     });
 
-    const uint8Array = Uint8Array(bytes);
-    const file = File([uint8Array], 'a.dwg', { type:'application/x-dwg'  })
-    downloadFile(file);
+    const uint8Array = new Uint8Array(bytes);
+    const file = new File([uint8Array], `${props.orderId}-${props.rowIndex.orderNumber}.dwg`, { type:'application/x-dwg'  })
+
+    const url = URL.createObjectURL(file);
+    // 鍒涘缓涓嬭浇閾炬帴
+    const a = document.createElement('a');
+    a.href = url;
+    a.download = file.name;
+    a.style.display = 'none';
+
+    // 娣诲姞鍒癉OM骞惰Е鍙戠偣鍑�
+    document.body.appendChild(a);
+    a.click();
+
+    // 娓呯悊璧勬簮
+    setTimeout(() => {
+      document.body.removeChild(a);
+      URL.revokeObjectURL(url);
+    }, 100);
   } catch (error) {
     console.error('瑙f瀽Java瀛楄妭鏁扮粍瀛楃涓叉椂鍑洪敊:', error);
     throw new Error('鏃犳晥鐨凧ava瀛楄妭鏁扮粍鏍煎紡');
@@ -85,7 +104,7 @@
 const loadSupportedFormats = async () => {
   try {
     if (fileList.value.length === 0) {
-      ElMessage.warning('璇峰厛閫夋嫨瑕佷笂浼犵殑DWG鏂囦欢')
+      ElMessage.warning(t("order.msg.pleaseUploadPicture1"))
       return
     }
     loadingFormats.value = true
@@ -93,19 +112,19 @@
     converting.value = true
     progressPercentage.value = 0
     progressStatus.value = ''
-    progressText.value = '鍑嗗涓婁紶...'
+    progressText.value = t("order.msg.pleaseUploadPicture2")
 
     // 妯℃嫙杩涘害鏇存柊
     const progressInterval = setInterval(() => {
       if (progressPercentage.value < 80) {
         progressPercentage.value += 10
-        progressText.value = `涓婁紶涓�... ${progressPercentage.value}%`
+        progressText.value = t("order.msg.pleaseUploadPicture3")+progressPercentage.value+'%'
       }
     }, 500)
 
-
     const data ={
-      file:fileList.value[0].raw
+      file:fileList.value[0].raw,
+      name:fileList.value[0].raw.name
     }
     request.post(`/orderFile/updateOrderFileByOrderNumber/${props.orderId}/${props.rowIndex.orderNumber}`,data).then(res=>{
       if (res.code === '200') {
@@ -115,7 +134,7 @@
         clearInterval(progressInterval)
         progressPercentage.value = 100
         progressStatus.value = 'success'
-        progressText.value = '涓婁紶瀹屾垚!'
+        progressText.value = t("order.msg.pleaseUploadPicture4")
         uploadRef.value.clearFiles()
         fileList.value = []
         setTimeout(() => {
@@ -125,31 +144,43 @@
       }
     })
   } catch (error) {
-    ElMessage.error('涓婁紶澶辫触')
+    ElMessage.error(t("order.msg.pleaseUploadPicture5"))
   } finally {
     loadingFormats.value = false
   }
 }
 
+const fileTypeCheck = (file) => {
+  const fileName = file.raw.name.toLowerCase();
 
+  switch (true) {
+    case /\.dwg$/.test(fileName):
+    case /\.png$/.test(fileName):
+    case /\.jpg$/.test(fileName):
+      return true;
+    default:
+      return false;
+  }
+};
 
 
 
 const handleFileChange = (file) => {
-  console.log(file.type)
-  if (!(file.raw.name.toLowerCase().endsWith('.dwg') || file.raw.name.toLowerCase().endsWith('.dxf'))) {
-    ElMessage.error('璇烽�夋嫨DWG鎴朌XF鏍煎紡鐨勬枃浠�')
+  const fileTypeCheckBoole = fileTypeCheck(file)
+  if (!(fileTypeCheckBoole )) {
+    //ElMessage.error('璇烽�夋嫨DWG鎴朌XF鏍煎紡鐨勬枃浠�')
+    ElMessage.error(t("order.msg.pleaseUploadPicture6"))
     uploadRef.value.clearFiles()
     return
   }
 
   if (file.raw.size > 50 * 1024 * 1024) {
-    ElMessage.error('鏂囦欢澶у皬涓嶈兘瓒呰繃50MB')
+    ElMessage.error(t("order.msg.pleaseUploadPicture7"))
     uploadRef.value.clearFiles()
     return
   }
   fileList.value = [file]
-  ElMessage.success(`宸查�夋嫨鏂囦欢: ${file.name}`)
+  ElMessage.success(t("order.msg.pleaseUploadPicture8")+file.name)
 }
 
 const handleFileRemove = () => {
@@ -188,7 +219,7 @@
         <div class="card-header">
           <span class="header-title">
             <el-icon><Document /></el-icon>
-            DWG鏂囦欢涓婁紶
+            {{$t("order.msg.pleaseUploadPicture9")}}
           </span>
 
         </div>
@@ -206,16 +237,15 @@
           :on-remove="handleFileRemove"
           :file-list="fileList"
           :limit="1"
-          :accept="'.dwg' || '.dxf' "
           :disabled="converting"
       >
         <el-icon class="el-icon--upload"><UploadFilled /></el-icon>
         <div class="el-upload__text">
-          鎷栨嫿DWG鏂囦欢鍒版澶勬垨 <em>鐐瑰嚮閫夋嫨鏂囦欢</em>
+          {{$t("order.msg.pleaseUploadPicture10")}} <em>{{$t("order.msg.pleaseUploadPicture11")}}</em>
         </div>
         <template #tip>
           <div class="el-upload__tip">
-            浠呮敮鎸� .dwg 鏍煎紡鏂囦欢锛屼笖鏂囦欢澶у皬涓嶈秴杩�50MB
+            {{$t("order.msg.pleaseUploadPicture12")}}
           </div>
         </template>
       </el-upload>
@@ -228,27 +258,28 @@
               type="primary"
               :loading="converting"
               @click="loadSupportedFormats"
-              :disabled="!form.format"
+              :disabled="!form.format || props.state !== 1 || converting"
           >
             <template #icon>
               <el-icon><MagicStick /></el-icon>
             </template>
-            淇濆瓨
+            {{$t("basicData.save")}}
           </el-button>
 
           <el-button @click="handleReset"
-                     :loading="converting">
+                     :loading="converting"
+                     :disabled="props.state !== 1 || converting">
             <template #icon>
               <el-icon><RefreshLeft /></el-icon>
             </template>
-            閲嶇疆
+            {{$t("craft.reset")}}
           </el-button>
         </div>
       </div>
 
       <!-- 杞崲杩涘害 -->
       <div v-if="converting" class="conversion-progress">
-        <el-divider content-position="left">涓婁紶杩涘害</el-divider>
+        <el-divider content-position="left">{{$t("order.msg.pleaseUploadPicture13")}}</el-divider>
         <el-progress
             :percentage="progressPercentage"
             :status="progressStatus"
@@ -261,11 +292,11 @@
 
       <!-- 杞崲缁撴灉 -->
       <div v-if="conversionResult" class="conversion-result">
-        <el-divider content-position="left">涓婁紶缁撴灉</el-divider>
+        <el-divider content-position="left">{{$t("order.msg.pleaseUploadPicture14")}}</el-divider>
 
         <el-result
             icon="success"
-            :sub-title="`鏂囦欢宸叉垚鍔熻浆鏍煎紡`"
+            :sub-title='t("order.msg.pleaseUploadPicture15")'
         >
           <template #extra>
             <div class="result-content">
@@ -298,14 +329,15 @@
                 ><template #icon>
                   <el-icon><Download/></el-icon>
                 </template>
-                  涓嬭浇
+                  {{$t("order.msg.pleaseUploadPicture16")}}
                 </el-button>
                 <el-button
                     @click = 'deleteFile'
+                    :disabled="props.state !== 1"
                 ><template #icon>
                   <el-icon><Delete  /></el-icon>
                 </template>
-                  鍒犻櫎
+                  {{$t("basicData.delete")}}
                 </el-button>
               </div>
             </div>

--
Gitblit v1.8.0