|
|
@@ -17,107 +17,93 @@
|
|
|
>
|
|
|
<el-row :gutter="35">
|
|
|
<el-col
|
|
|
- :span="12"
|
|
|
+ :span="24"
|
|
|
class="mb20"
|
|
|
>
|
|
|
<el-form-item
|
|
|
- label="申请人姓名"
|
|
|
- prop="memberName"
|
|
|
+ label="课题名称"
|
|
|
+ prop="memberType"
|
|
|
>
|
|
|
<el-input
|
|
|
- v-model="state.form.userName"
|
|
|
+ v-model="state.form.projectGroupName"
|
|
|
disabled
|
|
|
- placeholder="请输入申请人姓名"
|
|
|
+ placeholder="请输入课题名称"
|
|
|
></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
<el-col
|
|
|
- :span="12"
|
|
|
+ :span="24"
|
|
|
class="mb20"
|
|
|
>
|
|
|
<el-form-item
|
|
|
- label="课题名称"
|
|
|
- prop="memberType"
|
|
|
+ label="姓名"
|
|
|
+ prop="memberName"
|
|
|
>
|
|
|
<el-input
|
|
|
- v-model="state.form.projectGroupName"
|
|
|
+ v-model="state.form.userName"
|
|
|
disabled
|
|
|
- placeholder="请输入课题名称"
|
|
|
+ placeholder="请输入姓名"
|
|
|
></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
- <el-row :gutter="35">
|
|
|
- <el-col
|
|
|
- :span="12"
|
|
|
- class="mb20"
|
|
|
- >
|
|
|
+ <el-row :gutter="20">
|
|
|
+ <el-col :span="24">
|
|
|
<el-form-item
|
|
|
- label="申请时间"
|
|
|
- prop="memberPhone"
|
|
|
+ label="部门"
|
|
|
+ prop="deptName"
|
|
|
>
|
|
|
<el-input
|
|
|
- v-model="state.form.createdTime"
|
|
|
+ v-model="state.form.deptName"
|
|
|
disabled
|
|
|
- placeholder="请输入申请时间"
|
|
|
- ></el-input>
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
- <el-col
|
|
|
- :span="12"
|
|
|
- class="mb20"
|
|
|
- >
|
|
|
+ <el-col :span="24">
|
|
|
<el-form-item
|
|
|
- label="申请状态"
|
|
|
- prop="mentorName"
|
|
|
+ label="联系方式"
|
|
|
+ prop="phone"
|
|
|
>
|
|
|
<el-input
|
|
|
- v-model="state.form.approveStatus"
|
|
|
+ v-model="state.form.phone"
|
|
|
disabled
|
|
|
- placeholder="请输入申请状态"
|
|
|
- ></el-input>
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
- <el-row :gutter="35">
|
|
|
- <el-col
|
|
|
- :span="12"
|
|
|
- class="mb10"
|
|
|
- >
|
|
|
+ <h4 class="mb8 mt10">实验动物笼位预约信息</h4>
|
|
|
+ <el-row
|
|
|
+ class="mt10"
|
|
|
+ :gutter="20"
|
|
|
+ >
|
|
|
+ <el-col :span="24">
|
|
|
<el-form-item
|
|
|
- :label="props.isReturnCageList ? '退还笼位(个)' : '申请笼位(个)'"
|
|
|
- prop="mentorObj"
|
|
|
+ label="笼位数量"
|
|
|
+ prop="number"
|
|
|
>
|
|
|
- <el-input
|
|
|
- v-if="!props.isReturnCageList"
|
|
|
+ <el-input-number
|
|
|
v-model="state.form.number"
|
|
|
+ style="width: 100%"
|
|
|
+ :min="1"
|
|
|
disabled
|
|
|
- placeholder="请输入申请笼位"
|
|
|
- ></el-input>
|
|
|
- <el-input
|
|
|
- v-else
|
|
|
- v-model="state.form.returnNumber"
|
|
|
- disabled
|
|
|
- placeholder="请输入申请笼位"
|
|
|
- ></el-input>
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
-
|
|
|
- <el-col
|
|
|
- :span="12"
|
|
|
- class="mb10"
|
|
|
- >
|
|
|
+ <el-col :span="24">
|
|
|
<el-form-item
|
|
|
- label="动物类型"
|
|
|
- prop="mentorDeptName"
|
|
|
+ label="开始使用时间"
|
|
|
+ prop="startDate"
|
|
|
>
|
|
|
- <el-input
|
|
|
- v-model="state.form.categoryName"
|
|
|
+ <el-date-picker
|
|
|
+ v-model="state.form.startDate"
|
|
|
+ type="date"
|
|
|
+ placeholder="请开始使用时间"
|
|
|
+ clearable
|
|
|
+ style="width: 100%"
|
|
|
disabled
|
|
|
- placeholder="请输入动物类型"
|
|
|
- ></el-input>
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
@@ -126,47 +112,73 @@
|
|
|
class="mt10"
|
|
|
:gutter="20"
|
|
|
>
|
|
|
- <el-col :span="12">
|
|
|
+ <el-col :span="24">
|
|
|
<el-form-item
|
|
|
- label="雄性"
|
|
|
- prop="maleNumber"
|
|
|
+ label="品种品系"
|
|
|
+ prop="categoryId"
|
|
|
>
|
|
|
- <el-input
|
|
|
- style="width: 100%"
|
|
|
+ <el-select
|
|
|
+ v-model="state.form.categoryId"
|
|
|
+ placeholder="请选择"
|
|
|
disabled
|
|
|
- placeholder="雄性数量"
|
|
|
- v-model="state.form.maleNumber"
|
|
|
- />
|
|
|
+ >
|
|
|
+ <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-col :span="24">
|
|
|
<el-form-item
|
|
|
- label="雌性"
|
|
|
- prop="famaleNumber"
|
|
|
+ label="饲养区域"
|
|
|
+ prop="level"
|
|
|
>
|
|
|
- <el-input
|
|
|
- style="width: 100%"
|
|
|
+ <el-select
|
|
|
+ v-model="state.form.level"
|
|
|
+ placeholder="请选择"
|
|
|
disabled
|
|
|
- placeholder="雌性数量"
|
|
|
- v-model="state.form.famaleNumber"
|
|
|
- />
|
|
|
+ >
|
|
|
+ <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"
|
|
|
+ class="mt10"
|
|
|
>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item
|
|
|
+ label="周龄"
|
|
|
+ prop="age"
|
|
|
+ >
|
|
|
+ <el-input-number
|
|
|
+ v-model="state.form.age"
|
|
|
+ style="width: 100%"
|
|
|
+ :min="0"
|
|
|
+ disabled
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
<el-col :span="24">
|
|
|
<el-form-item
|
|
|
label="体重"
|
|
|
prop="weight"
|
|
|
>
|
|
|
- <el-input
|
|
|
- disabled
|
|
|
+ <el-input-number
|
|
|
v-model="state.form.weight"
|
|
|
style="width: 100%"
|
|
|
+ :min="0"
|
|
|
+ disabled
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
@@ -178,13 +190,43 @@
|
|
|
>
|
|
|
<el-col :span="24">
|
|
|
<el-form-item
|
|
|
- label="周龄"
|
|
|
- prop="age"
|
|
|
+ label="雄性"
|
|
|
+ prop="maleNumber"
|
|
|
>
|
|
|
- <el-input
|
|
|
+ <el-input-number
|
|
|
+ style="width: 100%"
|
|
|
+ placeholder="雄性数量"
|
|
|
+ v-model="state.form.maleNumber"
|
|
|
+ :min="0"
|
|
|
disabled
|
|
|
- v-model="state.form.age"
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item
|
|
|
+ label="雌性"
|
|
|
+ prop="famaleNumber"
|
|
|
+ >
|
|
|
+ <el-input-number
|
|
|
style="width: 100%"
|
|
|
+ placeholder="雌性数量"
|
|
|
+ v-model="state.form.famaleNumber"
|
|
|
+ :min="0"
|
|
|
+ disabled
|
|
|
+ />
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item
|
|
|
+ label="合计"
|
|
|
+ prop="totalNumber"
|
|
|
+ >
|
|
|
+ <el-input-number
|
|
|
+ style="width: 100%"
|
|
|
+ disabled
|
|
|
+ placeholder="合计"
|
|
|
+ v-model="state.form.totalNumber"
|
|
|
+ :min="0"
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
@@ -199,15 +241,17 @@
|
|
|
label="饲养总天数"
|
|
|
prop="feedingDay"
|
|
|
>
|
|
|
- <el-input
|
|
|
- disabled
|
|
|
+ <el-input-number
|
|
|
v-model="state.form.feedingDay"
|
|
|
style="width: 100%"
|
|
|
+ :min="1"
|
|
|
+ disabled
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
+ <h4 class="mb8 mt20">采购渠道</h4>
|
|
|
<el-row
|
|
|
class="mt10"
|
|
|
:gutter="20"
|
|
|
@@ -239,46 +283,19 @@
|
|
|
</el-row>
|
|
|
|
|
|
<el-row
|
|
|
+ v-if="state.form.buyFrom === ProcurementChannels.PURCHASED_BY_MYSELF"
|
|
|
class="mt10"
|
|
|
:gutter="20"
|
|
|
>
|
|
|
<el-col :span="24">
|
|
|
<el-form-item
|
|
|
- label="是否有特殊饲养要求"
|
|
|
- prop="hasFeedingSpecial"
|
|
|
- >
|
|
|
- <el-radio-group
|
|
|
- disabled
|
|
|
- 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-group>
|
|
|
- </el-form-item>
|
|
|
- </el-col>
|
|
|
- </el-row>
|
|
|
-
|
|
|
- <el-row>
|
|
|
- <el-col :span="24">
|
|
|
- <el-form-item
|
|
|
- label="特殊饲养要求"
|
|
|
- prop="feedingSpecialDesc"
|
|
|
+ label="外购来源单位"
|
|
|
+ prop="comeFromUnit"
|
|
|
>
|
|
|
<el-input
|
|
|
- v-model="state.form.feedingSpecialDesc"
|
|
|
+ v-model="state.form.comeFromUnit"
|
|
|
disabled
|
|
|
- placeholder="请输入特殊饲养要求"
|
|
|
- ></el-input>
|
|
|
+ />
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
@@ -293,30 +310,59 @@
|
|
|
prop="comeTime"
|
|
|
>
|
|
|
<el-date-picker
|
|
|
- disabled
|
|
|
v-model="state.form.comeTime"
|
|
|
type="date"
|
|
|
placeholder="请选择到达时间"
|
|
|
clearable
|
|
|
style="width: 100%"
|
|
|
+ disabled
|
|
|
/>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
|
|
|
+ <h4 class="mb8 mt20">特殊要求和附件</h4>
|
|
|
<el-row
|
|
|
class="mt10"
|
|
|
:gutter="20"
|
|
|
>
|
|
|
<el-col :span="24">
|
|
|
<el-form-item
|
|
|
- label="外购来源单位"
|
|
|
- prop="comeFromUnit"
|
|
|
+ label="是否有特殊饲养要求"
|
|
|
+ prop="hasFeedingSpecial"
|
|
|
+ >
|
|
|
+ <el-radio-group
|
|
|
+ disabled
|
|
|
+ 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-group>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+
|
|
|
+ <el-row>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item
|
|
|
+ label="特殊饲养要求"
|
|
|
+ prop="feedingSpecialDesc"
|
|
|
>
|
|
|
<el-input
|
|
|
+ v-model="state.form.feedingSpecialDesc"
|
|
|
disabled
|
|
|
- v-model="state.form.comeFromUnit"
|
|
|
- />
|
|
|
+ placeholder="请输入特殊饲养要求"
|
|
|
+ ></el-input>
|
|
|
</el-form-item>
|
|
|
</el-col>
|
|
|
</el-row>
|
|
|
@@ -355,6 +401,7 @@
|
|
|
<el-col
|
|
|
:span="24"
|
|
|
class="mb20"
|
|
|
+ style="overflow: hidden"
|
|
|
>
|
|
|
<el-form-item
|
|
|
label="近三个月动物质量检测证明"
|
|
|
@@ -381,6 +428,7 @@
|
|
|
<el-col
|
|
|
:span="24"
|
|
|
class="mb20"
|
|
|
+ style="overflow: hidden"
|
|
|
>
|
|
|
<el-form-item
|
|
|
label="基因鉴定报告"
|
|
|
@@ -407,6 +455,7 @@
|
|
|
<el-col
|
|
|
:span="24"
|
|
|
class="mb20"
|
|
|
+ style="overflow: hidden"
|
|
|
>
|
|
|
<el-form-item
|
|
|
label="近三个月饲养环境检测证明"
|
|
|
@@ -433,6 +482,7 @@
|
|
|
<el-col
|
|
|
:span="24"
|
|
|
class="mb20"
|
|
|
+ style="overflow: hidden"
|
|
|
>
|
|
|
<el-form-item
|
|
|
label="笼位预约表"
|
|
|
@@ -459,6 +509,7 @@
|
|
|
<el-col
|
|
|
:span="24"
|
|
|
class="mb20"
|
|
|
+ style="overflow: hidden"
|
|
|
>
|
|
|
<el-form-item
|
|
|
label="实验动物福利伦理审查申请表"
|
|
|
@@ -485,6 +536,7 @@
|
|
|
<el-col
|
|
|
:span="24"
|
|
|
class="mb20"
|
|
|
+ style="overflow: hidden"
|
|
|
>
|
|
|
<el-form-item
|
|
|
label="实验动物福利伦理审查意见表"
|
|
|
@@ -518,20 +570,14 @@
|
|
|
|
|
|
<script setup lang="ts" name="systemProDialog">
|
|
|
import to from 'await-to-js'
|
|
|
- import { nextTick, reactive, ref, computed, defineAsyncComponent } from 'vue'
|
|
|
+ import { nextTick, reactive, ref, defineAsyncComponent, watch } from 'vue'
|
|
|
import dayjs from 'dayjs'
|
|
|
|
|
|
import { usePlatAnimalCageApplicationApi } from '/@/api/platform/animal'
|
|
|
- import { ApproveStatusList, ProcurementChannels, FeedingSpecial } from '/@/constants/pageConstants'
|
|
|
+ import { ApproveStatusList, ProcurementChannels, FeedingSpecial, LeavelList } from '/@/constants/pageConstants'
|
|
|
|
|
|
const FlowTable = defineAsyncComponent(() => import('/@/components/FlowTable.vue'))
|
|
|
|
|
|
- const animalNumber = computed(() => {
|
|
|
- const maleNumber = state.form.maleNumber || 0
|
|
|
- const famaleNumber = state.form.famaleNumber || 0
|
|
|
- return maleNumber + famaleNumber
|
|
|
- })
|
|
|
-
|
|
|
// 定义子组件向父组件传值/事件
|
|
|
const props = defineProps({
|
|
|
code: { type: String, default: '' },
|
|
|
@@ -543,6 +589,7 @@
|
|
|
const platAnimalCageApplicationApi = usePlatAnimalCageApplicationApi()
|
|
|
|
|
|
const expertDialogFormRef = ref()
|
|
|
+ const animalTypeList = ref<any[]>([])
|
|
|
|
|
|
const state = reactive({
|
|
|
form: {
|
|
|
@@ -571,12 +618,25 @@
|
|
|
ethicsCheckFile: [],
|
|
|
ethicsAdviceFile: [],
|
|
|
geneIdentificationFile: [],
|
|
|
+ deptName: '',
|
|
|
+ phone: '',
|
|
|
+ categoryId: null,
|
|
|
+ level: null,
|
|
|
+ startDate: '',
|
|
|
+ totalNumber: 0,
|
|
|
},
|
|
|
disabled: false,
|
|
|
})
|
|
|
|
|
|
+ const getDicts = () => {
|
|
|
+ Promise.all([platAnimalCageApplicationApi.getAnimalTypeList({})]).then(([animalType]) => {
|
|
|
+ animalTypeList.value = animalType.data
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
// 打开弹窗
|
|
|
const initForm = async (code: string) => {
|
|
|
+ await getDicts()
|
|
|
const [err, res]: ToResponse = await to(platAnimalCageApplicationApi.getEntityById({ id: parseInt(code) }))
|
|
|
if (err) return
|
|
|
await nextTick()
|
|
|
@@ -603,6 +663,14 @@
|
|
|
defineExpose({
|
|
|
initForm,
|
|
|
})
|
|
|
+
|
|
|
+ watch(
|
|
|
+ () => [state.form.maleNumber, state.form.famaleNumber],
|
|
|
+ ([maleNumber, famaleNumber]) => {
|
|
|
+ state.form.totalNumber = (maleNumber || 0) + (famaleNumber || 0)
|
|
|
+ },
|
|
|
+ { immediate: true },
|
|
|
+ )
|
|
|
</script>
|
|
|
<style lang="scss" scoped>
|
|
|
:deep(.disUoloadSty .el-upload--picture-card) {
|