|
|
|
@ -1,213 +1,407 @@
|
|
|
|
|
<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="90%">
|
|
|
|
|
<div class="dialog-slot">
|
|
|
|
|
<div class="closeClick">
|
|
|
|
|
<div>{{ titName }}</div>
|
|
|
|
|
<i class="el-icon-close" @click="Close"></i>
|
|
|
|
|
</div>
|
|
|
|
|
<el-form ref="sizeForm" :model="sizeForm" size="mini" :inline="true" :inline-message="true" :rules="rules">
|
|
|
|
|
<RecallModule title="召回基本信息"></RecallModule>
|
|
|
|
|
<!-- 第一行 -->
|
|
|
|
|
<div class="form form-a">
|
|
|
|
|
<el-form-item label="产品名称:" prop="recallProductName">
|
|
|
|
|
<el-input v-model="sizeForm.recallProductName" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="注册证或备案凭证编码:" prop="registrationCode">
|
|
|
|
|
<el-input v-model="sizeForm.registrationCode" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="生产企业名称:" prop="entName">
|
|
|
|
|
<el-input v-model="sizeForm.entName" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="代理人名称:" prop="agentName">
|
|
|
|
|
<el-input v-model="sizeForm.agentName" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- 第二行 -->
|
|
|
|
|
<div class="form form-b">
|
|
|
|
|
<el-form-item label="召回单位负责人:" prop="head">
|
|
|
|
|
<el-input v-model="sizeForm.head" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="联系方式:" prop="headContact">
|
|
|
|
|
<el-input v-model="sizeForm.headContact" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="召回经办人:" prop="jingbanren">
|
|
|
|
|
<el-input v-model="sizeForm.jingbanren" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="联系方式:" prop="jingbanrenContact">
|
|
|
|
|
<el-input v-model="sizeForm.jingbanrenContact" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- 第三行 -->
|
|
|
|
|
<div class="form form-c">
|
|
|
|
|
<el-form-item label="产品的适用范围:" prop="scopeOfApplication">
|
|
|
|
|
<el-input type="textarea" resize="none" :rows="3" class="mytext" v-model="sizeForm.scopeOfApplication"
|
|
|
|
|
placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- 第四 -->
|
|
|
|
|
<div class="form form-d">
|
|
|
|
|
<el-form-item label="涉及地区和国家:" prop="region">
|
|
|
|
|
<el-input v-model="sizeForm.region" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="涉及产品型号、规格:" prop="productSpecifications">
|
|
|
|
|
<el-input v-model="sizeForm.productSpecifications" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="召回级别:" prop="recallLevel">
|
|
|
|
|
<el-input v-model="sizeForm.recallLevel" placeholder="请选择级别">
|
|
|
|
|
</el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="召回产品类型:" prop="recallProductsType">
|
|
|
|
|
<el-input v-model="sizeForm.recallProductsType" placeholder="请选择产品类型">
|
|
|
|
|
</el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<div>
|
|
|
|
|
<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="90%" v-if="sizeFormTow.recallProductsType != 3">
|
|
|
|
|
<div class="dialog-slot">
|
|
|
|
|
<div class="closeClick">
|
|
|
|
|
<div>{{ titName }}</div>
|
|
|
|
|
<i class="el-icon-close" @click="Close"></i>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- 新增单位行 -->
|
|
|
|
|
<div class="form form-d">
|
|
|
|
|
<el-form-item label="产品单位:" prop="unitOfMeasure">
|
|
|
|
|
<el-input placeholder="请输入" v-model="sizeForm.unitOfMeasure"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- 第五 -->
|
|
|
|
|
<div class="form form-e" v-for="(item, index) in sizeForm.recallPlanList" :key="index">
|
|
|
|
|
<el-form-item label="产品批号:" :prop="`recallPlanList[${index}].productLotNumber`" :rules="[
|
|
|
|
|
{ required: true, message: '产品批号不能为空', trigger: 'blur' },
|
|
|
|
|
]">
|
|
|
|
|
<el-input v-model="sizeForm.recallPlanList[index].productLotNumber" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="产品生产量:" :prop="`recallPlanList[${index}].throughput`" :rules="[
|
|
|
|
|
{
|
|
|
|
|
required: true,
|
|
|
|
|
message: '产品生产量不能为空',
|
|
|
|
|
trigger: 'blur',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
type: 'number',
|
|
|
|
|
message: '产品生产量必须为数值',
|
|
|
|
|
},
|
|
|
|
|
]">
|
|
|
|
|
<el-input v-model.number="sizeForm.recallPlanList[index].throughput" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="销售总量:" :prop="`recallPlanList[${index}].totalSales`" :rules="[
|
|
|
|
|
{ required: true, message: '销售总量不能为空', trigger: 'blur' },
|
|
|
|
|
{
|
|
|
|
|
type: 'number',
|
|
|
|
|
message: '销售总量必须为数值',
|
|
|
|
|
},
|
|
|
|
|
]">
|
|
|
|
|
<el-input v-model.number="sizeForm.recallPlanList[index].totalSales" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="拟召回总量:" :prop="`recallPlanList[${index}].totalPlannedRecalls`" :rules="[
|
|
|
|
|
{
|
|
|
|
|
required: true,
|
|
|
|
|
message: '拟召回总量不能为空',
|
|
|
|
|
trigger: 'blur',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
type: 'number',
|
|
|
|
|
message: '拟召回总量必须为数值',
|
|
|
|
|
},
|
|
|
|
|
]">
|
|
|
|
|
<el-input v-model.number="sizeForm.recallPlanList[index].totalPlannedRecalls
|
|
|
|
|
" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<div class="anjian" @click="renderDynamicForm(item, index)">
|
|
|
|
|
<img src="../../../assets/images/home/tianija.png" alt="" v-if="index == 0" />
|
|
|
|
|
<img src="../../../assets/images/home/xianshishan.png" alt="" v-else />
|
|
|
|
|
<el-form ref="sizeForm" :model="sizeForm" size="mini" :inline="true" :inline-message="true" :rules="rules">
|
|
|
|
|
<RecallModule title="召回基本信息"></RecallModule>
|
|
|
|
|
<!-- 第一行 -->
|
|
|
|
|
<div class="form form-a">
|
|
|
|
|
<el-form-item label="产品名称:" prop="recallProductName">
|
|
|
|
|
<el-input v-model="sizeForm.recallProductName" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="注册证或备案凭证编码:" prop="registrationCode">
|
|
|
|
|
<el-input v-model="sizeForm.registrationCode" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="生产企业名称:" prop="entName">
|
|
|
|
|
<el-input v-model="sizeForm.entName" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="代理人名称:" prop="agentName">
|
|
|
|
|
<el-input v-model="sizeForm.agentName" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- 第二行 -->
|
|
|
|
|
<div class="form form-b">
|
|
|
|
|
<el-form-item label="召回单位负责人:" prop="head">
|
|
|
|
|
<el-input v-model="sizeForm.head" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="联系方式:" prop="headContact">
|
|
|
|
|
<el-input v-model="sizeForm.headContact" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="召回经办人:" prop="jingbanren">
|
|
|
|
|
<el-input v-model="sizeForm.jingbanren" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="联系方式:" prop="jingbanrenContact">
|
|
|
|
|
<el-input v-model="sizeForm.jingbanrenContact" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- 第三行 -->
|
|
|
|
|
<div class="form form-c">
|
|
|
|
|
<el-form-item label="产品的适用范围:" prop="scopeOfApplication">
|
|
|
|
|
<el-input type="textarea" resize="none" :rows="3" class="mytext" v-model="sizeForm.scopeOfApplication"
|
|
|
|
|
placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- 第四 -->
|
|
|
|
|
<div class="form form-d">
|
|
|
|
|
<el-form-item label="涉及地区和国家:" prop="region">
|
|
|
|
|
<el-input v-model="sizeForm.region" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="涉及产品型号、规格:" prop="productSpecifications">
|
|
|
|
|
<el-input v-model="sizeForm.productSpecifications" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="召回级别:" prop="recallLevel">
|
|
|
|
|
<el-input v-model="sizeForm.recallLevel" placeholder="请选择级别">
|
|
|
|
|
</el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="召回产品类型:" prop="recallProductsType">
|
|
|
|
|
<el-input v-model="sizeForm.recallProductsType" placeholder="请选择产品类型">
|
|
|
|
|
</el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- 新增单位行 -->
|
|
|
|
|
<div class="form form-d">
|
|
|
|
|
<el-form-item label="产品单位:" prop="unitOfMeasure">
|
|
|
|
|
<el-input placeholder="请输入" v-model="sizeForm.unitOfMeasure"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- 第五 -->
|
|
|
|
|
<div class="form form-e" v-for="(item, index) in sizeForm.recallPlanList" :key="index">
|
|
|
|
|
<el-form-item label="产品批号:" :prop="`recallPlanList[${index}].productLotNumber`" :rules="[
|
|
|
|
|
{ required: true, message: '产品批号不能为空', trigger: 'blur' },
|
|
|
|
|
]">
|
|
|
|
|
<el-input v-model="sizeForm.recallPlanList[index].productLotNumber" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="产品生产量:" :prop="`recallPlanList[${index}].throughput`" :rules="[
|
|
|
|
|
{
|
|
|
|
|
required: true,
|
|
|
|
|
message: '产品生产量不能为空',
|
|
|
|
|
trigger: 'blur',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
type: 'number',
|
|
|
|
|
message: '产品生产量必须为数值',
|
|
|
|
|
},
|
|
|
|
|
]">
|
|
|
|
|
<el-input v-model.number="sizeForm.recallPlanList[index].throughput" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="销售总量:" :prop="`recallPlanList[${index}].totalSales`" :rules="[
|
|
|
|
|
{ required: true, message: '销售总量不能为空', trigger: 'blur' },
|
|
|
|
|
{
|
|
|
|
|
type: 'number',
|
|
|
|
|
message: '销售总量必须为数值',
|
|
|
|
|
},
|
|
|
|
|
]">
|
|
|
|
|
<el-input v-model.number="sizeForm.recallPlanList[index].totalSales" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="拟召回总量:" :prop="`recallPlanList[${index}].totalPlannedRecalls`" :rules="[
|
|
|
|
|
{
|
|
|
|
|
required: true,
|
|
|
|
|
message: '拟召回总量不能为空',
|
|
|
|
|
trigger: 'blur',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
type: 'number',
|
|
|
|
|
message: '拟召回总量必须为数值',
|
|
|
|
|
},
|
|
|
|
|
]">
|
|
|
|
|
<el-input v-model.number="sizeForm.recallPlanList[index].totalPlannedRecalls
|
|
|
|
|
" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<div class="anjian" @click="renderDynamicForm(item, index)">
|
|
|
|
|
<img src="../../../assets/images/home/tianija.png" alt="" v-if="index == 0" />
|
|
|
|
|
<img src="../../../assets/images/home/xianshishan.png" alt="" v-else />
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- 第六 -->
|
|
|
|
|
<div class="form form-f">
|
|
|
|
|
<el-form-item label="召回原因简述:" prop="cause">
|
|
|
|
|
<el-input type="textarea" resize="none" :rows="3" class="myjianshu" v-model="sizeForm.cause"
|
|
|
|
|
placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="纠正行动简述:" prop="rectify">
|
|
|
|
|
<el-input type="textarea" resize="none" :rows="3" class="myjianshu" v-model="sizeForm.rectify"
|
|
|
|
|
placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- 第六 -->
|
|
|
|
|
<div class="form form-f">
|
|
|
|
|
<el-form-item label="召回原因简述:" prop="cause">
|
|
|
|
|
<el-input type="textarea" resize="none" :rows="3" class="myjianshu" v-model="sizeForm.cause"
|
|
|
|
|
placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="纠正行动简述:" prop="rectify">
|
|
|
|
|
<el-input type="textarea" resize="none" :rows="3" class="myjianshu" v-model="sizeForm.rectify"
|
|
|
|
|
placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<RecallModule title="召回文件附件">
|
|
|
|
|
<div class="file-content">
|
|
|
|
|
<div class="files filesOne">
|
|
|
|
|
<el-form-item prop="assessmentReport">
|
|
|
|
|
<div class="file-one">
|
|
|
|
|
<span>召回评估报告:</span>
|
|
|
|
|
<fileDeliverAll ref="clear1" :isShowTip="false" v-model="sizeForm.assessmentReport" :deleatShan="false">
|
|
|
|
|
</fileDeliverAll>
|
|
|
|
|
</div>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="files">
|
|
|
|
|
<el-form-item prop="voucher">
|
|
|
|
|
<div class="file-two">
|
|
|
|
|
<span class="span">公示凭证:</span>
|
|
|
|
|
<fileDeliver ref="clear2" :isShowTip="false" :fileType="fileType" upText="选择图片" margintop="5"
|
|
|
|
|
:isImg="true" v-model="sizeForm.voucher" :deleatShan="false"></fileDeliver>
|
|
|
|
|
</div>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="files filesOne">
|
|
|
|
|
<el-form-item prop="plan">
|
|
|
|
|
<div class="file-one">
|
|
|
|
|
<span>召回计划:</span>
|
|
|
|
|
<fileDeliverAll ref="clear3" :isShowTip="false" v-model="sizeForm.plan" :deleatShan="false">
|
|
|
|
|
</fileDeliverAll>
|
|
|
|
|
</div>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="files">
|
|
|
|
|
<el-form-item prop="evidence">
|
|
|
|
|
<div class="file-two">
|
|
|
|
|
<span class="span">备案凭证:</span>
|
|
|
|
|
<fileDeliver ref="clear4" :isShowTip="false" :deleatShan="false" :fileType="fileType" upText="选择图片"
|
|
|
|
|
:isImg="true" margintop="5" v-model="sizeForm.evidence"></fileDeliver>
|
|
|
|
|
<div class="duoyu">
|
|
|
|
|
<!-- <el-button @click="resetForm(3)">去备案</el-button> -->
|
|
|
|
|
<RecallModule title="召回文件附件">
|
|
|
|
|
<div class="file-content">
|
|
|
|
|
<div class="files filesOne">
|
|
|
|
|
<el-form-item prop="assessmentReport">
|
|
|
|
|
<div class="file-one">
|
|
|
|
|
<span>召回评估报告:</span>
|
|
|
|
|
<fileDeliverAll ref="clear1" :isShowTip="false" v-model="sizeForm.assessmentReport"
|
|
|
|
|
:deleatShan="false">
|
|
|
|
|
</fileDeliverAll>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="files filesOne">
|
|
|
|
|
<el-form-item prop="notice">
|
|
|
|
|
<div class="file-one">
|
|
|
|
|
<span>召回通知:</span>
|
|
|
|
|
<fileDeliverAll ref="clear5" :isShowTip="false" v-model="sizeForm.notice" :deleatShan="false">
|
|
|
|
|
</fileDeliverAll>
|
|
|
|
|
</div>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="files">
|
|
|
|
|
<el-form-item prop="voucher">
|
|
|
|
|
<div class="file-two">
|
|
|
|
|
<span class="span">公示凭证:</span>
|
|
|
|
|
<fileDeliver ref="clear2" :isShowTip="false" :fileType="fileType" upText="选择图片" margintop="5"
|
|
|
|
|
:isImg="true" v-model="sizeForm.voucher" :deleatShan="false"></fileDeliver>
|
|
|
|
|
</div>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="files filesOne">
|
|
|
|
|
<el-form-item prop="plan">
|
|
|
|
|
<div class="file-one">
|
|
|
|
|
<span>召回计划:</span>
|
|
|
|
|
<fileDeliverAll ref="clear3" :isShowTip="false" v-model="sizeForm.plan" :deleatShan="false">
|
|
|
|
|
</fileDeliverAll>
|
|
|
|
|
</div>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="files">
|
|
|
|
|
<el-form-item prop="evidence">
|
|
|
|
|
<div class="file-two">
|
|
|
|
|
<span class="span">备案凭证:</span>
|
|
|
|
|
<fileDeliver ref="clear4" :isShowTip="false" :deleatShan="false" :fileType="fileType" upText="选择图片"
|
|
|
|
|
:isImg="true" margintop="5" v-model="sizeForm.evidence"></fileDeliver>
|
|
|
|
|
<div class="duoyu">
|
|
|
|
|
<!-- <el-button @click="resetForm(3)">去备案</el-button> -->
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
<div class="files filesOne">
|
|
|
|
|
<el-form-item prop="notice">
|
|
|
|
|
<div class="file-one">
|
|
|
|
|
<span>召回通知:</span>
|
|
|
|
|
<fileDeliverAll ref="clear5" :isShowTip="false" v-model="sizeForm.notice" :deleatShan="false">
|
|
|
|
|
</fileDeliverAll>
|
|
|
|
|
</div>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</RecallModule>
|
|
|
|
|
|
|
|
|
|
<!-- 确定重置 -->
|
|
|
|
|
<div class="bottom">
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<el-button @click="submitForm('1', 2)" v-show="false"></el-button>
|
|
|
|
|
<el-button @click="submitForm('1', 2)">驳回</el-button>
|
|
|
|
|
<el-button type="primary" @click="submitForm('1', 3)">通过</el-button>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
</RecallModule>
|
|
|
|
|
|
|
|
|
|
<!-- 确定重置 -->
|
|
|
|
|
<div class="bottom">
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<el-button @click="submitForm('1', 2)" v-show="false"></el-button>
|
|
|
|
|
<el-button @click="submitForm('1', 2)">驳回</el-button>
|
|
|
|
|
<el-button type="primary" @click="submitForm('1', 3)">通过</el-button>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</el-form>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
</el-dialog>
|
|
|
|
|
<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="90%" v-else>
|
|
|
|
|
<div class="dialog-slot">
|
|
|
|
|
<div class="closeClick">
|
|
|
|
|
<div>申请产品召回</div>
|
|
|
|
|
<i class="el-icon-close" @click="Close"></i>
|
|
|
|
|
</div>
|
|
|
|
|
</el-form>
|
|
|
|
|
|
|
|
|
|
<dialogTitle ref="dialogTitle" title="审批驳回" width="35%">
|
|
|
|
|
<div class="xiaoxi">
|
|
|
|
|
<div class="xiaoxi-box">
|
|
|
|
|
<span class="xiaoxi-box-span">驳回原因:</span>
|
|
|
|
|
<el-input type="textarea" :rows="4" placeholder="请输入内容" v-model="textarea" class="xiaoxi-box-textarea"
|
|
|
|
|
resize="none"></el-input>
|
|
|
|
|
<el-form ref="sizeForm" :model="sizeForm" size="mini" :inline="true" :inline-message="true" :rules="rulesTow">
|
|
|
|
|
<RecallModule title="召回企业信息"></RecallModule>
|
|
|
|
|
<!-- 第一行 -->
|
|
|
|
|
<div class="form form-a">
|
|
|
|
|
<el-form-item label="企业名称:" prop="entName">
|
|
|
|
|
<el-input v-model="sizeForm.entName" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="地址:" prop="address">
|
|
|
|
|
<el-input v-model="sizeForm.address" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="统一信社会信用代码:" prop="entCode">
|
|
|
|
|
<el-input v-model="sizeForm.entCode" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="法定代表人:" prop="legal">
|
|
|
|
|
<el-input v-model="sizeForm.legal" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
<!-- 第二行 -->
|
|
|
|
|
<div class="form form-b">
|
|
|
|
|
<el-form-item label="法人联系电话:" prop="legalPhone">
|
|
|
|
|
<el-input v-model="sizeForm.legalPhone" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="企业联系人:" prop="contact">
|
|
|
|
|
<el-input v-model="sizeForm.contact" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="企业联系人电话:" prop="phone">
|
|
|
|
|
<el-input v-model="sizeForm.phone" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
<RecallModule title="召回产品信息"></RecallModule>
|
|
|
|
|
|
|
|
|
|
<!-- 第三行 -->
|
|
|
|
|
<!-- <div class="form form-c">
|
|
|
|
|
<el-form-item label="召回启动日期:" prop="scopeOfApplication">
|
|
|
|
|
<el-input type="textarea" resize="none" :rows="3" class="mytext" v-model="sizeForm.scopeOfApplication"
|
|
|
|
|
placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div> -->
|
|
|
|
|
<!-- 第四 -->
|
|
|
|
|
<div class="form form-d">
|
|
|
|
|
<el-form-item label="召回启动日期:" prop="recallTime">
|
|
|
|
|
<!-- <el-input v-model="sizeForm.recallTime" placeholder="请输入"></el-input> -->
|
|
|
|
|
<el-date-picker v-model="sizeForm.recallTime" type="date" placeholder="选择日期" format="yyyy-MM-dd HH:mm:ss"
|
|
|
|
|
value-format="yyyy-MM-dd HH:mm:ss">
|
|
|
|
|
</el-date-picker>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="报告日期:" prop="reportTime">
|
|
|
|
|
<!-- <el-input v-model="sizeForm.reportTime" placeholder="请输入"></el-input> -->
|
|
|
|
|
<el-date-picker v-model="sizeForm.reportTime" type="date" placeholder="选择日期" format="yyyy-MM-dd HH:mm:ss"
|
|
|
|
|
value-format="yyyy-MM-dd HH:mm:ss">
|
|
|
|
|
</el-date-picker>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="召回产品名称:" prop="recallProductName">
|
|
|
|
|
<el-input v-model="sizeForm.recallProductName" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="注册/备案号:" prop="recordNumber">
|
|
|
|
|
<el-input v-model="sizeForm.recordNumber" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
|
|
<!-- <el-form-item label="召回产品类型:" prop="recallProductsType">
|
|
|
|
|
<el-select v-model="sizeForm.recallProductsType" placeholder="请选择产品类型">
|
|
|
|
|
<el-option label="药品" value="1"></el-option>
|
|
|
|
|
<el-option label="医疗器械" value="2"></el-option>
|
|
|
|
|
</el-select>
|
|
|
|
|
</el-form-item> -->
|
|
|
|
|
</div>
|
|
|
|
|
<!-- 新增单位行 -->
|
|
|
|
|
<div class="form form-d">
|
|
|
|
|
<el-form-item label="涉及批次数:" prop="numberInvolve">
|
|
|
|
|
<el-input placeholder="请输入" v-model="sizeForm.numberInvolve"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="涉及产品数量:" prop="productInvolve">
|
|
|
|
|
<el-input placeholder="请输入" v-model.number="sizeForm.productInvolve"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="销售数量:" prop="saleNumber">
|
|
|
|
|
<el-input placeholder="请输入" v-model.number="sizeForm.saleNumber"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="召回数量:" prop="remainRecall">
|
|
|
|
|
<el-input placeholder="请输入" v-model.number="sizeForm.remainRecall"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- 第五 -->
|
|
|
|
|
<div class="form form-e form-eTow" v-for="(item, index) in sizeForm.recallPlanList" :key="index">
|
|
|
|
|
<el-form-item label="产品批号/生产日期:" :prop="`recallPlanList[${index}].productLotNumber`" :rules="[
|
|
|
|
|
{ required: true, message: '产品批号不能为空', trigger: 'blur' },
|
|
|
|
|
]">
|
|
|
|
|
<el-input v-model="sizeForm.recallPlanList[index].productLotNumber" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
|
|
|
|
|
<div class="xiaoxi-btn">
|
|
|
|
|
<el-button size="mini" @click="textarea = ''">重置</el-button>
|
|
|
|
|
<el-button type="primary" size="mini" @click="submitForm('queding', 2)">确 定</el-button>
|
|
|
|
|
<el-form-item label="净含量:" :prop="`recallPlanList[${index}].totalPlannedRecalls`" :rules="[
|
|
|
|
|
{
|
|
|
|
|
required: true,
|
|
|
|
|
message: '净含量不能为空',
|
|
|
|
|
trigger: 'blur',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
type: 'number',
|
|
|
|
|
message: '净含量必须为数值',
|
|
|
|
|
},
|
|
|
|
|
]">
|
|
|
|
|
<el-input v-model.number="sizeForm.recallPlanList[index].totalPlannedRecalls"
|
|
|
|
|
placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="使用期限/有效期至:" :prop="`recallPlanList[${index}].expiraeDate`" :rules="[
|
|
|
|
|
{ required: true, message: '使用期限/有效期至不能为空', trigger: 'blur' },
|
|
|
|
|
]">
|
|
|
|
|
<!-- <el-input v-model.number="" placeholder="请输入"></el-input> -->
|
|
|
|
|
<el-date-picker v-model="sizeForm.recallPlanList[index].expiraeDate" type="date" placeholder="选择日期"
|
|
|
|
|
format="yyyy-MM-dd HH:mm:ss" value-format="yyyy-MM-dd HH:mm:ss">
|
|
|
|
|
</el-date-picker>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="生产数量:" :prop="`recallPlanList[${index}].throughput`" :rules="[
|
|
|
|
|
{
|
|
|
|
|
required: true,
|
|
|
|
|
message: '生产数量不能为空',
|
|
|
|
|
trigger: 'blur',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
type: 'number',
|
|
|
|
|
message: '生产数量必须为数值',
|
|
|
|
|
},
|
|
|
|
|
]">
|
|
|
|
|
<el-input v-model.number="sizeForm.recallPlanList[index].throughput
|
|
|
|
|
" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="召回数量:" :prop="`recallPlanList[${index}].totalSales`" :rules="[
|
|
|
|
|
{
|
|
|
|
|
required: true,
|
|
|
|
|
message: '召回数量不能为空',
|
|
|
|
|
trigger: 'blur',
|
|
|
|
|
},
|
|
|
|
|
{
|
|
|
|
|
type: 'number',
|
|
|
|
|
message: '召回数量必须为数值',
|
|
|
|
|
},
|
|
|
|
|
]">
|
|
|
|
|
<el-input v-model.number="sizeForm.recallPlanList[index].totalSales
|
|
|
|
|
" placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<div class="anjian" @click="renderDynamicForm(item, index)">
|
|
|
|
|
<img src="../../../assets/images/home/tianija.png" alt="" v-if="index == 0" />
|
|
|
|
|
<img src="../../../assets/images/home/xianshishan.png" alt="" v-else />
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<!-- 第六 -->
|
|
|
|
|
<div class="form form-f">
|
|
|
|
|
<el-form-item label="召回原因简述:" prop="cause">
|
|
|
|
|
<el-input type="textarea" resize="none" :rows="3" class="myjianshu" v-model="sizeForm.cause"
|
|
|
|
|
placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
<el-form-item label="纠正行动简述:" prop="rectify">
|
|
|
|
|
<el-input type="textarea" resize="none" :rows="3" class="myjianshu" v-model="sizeForm.rectify"
|
|
|
|
|
placeholder="请输入"></el-input>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<RecallModule title="召回文件附件">
|
|
|
|
|
<div class="file-content">
|
|
|
|
|
<div class="files filesOne">
|
|
|
|
|
<el-form-item prop="notice">
|
|
|
|
|
<div class="file-one">
|
|
|
|
|
<span>召回通知:</span>
|
|
|
|
|
<fileDeliverAll ref="clear5" :isShowTip="false" v-model="sizeForm.notice"></fileDeliverAll>
|
|
|
|
|
</div>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
</div>
|
|
|
|
|
</RecallModule>
|
|
|
|
|
|
|
|
|
|
<!-- 确定重置 -->
|
|
|
|
|
<div class="bottom">
|
|
|
|
|
<el-form-item>
|
|
|
|
|
<el-button @click="submitForm('1', 2)" v-show="false"></el-button>
|
|
|
|
|
<el-button @click="submitForm('1', 2)">驳回</el-button>
|
|
|
|
|
<el-button type="primary" @click="submitForm('1', 3)">通过</el-button>
|
|
|
|
|
</el-form-item>
|
|
|
|
|
</div>
|
|
|
|
|
</el-form>
|
|
|
|
|
|
|
|
|
|
</div>
|
|
|
|
|
</el-dialog>
|
|
|
|
|
<dialogTitle ref="dialogTitle" title="审批驳回" width="35%">
|
|
|
|
|
<div class="xiaoxi">
|
|
|
|
|
<div class="xiaoxi-box">
|
|
|
|
|
<span class="xiaoxi-box-span">驳回原因:</span>
|
|
|
|
|
<el-input type="textarea" :rows="4" placeholder="请输入内容" v-model="textarea" class="xiaoxi-box-textarea"
|
|
|
|
|
resize="none"></el-input>
|
|
|
|
|
</div>
|
|
|
|
|
|
|
|
|
|
<div class="xiaoxi-btn">
|
|
|
|
|
<el-button size="mini" @click="textarea = ''">重置</el-button>
|
|
|
|
|
<el-button type="primary" size="mini" @click="submitForm('queding', 2)">确 定</el-button>
|
|
|
|
|
</div>
|
|
|
|
|
</dialogTitle>
|
|
|
|
|
</div>
|
|
|
|
|
</el-dialog>
|
|
|
|
|
</div>
|
|
|
|
|
</dialogTitle>
|
|
|
|
|
</div>
|
|
|
|
|
</template>
|
|
|
|
|
|
|
|
|
|
<script>
|
|
|
|
@ -396,6 +590,95 @@ export default {
|
|
|
|
|
{ required: true, message: "请上传召回通知", trigger: "blur" },
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
rulesTow: {
|
|
|
|
|
entName: [
|
|
|
|
|
{ required: true, message: "请输入产品名称", trigger: "blur" },
|
|
|
|
|
],
|
|
|
|
|
address: [
|
|
|
|
|
{ required: true, message: "请输入地址", trigger: "blur" },
|
|
|
|
|
],
|
|
|
|
|
entCode: [
|
|
|
|
|
{ required: true, message: "请输入信用代码", trigger: "blur" },
|
|
|
|
|
],
|
|
|
|
|
legal: [
|
|
|
|
|
{ required: true, message: "请输入法定代表人", trigger: "blur" },
|
|
|
|
|
],
|
|
|
|
|
legalPhone: [
|
|
|
|
|
{ required: true, message: "请输入法定代表人联系方式", trigger: "blur" },
|
|
|
|
|
{
|
|
|
|
|
validator: (rule, value, callback) => {
|
|
|
|
|
const regExp =
|
|
|
|
|
/^(0|86|17951)?(13[0-9]|15[012356789]|166|17[3678]|18[0-9]|14[57])[0-9]{8}$/;
|
|
|
|
|
if (!regExp.test(value)) {
|
|
|
|
|
callback(new Error("请输入正确的手机号"));
|
|
|
|
|
} else {
|
|
|
|
|
callback();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
trigger: "change",
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
contact: [
|
|
|
|
|
{ required: true, message: "请输入企业联系人", trigger: "blur" },
|
|
|
|
|
],
|
|
|
|
|
phone: [
|
|
|
|
|
{ required: true, message: "请输入企业联系人联系电话", trigger: "blur" },
|
|
|
|
|
{
|
|
|
|
|
validator: (rule, value, callback) => {
|
|
|
|
|
const regExp =
|
|
|
|
|
/^(0|86|17951)?(13[0-9]|15[012356789]|166|17[3678]|18[0-9]|14[57])[0-9]{8}$/;
|
|
|
|
|
if (!regExp.test(value)) {
|
|
|
|
|
callback(new Error("请输入正确的手机号"));
|
|
|
|
|
} else {
|
|
|
|
|
callback();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
trigger: "change",
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
recallTime: [
|
|
|
|
|
{ required: true, message: "请输入召回启动日期", trigger: "blur" },
|
|
|
|
|
], reportTime: [
|
|
|
|
|
{ required: true, message: "请输入报告日期", trigger: "blur" },
|
|
|
|
|
],
|
|
|
|
|
recallProductName: [
|
|
|
|
|
{ required: true, message: "请输入召回产品名称", trigger: "blur" },
|
|
|
|
|
],
|
|
|
|
|
recordNumber: [
|
|
|
|
|
{ required: true, message: "请输入注册备案号", trigger: "blur" },
|
|
|
|
|
],
|
|
|
|
|
numberInvolve: [
|
|
|
|
|
{ required: true, message: "请输入涉及批次数", trigger: "blur" },
|
|
|
|
|
],
|
|
|
|
|
productInvolve: [
|
|
|
|
|
{ required: true, message: "请输入涉及产品数量", trigger: "blur" },
|
|
|
|
|
{
|
|
|
|
|
type: 'number',
|
|
|
|
|
message: '生产数量必须为数值',
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
saleNumber: [
|
|
|
|
|
{ required: true, message: "请输入销售数量", trigger: "blur" },
|
|
|
|
|
{
|
|
|
|
|
type: 'number',
|
|
|
|
|
message: '生产数量必须为数值',
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
remainRecall: [
|
|
|
|
|
{ required: true, message: "请输入召回", trigger: "blur" },
|
|
|
|
|
{
|
|
|
|
|
type: 'number',
|
|
|
|
|
message: '生产数量必须为数值',
|
|
|
|
|
},
|
|
|
|
|
],
|
|
|
|
|
|
|
|
|
|
cause: [
|
|
|
|
|
{ required: true, message: "请输入召回原因简述", trigger: "blur" },
|
|
|
|
|
],
|
|
|
|
|
notice: [
|
|
|
|
|
{ required: true, message: "请输入召回通知", trigger: "blur" },
|
|
|
|
|
],
|
|
|
|
|
},
|
|
|
|
|
fileType: ["jpg", "jpeg", "png"],
|
|
|
|
|
queryDada: {
|
|
|
|
|
assessmentReport: "",
|
|
|
|
@ -535,11 +818,16 @@ export default {
|
|
|
|
|
},
|
|
|
|
|
// 清除上传的文件
|
|
|
|
|
clera() {
|
|
|
|
|
this.$refs["clear1"].clear();
|
|
|
|
|
this.$refs["clear2"].clear();
|
|
|
|
|
this.$refs["clear3"].clear();
|
|
|
|
|
this.$refs["clear4"].clear();
|
|
|
|
|
this.$refs["clear5"].clear();
|
|
|
|
|
if (this.sizeFormTow.recallProductsType != 3) {
|
|
|
|
|
this.$refs["clear1"].clear();
|
|
|
|
|
this.$refs["clear2"].clear();
|
|
|
|
|
this.$refs["clear3"].clear();
|
|
|
|
|
this.$refs["clear4"].clear();
|
|
|
|
|
this.$refs["clear5"].clear();
|
|
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
this.$refs["clear5"].clear();
|
|
|
|
|
}
|
|
|
|
|
},
|
|
|
|
|
// 添加表单
|
|
|
|
|
renderDynamicForm(item, index) {
|
|
|
|
@ -716,6 +1004,34 @@ export default {
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
::v-deep .form-eTow {
|
|
|
|
|
padding-left: vw(60);
|
|
|
|
|
|
|
|
|
|
.el-form-item__label {
|
|
|
|
|
width: vw(100);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.el-form-item__content {
|
|
|
|
|
width: vw(205);
|
|
|
|
|
|
|
|
|
|
.el-input {
|
|
|
|
|
width: vw(205);
|
|
|
|
|
|
|
|
|
|
.el-input__inner {
|
|
|
|
|
width: vw(205);
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
::v-deep .el-date-editor.el-input,
|
|
|
|
|
.el-date-editor.el-input__inner {
|
|
|
|
|
width: 100% !important;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
.file-content {
|
|
|
|
|
pointer-events: auto;
|
|
|
|
|
display: grid;
|
|
|
|
@ -779,7 +1095,7 @@ export default {
|
|
|
|
|
.duoyu {
|
|
|
|
|
margin-top: 5px;
|
|
|
|
|
|
|
|
|
|
::v-deep .el-button {
|
|
|
|
|
::v-deep .el-button {
|
|
|
|
|
margin-left: vw(10);
|
|
|
|
|
display: inline-block;
|
|
|
|
|
border: vw(1) solid #1e80eb;
|
|
|
|
|