yuyu
2023-08-30 867849a70abe49517a648343f8f8a684a12f73bd
8.30提交 导出pdf功能
已修改6个文件
58 ■■■■ 文件已修改
.env.production 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.staging 2 ●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/layout/components/Sidebar/SidebarItem.vue 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 8 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/experiment/checkTheReport/index.vue 44 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
.env.production
@@ -3,5 +3,5 @@
# base api
# VUE_APP_BASE_API = '/prod-api'
VUE_APP_BASE_API = 'http://localhost:1234/'
VUE_APP_BASE_API = 'http://192.168.137.138:1234/'
.env.staging
@@ -5,6 +5,6 @@
# base api
# VUE_APP_BASE_API = '/stage-api'
VUE_APP_BASE_API = 'http://localhost:1234/'
VUE_APP_BASE_API = 'http://192.168.137.138:1234/'
package.json
@@ -20,6 +20,7 @@
    "core-js": "3.6.5",
    "echarts": "^5.4.3",
    "element-ui": "2.13.2",
    "html2pdf.js": "^0.10.1",
    "js-cookie": "2.2.0",
    "normalize.css": "7.0.0",
    "nprogress": "0.2.0",
src/layout/components/Sidebar/SidebarItem.vue
@@ -6,6 +6,7 @@
        <el-menu-item v-if="onlyOneChild.meta.show==false ?onlyOneChild.meta.show: true" :index="resolvePath(onlyOneChild.path)" :class="{'submenu-title-noDropdown':!isNest}">
          <item :show="onlyOneChild.meta.show" :icon="onlyOneChild.meta.icon||(item.meta&&item.meta.icon)" :title="onlyOneChild.meta.title" />
          <span v-if="onlyOneChild.meta.title==='主页'">主页</span>
          <span v-if="onlyOneChild.meta.title==='基础数据'">基础数据</span>
        </el-menu-item>
      </app-link>
    </template>
src/router/index.js
@@ -472,13 +472,7 @@
          name: 'BasicDataMessage',
          component: () => import('@/views/basicData/index'),
          meta: { title: '基础数据', icon: 'el-icon-s-tools' }
        },
                {
                  path: 'myBusiness',
                  name: 'MyBusiness',
                  component: () => import('@/views/personal/myBusiness/index'),
                  meta: { title: '我的企业', icon: 'tree', show: false }
                }
        }
      ]
    },
    { path: '*', redirect: '/404', hidden: true }
src/views/experiment/checkTheReport/index.vue
@@ -30,7 +30,7 @@
        </el-form-item>
      </el-form>
      <el-form>
        <el-button class="rightBtn" type="primary" icon="el-icon-document"
        <el-button @click="exportToPDF" class="rightBtn" type="primary" icon="el-icon-document"
          >导出报告</el-button
        >
      </el-form>
@@ -61,7 +61,7 @@
        </span>
        <div class="printStyle">
          <Preview id="printRaw" :reportData="reportData" v-if="reportType===0"></Preview>
          <TestReport id="printFinished" :reportData="reportData" v-else></TestReport>
          <TestReport ref="testreport" id="printFinished" :reportData="reportData" v-else></TestReport>
        </div>
      </el-dialog>
      <div class="table-box">
@@ -77,6 +77,7 @@
            textAlign: 'center',
          }"
          :data="reportTable"
          @selection-change="handleSelectionChange"
          style="width: 100%"
        >
          <el-table-column type="selection" label="" min-width="5%" />
@@ -176,6 +177,19 @@
        </div>
      </div>
    </div>
    <Preview ref="preview" id="printRaw" :reportData="reportData" v-show="false"></Preview>
    <TestReport ref="testreport" id="printFinished" :reportData="reportData" v-show="false"></TestReport>
    <el-dialog
      title="导出pdf"
      :visible.sync="dialogPdfVisible"
      width="30%"
      :before-close="handleClose">
      <span>确定开始导出吗?</span>
      <span slot="footer" class="dialog-footer">
        <el-button @click="dialogPdfVisible = false">取 消</el-button>
        <el-button type="primary" @click="confirmExport">确 定</el-button>
      </span>
    </el-dialog>
  </div>
</template>
@@ -184,6 +198,8 @@
import Preview from "@/components/experiment/checkTheReport/index.vue";
import TestReport from "@/components/experiment/template_testReport/index.vue"
import PrintJS from 'print-js'
import html2pdf from 'html2pdf.js'
export default {
  data() {
    return {
@@ -220,6 +236,8 @@
      pageSize: 10,
      checked: true,
      dialogVisible: false,
      dialogPdfVisible: false,
      selectedRows: []
    };
  },
  created() {
@@ -244,6 +262,28 @@
      this.reportType = row.type;
      this.queryReportByRCode(row.reportCode);
    },
    handleSelectionChange(selection){
      this.selectedRows = selection;
    },
    // 批量导出报告
    exportToPDF() {
      this.dialogPdfVisible = true;
    },
    // 确认导出模态框
    confirmExport(){
      this.selectedRows.forEach(async row => {
        const element = document.getElementById('printFinished');
        console.log(element)
        // 设置TestReport组件的reportData属性为当前行的报告数据
        const resp = await getReportData({code:row.reportCode});
        this.$nextTick(() => {
          this.$refs.testreport.reportData = resp.data;
          html2pdf().from(element).save(`exported_${row.reportCode}.pdf`);
        });
      });
      this.dialogPdfVisible = false;
      this.selectedRows = [];
    },
    //打印按钮
    printFun(){
      this.dialogVisible = false;