tangjunhao 3 сар өмнө
parent
commit
da27c71187

+ 43 - 2
src/utils/request.ts

@@ -160,8 +160,8 @@ const uploadFile = (params, channelNo = 'service', callback1) => {
     }
   }
   let url = getUrl(channelNo);//完善请求url
-  params.append("clientToken", store.getters.token || getToken());
-  params.append("userId", store.getters.userId);
+  params.append("clientToken", getToken());
+  params.append("userId", getUserId());
   params.append("channelNo", channelNo);//配置上行报文公共包头
   console.log(params);
   return new Promise((resolve, reject) => {
@@ -176,6 +176,46 @@ const uploadFile = (params, channelNo = 'service', callback1) => {
   })
 }
 
+const downloadFile = (params, channelNo = 'service') => {
+  const config = {
+    timeout: 60000,
+ 
+  }
+
+  const url = getUrl(channelNo) // 获取请求地址
+
+  // 加上公共参数
+  const fullParams = {
+    ...params,
+    clientToken: getToken(),
+    userId: getUserId(),
+    channelNo
+  }
+
+  return new Promise((resolve, reject) => {
+    axios.post(url, fullParams, config).then(response => {
+      // 提取文件名(如果后端在 header 中返回了 Content-Disposition)
+      const disposition = response.headers['content-disposition']
+      let fileName = 'downloaded_file'
+      if (disposition && disposition.includes('filename=')) {
+        fileName = decodeURIComponent(disposition.split('filename=')[1].replace(/"/g, ''))
+      }
+
+      // 创建 blob 链接进行下载
+      const blob = new Blob([response.data])
+      const link = document.createElement('a')
+      link.href = URL.createObjectURL(blob)
+      link.download = fileName
+      link.click()
+      URL.revokeObjectURL(link.href)
+
+      resolve(response)
+    }).catch(error => {
+      reject(error)
+    })
+  })
+}
+
 // 获取图片验证码
 const getCode = (channelNo = 'service') => {
   let rand = Math.random();
@@ -198,6 +238,7 @@ const enPassword = (password) => {
 export {
   request,
   uploadFile,
+  downloadFile,
   getCode,
   getImage,
   enPassword,

+ 53 - 3
src/views/home.vue

@@ -1650,7 +1650,9 @@
                                     oninput="value=value.replace(/[^\a-\z\A-\Z0-9\u4E00-\u9FA5]/g,'')" class="w-50 m-2"
                                   /> 
                                 </el-form-item>
-                                <el-button class="btncolor" v-if="activeIndex2 === 0">导入</el-button>
+                                <input type="file" ref="fileInput" style="display: none" accept=".xlsx, .xls" @change="handleFileChange"/>
+                                <el-button class="btncolor" v-if="activeIndex2 === 0" @click="importdesignvar">导入</el-button>
+                                <el-button class="btncolor" v-if="activeIndex2 === 0" @click="exportdesignvar">导出</el-button>
                                 <el-button class="btncolor" @click="onAddItem">新建</el-button>
                                 <el-button class="btncolor" @click="onokItem">确定</el-button>
                               </div>
@@ -1679,11 +1681,12 @@
 import { ref, onMounted, reactive, provide, nextTick } from "vue";
 import { RouterView, RouterLink, useRouter, useRoute } from "vue-router"
 import myheader from "@/components/header.vue"
-import { request, uploadFile } from "@/utils/request";
+import { request, uploadFile, downloadFile } from "@/utils/request";
 import { ElMessage, ElButton, ElDialog, ElSelect } from 'element-plus'
 import { Edit, CaretBottom } from '@element-plus/icons-vue'
 // import '@/utils/flexible'
 import { ArrowDown } from '@element-plus/icons-vue';
+import axios from 'axios'
 import s0 from "@/assets/img/s0.png"
 import gc1 from "@/assets/img/gc1.png"
 import gc2 from "@/assets/img/gc2.png"
@@ -3356,6 +3359,53 @@ const targetclick = () => {
 const modelgroup=()=>{
 
 }
+
+const fileInput = ref(null)
+
+const importdesignvar = () => {
+  fileInput.value.click();
+}
+
+const handleFileChange = async (event) => {
+  const file = event.target.files[0]
+  if (!file) return
+  
+  try {
+    // 直接上传文件到后端
+    const formData = new FormData()
+    formData.append('file', file)
+    formData.append('transCode', 'MDO0081')
+    formData.append('pid', pid.value)
+    
+    // 这里替换为你的实际API调用
+    const response = await uploadFile(formData)
+
+    ElMessage.success('文件上传成功')
+  } catch (error) {
+    console.error('上传失败:', error)
+    ElMessage.error('文件上传失败')
+  } finally {
+    event.target.value = '' // 重置input
+  }
+}
+
+const exportdesignvar = () => {
+  const params = {
+    transCode: 'MDO0080',
+    pid: pid.value
+  }
+
+  request(params)
+    .then(() => {
+      ElMessage.success('导出成功')
+    })
+    .catch(() => {
+      ElMessage.error('导出失败')
+    })
+}
+
+
+
 //新增
 const onAddItem = () => {
   let tablevalnum = Number(tableval.value) > 1 ? Number(tableval.value) : 1
@@ -4020,7 +4070,7 @@ const logsget = () => {
       }
     })
     .catch((err) => {
-      ElMessage.error(err.returnMsg)
+      ElMessage.error("日志赋值失败")
     })
 }
 // 字符串截取

+ 8 - 8
src/views/titlecomponent/Xfoil.vue

@@ -200,13 +200,6 @@ let tabslist = ref([
 
 
 let inParams = ref([
-  {
-    code: "alpha",
-    value: 0.1,
-    name: "AoA",
-    flag: 1,
-    
-  },
   {
     code: "mach",
     value: 0.1,
@@ -220,7 +213,14 @@ let inParams = ref([
     name: "Re",
     flag: 1,
     
-  }
+  },
+  {
+    code: "alpha",
+    value: 0.1,
+    name: "AoA",
+    flag: 1,
+    
+  },
 ])
 let outParams = ref([
 {