You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

782 lines
23 KiB

1 year ago
<template>
<div class="container">
<div class="tabs">
<div class="headerText">
<div class="searchP">统计分析</div>
</div>
<div>
<MapCars leafletitle="化妆品" echartstitle="化妆品/注册备案品种" @arealist="arealist" ref="mapcars" v-if="MapCarsshow" />
</div>
</div>
<div class="tabs">
<div class="headerText">
<div class="searchP">查询条件</div>
</div>
<el-form ref="form1" :model="form1">
<div style="margin-top: 10px">
<!-- <el-row>
<div class="title-box">基本信息查询</div>
<el-col :span="21">
<el-form-item label="查询条件">
<el-input v-model="form1.name" placeholder="请输入产品名称"></el-input>
</el-form-item>
</el-col>
</el-row> -->
</div>
<el-row>
<el-col :span="8">
<el-form-item label="产品名称">
<el-input v-model="form1.cpmc" placeholder="请输入产品名称" clearable @clear="isclear"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="注册/备案编号">
<el-input v-model="form1.babm" placeholder="请输入注册/备案编号" clearable @clear="isclear"></el-input>
</el-form-item>
</el-col>
<!-- <el-col :span="8">
<el-form-item label="生产企业">
<el-input v-model="form1.scqy" placeholder="请输入生产企业" clearable @clear="isclear"></el-input>
</el-form-item>
</el-col> -->
<el-col :span="8">
<el-form-item label="使用人群" placeholder="请输入使用人群">
<el-input v-model="form1.syrq" placeholder="请输入使用人群" clearable @clear="isclear"></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="8">
<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-col :span="8">
<el-form-item label="注册/备案人" placeholder="请输入注册/备案人">
<el-input v-model="form1.scqy" placeholder="请输入注册/备案人" clearable @clear="isclear"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="生产企业" placeholder="请输入生产企业">
<el-input v-model="form1.jnfzr" placeholder="请输入生产企业" clearable @clear="isclear"></el-input>
</el-form-item>
</el-col>
<!-- <el-col :span="8">
<div class="logformitem">
<el-form-item label="生产企业/境内责任人" placeholder="请输入境内责任人">
<el-input v-model="form1.jnfzr" placeholder="生产企业/境内责任人" clearable @clear="isclear"></el-input>
</el-form-item>
</div>
</el-col> -->
</el-row>
<el-row>
<el-row>
<el-col :span="8">
<el-form-item label="注册/备案状态">
<!-- <el-input v-model="form1.status" placeholder="请输入注册/备案状态" clearable @clear="isclear"></el-input> -->
<el-select v-model="form1.status" placeholder="请选择注册/备案状态" >
<el-option v-for="item in optionsTwo" :key="item.value" :label="item.value" :value="item.value">
</el-option>
</el-select>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="生产许可证">
<el-input v-model="form1.scxkz" placeholder="请输入生产许可证" clearable @clear="isclear"></el-input>
</el-form-item>
</el-col>
</el-row>
</el-row>
<el-row>
<div class="footBox" v-show="bthshow">
<el-button icon="el-icon-refresh-left" @click="reset"></el-button>
<el-button type="primary" icon="el-icon-search" @click="searchList"></el-button>
<el-button type="success" icon="el-icon-circle-plus-outline" @click="collapsechange(0)"></el-button>
</div>
</el-row>
<div v-show="!bthshow">
<el-row>
<div class="title-box">产品抽检信息查询</div>
<el-col :span="8">
<el-form-item label="检验项目">
<el-input v-model="form1.cjxm" placeholder="请输入检验项目" clearable @clear="isclear"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="检验受理编号">
<el-input v-model="form1.jyslbh" placeholder="请输入检验受理编号" clearable @clear="isclear"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="抽样编号">
<el-input v-model="form1.cybh" placeholder="请输入抽样编号" clearable @clear="isclear"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<el-col :span="8">
<el-form-item label="抽样级别">
<el-input v-model="form1.cyjb" placeholder="请输入抽样级别" clearable @clear="isclear"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<el-form-item label="抽样日期" placeholder="请输入化抽样日期">
<el-input v-model="form1.cyrq" placeholder="抽样日期" clearable @clear="isclear"></el-input>
</el-form-item>
</el-col>
</el-row>
<el-row>
<div class="title-box">不良事件信息查询</div>
<el-col :span="8">
<el-form-item label="发生年份">
<el-input v-model="form1.fsnf" placeholder="请输入发生年份" clearable @clear="isclear"></el-input>
</el-form-item>
</el-col>
<el-col :span="8">
<div class="logformitem">
<el-form-item label="不良事件报告编号">
<el-input v-model="form1.blfybgbh" placeholder="请输入不良事件报告编号" clearable @clear="isclear"></el-input>
</el-form-item>
</div>
</el-col>
<el-col :span="8">
<el-form-item label="不良事件类型">
<el-input v-model="form1.blfylx" placeholder="请输入不良事件类型" clearable @clear="isclear"></el-input>
</el-form-item>
</el-col>
</el-row>
<div class="footBox " v-show="!bthshow">
<el-button icon="el-icon-refresh-left" @click="reset"></el-button>
<el-button type="primary" icon="el-icon-search" @click="searchList"></el-button>
<el-button type="success" icon="el-icon-remove-outline" @click="collapsechange(1)"></el-button>
</div>
</div>
</el-form>
</div>
<div class="tabsBottom">
<div class="foot-main">
<div class="headerText">
<div class="searchP">产品列表</div>
</div>
<div class="exportBtn">
<div>
<div class="mybuttom" :class="form1.allStatus == item.value ? 'mybuttomshow' : ''" v-show="types == '1'" round
v-for="(item, index) in btnArr" @click="xuanzelist(item)">{{
item.label
}}</div>
</div>
<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="500" style="width: 100%">
<el-table-column type="selection" width="60" align="center">
</el-table-column>
<el-table-column type="index" label="序号" width="80" align="center" />
<el-table-column label="产品名称" min-width="200" align="center">
<template slot-scope="scope">
{{ scope.row.cpmc }}
</template>
</el-table-column>
<!-- :label="A2" -->
<el-table-column label="注册/备案号" min-width="270" align="center">
<template slot-scope="scope">
{{ scope.row.bah || scope.row.zczh }}
</template>
</el-table-column>
<el-table-column label="注册/备案日期" min-width="200" align="center">
<template slot-scope="scope">
{{ scope.row.sj || scope.row.pzrq || shijianguolv(scope.row.sqsj) }}
</template>
</el-table-column>
<el-table-column label="注册/备案状态" min-width="200" align="center">
<template slot-scope="scope">
{{ scope.row.status }}
</template>
</el-table-column>
<el-table-column label="注册/备案人" min-width="250" align="center">
<template slot-scope="scope">
{{ scope.row.zcr || scope.row.qymc }}
</template>
</el-table-column>
<el-table-column label="注册/备案人统一社会信用代码" min-width="300" align="center">
<template slot-scope="scope">
{{ scope.row.tyshxydw }}
</template>
</el-table-column>
<el-table-column label="生产企业" min-width="250" align="center">
<template slot-scope="scope">
{{ scope.row.scqymc || scope.row.jnzrr }}
</template>
</el-table-column>
<el-table-column label="生产企业许可证编号" min-width="250" align="center">
<template slot-scope="scope">
{{ scope.row.xkzbh }}
</template>
</el-table-column>
<el-table-column label="生产企业地址" min-width="250" align="center">
<template slot-scope="scope">
{{ scope.row.dzSc }}
</template>
</el-table-column>
<el-table-column label="操作" width="120" fixed="right" align="center">
<template slot-scope="scope">
<el-button 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";
import MapCars from "@/views/components/MapCars.vue";
export default {
components: { MapCars },
data() {
return {
MapCarsshow: true,
loading: false,
tableData: [],
A1: "产品名称",
A2: "备案编码",
A3: "生产企业",
types: "1",
total: 0,
options: [
{
value: "1",
label: "国产化妆品",
},
{
value: "2",
label: "国产特殊化妆品",
},
{
value: "3",
label: "进口化妆品",
},
{
value: "4",
label: "进口特殊化妆品",
},
],
optionsTwo:[ {
value: "有效",
label: "有效",
},{
value: "取消备案",
label: "取消备案",
},{
value: "注销",
label: "注销",
},],
form1: {
babm: "",
cpmc: "",
name: "",
scqy: "",
// 统一查询
cjxm: "", // 检验项目
jyslbh: "", //检验受理编号
cybh: "", // 抽样编号
cyjb: "", // 抽样级别
cyrq: "", // 抽样日期
blfybgbh: "", // 不良事件报告编号
blfylx: "", //不良事件类型
fsnf: "", // 发生年份
zcrbar: "",//注册人备案人
jnfzr: "",//境内负责人
syrq: "", // 使用人群
status: "",
allStatus:"",
scxkz:"",
area: this.$store.getters.usersort
},
form: {
size: 20,
current: 1,
area: this.$store.getters.usersort
},
jieliuShow: true,
loadA: null,
showCK: false,
src: "",
bthshow: true,
scoltitle: "展开",
btnArrshow: "",
btnArr: [{
label: '全部',
iscss: "warning",
value: ""
}, {
label: '自产',
iscss: "success",
value: 1
}, {
label: '委托',
iscss: "primary",
value: 2
}]
};
},
mounted() {
this.form1.name = this.$route.query.value || "";
if (this.form1.name) {
this.searchList();
} else {
this.changeType("1");
}
},
created() {
},
methods: {
shijianguolv(data) {
if (data) {
return data.split(" ")[0]
} else {
return ""
}
},
// 点击input上的x号
isclear() {
this.searchList()
},
// 全部 自产 委托
xuanzelist(item) {
this.form1.allStatus = item.value
this.searchList();
// if(item == '全部') {}
// if(item == '自产') {}
// if(item == '委托') {}
},
arealist(area) {
this.form.area = area
this.form1.area = area
this.getData(this.types);
},
collapsechange(e) {
if (e == 0) {
this.bthshow = false
} else {
this.bthshow = true
}
},
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) => {
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;
});
return arr[0].label;
},
jieliuFunc() {
if (this.jieliuShow) {
this.getData(this.types);
this.jieliuShow = false;
setTimeout(() => {
this.jieliuShow = true;
}, 500);
} else {
this.$message("点击过快");
}
},
//去内嵌页面
toDetail(e) {
console.log(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区分四种化妆品详情 然后分别调用不同的详情接口gt
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(type) {
this.types = "1";
this.form1 = {
babm: "",
cpmc: "",
name: "",
scqy: "",
// 统一查询
name: "",
cjxm: "",
jyslbh: "",
cybh: "",
cyjb: "",
cyrq: "",
blfybgbh: "",
blfylx: "",
fsnf: "",
status: "",
allStatus:"",
scxkz:"",
area: this.$store.getters.usersort
};
this.form = {
size: 20,
current: 1,
};
if (type != 1) {
this.$refs["mapcars"].showinitCityLayer()
}
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.tableData.forEach((item) => {
item.status = '有效'
})
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.tableData.forEach((item) => {
item.status = '有效'
})
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.$refs["mapcars"].isLefleat(e)
this.getData(e);
},
},
beforeRouteLeave(to, from, next) {
if (to.path != '/cosmeticsDetail') {
this.reset(1)
}
this.MapCarsshow = false
next()
},
activated(to, from, next) {
this.MapCarsshow = true
}
};
</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 {
margin-bottom: 10px;
width: 100%;
background: #fff;
}
}
//===================
::v-deep .el-button--medium {
padding: 8px;
}
.footBox {
width: 97.5%;
text-align: center;
padding-bottom: 10px;
}
.tabsBottom {
.foot-main {
height: 100%;
// min-height: 600px;
width: 100%;
background: white;
}
}
.exportBtn {
display: flex;
align-items: center;
justify-content: space-between;
padding: 10px 20px;
}
.table-box {
padding: 0px 20px;
.table-item {}
}
.pagination {
display: flex;
justify-content: space-between;
padding: 15px 20px;
}
::v-deep .el-table {
overflow: auto;
}
::v-deep .el-collapse-item__header {
padding-left: 80vw;
font-size: 20px;
font-weight: 600;
.el-collapse-item__arrow {
margin-left: 20px;
}
}
.title-box {
position: relative;
padding-left: 30px;
font-size: 16px;
font-weight: 600;
margin-bottom: 20px;
color: #1349c5;
}
::v-deep .el-collapse {
border: none;
}
::v-deep .logformitem {
.el-form-item__label {
line-height: 20px;
}
}
.mybuttom {
margin: 0 10px;
display: inline-block;
padding: 5px 20px;
background-color: rgba(30, 128, 235, 0.1);
border-radius: 8px;
border: 1px solid #1e80eb;
font-size: 14px;
color: #1e80eb;
font-family: Source Han Sans CN;
cursor: pointer;
&:hover {
background-color: #1e80eb;
color: #ffffff;
border: 1px solid #1e80eb;
}
}
.mybuttomshow {
background-color: #1e80eb;
color: #ffffff;
border: 1px solid #1e80eb;
}
</style>