<template> <div class="container"> <div class="tabs"> <div class="headerText"> <div class="searchP">查询条件</div> </div> <el-form ref="form1" :model="form1" label-width="100px"> <div style="margin-top: 10px"> <el-row> <el-col :span="7"> <el-form-item label="产品名称"> <el-input v-model="form1.cpmc" placeholder="请输入产品名称" ></el-input> </el-form-item> </el-col> <el-col :span="7"> <el-form-item label="备案编号"> <el-input v-model="form1.babm" placeholder="请输入备案编号" ></el-input> </el-form-item> </el-col> <el-col :span="7"> <el-form-item label="生产企业"> <el-input v-model="form1.scqy" placeholder="请输入生产企业" ></el-input> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="7"> <el-form-item label="注册证编号"> <el-input v-model="form1.name" placeholder="请输入注册证编号" ></el-input> </el-form-item> </el-col> <el-col :span="7"> <el-form-item label="化妆品类型" placeholder="请输入化妆品类型"> <el-select v-model="types" placeholder="请选择化妆品类型" @change="changeType" > <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value" > </el-option> </el-select> </el-form-item ></el-col> </el-row> </div> </el-form> <div class="footBox"> <el-button icon="el-icon-refresh-left" @click="reset">重置</el-button> <el-button type="primary" icon="el-icon-search" @click="searchList" >查询</el-button > </div> </div> <div class="tabsBottom"> <div class="foot-main"> <div class="headerText"> <div class="searchP">产品列表</div> </div> <div class="exportBtn"> <el-button type="primary" icon="el-icon-edit-outline" @click="exportList()" >导出</el-button > </div> <section class="table-box"> <div class="table-item"> <el-table v-loading="loading" :data="tableData" border height="43vh" :stripe="false" > <el-table-column type="selection" width="35" align="center" /> <el-table-column type="index" label="序号" width="55" align="center" /> <el-table-column label="产品名称" align="center"> <template slot-scope="scope"> {{ scope.row.cpmc }} </template> </el-table-column> <el-table-column :label="A2" align="center" width="230"> <template slot-scope="scope"> {{ scope.row.bah || scope.row.pzrq }} </template> </el-table-column> <el-table-column :label="A3" align="center" width="240"> <template slot-scope="scope"> {{ scope.row.qymc || scope.row.sf }} </template> </el-table-column> <el-table-column label="操作" class-name="small-padding fixed-width" width="140" align="center" > <template slot-scope="scope"> <el-button size="mini" plain type="primary" @click="toDetail(scope.row)" >详情</el-button > <!-- <el-button size="mini" plain type="warning">编辑</el-button> --> </template> </el-table-column> </el-table> </div> </section> <pagination :total="total" :page="form.current" :limit="form.size" @pagination="getPagination" :current-page.sync="form.current" ></pagination> </div> </div> <el-dialog title="提示" :visible.sync="showCK" width="30%"> <span>{{ src }}</span> <span slot="footer" class="dialog-footer"> <el-button @click="closeDC()">取 消</el-button> <el-button type="primary" @click="openDC()">确 定</el-button> </span> </el-dialog> </div> </template> <script> import { download, dchzpsj } from "../../../api/archives/updata"; import { Notification, MessageBox, Message, Loading } from "element-ui"; export default { components: {}, data() { return { //=========== loading: false, tableData: [], A1: "产品名称", A2: "备案编码", A3: "生产企业", types: "1", total: 0, options: [ { value: "1", label: "国产化妆品", }, { value: "2", label: "国产特殊化妆品", }, { value: "3", label: "进口化妆品", }, { value: "4", label: "进口特殊化妆品", }, ], form1: { babm: "", cpmc: "", name: "", scqy: "", }, form: { size: 10, current: 1, }, jieliuShow: true, loadA: null, showCK: false, src: "", }; }, mounted() {}, created() { this.changeType("1"); }, methods: { openDC() { this.showCK = false; this.loadA = Loading.service({ text: "正在下载数据,请稍候", spinner: "el-icon-loading", background: "rgba(0, 0, 0, 0.7)", }); let query1 = { //导出使用区分化妆品类型 1为国产化妆品 2为国产特殊化妆品 3为进口化妆品 4为进口特殊化妆品 type: this.types, //生产企业 scqy: this.form1.scqy, //产品名称 cpmc: this.form1.cpmc, //注册证编号 name: this.form1.name, //备案编号 babm: this.form1.babm, }; dchzpsj(query1) .then((res) => { console.log(res); const blob = new Blob([res], { type: res.type }); // blob.text().then((res11) => console.log(res11)); console.log(blob.stream()); const link = document.createElement("a"); link.href = window.URL.createObjectURL(blob); link.style.display = "none"; //到时候判断是哪个化妆品数据 link.download = this.filterTypes(this.types) + ".xlsx"; link.click(); this.loadA.close(); this.$message({ type: "success", message: "导出成功", }); }) .catch((err) => { this.$message({ type: "info", message: "导出失败", }); }); }, closeDC() { this.showCK = false; this.$message({ type: "info", message: "已取消导出", }); }, exportList() { this.src = `确定导出${ this.form1.cpmc ? `产品名称为${this.form1.cpmc}、` : "" }${this.form1.babm ? `备案编号为${this.form1.babm}、` : ""}${ this.form1.scqy ? `生产企业为${this.form1.scqy}、` : "" }${ this.form1.name ? `注册证编号为${this.form1.name}、` : "" }${`化妆品类型为${this.filterTypes(this.types)}、`}数据吗?`; this.showCK = true; }, filterTypes(e) { let arr = this.options.filter((value1) => { return value1.value == e; }); console.log(arr); return arr[0].label; }, jieliuFunc() { if (this.jieliuShow) { this.getData(this.types); this.jieliuShow = false; setTimeout(() => { this.jieliuShow = true; }, 3000); } else { this.$message("点击过快"); } }, //去内嵌页面 toDetail(e) { let data = ""; if (this.types == "1") { data = e.bah; } else if (this.types == "2") { data = e.zczh; } else if (this.types == "3") { data = e.bah; } else if (this.types == "4") { data = e.zczh; } //利用type区分三种档案 //利用flag区分四种化妆品详情 然后分别调用不同的详情接口 this.$router.push({ path: `/cosmeticsDetail`, query: { type: "1", flag: this.types, data }, }); }, //搜索 searchList() { this.form.current = 1; for (let i in this.form1) { this.form[i] = this.form1[i]; } this.jieliuFunc(); }, getPagination(e) { console.log(e); this.form.current = e.page; this.form.size = e.limit; this.chinaCosmetics(); }, //重置 reset() { this.types = "1"; this.form1 = { babm: "", cpmc: "", name: "", scqy: "", size: 10, current: 1, }; this.form = { size: 10, current: 1, }; this.jieliuFunc(); }, //国产化妆品 async chinaCosmetics() { this.loading = true; let msg1 = await this.$api.cosmetics.domesticList(this.form); this.tableData = msg1.data.records; this.total = msg1.data.total; this.form.size = msg1.data.size; this.form.current = msg1.data.current; this.loading = false; }, //国产特殊化妆品 async chinaSpecialCosmetics() { this.loading = true; let msg1 = await this.$api.cosmetics.specialList(this.form); this.tableData = msg1.data.records; this.total = msg1.data.total; this.form.size = msg1.data.size; this.form.current = msg1.data.current; this.loading = false; }, //进口化妆品 async importCosmetics() { this.loading = true; let msg1 = await this.$api.cosmetics.importList(this.form); this.tableData = msg1.data.records; this.total = msg1.data.total; this.form.size = msg1.data.size; this.form.current = msg1.data.current; this.loading = false; }, //进口特殊化妆品 async importSpecialCosmetics() { this.loading = true; let msg1 = await this.$api.cosmetics.importSpecialList(this.form); this.tableData = msg1.data.records; this.total = msg1.data.total; this.form.size = msg1.data.size; this.form.current = msg1.data.current; this.loading = false; }, async getData(e) { if (e == "1") { this.A2 = "备案编码"; this.A3 = "生产企业"; this.chinaCosmetics(); } else if (e == "2") { this.A2 = "批准日期"; this.A3 = "省份"; this.chinaSpecialCosmetics(); } else if (e == "3") { this.A2 = "备案编码"; this.A3 = "生产企业"; this.importCosmetics(); } else if (e == "4") { this.A2 = "批准日期"; this.A3 = "省份"; this.importSpecialCosmetics(); } }, async changeType(e) { // this.reset(); this.getData(e); }, }, }; </script> <style lang="scss" scoped> ::v-deep .el-dialog:not(.is-fullscreen) { margin-top: 30vh !important; } ::v-deep .el-dialog__body { padding: 15px; } ::v-deep .el-select { width: 100% !important; } .container { height: 100%; // overflow: auto; background: #f2f2f2; .headerText { width: 100%; padding: 10px 20px; border-bottom: 1px solid #f2f3f5; color: #323233; font-size: 20px; font-weight: bold; .searchP { position: relative; cursor: pointer; &::before { content: ""; width: 78px; height: 3px; background: #1349c5; position: absolute; bottom: -10px; } } } .tabs { width: 100%; height: 30%; background: #fff; } } //=================== ::v-deep .el-button--medium { padding: 8px; } .footBox { width: 100%; text-align: center; } .tabsBottom { height: 70%; padding-top: 10px; .foot-main { height: 100%; // min-height: 600px; width: 100%; background: white; } } .exportBtn { padding: 10px 20px; } .table-box { padding: 0 20px; .table-item { } } .pagination { display: flex; justify-content: space-between; padding: 15px 20px; } ::v-deep.el-table--medium .el-table__cell { padding: 5.3px 0; } ::v-deep .el-table { overflow: auto; } </style>