Sfoglia il codice sorgente

新增合格证导出功能,实现表格数据导出为Excel文件

yusheng 3 mesi fa
parent
commit
fed673c27f

+ 17 - 1
src/api/system/file/index.js

@@ -99,4 +99,20 @@ export async function getFileList (data) {
     return res.data;
   }
   return Promise.reject(new Error(res.data.message));
-}
+}
+
+/**
+ * 导出
+ */
+export async function exportTable(data) {
+  const res = await request.post(
+    data.api,
+    data.data,
+    {
+      responseType: 'blob'
+    }
+  );
+  console.log(res.data, '***********');
+  download(res.data, data.fileName+'.xlsx');
+
+}

+ 45 - 0
src/components/upload/exportButton.vue

@@ -0,0 +1,45 @@
+<template>
+  <el-button
+    type="primary"
+    size="small"
+    icon="el-icon-download"
+    @click="exportFn"
+    >{{btnName}}</el-button
+  >
+</template>
+
+<script>
+  import { exportTable } from '@/api/system/file/index.js';
+  export default {
+    props: {
+      btnName: {
+        type: String,
+        default: '导出'
+      },
+      apiUrl: '',
+      fileName: '',
+      params: {
+        default: () => {
+          return {};
+        }
+      }
+    },
+    //注册组件
+    data() {
+      return {};
+    },
+
+    created() {},
+    methods: {
+      exportFn() {
+        exportTable({
+          api: this.apiUrl,
+          fileName: this.fileName,
+          data:this.params
+        });
+      }
+    }
+  };
+</script>
+
+<style lang="scss"></style>

+ 14 - 2
src/views/certificateManagement/components/listCoom.vue

@@ -41,6 +41,11 @@
               >
             </el-dropdown-menu>
           </el-dropdown>
+          <exportButton
+            fileName="合格证"
+            apiUrl="/qms/qmscertificatemanagement/export"
+            :params="params"
+          ></exportButton>
         </template>
 
         <template v-slot:code="{ row }">
@@ -123,6 +128,7 @@
   import certificate from './certificate.vue';
   import processSubmitDialog from '@/components/processSubmitDialog/processSubmitDialog.vue';
   import { getQmsReportTemplatePageList } from '@/api/inspectionWork';
+import exportButton from '@/components/upload/exportButton.vue';
 
   import tabMixins from '@/mixins/tableColumnsMixin';
   import { getList, getById, cancel } from '@/api/certificateManagement';
@@ -142,7 +148,7 @@
     components: {
       search,
       certificate,
-      processSubmitDialog
+      processSubmitDialog,exportButton
     },
     mixins: [dictMixins, tabMixins],
     data() {
@@ -170,7 +176,8 @@
         processSubmitDialogFlag: false,
         // 表格列配置
         reportTemplateList: [],
-        columns: []
+        columns: [],
+        params: {}
       };
     },
     created() {
@@ -427,6 +434,11 @@
         if (this.pageName == 'management') {
           where['generateType'] = 2;
         }
+        this.params = {
+          ...where,
+          pageNum: page,
+          size: limit
+        };
         return getList({
           ...where,
           pageNum: page,

+ 24 - 23
src/views/certificateManagement/components/listCoomModal.vue

@@ -117,35 +117,36 @@
         let data = this.selection[0];
 
         this.$emit('success', {
-          batchNo: data.batchNo,
-          certificateId: this.selection.map((item) => item.id).toString(),
-          contractor: data.contractor,
-          generateType: 2,
-          isMerged: 1,
-          luxuryProductCode: data.luxuryProductCode,
-          luxuryProductName: data.luxuryProductName,
-          orderNo: data.orderNo,
-          orderType: data.orderType,
-          productCode: data.productCode,
-          productName: data.productName,
-          processingType: data.processingType,
-          produceTaskCode: data.produceTaskCode,
-          produceTaskId: data.produceTaskId,
-          produceTaskName: data.produceTaskName,
-          qualityWorkOrderId: data.qualityWorkOrderId,
-          // reportTemplateId: data.reportTemplateId,
-          // reportTemplateCode: data.reportTemplateCode,
-          // reportTemplateName: data.reportTemplateName,
-          type: data.type,
-          workAme: data.workAme,
+          batchNo: data.batchNo, // 批次号
+          certificateId: this.selection.map((item) => item.id).toString(), // 合格证ID
+          contractor: data.contractor, // 承制单位
+          generateType: 2, // 生成类型:2-手动新增
+          isMerged: 1, // 是否合并:1-是
+          luxuryProductCode: data.luxuryProductCode, // 顶级产品编码
+          luxuryProductName: data.luxuryProductName, // 顶级产品名称
+          orderNo: data.orderNo, // 订单号
+          orderType: data.orderType, // 订单类型
+          productCode: data.productCode, // 产品编码
+          productName: data.productName, // 产品名称
+          processingType: data.processingType, // 加工类型
+          produceTaskCode: data.produceTaskCode, // 工序编号
+          produceTaskId: data.produceTaskId, // 工序ID
+          produceTaskName: data.produceTaskName, // 工序名称
+          qualityWorkOrderId: data.qualityWorkOrderId, // 质检工单ID
+          // reportTemplateId: data.reportTemplateId, // 报表模板ID
+          // reportTemplateCode: data.reportTemplateCode, // 报表模板编码
+          // reportTemplateName: data.reportTemplateName, // 报表模板名称
+          type: data.type, // 类型
+          workAme: data.workAme, // 作业名称
+          measureUnit: data.measureUnit, // 计量单位
           qualifiedQuantity: this.selection.reduce(
             (total, item) => total + item.qualifiedQuantity,
             0
-          ),
+          ), // 合格数量(累加)
           quantity: this.selection.reduce(
             (total, item) => total + item.quantity,
             0
-          )
+          ) // 交验数量(累加)
         });
       },
       setColumns() {