|
|
|
@ -6,15 +6,8 @@
|
|
|
|
|
* @FilePath: \mudushow\src\components\dialog\index.vue
|
|
|
|
|
-->
|
|
|
|
|
<template>
|
|
|
|
|
<el-dialog
|
|
|
|
|
:visible.sync="dialogVisible"
|
|
|
|
|
:show-close="false"
|
|
|
|
|
:destroy-on-close="true"
|
|
|
|
|
:close-on-click-modal="false"
|
|
|
|
|
append-to-body
|
|
|
|
|
custom-class="dialog-boxed"
|
|
|
|
|
width="60%"
|
|
|
|
|
>
|
|
|
|
|
<el-dialog :visible.sync="dialogVisible" :show-close="false" :destroy-on-close="true" :close-on-click-modal="false"
|
|
|
|
|
append-to-body custom-class="dialog-boxed" width="60%">
|
|
|
|
|
<div class="dialog-slot">
|
|
|
|
|
<div class="closeClick">
|
|
|
|
|
<div>{{ titName }}</div>
|
|
|
|
@ -24,210 +17,280 @@
|
|
|
|
|
|
|
|
|
|
<RecallModule title="召回基本信息">
|
|
|
|
|
<div class="loadingStatus" v-loading="loading">
|
|
|
|
|
<div class="recallbasic">
|
|
|
|
|
<div class="recallbasic" v-if="basicMsg.recallProductsType != 3">
|
|
|
|
|
<div class="recallbasic-item">
|
|
|
|
|
<div class="recallbasic-box">
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.entName">
|
|
|
|
|
<div class="recallbasicname">企业名称:</div>
|
|
|
|
|
<span>{{ basicMsg.entName }}</span>
|
|
|
|
|
<span>{{ basicMsg.entName || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box">
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.registrationCode">
|
|
|
|
|
<div class="recallbasicname recallbasicnameTow">
|
|
|
|
|
注册证或备案凭证编码:
|
|
|
|
|
</div>
|
|
|
|
|
<span>{{ basicMsg.registrationCode || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.recallProductName">
|
|
|
|
|
<div class="recallbasicname">召回产品:</div>
|
|
|
|
|
<span>{{ basicMsg.recallProductName }}</span>
|
|
|
|
|
<span>{{ basicMsg.recallProductName || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box">
|
|
|
|
|
<div class="recallbasicname">产品规格:</div>
|
|
|
|
|
<span>{{ basicMsg.productSpecifications }}</span>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.unitOfMeasure">
|
|
|
|
|
<div class="recallbasicname">产品单位:</div>
|
|
|
|
|
<span>{{ basicMsg.unitOfMeasure || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box">
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.agentName">
|
|
|
|
|
<div class="recallbasicname">代理人名称:</div>
|
|
|
|
|
<span>{{ basicMsg.agentName || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.productSpecifications">
|
|
|
|
|
<div class="recallbasicname">产品型号、规格:</div>
|
|
|
|
|
<span>{{ basicMsg.productSpecifications || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.region">
|
|
|
|
|
<div class="recallbasicname">涉及地区和国家:</div>
|
|
|
|
|
<span>{{ basicMsg.region || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.recallProductsType">
|
|
|
|
|
<div class="recallbasicname">召回类型:</div>
|
|
|
|
|
<span>{{
|
|
|
|
|
basicMsg.recallProductsType == 1
|
|
|
|
|
? "药品"
|
|
|
|
|
: basicMsg.recallProductsType == 2
|
|
|
|
|
? "医疗器械"
|
|
|
|
|
: ""
|
|
|
|
|
? "医疗器械"
|
|
|
|
|
: "化妆品"
|
|
|
|
|
}}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.rectify">
|
|
|
|
|
<div class="recallbasicname">纠正行动简述:</div>
|
|
|
|
|
<span>{{ basicMsg.rectify || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box">
|
|
|
|
|
<div class="recallbasicname">公示信息:</div>
|
|
|
|
|
<span class="recalitem-color" @click="looklingyige()">查看凭证</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box">
|
|
|
|
|
<div class="recallbasicname">备案信息:</div>
|
|
|
|
|
<span class="recalitem-color" @click="lookVoucher()">查看凭证</span>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-item">
|
|
|
|
|
<div class="recallbasic-box">
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.recallLevel">
|
|
|
|
|
<div class="recallbasicname">召回等级:</div>
|
|
|
|
|
<span>{{
|
|
|
|
|
basicMsg.recallLevel == 1
|
|
|
|
|
? "一级召回"
|
|
|
|
|
: basicMsg.recallLevel == 2
|
|
|
|
|
? "二级召回"
|
|
|
|
|
: basicMsg.recallLevel == 3
|
|
|
|
|
? "三级召回"
|
|
|
|
|
: ""
|
|
|
|
|
? "二级召回"
|
|
|
|
|
: basicMsg.recallLevel == 3
|
|
|
|
|
? "三级召回"
|
|
|
|
|
: ""
|
|
|
|
|
}}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box">
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.head">
|
|
|
|
|
<div class="recallbasicname">召回单位负责人:</div>
|
|
|
|
|
<span>{{ basicMsg.head || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.createTime">
|
|
|
|
|
<div class="recallbasicname">召回开始时间:</div>
|
|
|
|
|
<span>{{ basicMsg.createTime }}</span>
|
|
|
|
|
<span>{{ basicMsg.createTime || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.headContact">
|
|
|
|
|
<div class="recallbasicname">联系方式:</div>
|
|
|
|
|
<span>{{ basicMsg.headContact || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.jingbanren">
|
|
|
|
|
<div class="recallbasicname">召回经办人:</div>
|
|
|
|
|
<span>{{ basicMsg.jingbanren || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="recallbasic-box">
|
|
|
|
|
<div class="recallbasicname">召回状态:</div>
|
|
|
|
|
<span>{{
|
|
|
|
|
basicMsg.recallStatus == 1
|
|
|
|
|
? "召回开始"
|
|
|
|
|
: basicMsg.recallStatus == 2
|
|
|
|
|
? "进展汇报"
|
|
|
|
|
: basicMsg.recallStatus == 3
|
|
|
|
|
? "召回完成"
|
|
|
|
|
: ""
|
|
|
|
|
? "进展汇报"
|
|
|
|
|
: basicMsg.recallStatus == 3
|
|
|
|
|
? "召回完成"
|
|
|
|
|
: ""
|
|
|
|
|
}}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box">
|
|
|
|
|
<div class="recallbasicname">公示信息:</div>
|
|
|
|
|
<span class="recalitem-color" @click="lookVoucher()"
|
|
|
|
|
>查看凭证</span
|
|
|
|
|
>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.recallInfoId">
|
|
|
|
|
<div class="recallbasicname">主动召回记录:</div>
|
|
|
|
|
<span class="recalitem-color" @click="lookzhaohu(basicMsg)">点击查看</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.jingbanrenContact">
|
|
|
|
|
<div class="recallbasicname">联系方式:</div>
|
|
|
|
|
<span>{{ basicMsg.jingbanrenContact || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.scopeOfApplication">
|
|
|
|
|
<div class="recallbasicname">产品适用范围:</div>
|
|
|
|
|
<span>{{ basicMsg.scopeOfApplication || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.cause">
|
|
|
|
|
<div class="recallbasicname">召回原因简述:</div>
|
|
|
|
|
<span>{{ basicMsg.cause || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic" v-else>
|
|
|
|
|
<div class="recallbasic-item">
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.entName">
|
|
|
|
|
<div class="recallbasicname">企业名称:</div>
|
|
|
|
|
<span>{{ basicMsg.entName || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.address">
|
|
|
|
|
<div class="recallbasicname recallbasicnameTow">
|
|
|
|
|
地址:
|
|
|
|
|
</div>
|
|
|
|
|
<span>{{ basicMsg.address || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.entCode">
|
|
|
|
|
<div class="recallbasicname">统一社会信用代码:</div>
|
|
|
|
|
<span>{{ basicMsg.entCode || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.legal">
|
|
|
|
|
<div class="recallbasicname">法定代表人:</div>
|
|
|
|
|
<span>{{ basicMsg.legal || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.legalPhone">
|
|
|
|
|
<div class="recallbasicname">法定代表人联系电话:</div>
|
|
|
|
|
<span>{{ basicMsg.legalPhone || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.contact">
|
|
|
|
|
<div class="recallbasicname">企业联系人:</div>
|
|
|
|
|
<span>{{ basicMsg.contact || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.phone">
|
|
|
|
|
<div class="recallbasicname">企业联系人电话:</div>
|
|
|
|
|
<span>{{ basicMsg.phone || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.recallProductsType">
|
|
|
|
|
<div class="recallbasicname">召回类型:</div>
|
|
|
|
|
<span>{{
|
|
|
|
|
basicMsg.recallProductsType == 1
|
|
|
|
|
? "药品"
|
|
|
|
|
: basicMsg.recallProductsType == 2
|
|
|
|
|
? "医疗器械"
|
|
|
|
|
: "化妆品"
|
|
|
|
|
}}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.rectify">
|
|
|
|
|
<div class="recallbasicname">召回产品处理方式:</div>
|
|
|
|
|
<span>{{ basicMsg.rectify || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-item">
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.recallTime">
|
|
|
|
|
<div class="recallbasicname">召回启动日期:</div>
|
|
|
|
|
<span>{{ basicMsg.recallTime || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.reportTime">
|
|
|
|
|
<div class="recallbasicname">报告日期:</div>
|
|
|
|
|
<span>{{ basicMsg.reportTime || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.recallProductName">
|
|
|
|
|
<div class="recallbasicname">召回产品名称:</div>
|
|
|
|
|
<span>{{ basicMsg.recallProductName || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.recordNumber">
|
|
|
|
|
<div class="recallbasicname">注册/备案号:</div>
|
|
|
|
|
<span>{{ basicMsg.recordNumber || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.numberInvolve">
|
|
|
|
|
<div class="recallbasicname">涉及批次数:</div>
|
|
|
|
|
<span>{{ basicMsg.numberInvolve || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.productInvolve">
|
|
|
|
|
<div class="recallbasicname">涉及产品数量:</div>
|
|
|
|
|
<span>{{ basicMsg.productInvolve || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.saleNumber">
|
|
|
|
|
<div class="recallbasicname">销售数量:</div>
|
|
|
|
|
<span>{{ basicMsg.saleNumber || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.remainRecall">
|
|
|
|
|
<div class="recallbasicname">召回数量:</div>
|
|
|
|
|
<span>{{ basicMsg.remainRecall || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="recallbasic-box" v-if="basicMsg.cause">
|
|
|
|
|
<div class="recallbasicname">召回原因:</div>
|
|
|
|
|
<span>{{ basicMsg.cause || "--" }}</span>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</RecallModule>
|
|
|
|
|
|
|
|
|
|
<!-- 召回产品信息 -->
|
|
|
|
|
<RecallModule
|
|
|
|
|
title="召回产品信息"
|
|
|
|
|
:tableData="productsMsgAll"
|
|
|
|
|
@myindex="myindex"
|
|
|
|
|
@sizeChange="sizeChange"
|
|
|
|
|
type="0"
|
|
|
|
|
:total="productsMsgAll.total"
|
|
|
|
|
>
|
|
|
|
|
<el-table
|
|
|
|
|
:data="productsMsgAll.records"
|
|
|
|
|
border
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
header-align="center"
|
|
|
|
|
v-loading="load1"
|
|
|
|
|
>
|
|
|
|
|
<el-table-column
|
|
|
|
|
prop="productLotNumber"
|
|
|
|
|
label="产品批次"
|
|
|
|
|
align="center"
|
|
|
|
|
show-overflow-tooltip
|
|
|
|
|
>
|
|
|
|
|
<RecallModule title="召回产品信息" :tableData="productsMsgAll" @myindex="myindex" @sizeChange="sizeChange" type="0"
|
|
|
|
|
:total="productsMsgAll.total">
|
|
|
|
|
<el-table :data="productsMsgAll.records" border style="width: 100%" header-align="center" v-loading="load1">
|
|
|
|
|
<el-table-column prop="productLotNumber" label="产品批次" align="center" show-overflow-tooltip>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="totalSales" label="销量" align="center">
|
|
|
|
|
<el-table-column prop="totalSales" label="销量/单位(个)" align="center">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
{{ scope.row.totalSales + `(${basicMsg.unitOfMeasure || ""})` }}
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column
|
|
|
|
|
prop="totalPlannedRecalls"
|
|
|
|
|
label="拟召回量"
|
|
|
|
|
align="center"
|
|
|
|
|
>
|
|
|
|
|
<el-table-column prop="totalPlannedRecalls" label="拟召回量/单位(个)" align="center">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
{{ scope.row.totalPlannedRecalls + `(${basicMsg.unitOfMeasure || ""})` }}
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="totalRecalls" label="召回数量" align="center">
|
|
|
|
|
<el-table-column prop="totalRecalls" label="召回数量/单位(个)" align="center">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
{{ scope.row.totalRecalls ? scope.row.totalRecalls + `(${basicMsg.unitOfMeasure || ""})` : '' }}
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
</RecallModule>
|
|
|
|
|
|
|
|
|
|
<!-- 召唤事件附件 -->
|
|
|
|
|
<RecallModule
|
|
|
|
|
title="召回事件附件"
|
|
|
|
|
:tableData="annexList"
|
|
|
|
|
@myindex="myindex"
|
|
|
|
|
@sizeChange="sizeChange"
|
|
|
|
|
:total="annexList.total"
|
|
|
|
|
type="1"
|
|
|
|
|
>
|
|
|
|
|
<RecallModule title="召回事件附件" :tableData="fujianList" @myindex="myindex" @sizeChange="sizeChange"
|
|
|
|
|
:total="annexList.total" type="1">
|
|
|
|
|
<div class="zhaohuibaogao">
|
|
|
|
|
<div
|
|
|
|
|
class="zhaohuibaogao-item"
|
|
|
|
|
v-for="(item, index) in shijiantitle"
|
|
|
|
|
:key="index"
|
|
|
|
|
@click="shoWritten(index)"
|
|
|
|
|
:class="shijiantitleIndex == index ? 'active' : ''"
|
|
|
|
|
>
|
|
|
|
|
<div class="zhaohuibaogao-item"
|
|
|
|
|
v-for="(item, index) in basicMsg.recallProductsType != 3 ? shijiantitle : shijiantitleTow" :key="index"
|
|
|
|
|
@click="shoWritten(item.index)" :class="shijiantitleIndex == item.index ? 'active' : ''">
|
|
|
|
|
{{ item.name }}
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
<el-table
|
|
|
|
|
:data="annexList.records"
|
|
|
|
|
border
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
header-align="center"
|
|
|
|
|
v-loading="load2"
|
|
|
|
|
>
|
|
|
|
|
<el-table :data="fujianList" border style="width: 100%" header-align="center" v-loading="load2">
|
|
|
|
|
<el-table-column type="index" label="序号" align="center" width="50">
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column
|
|
|
|
|
prop="annex"
|
|
|
|
|
label="文件名称"
|
|
|
|
|
align="center"
|
|
|
|
|
:formatter="getName"
|
|
|
|
|
show-overflow-tooltip
|
|
|
|
|
>
|
|
|
|
|
<el-table-column prop="annex" label="文件名称" align="center" :formatter="getName" show-overflow-tooltip>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="createTime" label="上传时间" align="center">
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column
|
|
|
|
|
prop="address"
|
|
|
|
|
label="操作"
|
|
|
|
|
header-align="center"
|
|
|
|
|
width="200"
|
|
|
|
|
class-name="column-text-eight"
|
|
|
|
|
>
|
|
|
|
|
<el-table-column prop="address" label="操作" header-align="center" width="200" class-name="column-text-eight">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<div class="button">
|
|
|
|
|
<el-button
|
|
|
|
|
size="mini"
|
|
|
|
|
type="primary"
|
|
|
|
|
class="informant-btn"
|
|
|
|
|
@click="updateAnnex(scope.$index, scope.row)"
|
|
|
|
|
>下载</el-button
|
|
|
|
|
>
|
|
|
|
|
<el-button size="mini" type="primary" class="informant-btn"
|
|
|
|
|
@click="updateAnnex(scope.$index, scope.row)">下载</el-button>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
|
</el-table>
|
|
|
|
|
</RecallModule>
|
|
|
|
|
<!-- 召回事件变更 -->
|
|
|
|
|
<RecallModule
|
|
|
|
|
title="召回事件变更记录"
|
|
|
|
|
:tableData="updateData"
|
|
|
|
|
@myindex="myindex"
|
|
|
|
|
@sizeChange="sizeChange"
|
|
|
|
|
:total="updateData.total"
|
|
|
|
|
type="2"
|
|
|
|
|
>
|
|
|
|
|
<el-table
|
|
|
|
|
:data="updateData.records"
|
|
|
|
|
border
|
|
|
|
|
style="width: 100%"
|
|
|
|
|
header-align="center"
|
|
|
|
|
v-loading="load3"
|
|
|
|
|
>
|
|
|
|
|
<RecallModule title="召回事件变更记录" :tableData="updateData" @myindex="myindex" @sizeChange="sizeChange"
|
|
|
|
|
:total="updateData.total" type="2">
|
|
|
|
|
<el-table :data="updateData.records" border style="width: 100%" header-align="center" v-loading="load3">
|
|
|
|
|
<el-table-column type="index" label="序号" align="center" width="50">
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column
|
|
|
|
|
prop="createTime"
|
|
|
|
|
label="变更时间"
|
|
|
|
|
align="center"
|
|
|
|
|
width="400"
|
|
|
|
|
>
|
|
|
|
|
<el-table-column prop="createTime" label="变更时间" align="center" width="400">
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column prop="createName" label="变更人" align="center">
|
|
|
|
|
</el-table-column>
|
|
|
|
|
<el-table-column
|
|
|
|
|
prop="address"
|
|
|
|
|
label="操作"
|
|
|
|
|
header-align="center"
|
|
|
|
|
class-name="column-text-eight"
|
|
|
|
|
width="200"
|
|
|
|
|
>
|
|
|
|
|
<el-table-column prop="address" label="操作" header-align="center" class-name="column-text-eight" width="200">
|
|
|
|
|
<template slot-scope="scope">
|
|
|
|
|
<div class="button">
|
|
|
|
|
<el-button
|
|
|
|
|
size="mini"
|
|
|
|
|
type="primary"
|
|
|
|
|
class="informant-btn"
|
|
|
|
|
@click="filesUpload(scope.$index, scope.row)"
|
|
|
|
|
>详情</el-button
|
|
|
|
|
>
|
|
|
|
|
<el-button size="mini" type="primary" class="informant-btn"
|
|
|
|
|
@click="filesUpload(scope.$index, scope.row)">详情</el-button>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
</el-table-column>
|
|
|
|
@ -238,37 +301,14 @@
|
|
|
|
|
<div class="loadingStatus" v-loading="loading">
|
|
|
|
|
<div class="pingjiaContenr">
|
|
|
|
|
<div class="zhaohuipingjai">
|
|
|
|
|
<span>评价内容:</span
|
|
|
|
|
>{{
|
|
|
|
|
<span>评价内容:</span>{{
|
|
|
|
|
basicMsg.appraise == null || basicMsg.appraise == ""
|
|
|
|
|
? "暂无评价"
|
|
|
|
|
: basicMsg.appraise
|
|
|
|
|
}}
|
|
|
|
|
</div>
|
|
|
|
|
<div class="zhaohuipingjai-xian"></div>
|
|
|
|
|
<downloadBox
|
|
|
|
|
ref="downloadBox"
|
|
|
|
|
:value="basicMsg.annex"
|
|
|
|
|
:isShow="false"
|
|
|
|
|
></downloadBox>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</RecallModule>
|
|
|
|
|
<RecallModule title="召回审批情况" v-if="basicMsg.examineStatus == 2">
|
|
|
|
|
<div class="loadingStatus" v-loading="load4">
|
|
|
|
|
<div class="pingjiaContenr">
|
|
|
|
|
<div class="zhaohuipingjai">
|
|
|
|
|
<span>审批人:</span>
|
|
|
|
|
{{ basicMsg.examineName }}
|
|
|
|
|
</div>
|
|
|
|
|
<div class="zhaohuipingjai">
|
|
|
|
|
<span>审批状态:</span>
|
|
|
|
|
审核驳回
|
|
|
|
|
</div>
|
|
|
|
|
<div class="zhaohuipingjai">
|
|
|
|
|
<span>驳回原因:</span>
|
|
|
|
|
{{ basicMsg.rejectReasons }}
|
|
|
|
|
</div>
|
|
|
|
|
<downloadBox ref="downloadBox" :value="basicMsg.annex" :isShow="false"></downloadBox>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</RecallModule>
|
|
|
|
@ -281,14 +321,19 @@
|
|
|
|
|
<!-- 公示凭证 -->
|
|
|
|
|
<voucherImg ref="voucherImg"></voucherImg>
|
|
|
|
|
</div>
|
|
|
|
|
<dialogTowZhaohui ref="diologzhaohui" :titName="titNamebbb"></dialogTowZhaohui>
|
|
|
|
|
|
|
|
|
|
</el-dialog>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
|
import downloadBox from "@/views/components/downloadBoxTow/index.vue";
|
|
|
|
|
import downloadBox from "@/views/components/downloadBox/index.vue";
|
|
|
|
|
import RecallModule from "@/views/components/RecallModule/RecallModule.vue";
|
|
|
|
|
import mydialog from "@/views/components/dialog/index.vue";
|
|
|
|
|
import voucherImg from "@/views/components/voucherImg/index.vue";
|
|
|
|
|
|
|
|
|
|
import dialogTowZhaohui from "@/views/components/dialogTowZhaohui/dialogTow.vue";
|
|
|
|
|
|
|
|
|
|
export default {
|
|
|
|
|
name: "dialogTowZhaohui",
|
|
|
|
|
components: {
|
|
|
|
@ -296,6 +341,7 @@ export default {
|
|
|
|
|
mydialog,
|
|
|
|
|
downloadBox,
|
|
|
|
|
voucherImg,
|
|
|
|
|
dialogTowZhaohui
|
|
|
|
|
},
|
|
|
|
|
data() {
|
|
|
|
|
return {
|
|
|
|
@ -317,6 +363,16 @@ export default {
|
|
|
|
|
name: "召回总结报告",
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
shijiantitleTow: [
|
|
|
|
|
{
|
|
|
|
|
name: "召回通知",
|
|
|
|
|
index: 2
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
name: "召回总结报告",
|
|
|
|
|
index: 4
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
shijiantitleIndex: 0,
|
|
|
|
|
//请求召回产品信息的参数
|
|
|
|
|
productData: {
|
|
|
|
@ -353,9 +409,8 @@ export default {
|
|
|
|
|
rows: null,
|
|
|
|
|
fileName: "",
|
|
|
|
|
fileSize: "",
|
|
|
|
|
// rowList
|
|
|
|
|
rowList: {},
|
|
|
|
|
load4: false,
|
|
|
|
|
fujianList: [],
|
|
|
|
|
titNamebbb: ""
|
|
|
|
|
};
|
|
|
|
|
},
|
|
|
|
|
props: {
|
|
|
|
@ -367,7 +422,12 @@ export default {
|
|
|
|
|
methods: {
|
|
|
|
|
//查看凭证
|
|
|
|
|
lookVoucher() {
|
|
|
|
|
this.$refs.voucherImg.open(this.basicMsg.voucher);
|
|
|
|
|
console.log(this.basicMsg.recallDocuments.evidence);
|
|
|
|
|
this.$refs.voucherImg.open(this.basicMsg.recallDocuments.evidence);
|
|
|
|
|
},
|
|
|
|
|
looklingyige() {
|
|
|
|
|
console.log(this.basicMsg.recallDocuments);
|
|
|
|
|
this.$refs.voucherImg.open(this.basicMsg.recallDocuments.voucher);
|
|
|
|
|
},
|
|
|
|
|
//召回基本信息
|
|
|
|
|
async recallmsg() {
|
|
|
|
@ -386,18 +446,20 @@ export default {
|
|
|
|
|
//召回变更记录
|
|
|
|
|
async changeRecall() {
|
|
|
|
|
let msg3 = await this.$api.Shenqing.manyUpdateMsg(this.changeQuery);
|
|
|
|
|
console.log(msg3);
|
|
|
|
|
if (msg3.code == 200) this.load3 = false;
|
|
|
|
|
this.updateData = msg3.data;
|
|
|
|
|
},
|
|
|
|
|
//基本信息
|
|
|
|
|
|
|
|
|
|
async open(row) {
|
|
|
|
|
if (row.recallProductsType == 3) {
|
|
|
|
|
this.shijiantitleIndex = 2
|
|
|
|
|
}
|
|
|
|
|
this.rows = row.id;
|
|
|
|
|
this.dialogVisible = true;
|
|
|
|
|
this.productData.recallInfoId = row.id;
|
|
|
|
|
this.paramsData.recallInfoId = row.id;
|
|
|
|
|
this.changeQuery.recallInfoId = row.id;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
this.recallmsg();
|
|
|
|
|
this.productMsg();
|
|
|
|
|
//获取当前的事件附件
|
|
|
|
@ -519,10 +581,38 @@ export default {
|
|
|
|
|
this.paramsData.annexType = "5";
|
|
|
|
|
}
|
|
|
|
|
let msg1 = await this.$api.Shenqing.searchAnnex(this.paramsData);
|
|
|
|
|
|
|
|
|
|
this.annexList = msg1.data;
|
|
|
|
|
if (this.annexList.records.length != 0) {
|
|
|
|
|
const regex = /([^,]+,[^,]+,[^,]+)(?:,|$)/g;
|
|
|
|
|
let matches = []
|
|
|
|
|
matches = this.annexList.records[0].annex.match(regex);
|
|
|
|
|
console.log(matches);
|
|
|
|
|
let arr = []
|
|
|
|
|
matches.forEach((item) => {
|
|
|
|
|
arr.push({
|
|
|
|
|
annex: item,
|
|
|
|
|
createTime: this.annexList.records[0].createTime,
|
|
|
|
|
id: this.annexList.records[0].id,
|
|
|
|
|
})
|
|
|
|
|
})
|
|
|
|
|
this.fujianList = arr
|
|
|
|
|
console.log(arr);
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
this.fujianList = []
|
|
|
|
|
}
|
|
|
|
|
if (msg1.code == 200) this.load2 = false;
|
|
|
|
|
|
|
|
|
|
console.log(msg1);
|
|
|
|
|
},
|
|
|
|
|
lookzhaohu(row) {
|
|
|
|
|
let obj = {
|
|
|
|
|
id: row.recallInfoId
|
|
|
|
|
}
|
|
|
|
|
this.$refs.diologzhaohui.open(obj);
|
|
|
|
|
this.titNamebbb = "主动召回记录";
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
};
|
|
|
|
|
</script>
|
|
|
|
@ -534,8 +624,10 @@ export default {
|
|
|
|
|
width: 100%;
|
|
|
|
|
min-height: vh(200);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.dialog-slot {
|
|
|
|
|
padding: 0 vw(23);
|
|
|
|
|
|
|
|
|
|
.closeClick {
|
|
|
|
|
position: absolute;
|
|
|
|
|
top: vh(0);
|
|
|
|
@ -549,12 +641,14 @@ export default {
|
|
|
|
|
background: #f8f9fa;
|
|
|
|
|
box-shadow: 0px 1px 0px 0px #dbe0e8;
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
|
|
|
|
|
i {
|
|
|
|
|
font-family: Source Han Bolde CN;
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
text-align: center;
|
|
|
|
|
padding: vh(5) 0 0 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
div {
|
|
|
|
|
font-size: vb(20);
|
|
|
|
|
font-family: Source Han Bolde CN;
|
|
|
|
@ -563,10 +657,12 @@ export default {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
::v-deep .el-dialog {
|
|
|
|
|
margin-bottom: 10vh;
|
|
|
|
|
width: vw(812);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
::v-deep .el-dialog__body {
|
|
|
|
|
padding: vh(5) 0 vh(28);
|
|
|
|
|
overflow: hidden;
|
|
|
|
@ -576,24 +672,34 @@ export default {
|
|
|
|
|
background-color: #f8f9fa;
|
|
|
|
|
padding: vw(20) 0 vw(20) vw(20);
|
|
|
|
|
display: flex;
|
|
|
|
|
|
|
|
|
|
.recallbasic-item {
|
|
|
|
|
margin-right: vw(80);
|
|
|
|
|
|
|
|
|
|
.recallbasic-box {
|
|
|
|
|
font-size: vb(16);
|
|
|
|
|
font-size: vb(12);
|
|
|
|
|
font-family: Source Han Regular CN;
|
|
|
|
|
font-weight: 400;
|
|
|
|
|
line-height: vh(50);
|
|
|
|
|
display: flex;
|
|
|
|
|
|
|
|
|
|
.recallbasicname {
|
|
|
|
|
margin-right: vw(10);
|
|
|
|
|
text-align: right;
|
|
|
|
|
width: vw(100);
|
|
|
|
|
width: vw(150);
|
|
|
|
|
color: #6a6c6f;
|
|
|
|
|
line-height: vh(45);
|
|
|
|
|
}
|
|
|
|
|
span {
|
|
|
|
|
|
|
|
|
|
.recallbasicnameTow {
|
|
|
|
|
width: vw(180);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.isspan {
|
|
|
|
|
color: #292f38;
|
|
|
|
|
width: vw(300);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.recalitem-color {
|
|
|
|
|
color: #1e80eb;
|
|
|
|
|
text-decoration: underline;
|
|
|
|
@ -602,23 +708,27 @@ export default {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
::v-deep .el-pagination {
|
|
|
|
|
margin: vw(20) 0 0 0;
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: flex-end;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
::v-deep .el-pagination__jump {
|
|
|
|
|
margin: 0;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.button {
|
|
|
|
|
display: flex;
|
|
|
|
|
align-items: center;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.informant-btn {
|
|
|
|
|
// width: vw(44);
|
|
|
|
|
height: vh(23);
|
|
|
|
|
padding: vh(3) vw(3);
|
|
|
|
|
height: vh(30);
|
|
|
|
|
padding: vh(2) vw(2);
|
|
|
|
|
// display: inline-block !important;
|
|
|
|
|
background: #e4effd;
|
|
|
|
|
border: vw(1) solid #8cb9f8;
|
|
|
|
@ -627,51 +737,58 @@ export default {
|
|
|
|
|
display: flex;
|
|
|
|
|
justify-content: center;
|
|
|
|
|
align-items: center;
|
|
|
|
|
|
|
|
|
|
::v-deep span {
|
|
|
|
|
display: inline-block;
|
|
|
|
|
color: #1e80eb;
|
|
|
|
|
font-size: vb(12);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.zhaohuibaogao {
|
|
|
|
|
display: flex;
|
|
|
|
|
|
|
|
|
|
.zhaohuibaogao-item {
|
|
|
|
|
padding: 0 0 0 vw(15);
|
|
|
|
|
width: vw(140);
|
|
|
|
|
width: vw(150);
|
|
|
|
|
height: vh(45);
|
|
|
|
|
background: url("../../../assets/images/Transaction/bottom-moren.png")
|
|
|
|
|
no-repeat;
|
|
|
|
|
background: url("../../../assets/images/Transaction/bottom-moren.png") no-repeat;
|
|
|
|
|
background-size: 100% 100%;
|
|
|
|
|
|
|
|
|
|
font-size: vb(14);
|
|
|
|
|
font-size: vb(12);
|
|
|
|
|
font-family: Source Han Sans CN;
|
|
|
|
|
font-weight: 500;
|
|
|
|
|
color: #75777a;
|
|
|
|
|
line-height: vh(45);
|
|
|
|
|
cursor: pointer;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.active {
|
|
|
|
|
background: url("../../../assets/images/Transaction/bottom-xuanzhogn.png")
|
|
|
|
|
no-repeat;
|
|
|
|
|
background: url("../../../assets/images/Transaction/bottom-xuanzhogn.png") no-repeat;
|
|
|
|
|
background-size: 100% 100%;
|
|
|
|
|
font-family: Source Han Bolde CN;
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
color: #ffffff;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.pingjiaContenr {
|
|
|
|
|
padding: vw(20);
|
|
|
|
|
|
|
|
|
|
.zhaohuipingjai {
|
|
|
|
|
font-size: vb(16);
|
|
|
|
|
font-size: vb(14);
|
|
|
|
|
font-family: Source Han Bolde CN;
|
|
|
|
|
font-weight: bold;
|
|
|
|
|
color: #6a6c6f;
|
|
|
|
|
line-height: vw(50);
|
|
|
|
|
|
|
|
|
|
span {
|
|
|
|
|
margin: 0 vw(5) 0 0;
|
|
|
|
|
color: #000000;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.zhaohuipingjai-xian {
|
|
|
|
|
margin: vh(20) 0;
|
|
|
|
|
width: 100%;
|
|
|
|
|