Bläddra i källkod

内部订单价格导入导出

黄梓星 1 år sedan
förälder
incheckning
a300762078

+ 27 - 0
src/api/innerData/order.js

@@ -31,4 +31,31 @@ export function editOrder(data) {
     method: 'put',
     data: data
   })
+}
+// 内部订单价格模板下载
+export function mbDownload(params) {
+  return request({
+    url: `/sip/order/exportTemplate`,
+    method: 'get',
+    params: params,
+    responseType: 'blob'
+  })
+}
+// 内部订单价格导出
+export function mbExport(data) {
+  return request({
+    url: `/sip/order/export`,
+    method: 'post',
+    data: data,
+    responseType: 'blob'
+  })
+}
+// 内部订单价格失败下载
+export function errDownload(data) {
+  return request({
+    url: `/sip/order/export/error`,
+    method: 'post',
+    data: data,
+    responseType: 'blob'
+  })
 }

+ 2 - 0
src/views/innerData/addOrderInfo.vue

@@ -206,11 +206,13 @@ export default {
     clearHang(index) {
       this.tableData[index].sipSupplierName = ''
       this.tableData[index].sipSupplier = ''
+      this.tableData[index].sipSupplierCode = ''
     },
     selectionsToInput(selection) {
       if ( this.referCondition.type == "SIP_SUPPLIER_PARAM") {
         this.tableData[this.tableIndex].sipSupplierName = selection[0].name;
         this.tableData[this.tableIndex].sipSupplier = selection[0].id;
+        this.tableData[this.tableIndex].sipSupplierCode = selection[0].code;
       }
     },
     chooseDept(index, type, isPage, title) {

+ 149 - 2
src/views/innerData/orderInfoIndex.vue

@@ -4,6 +4,9 @@
       <el-card v-loading="loading" style="position: relative;">
         <p>采购订单信息列表</p>
         <div class="btn_grooup">
+          <el-button type="primary" size="mini" @click="downLoadMb">下载模板</el-button>
+          <el-button type="primary" size="mini" @click="importMb">导入</el-button>
+          <el-button type="primary" size="mini" @click="exportMb">导出</el-button>
           <el-button type="primary" size="mini" @click="addDivision">新增</el-button>
           <el-button type="primary" size="mini" @click="delItems">删除</el-button>
         </div>
@@ -44,12 +47,46 @@
       </el-card>
     </div>
 
+    <!-- 用户导入对话框 -->
+    <el-dialog title="数据导入" :visible.sync="upload.open" width="400px">
+      <el-upload
+        ref="upload"
+        :limit="1"
+        accept=".xlsx, .xls"
+        :headers="upload.headers"
+        :action="upload.url"
+        :disabled="upload.isUploading"
+        :on-progress="handleFileUploadProgress"
+        :on-success="handleFileSuccess"
+        :on-error="errorFile"
+        :auto-upload="false"
+        drag
+      >
+        <i class="el-icon-upload"></i>
+        <div class="el-upload__text">
+          将文件拖到此处,或
+          <em>点击上传</em>
+        </div>
+        <div class="el-upload__tip" style="color: red" slot="tip">
+          提示:仅允许导入“xls”或“xlsx”格式文件!
+        </div>
+      </el-upload>
+      <div slot="footer">
+        <el-button :size="size" type="primary" @click="submitFileForm"
+          >确 定</el-button
+        >
+        <el-button :size="size" @click="upload.open = false">取 消</el-button>
+      </div>
+    </el-dialog>
+
     <Add v-model="isList" v-if="!isList" :pageStu="page" :disable="disable" :row="rowDetail" @refresh="searchList"/>
   </div>
 </template>
 
 <script>
-import { orderList, delOrder } from '@/api/innerData/order.js'
+import { orderList, delOrder, mbDownload, mbExport, errDownload } from '@/api/innerData/order.js'
+// 导入的token
+import { getToken } from "@/utils/auth";
 export default {
   dicts: [],
   components: {
@@ -102,7 +139,21 @@ export default {
         hiddenabled: true,
       },
       })),
-      ids: []
+      ids: [],
+      upload: {
+        // 是否显示弹出层(导入)
+        open: false,
+        // 弹出层标题(导入)
+        title: "数据导入",
+        // 是否禁用上传
+        isUploading: false,
+        // 是否更新已经存在的用户数据
+        updateSupport: 1,
+        // 设置上传的请求头部
+        headers: { Authorization: "Bearer " + getToken() },
+        // 上传的地址
+        url: process.env.VUE_APP_BASE_API + "/sip/order/import",
+      },
     }
   },
   created() {
@@ -159,6 +210,102 @@ export default {
         }
       })
     },
+    downLoadMb() {
+      this.$modal.loading("正在下载模板,请稍后...");
+      mbDownload().then((res) => {
+          this.$modal.closeLoading();
+          const blob = new Blob([res], {
+            type: "application/vnd.ms-excel;charset=UTF-8",
+          }); // 创建一个类文件对象:Blob对象表示一个不可变的、原始数据的类文件对象
+          console.log('blob1', blob)
+          const downloadElement = document.createElement("a"); //创建a标签
+          const href = window.URL.createObjectURL(blob); // 创建下载的链接
+          // var temp = res.headers["content-disposition"];
+          // var fileName = decodeURIComponent(temp.split("filename=")[1]); // 中文需要转码 (前端乱码)
+          // var name = fileName.split(";")[0]; //切割成文件名
+          downloadElement.href = href; //下载地址
+          downloadElement.download =
+            "内部订单价格模板" + this.parseTime(new Date().getTime()) + ".xlsx"; // 下载后文件名
+          document.body.appendChild(downloadElement);
+          downloadElement.click(); // 点击下载
+          document.body.removeChild(downloadElement); // 下载完成移除元素
+          window.URL.revokeObjectURL(href); // 释放blob对象
+          this.download.open = false;
+        })
+        .catch((err) => {
+          this.$modal.closeLoading();
+        });
+    },
+    importMb() {
+      this.upload.title = "用户导入";
+      this.upload.open = true;
+    },
+    // 文件上传中处理
+    handleFileUploadProgress(event, file, fileList) {
+      this.upload.isUploading = true;
+      this.$modal.loading("正在导入数据,请稍后...");
+    },
+    // 文件上传成功处理
+    handleFileSuccess(response, file, fileList) {
+      this.$modal.closeLoading();
+      this.upload.open = false;
+      this.upload.isUploading = false;
+      this.$refs.upload.clearFiles();
+      // this.$alert(response.msg, "导入结果", { dangerouslyUseHTMLString: true });
+      if (response.data && response.data.length !== 0) {
+        this.$modal.notifyError("导入失败,请检查格式是否正确");
+        console.log(response.data)
+        errDownload(response.data).then((res) => {
+          this.$modal.closeLoading();
+          const blob = new Blob([res], {
+            type: "application/vnd.ms-excel;charset=UTF-8",
+          }); // 创建一个类文件对象:Blob对象表示一个不可变的、原始数据的类文件对象
+          const downloadElement = document.createElement("a"); //创建a标签
+          const href = window.URL.createObjectURL(blob); // 创建下载的链接
+          downloadElement.href = href; //下载地址
+          downloadElement.download ="内部订单价格导入失败" + this.parseTime(new Date().getTime()) +".xlsx"; // 下载后文件名
+          document.body.appendChild(downloadElement);
+          downloadElement.click(); // 点击下载
+          document.body.removeChild(downloadElement); // 下载完成移除元素
+          window.URL.revokeObjectURL(href); // 释放blob对象
+        })
+        .catch((err) => {
+          this.$modal.closeLoading();
+        });
+      } else {
+        this.$modal.notifySuccess("导入成功");
+        this.useQuery(this.params, this.pageInfo);
+      }
+      console.log('结果',response)
+    },
+    errorFile(err) {
+      this.$modal.closeLoading();
+      this.$modal.notifyError("文件已变动,请重新上传");
+    },
+    // 提交上传文件
+    submitFileForm() {
+      this.$refs.upload.submit();
+    },
+    exportMb() {
+      mbExport().then((res) => {
+          this.$modal.closeLoading();
+          console.log(res)
+          const blob = new Blob([res], {
+            type: "application/vnd.ms-excel;charset=UTF-8",
+          }); // 创建一个类文件对象:Blob对象表示一个不可变的、原始数据的类文件对象
+          const downloadElement = document.createElement("a"); //创建a标签
+          const href = window.URL.createObjectURL(blob); // 创建下载的链接
+          downloadElement.href = href; //下载地址
+          downloadElement.download ="内部订单价格导出" + this.parseTime(new Date().getTime()) +".xlsx"; // 下载后文件名
+          document.body.appendChild(downloadElement);
+          downloadElement.click(); // 点击下载
+          document.body.removeChild(downloadElement); // 下载完成移除元素
+          window.URL.revokeObjectURL(href); // 释放blob对象
+        })
+        .catch((err) => {
+          this.$modal.closeLoading();
+        });
+    },
   }
 }
 </script>