qinhb преди 5 месеца
родител
ревизия
c8ed89e1f6
променени са 4 файла, в които са добавени 80 реда и са изтрити 4 реда
  1. 9 0
      src/api/order/index.ts
  2. 3 1
      src/utils/request.ts
  3. 21 1
      src/views/plan/order/index.vue
  4. 47 2
      src/views/plan/workOrder/index.vue

+ 9 - 0
src/api/order/index.ts

@@ -133,6 +133,15 @@ export function exportOrder(queryParams: OrderInfoQuery) {
   });
 }
 
+
+export function exportDataInfo(type,id) {
+  return request({
+    url: "/api/v1/data/"+type+"/" + id,
+    method: "get",
+    responseType: "arraybuffer",
+  });
+}
+
 /**
  * 导入
  *

+ 3 - 1
src/utils/request.ts

@@ -26,12 +26,14 @@ service.interceptors.request.use(
 service.interceptors.response.use(
   (response: AxiosResponse) => {
     const { code, msg } = response.data;
-
+    console.log(msg,'2')
     if (code === "200") {
+        console.log('1')
       return response.data;
     }
     // 响应数据为二进制流处理(Excel导出)
     if (response.data instanceof ArrayBuffer) {
+        console.log('3')
       return response;
     }
 

+ 21 - 1
src/views/plan/order/index.vue

@@ -92,6 +92,15 @@
           @click="toReturn(row.orderCode)"
           ><i-ep-edit />领料
         </el-button>
+
+        <el-button
+            icon="el-icon-setting"
+            text
+            @click="exportDataZip(row.id)"
+            type="primary"
+            v-if="row.orderState === '5'"
+            :size="size"
+        >生产数据包</el-button>
         <!--        <el-button
           type="primary"
           size="small"
@@ -248,6 +257,7 @@ import {
   deleteOrders,
   downloadTemplateApi,
   exportOrder,
+  exportDataInfo,
   getOrderPage,
   importOrder,
   updateOrder,
@@ -292,6 +302,12 @@ const importData = reactive({
   file: undefined,
   fileList: [],
 });
+
+const exportDataZip = (id) => {
+  exportDataInfo(0,id).then((response) => {
+    downFile(response);
+  });
+};
 const materialInfo = (value) => {
   form.value.materialCode = value.materialCode;
   form.value.materialName = value.materialName;
@@ -895,7 +911,11 @@ const handleFileExceed = (files: any) => {
 /** 导出 */
 const handleExport = () => {
   exportOrder(search.value).then((response: any) => {
-    downFile(response);
+    if(response.code !== '200'){
+      ElMessage.error(response.msg);
+    }else{
+      downFile(response);
+    }
   });
 };
 onMounted?.(() => {

+ 47 - 2
src/views/plan/workOrder/index.vue

@@ -138,6 +138,15 @@
           >生产随工单</el-button
         >
 
+        <el-button
+            icon="el-icon-setting"
+            text
+            @click="exportDataZip(row.id)"
+            type="primary"
+            v-if="row.workOrderState === '6'"
+            :size="size"
+        >生产数据包</el-button>
+
         <!--        <el-button
           icon="el-icon-notebook"
           text
@@ -313,6 +322,7 @@ import {
   distributeWorkOrder,
   revokeWorkOrder,
   lockWorkOrder,
+  exportOrder,
   excelWorkOrder,
   workOrderGroupStr,
 } from "@/api/order";
@@ -325,7 +335,7 @@ import CheckTask from "./components/check-task.vue";
 import { checkPerm } from "@/directive/permission";
 import { queryDictDataByType } from "@/api/system/dict";
 import { getProExcel } from "@/api/excel";
-import proWorkOrderExcel from "./components/proWorkOrderExcel.vue";
+import { exportDataInfo } from "@/api/order";
 import { getWorkshopData } from "@/api/report";
 import ButtonPermKeys from "@/common/configs/buttonPermission";
 const { isShowTable, tableType } = toRefs(useCommonStoreHook());
@@ -335,7 +345,6 @@ const router = useRouter();
 const workOderShow = ref(false);
 const ExDataObj = ref({});
 const excelData = ref([]);
-const showProList = ref([]);
 const showProExcel = async (id) => {
   const { data, code } = await getProExcel(id);
   if (code == "200") {
@@ -346,6 +355,42 @@ const showProExcel = async (id) => {
     workOderShow.value = false;
   }
 };
+
+const exportDataZip = async(id) => {
+  const data=await exportDataInfo(1,id);
+  console.log(data,'22')
+  // if(code !== '200'){
+  //   ElMessage.error(msg);
+  // }else{
+  //   downFile(data);
+  // }
+  // exportDataInfo(1,id).then((response) => {
+  //   if(response.data.code !== '200'){
+  //     console.log(JSON.stringify(response))
+  //     ElMessage.error(response.data.msg);
+  //   }else{
+  //     downFile(response);
+  //   }
+  // });
+};
+
+const downFile = (response) => {
+  const fileData = response.data;
+  const fileName = decodeURI(
+      response.headers["content-disposition"].split(";")[1].split("=")[1]
+  );
+  const fileType =
+      "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet;charset=utf-8";
+  const blob = new Blob([fileData], { type: fileType });
+  const downloadUrl = window.URL.createObjectURL(blob);
+  const downloadLink = document.createElement("a");
+  downloadLink.href = downloadUrl;
+  downloadLink.download = fileName;
+  document.body.appendChild(downloadLink);
+  downloadLink.click();
+  document.body.removeChild(downloadLink);
+  window.URL.revokeObjectURL(downloadUrl);
+};
 const toShowExcel = (item) => {
   ExDataObj.value = item;
   workOderShow.value = true;