|
|
@@ -1,124 +1,285 @@
|
|
|
<template>
|
|
|
<div class="application-dialog-container">
|
|
|
- <el-dialog :title="state.dialog.title" @close="onCancel" :close-on-click-modal="false" v-model="state.dialog.isShowDialog" width="100%">
|
|
|
- <el-form ref="expertDialogFormRef" :model="state.form" :rules="rules" size="default" label-width="140px" label-position="top">
|
|
|
+ <el-dialog
|
|
|
+ :title="state.dialog.title"
|
|
|
+ @close="onCancel"
|
|
|
+ :close-on-click-modal="false"
|
|
|
+ v-model="state.dialog.isShowDialog"
|
|
|
+ width="100%"
|
|
|
+ >
|
|
|
+ <el-form
|
|
|
+ ref="expertDialogFormRef"
|
|
|
+ :model="state.form"
|
|
|
+ :rules="rules"
|
|
|
+ size="default"
|
|
|
+ label-width="140px"
|
|
|
+ label-position="top"
|
|
|
+ >
|
|
|
<h4 class="mb8 mt8">基本信息</h4>
|
|
|
<el-row :gutter="20">
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="课题名称" prop="projectGroupId">
|
|
|
- <el-select v-model="state.form.projectGroupId" placeholder="请选择">
|
|
|
- <el-option v-for="item in projects" :key="item.id" :label="item.projectName" :value="item.id" />
|
|
|
+ <el-form-item
|
|
|
+ label="课题名称"
|
|
|
+ prop="projectGroupId"
|
|
|
+ >
|
|
|
+ <el-select
|
|
|
+ v-model="state.form.projectGroupId"
|
|
|
+ placeholder="请选择"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in projects"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.projectName"
|
|
|
+ :value="item.id"
|
|
|
+ />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="姓名" prop="group">
|
|
|
- <el-input v-model="userInfos.userName" disabled />
|
|
|
+ <el-form-item
|
|
|
+ label="姓名"
|
|
|
+ prop="group"
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ v-model="userInfos.userName"
|
|
|
+ disabled
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
<h4 class="mb8 mt10">实验动物笼位预约信息</h4>
|
|
|
- <el-row class="mt10" :gutter="20">
|
|
|
+ <el-row
|
|
|
+ class="mt10"
|
|
|
+ :gutter="20"
|
|
|
+ >
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="笼位数量" prop="number">
|
|
|
- <el-input-number v-model="state.form.number" style="width: 100%" :min="1" />
|
|
|
+ <el-form-item
|
|
|
+ label="笼位数量"
|
|
|
+ prop="number"
|
|
|
+ >
|
|
|
+ <el-input-number
|
|
|
+ v-model="state.form.number"
|
|
|
+ style="width: 100%"
|
|
|
+ :min="1"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="选择时间" prop="startDate">
|
|
|
- <el-date-picker v-model="state.form.startDate" type="date" placeholder="请选择时间" clearable style="width: 100%" />
|
|
|
+ <el-form-item
|
|
|
+ label="选择时间"
|
|
|
+ prop="startDate"
|
|
|
+ >
|
|
|
+ <el-date-picker
|
|
|
+ v-model="state.form.startDate"
|
|
|
+ type="date"
|
|
|
+ placeholder="请选择时间"
|
|
|
+ clearable
|
|
|
+ style="width: 100%"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
- <el-row class="mt10" :gutter="20">
|
|
|
+ <el-row
|
|
|
+ class="mt10"
|
|
|
+ :gutter="20"
|
|
|
+ >
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="品种品系" prop="categoryId">
|
|
|
- <el-select v-model="state.form.categoryId" placeholder="请选择">
|
|
|
- <el-option v-for="item in animalTypeList" :key="item.id" :label="item.name" :value="item.id" />
|
|
|
+ <el-form-item
|
|
|
+ label="品种品系"
|
|
|
+ prop="categoryId"
|
|
|
+ >
|
|
|
+ <el-select
|
|
|
+ v-model="state.form.categoryId"
|
|
|
+ placeholder="请选择"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in animalTypeList"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.id"
|
|
|
+ />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col :span="12">
|
|
|
- <el-form-item label="级别" prop="level">
|
|
|
- <el-select v-model="state.form.level" placeholder="请选择">
|
|
|
- <el-option v-for="item in LeavelList" :key="item.id" :label="item.name" :value="item.id" />
|
|
|
+ <el-form-item
|
|
|
+ label="级别"
|
|
|
+ prop="level"
|
|
|
+ >
|
|
|
+ <el-select
|
|
|
+ v-model="state.form.level"
|
|
|
+ placeholder="请选择"
|
|
|
+ >
|
|
|
+ <el-option
|
|
|
+ v-for="item in LeavelList"
|
|
|
+ :key="item.id"
|
|
|
+ :label="item.name"
|
|
|
+ :value="item.id"
|
|
|
+ />
|
|
|
</el-select>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
- <el-row class="mt10" :gutter="20">
|
|
|
+ <el-row
|
|
|
+ class="mt10"
|
|
|
+ :gutter="20"
|
|
|
+ >
|
|
|
<el-col :span="24">
|
|
|
- <el-form-item label="数量(雄性+雌性)" prop="maleNumber">
|
|
|
+ <el-form-item
|
|
|
+ label="数量(雄性+雌性)"
|
|
|
+ prop="maleNumber"
|
|
|
+ >
|
|
|
<div style="width: 100%; display: flex; justify-content: space-between">
|
|
|
- <el-input-number placeholder="雄性数量" v-model="state.form.maleNumber" :min="0" />
|
|
|
+ <el-input-number
|
|
|
+ placeholder="雄性数量"
|
|
|
+ v-model="state.form.maleNumber"
|
|
|
+ :min="0"
|
|
|
+ />
|
|
|
+
|
|
|
- <el-input-number placeholder="雌性数量" v-model="state.form.famaleNumber" :min="0" />
|
|
|
+ <el-input-number
|
|
|
+ placeholder="雌性数量"
|
|
|
+ v-model="state.form.famaleNumber"
|
|
|
+ :min="0"
|
|
|
+ />
|
|
|
</div>
|
|
|
<div style="width: 100%; margin-top: 10px">
|
|
|
- <el-input placeholder="总数" v-model="animalNumber" />
|
|
|
+ <el-input
|
|
|
+ placeholder="总数"
|
|
|
+ v-model="animalNumber"
|
|
|
+ />
|
|
|
</div>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
- <el-row class="mt10" :gutter="20">
|
|
|
+ <el-row
|
|
|
+ class="mt10"
|
|
|
+ :gutter="20"
|
|
|
+ >
|
|
|
<el-col :span="24">
|
|
|
- <el-form-item label="体重" prop="weight">
|
|
|
- <el-input-number v-model="state.form.weight" style="width: 100%" :min="0" />
|
|
|
+ <el-form-item
|
|
|
+ label="体重"
|
|
|
+ prop="weight"
|
|
|
+ >
|
|
|
+ <el-input-number
|
|
|
+ v-model="state.form.weight"
|
|
|
+ style="width: 100%"
|
|
|
+ :min="0"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
- <el-row class="mt10" :gutter="20">
|
|
|
+ <el-row
|
|
|
+ class="mt10"
|
|
|
+ :gutter="20"
|
|
|
+ >
|
|
|
<el-col :span="24">
|
|
|
- <el-form-item label="周龄" prop="age">
|
|
|
- <el-input-number v-model="state.form.age" style="width: 100%" :min="0" />
|
|
|
+ <el-form-item
|
|
|
+ label="周龄"
|
|
|
+ prop="age"
|
|
|
+ >
|
|
|
+ <el-input-number
|
|
|
+ v-model="state.form.age"
|
|
|
+ style="width: 100%"
|
|
|
+ :min="0"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
- <el-row class="mt10" :gutter="20">
|
|
|
+ <el-row
|
|
|
+ class="mt10"
|
|
|
+ :gutter="20"
|
|
|
+ >
|
|
|
<el-col :span="24">
|
|
|
- <el-form-item label="饲养总天数" prop="feedingDay">
|
|
|
- <el-input-number v-model="state.form.feedingDay" style="width: 100%" :min="0" />
|
|
|
+ <el-form-item
|
|
|
+ label="饲养总天数"
|
|
|
+ prop="feedingDay"
|
|
|
+ >
|
|
|
+ <el-input-number
|
|
|
+ v-model="state.form.feedingDay"
|
|
|
+ style="width: 100%"
|
|
|
+ :min="0"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
<h4 class="mb8 mt20">采购渠道</h4>
|
|
|
- <el-row class="mt10" :gutter="20">
|
|
|
+ <el-row
|
|
|
+ class="mt10"
|
|
|
+ :gutter="20"
|
|
|
+ >
|
|
|
<el-col :span="24">
|
|
|
- <el-form-item label="采购渠道" prop="buyFrom">
|
|
|
+ <el-form-item
|
|
|
+ label="采购渠道"
|
|
|
+ prop="buyFrom"
|
|
|
+ >
|
|
|
<el-radio-group v-model="state.form.buyFrom">
|
|
|
- <el-radio :label="ProcurementChannels.PURCHASED_BY_OTHERS" size="large">动物房代购</el-radio>
|
|
|
- <el-radio :label="ProcurementChannels.PURCHASED_BY_MYSELF" size="large">自行购买</el-radio>
|
|
|
+ <el-radio
|
|
|
+ :label="ProcurementChannels.PURCHASED_BY_OTHERS"
|
|
|
+ size="large"
|
|
|
+ >
|
|
|
+ 动物房代购
|
|
|
+ </el-radio>
|
|
|
+ <el-radio
|
|
|
+ :label="ProcurementChannels.PURCHASED_BY_MYSELF"
|
|
|
+ size="large"
|
|
|
+ >
|
|
|
+ 自行购买
|
|
|
+ </el-radio>
|
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
- <el-row class="mt10" :gutter="20">
|
|
|
+ <el-row
|
|
|
+ class="mt10"
|
|
|
+ :gutter="20"
|
|
|
+ >
|
|
|
<el-col :span="24">
|
|
|
- <el-form-item label="动物到达时间" prop="comeTime">
|
|
|
- <el-date-picker v-model="state.form.comeTime" type="date" placeholder="请选择到达时间" clearable style="width: 100%" />
|
|
|
+ <el-form-item
|
|
|
+ label="动物到达时间"
|
|
|
+ prop="comeTime"
|
|
|
+ >
|
|
|
+ <el-date-picker
|
|
|
+ v-model="state.form.comeTime"
|
|
|
+ type="date"
|
|
|
+ placeholder="请选择到达时间"
|
|
|
+ clearable
|
|
|
+ style="width: 100%"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
- <el-row class="mt10" :gutter="20">
|
|
|
+ <el-row
|
|
|
+ class="mt10"
|
|
|
+ :gutter="20"
|
|
|
+ >
|
|
|
<el-col :span="24">
|
|
|
- <el-form-item label="外购来源单位" prop="comeFromUnit">
|
|
|
+ <el-form-item
|
|
|
+ label="外购来源单位"
|
|
|
+ prop="comeFromUnit"
|
|
|
+ >
|
|
|
<el-input v-model="state.form.comeFromUnit" />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
- <el-row class="mt10" :gutter="20">
|
|
|
+ <el-row
|
|
|
+ class="mt10"
|
|
|
+ :gutter="20"
|
|
|
+ >
|
|
|
<el-col :span="24">
|
|
|
- <el-form-item label="生产许可证" prop="licenseNumberFile">
|
|
|
+ <el-form-item
|
|
|
+ label="生产许可证"
|
|
|
+ prop="licenseNumberFile"
|
|
|
+ >
|
|
|
<el-upload
|
|
|
v-model:file-list="licenseNumberFileList"
|
|
|
class="upload-demo"
|
|
|
@@ -127,7 +288,7 @@
|
|
|
style="width: 100%"
|
|
|
:before-upload="beforeAvatarFileUpload"
|
|
|
:on-remove="() => handleRemove(UploadFileType.LICENSE_NUMBER)"
|
|
|
- :on-success="(res: any) => handleSuccess(res, UploadFileType.LICENSE_NUMBER)"
|
|
|
+ :on-success="(res: any, file: UploadFile) => handleSuccess(res, UploadFileType.LICENSE_NUMBER, file)"
|
|
|
>
|
|
|
<el-button type="primary">点击上传</el-button>
|
|
|
<div class="el-upload__tip ml10">支持格式:jpg png pdf等,单个文件不超过20MB</div>
|
|
|
@@ -136,9 +297,15 @@
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
- <el-row class="mt10" :gutter="20">
|
|
|
+ <el-row
|
|
|
+ class="mt10"
|
|
|
+ :gutter="20"
|
|
|
+ >
|
|
|
<el-col :span="24">
|
|
|
- <el-form-item label="近三个月动物质量检测证明" prop="animalTestDateFile">
|
|
|
+ <el-form-item
|
|
|
+ label="近三个月动物质量检测证明"
|
|
|
+ prop="animalTestDateFile"
|
|
|
+ >
|
|
|
<el-upload
|
|
|
v-model:file-list="animalTestDateFileList"
|
|
|
class="upload-demo"
|
|
|
@@ -147,7 +314,7 @@
|
|
|
style="width: 100%"
|
|
|
:before-upload="beforeAvatarFileUpload"
|
|
|
:on-remove="() => handleRemove(UploadFileType.ANIMAL_TEST_DATE)"
|
|
|
- :on-success="(res: any) => handleSuccess(res, UploadFileType.ANIMAL_TEST_DATE)"
|
|
|
+ :on-success="(res: any, file: UploadFile) => handleSuccess(res, UploadFileType.ANIMAL_TEST_DATE, file)"
|
|
|
>
|
|
|
<el-button type="primary">点击上传</el-button>
|
|
|
<div class="el-upload__tip ml10">支持格式:jpg png pdf等,单个文件不超过20MB</div>
|
|
|
@@ -156,9 +323,15 @@
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
- <el-row class="mt10" :gutter="20">
|
|
|
+ <el-row
|
|
|
+ class="mt10"
|
|
|
+ :gutter="20"
|
|
|
+ >
|
|
|
<el-col :span="24">
|
|
|
- <el-form-item label="近三个月饲养环境检测证明" prop="envTestDateFile">
|
|
|
+ <el-form-item
|
|
|
+ label="近三个月饲养环境检测证明"
|
|
|
+ prop="envTestDateFile"
|
|
|
+ >
|
|
|
<el-upload
|
|
|
v-model:file-list="envTestDateFileList"
|
|
|
class="upload-demo"
|
|
|
@@ -167,7 +340,7 @@
|
|
|
style="width: 100%"
|
|
|
:before-upload="beforeAvatarFileUpload"
|
|
|
:on-remove="() => handleRemove(UploadFileType.ENV_TEST_DATE)"
|
|
|
- :on-success="(res: any) => handleSuccess(res, UploadFileType.ENV_TEST_DATE)"
|
|
|
+ :on-success="(res: any, file: UploadFile) => handleSuccess(res, UploadFileType.ENV_TEST_DATE, file)"
|
|
|
>
|
|
|
<el-button type="primary">点击上传</el-button>
|
|
|
<div class="el-upload__tip ml10">支持格式:jpg png pdf等,单个文件不超过20MB</div>
|
|
|
@@ -177,28 +350,62 @@
|
|
|
</el-row>
|
|
|
|
|
|
<h4 class="mb8 mt20">特殊要求和附件</h4>
|
|
|
- <el-row class="mt10" :gutter="20">
|
|
|
+ <el-row
|
|
|
+ class="mt10"
|
|
|
+ :gutter="20"
|
|
|
+ >
|
|
|
<el-col :span="24">
|
|
|
- <el-form-item label="是否有特殊饲养要求" prop="hasFeedingSpecial">
|
|
|
+ <el-form-item
|
|
|
+ label="是否有特殊饲养要求"
|
|
|
+ prop="hasFeedingSpecial"
|
|
|
+ >
|
|
|
<el-radio-group v-model="state.form.hasFeedingSpecial">
|
|
|
- <el-radio :label="FeedingSpecial.HAVE_FEEDING_SPECIAL" size="large">有</el-radio>
|
|
|
- <el-radio :label="FeedingSpecial.NO_FEEDING_SPECIAL" size="large">无</el-radio>
|
|
|
+ <el-radio
|
|
|
+ :label="FeedingSpecial.HAVE_FEEDING_SPECIAL"
|
|
|
+ size="large"
|
|
|
+ >
|
|
|
+ 有
|
|
|
+ </el-radio>
|
|
|
+ <el-radio
|
|
|
+ :label="FeedingSpecial.NO_FEEDING_SPECIAL"
|
|
|
+ size="large"
|
|
|
+ >
|
|
|
+ 无
|
|
|
+ </el-radio>
|
|
|
</el-radio-group>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
- <el-row class="mt10" :gutter="20">
|
|
|
- <el-col :span="24" v-if="state.form.hasFeedingSpecial === FeedingSpecial.HAVE_FEEDING_SPECIAL">
|
|
|
- <el-form-item label="特殊饲养要求" prop="feedingSpecialDesc">
|
|
|
- <el-input placeholder="输入特殊饲养要求,如每天更换垫料等" v-model="state.form.feedingSpecialDesc" />
|
|
|
+ <el-row
|
|
|
+ class="mt10"
|
|
|
+ :gutter="20"
|
|
|
+ >
|
|
|
+ <el-col
|
|
|
+ :span="24"
|
|
|
+ v-if="state.form.hasFeedingSpecial === FeedingSpecial.HAVE_FEEDING_SPECIAL"
|
|
|
+ >
|
|
|
+ <el-form-item
|
|
|
+ label="特殊饲养要求"
|
|
|
+ prop="feedingSpecialDesc"
|
|
|
+ >
|
|
|
+ <el-input
|
|
|
+ placeholder="输入特殊饲养要求,如每天更换垫料等"
|
|
|
+ v-model="state.form.feedingSpecialDesc"
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
- <el-row class="mt10" :gutter="20">
|
|
|
+ <el-row
|
|
|
+ class="mt10"
|
|
|
+ :gutter="20"
|
|
|
+ >
|
|
|
<el-col :span="24">
|
|
|
- <el-form-item label="笼位预约表" prop="cageAppointFile">
|
|
|
+ <el-form-item
|
|
|
+ label="笼位预约表"
|
|
|
+ prop="cageAppointFile"
|
|
|
+ >
|
|
|
<el-upload
|
|
|
v-model:file-list="cageAppointFileList"
|
|
|
class="upload-demo"
|
|
|
@@ -207,7 +414,7 @@
|
|
|
style="width: 100%"
|
|
|
:before-upload="beforeAvatarFileUpload"
|
|
|
:on-remove="() => handleRemove(UploadFileType.CAGE_APPOINT_FILE)"
|
|
|
- :on-success="(res: any) => handleSuccess(res, UploadFileType.CAGE_APPOINT_FILE)"
|
|
|
+ :on-success="(res: any, file: UploadFile) => handleSuccess(res, UploadFileType.CAGE_APPOINT_FILE, file)"
|
|
|
>
|
|
|
<el-button type="primary">点击上传</el-button>
|
|
|
<div class="el-upload__tip ml10">支持格式:jpg png pdf等,单个文件不超过20MB</div>
|
|
|
@@ -216,9 +423,15 @@
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
- <el-row class="mt10" :gutter="20">
|
|
|
+ <el-row
|
|
|
+ class="mt10"
|
|
|
+ :gutter="20"
|
|
|
+ >
|
|
|
<el-col :span="24">
|
|
|
- <el-form-item label="伦理审查表" prop="ethicsCheckFile">
|
|
|
+ <el-form-item
|
|
|
+ label="伦理审查表"
|
|
|
+ prop="ethicsCheckFile"
|
|
|
+ >
|
|
|
<el-upload
|
|
|
v-model:file-list="ethicsCheckFileList"
|
|
|
class="upload-demo"
|
|
|
@@ -227,7 +440,7 @@
|
|
|
style="width: 100%"
|
|
|
:before-upload="beforeAvatarFileUpload"
|
|
|
:on-remove="() => handleRemove(UploadFileType.ETHICS_CHECK_FILE)"
|
|
|
- :on-success="(res: any) => handleSuccess(res, UploadFileType.ETHICS_CHECK_FILE)"
|
|
|
+ :on-success="(res: any, file: UploadFile) => handleSuccess(res, UploadFileType.ETHICS_CHECK_FILE, file)"
|
|
|
>
|
|
|
<el-button type="primary">点击上传</el-button>
|
|
|
<div class="el-upload__tip ml10">支持格式:jpg png pdf等,单个文件不超过20MB</div>
|
|
|
@@ -236,9 +449,15 @@
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
- <el-row class="mt10" :gutter="20">
|
|
|
+ <el-row
|
|
|
+ class="mt10"
|
|
|
+ :gutter="20"
|
|
|
+ >
|
|
|
<el-col :span="24">
|
|
|
- <el-form-item label="伦理意见表" prop="ethicsAdviceFile">
|
|
|
+ <el-form-item
|
|
|
+ label="伦理意见表"
|
|
|
+ prop="ethicsAdviceFile"
|
|
|
+ >
|
|
|
<el-upload
|
|
|
v-model:file-list="ethicsAdviceFileList"
|
|
|
class="upload-demo"
|
|
|
@@ -247,7 +466,7 @@
|
|
|
style="width: 100%"
|
|
|
:before-upload="beforeAvatarFileUpload"
|
|
|
:on-remove="() => handleRemove(UploadFileType.ETHICS_ADVICE_FILE)"
|
|
|
- :on-success="(res: any) => handleSuccess(res, UploadFileType.ETHICS_ADVICE_FILE)"
|
|
|
+ :on-success="(res: any, file: UploadFile) => handleSuccess(res, UploadFileType.ETHICS_ADVICE_FILE, file)"
|
|
|
>
|
|
|
<el-button type="primary">点击上传</el-button>
|
|
|
<div class="el-upload__tip ml10">支持格式:jpg png pdf等,单个文件不超过20MB</div>
|
|
|
@@ -256,7 +475,10 @@
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
- <el-checkbox style="margin-top: 30px; margin-bottom: 30px" v-model="safePromise">
|
|
|
+ <el-checkbox
|
|
|
+ style="margin-top: 30px; margin-bottom: 30px"
|
|
|
+ v-model="safePromise"
|
|
|
+ >
|
|
|
<div class="safePromise">
|
|
|
本人(以上所述课题的负责人)谨此声明:本项目所包含的实验动物、实验方法、实验材料及试剂无放射性、感染性和化学毒性,所有参与实验人员在实验过程中自愿遵守遵义医科大学附属医院实验动物房的管理制度和操作流程,愿意根据其规定的付费方式向遵义医科大学附属医院实验动物房支付所有的费用。
|
|
|
</div>
|
|
|
@@ -265,8 +487,20 @@
|
|
|
|
|
|
<template #footer>
|
|
|
<span class="dialog-footer">
|
|
|
- <el-button type="info" @click="onCancel" size="default">取 消</el-button>
|
|
|
- <el-button color="#2c78ff" @click="onSubmit()" size="default">提交</el-button>
|
|
|
+ <el-button
|
|
|
+ type="info"
|
|
|
+ @click="onCancel"
|
|
|
+ size="default"
|
|
|
+ >
|
|
|
+ 取 消
|
|
|
+ </el-button>
|
|
|
+ <el-button
|
|
|
+ color="#2c78ff"
|
|
|
+ @click="onSubmit()"
|
|
|
+ size="default"
|
|
|
+ >
|
|
|
+ 提交
|
|
|
+ </el-button>
|
|
|
</span>
|
|
|
</template>
|
|
|
</el-dialog>
|
|
|
@@ -304,7 +538,11 @@
|
|
|
projectGroupId: { required: true, message: '不能为空', trigger: 'change' },
|
|
|
categoryId: { required: true, message: '不能为空', trigger: 'change' },
|
|
|
number: { required: true, message: '不能为空', trigger: 'change' },
|
|
|
- startDate: { required: true, message: '不能为空', trigger: 'change' }
|
|
|
+ startDate: { required: true, message: '不能为空', trigger: 'change' },
|
|
|
+ maleNumber: { required: true, message: '不能为空', trigger: 'change' },
|
|
|
+ weight: { required: true, message: '不能为空', trigger: 'change' },
|
|
|
+ buyFrom: { required: true, message: '不能为空', trigger: 'change' },
|
|
|
+ comeFromUnit: { required: true, message: '不能为空', trigger: 'change' },
|
|
|
}
|
|
|
|
|
|
const animalNumber = computed(() => {
|
|
|
@@ -339,14 +577,14 @@
|
|
|
buyFrom: ProcurementChannels.PURCHASED_BY_OTHERS,
|
|
|
comeTime: '',
|
|
|
comeFromUnit: '',
|
|
|
- licenseNumberFile: '',
|
|
|
- animalTestDateFile: '',
|
|
|
- envTestDateFile: '',
|
|
|
+ licenseNumberFile: [],
|
|
|
+ animalTestDateFile: [],
|
|
|
+ envTestDateFile: [],
|
|
|
hasFeedingSpecial: FeedingSpecial.HAVE_FEEDING_SPECIAL,
|
|
|
feedingSpecialDesc: '',
|
|
|
- cageAppointFile: '',
|
|
|
- ethicsCheckFile: '',
|
|
|
- ethicsAdviceFile: ''
|
|
|
+ cageAppointFile: [],
|
|
|
+ ethicsCheckFile: [],
|
|
|
+ ethicsAdviceFile: [],
|
|
|
},
|
|
|
safePromise: false,
|
|
|
safeRead: false,
|
|
|
@@ -354,12 +592,15 @@
|
|
|
isShowDialog: false,
|
|
|
type: '',
|
|
|
title: '',
|
|
|
- submitTxt: ''
|
|
|
- }
|
|
|
+ submitTxt: '',
|
|
|
+ },
|
|
|
})
|
|
|
|
|
|
const getDicts = () => {
|
|
|
- Promise.all([platAnimalCageApplicationApi.getAnimalTypeList({}), platAnimalCageApplicationApi.getProjectGroup({})]).then(([animalType, projectGroup]) => {
|
|
|
+ Promise.all([
|
|
|
+ platAnimalCageApplicationApi.getAnimalTypeList({}),
|
|
|
+ platAnimalCageApplicationApi.getProjectGroup({}),
|
|
|
+ ]).then(([animalType, projectGroup]) => {
|
|
|
animalTypeList.value = animalType.data
|
|
|
if (projectGroup && projectGroup.data) {
|
|
|
projectGroupList.value = projectGroup.data
|
|
|
@@ -399,38 +640,39 @@
|
|
|
const handleRemove = (type: UploadFileType) => {
|
|
|
if (type === UploadFileType.LICENSE_NUMBER) {
|
|
|
licenseNumberFileList.value = []
|
|
|
- state.form.licenseNumberFile = ''
|
|
|
+ state.form.licenseNumberFile = []
|
|
|
} else if (type === UploadFileType.ANIMAL_TEST_DATE) {
|
|
|
animalTestDateFileList.value = []
|
|
|
- state.form.animalTestDateFile = ''
|
|
|
+ state.form.animalTestDateFile = []
|
|
|
} else if (type === UploadFileType.ENV_TEST_DATE) {
|
|
|
envTestDateFileList.value = []
|
|
|
- state.form.envTestDateFile = ''
|
|
|
+ state.form.envTestDateFile = []
|
|
|
} else if (type === UploadFileType.CAGE_APPOINT_FILE) {
|
|
|
cageAppointFileList.value = []
|
|
|
- state.form.cageAppointFile = ''
|
|
|
+ state.form.cageAppointFile = []
|
|
|
} else if (type === UploadFileType.ETHICS_CHECK_FILE) {
|
|
|
ethicsCheckFileList.value = []
|
|
|
- state.form.ethicsCheckFile = ''
|
|
|
+ state.form.ethicsCheckFile = []
|
|
|
} else if (type === UploadFileType.ETHICS_ADVICE_FILE) {
|
|
|
ethicsAdviceFileList.value = []
|
|
|
- state.form.ethicsAdviceFile = ''
|
|
|
+ state.form.ethicsAdviceFile = []
|
|
|
}
|
|
|
}
|
|
|
|
|
|
- const handleSuccess = (res: { Data: string }, type: UploadFileType) => {
|
|
|
+ const handleSuccess = (res: { Data: string }, type: UploadFileType, file: UploadFile) => {
|
|
|
+ console.log('ressss', res, file)
|
|
|
if (type === UploadFileType.LICENSE_NUMBER) {
|
|
|
- state.form.licenseNumberFile = res?.Data || ''
|
|
|
+ state.form.licenseNumberFile = [{ name: file.name, url: res?.Data }]
|
|
|
} else if (type === UploadFileType.ANIMAL_TEST_DATE) {
|
|
|
- state.form.animalTestDateFile = res?.Data || ''
|
|
|
+ state.form.animalTestDateFile = [{ name: file.name, url: res?.Data }]
|
|
|
} else if (type === UploadFileType.ENV_TEST_DATE) {
|
|
|
- state.form.envTestDateFile = res?.Data || ''
|
|
|
+ state.form.envTestDateFile = [{ name: file.name, url: res?.Data }]
|
|
|
} else if (type === UploadFileType.CAGE_APPOINT_FILE) {
|
|
|
- state.form.cageAppointFile = res?.Data || ''
|
|
|
+ state.form.cageAppointFile = [{ name: file.name, url: res?.Data }]
|
|
|
} else if (type === UploadFileType.ETHICS_CHECK_FILE) {
|
|
|
- state.form.ethicsCheckFile = res?.Data || ''
|
|
|
+ state.form.ethicsCheckFile = [{ name: file.name, url: res?.Data }]
|
|
|
} else if (type === UploadFileType.ETHICS_ADVICE_FILE) {
|
|
|
- state.form.ethicsAdviceFile = res?.Data || ''
|
|
|
+ state.form.ethicsAdviceFile = [{ name: file.name, url: res?.Data }]
|
|
|
}
|
|
|
}
|
|
|
|
|
|
@@ -446,10 +688,16 @@
|
|
|
|
|
|
const params = {
|
|
|
...deepClone(state.form),
|
|
|
- categoryId: state.form.categoryId ? Number(state.form.categoryId) : null,
|
|
|
categoryName: animalTypeList.value.find((item) => item.id == state.form.categoryId)?.name,
|
|
|
projectGroupName: projects.value.find((item) => item.id == state.form.projectGroupId)?.projectName,
|
|
|
- startDate: dayjs(state.form.startDate).format('YYYY-MM-DD')
|
|
|
+ startDate: dayjs(state.form.startDate).format('YYYY-MM-DD'),
|
|
|
+ comeTime: state.form.comeTime ? dayjs(state.form.comeTime).format('YYYY-MM-DD') : '',
|
|
|
+ licenseNumberFile: JSON.stringify(state.form.licenseNumberFile),
|
|
|
+ animalTestDateFile: JSON.stringify(state.form.animalTestDateFile),
|
|
|
+ envTestDateFile: JSON.stringify(state.form.envTestDateFile),
|
|
|
+ cageAppointFile: JSON.stringify(state.form.cageAppointFile),
|
|
|
+ ethicsCheckFile: JSON.stringify(state.form.ethicsCheckFile),
|
|
|
+ ethicsAdviceFile: JSON.stringify(state.form.ethicsAdviceFile),
|
|
|
}
|
|
|
|
|
|
Object.entries(params).forEach(([key, value]) => {
|
|
|
@@ -469,7 +717,7 @@
|
|
|
|
|
|
// 暴露变量
|
|
|
defineExpose({
|
|
|
- openDialog
|
|
|
+ openDialog,
|
|
|
})
|
|
|
</script>
|
|
|
<style lang="scss" scoped>
|