检疫记录修改日期移动到前列

This commit is contained in:
piaobo 2025-08-20 17:26:29 +08:00
parent 98f343be25
commit 99a3e29e63
8 changed files with 191 additions and 127 deletions

View File

@ -2,13 +2,13 @@
<div class="app-container"> <div class="app-container">
<!-- 1. 搜索 --> <!-- 1. 搜索 -->
<el-form :model="queryParams" ref="queryRef" inline v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryRef" inline v-show="showSearch" label-width="68px">
<el-form-item label="羊只耳号" prop="sheepNo">
<el-input v-model="queryParams.sheepNo" placeholder="请输入羊只耳号" clearable @keyup.enter="getList" />
</el-form-item>
<el-form-item label="驱虫日期"> <el-form-item label="驱虫日期">
<el-date-picker v-model="daterangeDatetime" value-format="YYYY-MM-DD" type="daterange" range-separator="-" <el-date-picker v-model="daterangeDatetime" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
start-placeholder="开始日期" end-placeholder="结束日期" /> start-placeholder="开始日期" end-placeholder="结束日期" />
</el-form-item> </el-form-item>
<el-form-item label="羊只耳号" prop="sheepNo">
<el-input v-model="queryParams.sheepNo" placeholder="请输入羊只耳号" clearable @keyup.enter="getList" />
</el-form-item>
<el-form-item label="技术员" prop="technical"> <el-form-item label="技术员" prop="technical">
<el-input v-model="queryParams.technical" placeholder="请输入技术员" clearable /> <el-input v-model="queryParams.technical" placeholder="请输入技术员" clearable />
</el-form-item> </el-form-item>
@ -29,6 +29,9 @@
<!-- 3. 列表 --> <!-- 3. 列表 -->
<el-table v-loading="loading" :data="dewormList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="dewormList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="驱虫日期" align="center" prop="datetime" width="180">
<template #default="scope">{{ parseTime(scope.row.datetime, '{y}-{m}-{d}') }}</template>
</el-table-column>
<el-table-column label="羊只耳号" align="center" prop="sheepNo" /> <el-table-column label="羊只耳号" align="center" prop="sheepNo" />
<el-table-column label="品种" align="center" prop="variety" /> <el-table-column label="品种" align="center" prop="variety" />
<el-table-column label="羊只类别" align="center" prop="sheepType" /> <el-table-column label="羊只类别" align="center" prop="sheepType" />
@ -40,9 +43,6 @@
<el-table-column label="月龄" align="center" prop="monthAge" /> <el-table-column label="月龄" align="center" prop="monthAge" />
<el-table-column label="胎次" align="center" prop="parity" /> <el-table-column label="胎次" align="center" prop="parity" />
<el-table-column label="繁殖状态" align="center" prop="breed" /> <el-table-column label="繁殖状态" align="center" prop="breed" />
<el-table-column label="驱虫日期" align="center" prop="datetime" width="180">
<template #default="scope">{{ parseTime(scope.row.datetime, '{y}-{m}-{d}') }}</template>
</el-table-column>
<el-table-column label="技术员" align="center" prop="technical" /> <el-table-column label="技术员" align="center" prop="technical" />
<el-table-column label="备注" align="center" prop="comment" /> <el-table-column label="备注" align="center" prop="comment" />
<el-table-column label="操作" align="center" width="200"> <el-table-column label="操作" align="center" width="200">

View File

@ -2,14 +2,13 @@
<div class="app-container"> <div class="app-container">
<!-- 查询区域 --> <!-- 查询区域 -->
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="80px"> <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="80px">
<el-form-item label="羊只" prop="sheepId"> <el-form-item label="事件日期" style="width: 308px">
<el-input v-model="queryParams.sheepNo" placeholder="请输入羊只耳号" clearable />
</el-form-item>
<el-form-item label="时间日期" style="width: 308px">
<el-date-picker v-model="daterangeDatetime" value-format="YYYY-MM-DD" type="daterange" range-separator="-" <el-date-picker v-model="daterangeDatetime" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
start-placeholder="开始日期" end-placeholder="结束日期" /> start-placeholder="开始日期" end-placeholder="结束日期" />
</el-form-item> </el-form-item>
<el-form-item label="羊只" prop="sheepId">
<el-input v-model="queryParams.sheepNo" placeholder="请输入羊只耳号" clearable />
</el-form-item>
<el-form-item label="疾病类型" prop="diseasePid"> <el-form-item label="疾病类型" prop="diseasePid">
<el-select v-model="queryParams.diseasePid" clearable placeholder="请选择疾病类型" style="width: 120px;" filterable <el-select v-model="queryParams.diseasePid" clearable placeholder="请选择疾病类型" style="width: 120px;" filterable
@ -68,7 +67,7 @@
<el-table v-loading="loading" :data="diagnosisList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="diagnosisList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="耳号" align="center" prop="sheepNo" /> <el-table-column label="耳号" align="center" prop="sheepNo" />
<el-table-column label="时间日期" align="center" prop="datetime" width="150"> <el-table-column label="事件日期" align="center" prop="datetime" width="150">
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.datetime, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.datetime, '{y}-{m}-{d}') }}</span>
</template> </template>
@ -127,8 +126,7 @@
<el-col :span="8"> <el-col :span="8">
<el-form-item label="性别"> <el-form-item label="性别">
<span class="readonly-text"> <dict-tag :options="sheep_gender" <span class="readonly-text"> <dict-tag :options="sheep_gender" :value="form.gender" /></span>
:value="form.gender" /></span>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="8"> <el-col :span="8">

View File

@ -4,7 +4,7 @@
<el-form :model="queryParams" ref="queryRef" inline v-show="showSearch" label-width="80px"> <el-form :model="queryParams" ref="queryRef" inline v-show="showSearch" label-width="80px">
<el-form-item label="消毒日期"> <el-form-item label="消毒日期">
<!-- 1 改为 datetimerange --> <!-- 1 改为 datetimerange -->
<el-date-picker v-model="daterangeDatetime" type="datetimerange" range-separator="-" start-placeholder="开始日期" <el-date-picker v-model="daterangeDatetime" type="daterange" range-separator="-" start-placeholder="开始日期"
end-placeholder="结束日期" value-format="YYYY-MM-DD HH:mm" /> end-placeholder="结束日期" value-format="YYYY-MM-DD HH:mm" />
</el-form-item> </el-form-item>
@ -46,7 +46,7 @@
<el-table-column label="消毒日期" align="center" prop="datetime" width="180"> <el-table-column label="消毒日期" align="center" prop="datetime" width="180">
<!-- 2 显示格式含时分 --> <!-- 2 显示格式含时分 -->
<template #default="scope"> <template #default="scope">
{{ parseTime(scope.row.datetime, '{y}-{m}-{d} {h}:{i}') }} {{ parseTime(scope.row.datetime, '{y}-{m}-{d}') }}
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="羊舍" align="center" prop="sheepfoldName" /> <el-table-column label="羊舍" align="center" prop="sheepfoldName" />
@ -85,7 +85,7 @@
<el-col :span="12"> <el-col :span="12">
<!-- 3 type=datetime --> <!-- 3 type=datetime -->
<el-form-item label="消毒日期" prop="datetime"> <el-form-item label="消毒日期" prop="datetime">
<el-date-picker v-model="form.datetime" type="datetime" value-format="YYYY-MM-DD HH:mm" <el-date-picker v-model="form.date" type="datetime" value-format="YYYY-MM-DD"
style="width: 100%" /> style="width: 100%" />
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -192,7 +192,7 @@
<el-col :span="12"> <el-col :span="12">
<!-- 4 同样 type=datetime --> <!-- 4 同样 type=datetime -->
<el-form-item label="消毒日期" prop="datetime"> <el-form-item label="消毒日期" prop="datetime">
<el-date-picker v-model="editForm.datetime" type="datetime" value-format="YYYY-MM-DD HH:mm" <el-date-picker v-model="editForm.datetime" type="date" value-format="YYYY-MM-DD"
style="width: 100%" /> style="width: 100%" />
</el-form-item> </el-form-item>
</el-col> </el-col>
@ -362,7 +362,7 @@ const nowMinute = () => {
const form = reactive({ const form = reactive({
id: null, id: null,
technician: '', technician: '',
datetime: nowMinute(), // datetime: new Date().toISOString().slice(0, 10),
way: '', way: '',
ratio: '', ratio: '',
comment: '', comment: '',
@ -375,7 +375,7 @@ function resetAdd() {
Object.assign(form, { Object.assign(form, {
id: null, id: null,
technician: '', technician: '',
datetime: nowMinute(), datetime: new Date().toISOString().slice(0, 10),
way: '', way: '',
ratio: '', ratio: '',
comment: '', comment: '',

View File

@ -2,13 +2,13 @@
<div class="app-container"> <div class="app-container">
<!-- 1. 搜索 --> <!-- 1. 搜索 -->
<el-form :model="queryParams" ref="queryRef" inline v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryRef" inline v-show="showSearch" label-width="68px">
<el-form-item label="羊只耳号" prop="sheepNo">
<el-input v-model="queryParams.sheepNo" placeholder="请输入羊只耳号" clearable @keyup.enter="getList" />
</el-form-item>
<el-form-item label="保健日期"> <el-form-item label="保健日期">
<el-date-picker v-model="daterangeDatetime" value-format="YYYY-MM-DD" type="daterange" range-separator="-" <el-date-picker v-model="daterangeDatetime" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
start-placeholder="开始日期" end-placeholder="结束日期" /> start-placeholder="开始日期" end-placeholder="结束日期" />
</el-form-item> </el-form-item>
<el-form-item label="羊只耳号" prop="sheepNo">
<el-input v-model="queryParams.sheepNo" placeholder="请输入羊只耳号" clearable @keyup.enter="getList" />
</el-form-item>
<el-form-item label="技术员" prop="technical"> <el-form-item label="技术员" prop="technical">
<el-input v-model="queryParams.technical" placeholder="请输入技术员" clearable /> <el-input v-model="queryParams.technical" placeholder="请输入技术员" clearable />
</el-form-item> </el-form-item>
@ -29,6 +29,9 @@
<!-- 3. 列表 --> <!-- 3. 列表 -->
<el-table v-loading="loading" :data="dewormList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="dewormList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="保健日期" align="center" prop="datetime" width="180">
<template #default="scope">{{ parseTime(scope.row.datetime, '{y}-{m}-{d}') }}</template>
</el-table-column>
<el-table-column label="羊只耳号" align="center" prop="sheepNo" /> <el-table-column label="羊只耳号" align="center" prop="sheepNo" />
<el-table-column label="品种" align="center" prop="variety" /> <el-table-column label="品种" align="center" prop="variety" />
<el-table-column label="羊只类别" align="center" prop="sheepType" /> <el-table-column label="羊只类别" align="center" prop="sheepType" />
@ -40,9 +43,7 @@
<el-table-column label="月龄" align="center" prop="monthAge" /> <el-table-column label="月龄" align="center" prop="monthAge" />
<el-table-column label="胎次" align="center" prop="parity" /> <el-table-column label="胎次" align="center" prop="parity" />
<el-table-column label="繁殖状态" align="center" prop="breed" /> <el-table-column label="繁殖状态" align="center" prop="breed" />
<el-table-column label="保健日期" align="center" prop="datetime" width="180">
<template #default="scope">{{ parseTime(scope.row.datetime, '{y}-{m}-{d}') }}</template>
</el-table-column>
<el-table-column label="技术员" align="center" prop="technical" /> <el-table-column label="技术员" align="center" prop="technical" />
<el-table-column label="备注" align="center" prop="comment" /> <el-table-column label="备注" align="center" prop="comment" />
<el-table-column label="操作" align="center" width="200"> <el-table-column label="操作" align="center" width="200">

View File

@ -2,13 +2,13 @@
<div class="app-container"> <div class="app-container">
<!-- 1. 搜索 --> <!-- 1. 搜索 -->
<el-form :model="queryParams" ref="queryRef" inline v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryRef" inline v-show="showSearch" label-width="68px">
<el-form-item label="羊只耳号" prop="sheepNo">
<el-input v-model="queryParams.sheepNo" placeholder="请输入羊只耳号" clearable @keyup.enter="getList" />
</el-form-item>
<el-form-item label="免疫日期"> <el-form-item label="免疫日期">
<el-date-picker v-model="daterangeDatetime" value-format="YYYY-MM-DD" type="daterange" range-separator="-" <el-date-picker v-model="daterangeDatetime" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
start-placeholder="开始日期" end-placeholder="结束日期" /> start-placeholder="开始日期" end-placeholder="结束日期" />
</el-form-item> </el-form-item>
<el-form-item label="羊只耳号" prop="sheepNo">
<el-input v-model="queryParams.sheepNo" placeholder="请输入羊只耳号" clearable @keyup.enter="getList" />
</el-form-item>
<el-form-item label="技术员" prop="technical"> <el-form-item label="技术员" prop="technical">
<el-input v-model="queryParams.technical" placeholder="请输入技术员" clearable /> <el-input v-model="queryParams.technical" placeholder="请输入技术员" clearable />
</el-form-item> </el-form-item>
@ -29,6 +29,9 @@
<!-- 3. 列表 --> <!-- 3. 列表 -->
<el-table v-loading="loading" :data="dewormList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="dewormList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="免疫日期" align="center" prop="datetime" width="180">
<template #default="scope">{{ parseTime(scope.row.datetime, '{y}-{m}-{d}') }}</template>
</el-table-column>
<el-table-column label="羊只耳号" align="center" prop="sheepNo" /> <el-table-column label="羊只耳号" align="center" prop="sheepNo" />
<el-table-column label="品种" align="center" prop="variety" /> <el-table-column label="品种" align="center" prop="variety" />
<el-table-column label="羊只类别" align="center" prop="sheepType" /> <el-table-column label="羊只类别" align="center" prop="sheepType" />
@ -40,9 +43,6 @@
<el-table-column label="月龄" align="center" prop="monthAge" /> <el-table-column label="月龄" align="center" prop="monthAge" />
<el-table-column label="胎次" align="center" prop="parity" /> <el-table-column label="胎次" align="center" prop="parity" />
<el-table-column label="繁殖状态" align="center" prop="breed" /> <el-table-column label="繁殖状态" align="center" prop="breed" />
<el-table-column label="免疫日期" align="center" prop="datetime" width="180">
<template #default="scope">{{ parseTime(scope.row.datetime, '{y}-{m}-{d}') }}</template>
</el-table-column>
<el-table-column label="技术员" align="center" prop="technical" /> <el-table-column label="技术员" align="center" prop="technical" />
<el-table-column label="备注" align="center" prop="comment" /> <el-table-column label="备注" align="center" prop="comment" />
<el-table-column label="操作" align="center" width="200"> <el-table-column label="操作" align="center" width="200">

View File

@ -2,13 +2,37 @@
<div class="app-container"> <div class="app-container">
<!-- 查询表单 --> <!-- 查询表单 -->
<el-form :model="queryParams" ref="queryRef" inline v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryRef" inline v-show="showSearch" label-width="68px">
<el-form-item label="羊只" prop="sheepId">
<el-input v-model="queryParams.sheepId" placeholder="请输入羊只耳号" clearable @keyup.enter="getList" />
</el-form-item>
<el-form-item label="检疫日期"> <el-form-item label="检疫日期">
<el-date-picker v-model="daterangeDatetime" type="daterange" range-separator="-" start-placeholder="开始日期" <el-date-picker v-model="daterangeDatetime" type="daterange" range-separator="-" start-placeholder="开始日期"
end-placeholder="结束日期" value-format="YYYY-MM-DD" /> end-placeholder="结束日期" value-format="YYYY-MM-DD" />
</el-form-item> </el-form-item>
<el-form-item label="检疫项目" prop="quarItem">
<el-select v-model="queryParams.quarItem" placeholder="请选择" filterable clearable style="width: 150px">
<el-option v-for="i in quarantineItems" :key="i.value" :label="i.label" :value="i.value" />
</el-select>
</el-form-item>
<el-form-item label="采样员" prop="sampler">
<el-input v-model="queryParams.sampler" placeholder="请输入采样员名字" clearable @keyup.enter="getList" />
</el-form-item>
<el-form-item label="检疫员" prop="quarOfficer">
<el-input v-model="queryParams.quarOfficer" placeholder="请输入检疫员名字" clearable @keyup.enter="getList" />
</el-form-item>
<el-form-item label="羊只类型" prop="sheepType">
<el-select v-model="queryParams.sheepType" placeholder="请选择" filterable clearable style="width: 150px">
<el-option v-for="i in sheepTypes" :key="i.value" :label="i.makeLabelFormatter" :value="i.label" />
</el-select>
</el-form-item>
<el-form-item label="样品类型" prop="sampleType">
<el-select v-model="queryParams.sampleType" placeholder="请选择" filterable clearable style="width: 150px">
<el-option v-for="i in sampleTypes" :key="i.value" :label="i.label" :value="i.value" />
</el-select>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="Search" @click="getList">搜索</el-button> <el-button type="primary" icon="Search" @click="getList">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button> <el-button icon="Refresh" @click="resetQuery">重置</el-button>
@ -31,11 +55,13 @@
<!-- 表格 --> <!-- 表格 -->
<el-table v-loading="loading" :data="quarantineList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="quarantineList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="羊只耳号" align="center" prop="sheepNo" />
<el-table-column label="检疫日期" align="center" prop="datetime" width="180" <el-table-column label="检疫日期" align="center" prop="datetime" width="180"
:formatter="(_, __, v) => parseTime(v, '{y}-{m}-{d}')" /> :formatter="(_, __, v) => parseTime(v, '{y}-{m}-{d}')" />
<el-table-column label="羊只耳号" align="center" prop="sheepNo" />
<el-table-column label="羊只性别" align="center" prop="gender"> <el-table-column label="羊只性别" align="center" prop="gender">
<template #default="scope"><dict-tag :options="sheep_gender" :value="scope.row.gender" /></template> <template #default="scope">
<dict-tag :options="sheep_gender" :value="scope.row.gender" />
</template>
</el-table-column> </el-table-column>
<el-table-column label="羊只类别" align="center" prop="sheepType" /> <el-table-column label="羊只类别" align="center" prop="sheepType" />
<el-table-column label="月龄" align="center" prop="monthAge" /> <el-table-column label="月龄" align="center" prop="monthAge" />
@ -45,19 +71,22 @@
<el-table-column label="采样员" align="center" prop="sampler" /> <el-table-column label="采样员" align="center" prop="sampler" />
<el-table-column label="检疫员" align="center" prop="quarOfficer" /> <el-table-column label="检疫员" align="center" prop="quarOfficer" />
<el-table-column label="检疫结果" align="center" prop="result"> <el-table-column label="检疫结果" align="center" prop="result">
<template #default="scope"><dict-tag :options="quar_result" :value="scope.row.result" /></template> <template #default="scope">
<dict-tag :options="quar_result" :value="scope.row.result" />
</template>
</el-table-column> </el-table-column>
<el-table-column label="状态" align="center" prop="status"> <el-table-column label="状态" align="center" prop="status">
<template #default="scope"><dict-tag :options="quar_status" :value="scope.row.status" /></template> <template #default="scope">
<dict-tag :options="quar_status" :value="scope.row.status" />
</template>
</el-table-column> </el-table-column>
<el-table-column label="备注" align="center" prop="comment" /> <el-table-column label="备注" align="center" prop="comment" />
<el-table-column label="操作" align="center" width="200" fixed="right"> <el-table-column label="操作" align="center" width="200" fixed="right">
<template #default="scope"> <template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
v-hasPermi="['bisosafety:quarantine:edit']">检疫</el-button> v-hasPermi="['bisosafety:quarantine:edit']">检疫</el-button>
<el-button v-if="String(scope.row.result) === '1'" link type="success" @click="gotoTreatment(scope.row)"> <el-button v-if="String(scope.row.result) === '1'" link type="success"
治疗 @click="gotoTreatment(scope.row)">治疗</el-button>
</el-button>
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
v-hasPermi="['bisosafety:quarantine:remove']">删除</el-button> v-hasPermi="['bisosafety:quarantine:remove']">删除</el-button>
</template> </template>
@ -70,20 +99,25 @@
<!-- 新增弹窗 --> <!-- 新增弹窗 -->
<el-dialog title="新增检疫记录" v-model="addOpen" width="700px" append-to-body> <el-dialog title="新增检疫记录" v-model="addOpen" width="700px" append-to-body>
<el-form ref="addQuarantineRef" :model="addForm" :rules="addRules" label-width="100px"> <el-form ref="addQuarantineRef" :model="addForm" :rules="addRules" label-width="100px">
<el-form-item label="羊只耳号" prop="sheepIds" required> <el-form-item label="羊只耳号" prop="sheepList" required>
<el-input v-model="addForm.sheepIdInput" placeholder="输入耳号后回车验证" @keyup.enter="validateSheepId"> <el-input v-model="addForm.sheepIdInput" placeholder="输入耳号后回车验证" @keyup.enter="validateSheepId">
<template #suffix> <template #suffix>
<div style="display: flex; align-items: center; height: 100%; margin-left: 8px;"> <div style="
<span v-if="invalidSheepId" style="color: red; font-size: 12px;">耳号不存在</span> display: flex;
<span v-else-if="validSheepId" style="color: green; font-size: 12px;">已添加</span> align-items: center;
<span v-else-if="alreadySelected" style="color: orange; font-size: 12px;">该羊只已选择</span> height: 100%;
margin-left: 8px;
">
<span v-if="invalidSheepId" style="color: red; font-size: 12px">耳号不存在</span>
<span v-else-if="validSheepId" style="color: green; font-size: 12px">已添加</span>
<span v-else-if="alreadySelected" style="color: orange; font-size: 12px">该羊只已选择</span>
</div> </div>
</template> </template>
</el-input> </el-input>
<el-tag v-for="(id, i) in addForm.sheepIds" :key="i" closable @close="addForm.sheepIds.splice(i, 1)" <el-tag v-for="(item, i) in addForm.sheepList" :key="item.id" closable @close="addForm.sheepList.splice(i, 1)"
style="margin: 5px 5px 0 0"> style="margin: 5px 5px 0 0">
{{ id }} {{ item.ear }}
</el-tag> </el-tag>
</el-form-item> </el-form-item>
@ -121,22 +155,27 @@
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="采样员" prop="sampler"><el-input v-model="addForm.sampler" /></el-form-item> <el-form-item label="采样员" prop="sampler">
<el-input v-model="addForm.sampler" />
</el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="检疫员" prop="quarOfficer"><el-input v-model="addForm.quarOfficer" /></el-form-item> <el-form-item label="检疫员" prop="quarOfficer">
<el-input v-model="addForm.quarOfficer" />
</el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="检疫结果" prop="result"> <el-form-item label="检疫结果" prop="result">
<el-select v-model="editForm.result" placeholder="检疫结果"> <el-select v-model="addForm.result" placeholder="检疫结果">
<el-option v-for="i in quar_result" :key="i.value" :label="i.label" :value="i.value" /> <el-option v-for="i in quar_result" :key="i.value" :label="i.label" :value="i.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="22"> <el-col :span="22">
<el-form-item label="备注" prop="comment"> <el-form-item label="备注" prop="comment">
@ -153,11 +192,10 @@
</template> </template>
</el-dialog> </el-dialog>
<!-- 修改弹窗 -->
<el-dialog title="修改检疫记录" v-model="editOpen" width="560px" append-to-body :lock-scroll="false"> <el-dialog title="修改检疫记录" v-model="editOpen" width="560px" append-to-body :lock-scroll="false">
<!-- 2. 表单主体 -->
<el-form ref="editQuarantineRef" :model="editForm" :rules="editRules" label-width="72px" size="default"> <el-form ref="editQuarantineRef" :model="editForm" :rules="editRules" label-width="72px" size="default">
<!-- 1. 羊只基本信息只读 --> <!-- 羊只基本信息只读 -->
<el-row :gutter="16"> <el-row :gutter="16">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="羊只耳号"> <el-form-item label="羊只耳号">
@ -243,7 +281,13 @@
</template> </template>
<script setup name="Quarantine"> <script setup name="Quarantine">
import { listQuarantine, getQuarantine, delQuarantine, addQuarantine, updateQuarantine } from '@/api/biosafety/quarantine' import {
listQuarantine,
getQuarantine,
delQuarantine,
addQuarantine,
updateQuarantine
} from '@/api/biosafety/quarantine'
import { listItems } from '@/api/biosafety/items' import { listItems } from '@/api/biosafety/items'
import { listSample } from '@/api/biosafety/sample' import { listSample } from '@/api/biosafety/sample'
import request from '@/utils/request' import request from '@/utils/request'
@ -251,7 +295,11 @@ import { parseTime } from '@/utils/ruoyi'
import { useRouter } from 'vue-router' import { useRouter } from 'vue-router'
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
const { quar_result, quar_status,sheep_gender} = proxy.useDict('quar_result', 'quar_status',"sheep_gender") const { quar_result, quar_status, sheep_gender } = proxy.useDict(
'quar_result',
'quar_status',
'sheep_gender'
)
const router = useRouter() const router = useRouter()
/* 基础数据 */ /* 基础数据 */
@ -281,20 +329,32 @@ function handleSelectionChange(sel) {
/* 下拉数据 */ /* 下拉数据 */
const quarantineItems = ref([]) const quarantineItems = ref([])
const sampleTypes = ref([]) const sampleTypes = ref([])
const sheepTypes = ref([])
const barns = ref([]) const barns = ref([])
/* 获取基础下拉 */ /* 获取基础下拉 */
function getItems() { function getItems() {
listItems().then(res => quarantineItems.value = res.rows.map(i => ({ label: i.name, value: i.id }))) listItems().then(res =>
(quarantineItems.value = res.rows.map(i => ({ label: i.name, value: i.id })))
)
} }
function getSample() { function getSample() {
listSample().then(res => sampleTypes.value = res.rows.map(i => ({ label: i.name, value: i.id }))) listSample().then(res =>
(sampleTypes.value = res.rows.map(i => ({ label: i.name, value: i.id })))
)
} }
function getBarns() { function getBarns() {
request.get('/sheepfold_management/sheepfold_management/list').then(res => request
barns.value = res.rows.map(b => ({ label: b.sheepfoldName, value: b.id })) .get('/sheepfold_management/sheepfold_management/list')
.then(res =>
(barns.value = res.rows.map(b => ({ label: b.sheepfoldName, value: b.id })))
) )
} }
function getSheepType() {
request.get('/base/base/list').then(res => {
sheepTypes.value = res.rows.map(i => ({ label: i.name, value: i.id }))
})
}
/* 列表查询 */ /* 列表查询 */
function getList() { function getList() {
@ -320,7 +380,7 @@ function resetQuery() {
const addOpen = ref(false) const addOpen = ref(false)
const addForm = ref({}) const addForm = ref({})
const addRules = { const addRules = {
sheepIds: [{ required: true, message: '请至少添加一个耳号', trigger: 'blur' }], sheepList: [{ required: true, message: '请至少添加一个耳号', trigger: 'blur' }],
datetime: [{ required: true, message: '请选择日期', trigger: 'change' }], datetime: [{ required: true, message: '请选择日期', trigger: 'change' }],
quarItem: [{ required: true, message: '请选择项目', trigger: 'change' }], quarItem: [{ required: true, message: '请选择项目', trigger: 'change' }],
sampleType: [{ required: true, message: '请选择样品类型', trigger: 'change' }] sampleType: [{ required: true, message: '请选择样品类型', trigger: 'change' }]
@ -329,7 +389,6 @@ const addRules = {
const invalidSheepId = ref(false) const invalidSheepId = ref(false)
const validSheepId = ref(false) const validSheepId = ref(false)
const alreadySelected = ref(false) const alreadySelected = ref(false)
const barnSheepMap = reactive({}) const barnSheepMap = reactive({})
function handleBarnChange(selectedBarnIds) { function handleBarnChange(selectedBarnIds) {
@ -341,12 +400,8 @@ function handleBarnChange(selectedBarnIds) {
if (!newBarnIds.includes(barnId)) { if (!newBarnIds.includes(barnId)) {
const { tags = [], ids = [] } = barnSheepMap[barnId] || {} const { tags = [], ids = [] } = barnSheepMap[barnId] || {}
tags.forEach(tag => { tags.forEach(tag => {
const index = addForm.value.sheepIds.indexOf(tag) const index = addForm.value.sheepList.findIndex(s => s.ear === tag)
if (index !== -1) addForm.value.sheepIds.splice(index, 1) if (index !== -1) addForm.value.sheepList.splice(index, 1)
})
ids.forEach(id => {
const index = addForm.value.ids.indexOf(id)
if (index !== -1) addForm.value.ids.splice(index, 1)
}) })
delete barnSheepMap[barnId] delete barnSheepMap[barnId]
} }
@ -355,23 +410,23 @@ function handleBarnChange(selectedBarnIds) {
// ID // ID
newBarnIds.forEach(barnId => { newBarnIds.forEach(barnId => {
if (!barnSheepMap[barnId]) { if (!barnSheepMap[barnId]) {
request.get('/sheepfold_management/sheepfold_management/getSheepById', { params: { id: barnId } }) request
.get('/sheepfold_management/sheepfold_management/getSheepById', {
params: { id: barnId }
})
.then(res => { .then(res => {
const sheepList = res.data || [] const sheepList = res.data || []
const tags = sheepList.map(s => s.manageTags) barnSheepMap[barnId] = {
const ids = sheepList.map(s => s.id) tags: sheepList.map(s => s.manageTags),
ids: sheepList.map(s => s.id)
barnSheepMap[barnId] = { tags, ids }
tags.forEach(tag => {
if (tag && !addForm.value.sheepIds.includes(tag)) {
addForm.value.sheepIds.push(tag)
} }
})
ids.forEach(id => { sheepList.forEach(s => {
if (id && !addForm.value.ids.includes(id)) { if (
addForm.value.ids.push(id) s.manageTags &&
!addForm.value.sheepList.some(item => item.id === s.id)
) {
addForm.value.sheepList.push({ id: s.id, ear: s.manageTags })
} }
}) })
}) })
@ -380,22 +435,22 @@ function handleBarnChange(selectedBarnIds) {
} }
function validateSheepId() { function validateSheepId() {
const id = addForm.value.sheepIdInput.trim() const ear = addForm.value.sheepIdInput.trim()
if (!id) return if (!ear) return
invalidSheepId.value = false invalidSheepId.value = false
validSheepId.value = false validSheepId.value = false
alreadySelected.value = false alreadySelected.value = false
if (addForm.value.sheepIds.includes(id)) { if (addForm.value.sheepList.some(s => s.ear === ear)) {
alreadySelected.value = true alreadySelected.value = true
addForm.value.sheepIdInput = '' addForm.value.sheepIdInput = ''
return return
} }
request.get(`/sheep/sheep/byManageTags/${id}`).then(res => { request.get(`/sheep/sheep/byManageTags/${ear}`).then(res => {
if (res.data) { if (res.data) {
addForm.value.sheepIds.push(id) addForm.value.sheepList.push({ id: res.data.id, ear })
validSheepId.value = true validSheepId.value = true
} else { } else {
invalidSheepId.value = true invalidSheepId.value = true
@ -405,27 +460,26 @@ function validateSheepId() {
} }
function submitAddForm() { function submitAddForm() {
addForm.value.ids = addForm.value.sheepList.map(s => s.id)
addQuarantine(addForm.value).then(() => { addQuarantine(addForm.value).then(() => {
proxy.$modal.msgSuccess('新增成功') proxy.$modal.msgSuccess('新增成功')
addOpen.value = false addOpen.value = false
getList() getList()
}) })
} }
function handleAdd() { function handleAdd() {
Object.assign(addForm.value, { Object.assign(addForm.value, {
sheepIds: [], sheepList: [],
ids:[],
sheepIdInput: '', sheepIdInput: '',
datetime: new Date().toISOString().slice(0, 10), datetime: new Date().toISOString().slice(0, 10),
quarItems: '', quarItem: '',
sampleType: '', sampleType: '',
sampler: '', sampler: '',
quarOfficer: '', quarOfficer: '',
result: '',} result: '',
) barnIds: []
})
Object.keys(barnSheepMap).forEach(k => delete barnSheepMap[k]) Object.keys(barnSheepMap).forEach(k => delete barnSheepMap[k])
invalidSheepId.value = false invalidSheepId.value = false
validSheepId.value = false validSheepId.value = false
@ -441,6 +495,7 @@ const editRules = {
quarantineType: [{ required: true, message: '请选择类型', trigger: 'change' }] quarantineType: [{ required: true, message: '请选择类型', trigger: 'change' }]
} }
const editQuarantineRef = ref(null) const editQuarantineRef = ref(null)
function handleUpdate(row) { function handleUpdate(row) {
Object.assign(editForm.value, row) Object.assign(editForm.value, row)
editOpen.value = true editOpen.value = true
@ -460,7 +515,8 @@ function submitEditForm() {
/* 删除 */ /* 删除 */
function handleDelete(row) { function handleDelete(row) {
const _ids = row.id || ids.value const _ids = row.id || ids.value
proxy.$modal.confirm(`是否确认删除记录编号为"${_ids}"的数据?`) proxy
.$modal.confirm(`是否确认删除记录编号为"${_ids}"的数据?`)
.then(() => delQuarantine(_ids)) .then(() => delQuarantine(_ids))
.then(() => { .then(() => {
getList() getList()
@ -470,12 +526,19 @@ function handleDelete(row) {
/* 导出 */ /* 导出 */
function handleExport() { function handleExport() {
proxy.download('bisosafety/quarantine/export', queryParams, `quarantine_${Date.now()}.xlsx`) proxy.download(
'bisosafety/quarantine/export',
queryParams,
`quarantine_${Date.now()}.xlsx`
)
} }
/* 跳转治疗 */ /* 跳转治疗 */
function gotoTreatment(row) { function gotoTreatment(row) {
router.push({ path: '/biosafety/treatment/add', query: { qId: row.id, sId: row.sheepId } }) router.push({
path: '/biosafety/treatment/add',
query: { qId: row.id, sId: row.sheepId }
})
} }
/* 初始化 */ /* 初始化 */
@ -483,4 +546,5 @@ getList()
getItems() getItems()
getSample() getSample()
getBarns() getBarns()
getSheepType()
</script> </script>

View File

@ -2,13 +2,13 @@
<div class="app-container"> <div class="app-container">
<!-- 搜索栏 --> <!-- 搜索栏 -->
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="羊只耳号" prop="sheepNo">
<el-input v-model="queryParams.sheepNo" placeholder="请输入羊只耳号" clearable />
</el-form-item>
<el-form-item label="治疗日期" style="width: 308px"> <el-form-item label="治疗日期" style="width: 308px">
<el-date-picker v-model="daterangeDatetime" value-format="YYYY-MM-DD" type="daterange" range-separator="-" <el-date-picker v-model="daterangeDatetime" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
start-placeholder="开始日期" end-placeholder="结束日期" /> start-placeholder="开始日期" end-placeholder="结束日期" />
</el-form-item> </el-form-item>
<el-form-item label="羊只耳号" prop="sheepNo">
<el-input v-model="queryParams.sheepNo" placeholder="请输入羊只耳号" clearable />
</el-form-item>
<el-form-item label="兽医" prop="veterinary"> <el-form-item label="兽医" prop="veterinary">
<el-input v-model="queryParams.veterinary" placeholder="请输入兽医" clearable /> <el-input v-model="queryParams.veterinary" placeholder="请输入兽医" clearable />
</el-form-item> </el-form-item>
@ -38,6 +38,11 @@
<!-- 列表 --> <!-- 列表 -->
<el-table v-loading="loading" :data="treatmentList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="treatmentList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="治疗日期" align="center" prop="datetime" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.datetime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="羊只耳号" align="center" prop="sheepNo" /> <el-table-column label="羊只耳号" align="center" prop="sheepNo" />
<el-table-column label="品种" align="center" prop="variety" /> <el-table-column label="品种" align="center" prop="variety" />
<el-table-column label="羊只类别" align="center" prop="sheepType" /> <el-table-column label="羊只类别" align="center" prop="sheepType" />
@ -49,11 +54,6 @@
<el-table-column label="繁殖状态" align="center" prop="breed" /> <el-table-column label="繁殖状态" align="center" prop="breed" />
<el-table-column label="泌乳天数" align="center" prop="lactDay" /> <el-table-column label="泌乳天数" align="center" prop="lactDay" />
<el-table-column label="怀孕天数" align="center" prop="gestDay" /> <el-table-column label="怀孕天数" align="center" prop="gestDay" />
<el-table-column label="治疗日期" align="center" prop="datetime" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.datetime, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="疾病类型" align="center" prop="diseaseName" /> <el-table-column label="疾病类型" align="center" prop="diseaseName" />
<el-table-column label="兽医" align="center" prop="veterinary" /> <el-table-column label="兽医" align="center" prop="veterinary" />
<el-table-column label="备注" align="center" prop="comment" /> <el-table-column label="备注" align="center" prop="comment" />

View File

@ -13,7 +13,7 @@
</el-form-item> </el-form-item>
<el-form-item label="使用时间" style="width: 308px"> <el-form-item label="使用时间" style="width: 308px">
<el-date-picker v-model="daterangeCreateTime" value-format="YYYY-MM-DD" type="daterange" range-separator="-" <el-date-picker v-model="daterangeCreateTime" value-format="YYYY-MM-DD" type="datetimerange" range-separator="-"
start-placeholder="开始日期" end-placeholder="结束日期" /> start-placeholder="开始日期" end-placeholder="结束日期" />
</el-form-item> </el-form-item>
@ -35,17 +35,18 @@
<!-- 数据表格 --> <!-- 数据表格 -->
<el-table v-loading="loading" :data="usageList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="usageList" @selection-change="handleSelectionChange">
<el-table-column label="使用时间" align="center" prop="createTime" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{m}') }}</span>
</template>
</el-table-column>
<el-table-column label="使用名称" align="center" prop="name" /> <el-table-column label="使用名称" align="center" prop="name" />
<el-table-column label="使用类型" align="center" prop="useType"> <el-table-column label="使用类型" align="center" prop="useType">
<template #default="scope"> <template #default="scope">
<dict-tag :options="pres_type" :value="scope.row.useType" /> <dict-tag :options="pres_type" :value="scope.row.useType" />
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="使用时间" align="center" prop="createTime" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{m}:{s}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope"> <template #default="scope">
<el-button link type="primary" icon="View" @click="handleDetail(scope.row)" <el-button link type="primary" icon="View" @click="handleDetail(scope.row)"
@ -85,7 +86,7 @@
</el-descriptions-item> </el-descriptions-item>
<el-descriptions-item label="使用时间" :span="2"> <el-descriptions-item label="使用时间" :span="2">
{{ parseTime(form.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }} {{ parseTime(form.createTime, '{y}-{m}-{d} {h}:{i}') }}
</el-descriptions-item> </el-descriptions-item>
</el-descriptions> </el-descriptions>
</el-card> </el-card>