前端更新产羔记录

This commit is contained in:
zyk 2025-08-21 10:14:16 +08:00
parent 5f289eaadb
commit 138788e91f
2 changed files with 116 additions and 39 deletions

View File

@ -17,6 +17,14 @@ export function getLambing_records(id) {
})
}
// 根据母羊耳号查询最新配种记录
export function getBreedingInfo(earNumber) {
return request({
url: '/breed/lambing_records/breeding_info/' + earNumber,
method: 'get'
})
}
// 新增产羔记录(包含羔羊信息)
export function addLambing_records(data) {
return request({

View File

@ -155,17 +155,46 @@
/>
<!-- 添加或修改产羔记录对话框 -->
<el-dialog :title="title" v-model="open" width="800px" append-to-body>
<el-dialog :title="title" v-model="open" width="900px" append-to-body>
<el-form ref="lambing_recordsRef" :model="form" :rules="rules" label-width="120px">
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="羊只id" prop="sheepId">
<el-input v-model="form.sheepId" placeholder="请输入羊只id" />
<el-form-item label="母羊耳号" prop="femaleEarNumber">
<el-input
v-model="form.femaleEarNumber"
placeholder="请输入母羊耳号"
@blur="handleEarNumberBlur"
@input="handleEarNumberInput"
/>
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="胎次" prop="parity">
<el-input v-model="form.parity" placeholder="请输入胎次" />
<el-input v-model="form.parity" placeholder="请输入胎次" readonly />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="公羊耳号" prop="maleEarNumber">
<el-input v-model="form.maleEarNumber" placeholder="公羊耳号" readonly />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="配种日期" prop="breedingDate">
<el-input v-model="form.breedingDate" placeholder="配种日期" readonly />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="怀孕天数" prop="pregnancyDays">
<el-input v-model="form.pregnancyDays" placeholder="怀孕天数" readonly />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="技术员" prop="technician">
<el-input v-model="form.technician" placeholder="请输入技术员" />
</el-form-item>
</el-col>
</el-row>
@ -187,32 +216,27 @@
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="技术员" prop="technician">
<el-input v-model="form.technician" placeholder="请输入技术员" />
</el-form-item>
</el-col>
<el-col :span="12">
<el-form-item label="产羔评分" prop="score">
<el-input v-model.number="form.score" placeholder="请输入产羔评分" type="number" />
</el-form-item>
</el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12">
<el-form-item label="创建日期" prop="createTime">
<el-form-item label="产羔日期" prop="createTime">
<el-date-picker
clearable
v-model="form.createTime"
type="date"
value-format="YYYY-MM-DD"
placeholder="请选择创建日期">
placeholder="请选择产羔日期">
</el-date-picker>
</el-form-item>
</el-col>
<el-col :span="12">
</el-row>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="备注" prop="comment">
<el-input v-model="form.comment" placeholder="请输入备注" />
<el-input v-model="form.comment" type="textarea" placeholder="请输入备注" />
</el-form-item>
</el-col>
</el-row>
@ -351,7 +375,7 @@
</template>
<script setup name="Lambing_records">
import { listLambing_records, getLambing_records, delLambing_records, addLambing_records, updateLambing_records, getLambDetail, getVarietyList } from "@/api/breed/lambing_records"
import { listLambing_records, getLambing_records, delLambing_records, addLambing_records, updateLambing_records, getLambDetail, getVarietyList, getBreedingInfo } from "@/api/breed/lambing_records"
const { proxy } = getCurrentInstance()
@ -391,8 +415,8 @@ const data = reactive({
breedingDate: []
},
rules: {
sheepId: [
{ required: true, message: "羊只id不能为空", trigger: "blur" }
femaleEarNumber: [
{ required: true, message: "母羊耳号不能为空", trigger: "blur" }
],
lambsBorn: [
{ required: true, message: "产羔数量不能为空", trigger: "blur" }
@ -405,10 +429,9 @@ const { queryParams, form, rules } = toRefs(data)
/** 获取品种列表 */
function getVarietyData() {
return getVarietyList().then(response => {
console.log('品种列表数据:', response) //
console.log('品种列表数据:', response)
varietyList.value = response.rows || []
console.log('处理后的品种列表:', varietyList.value) //
console.log('第一个品种数据结构:', varietyList.value[0]) //
console.log('处理后的品种列表:', varietyList.value)
}).catch(error => {
console.error('获取品种列表失败:', error)
varietyList.value = []
@ -418,31 +441,75 @@ function getVarietyData() {
/** 根据品种ID获取品种名称 */
function getVarietyName(varietyId) {
if (!varietyId) return '-'
// varietyId
const id = typeof varietyId === 'string' ? parseInt(varietyId) : varietyId
const variety = varietyList.value.find(item => item.id === id)
return variety ? variety.variety : `未知品种(${varietyId})` // 使 variety
return variety ? variety.variety : `未知品种(${varietyId})`
}
/** 性别转换函数 - 前端显示转后端数值 */
function genderToNumber(gender) {
if (gender === 'male') return 0
if (gender === 'female') return 1
if (gender === 'male') return 1
if (gender === 'female') return 0
return gender
}
/** 性别显示函数 - 后端数值转前端显示 */
function getGenderDisplay(gender) {
if (gender === 0 || gender === 'male') {
if (gender === 1 || gender === 'male') {
return { label: '公', type: 'primary' }
} else if (gender === 1 || gender === 'female') {
} else if (gender === 0 || gender === 'female') {
return { label: '母', type: 'success' }
}
return { label: '未知', type: 'info' }
}
/** 母羊耳号输入处理 */
function handleEarNumberInput() {
//
form.value.sheepId = null
form.value.parity = null
form.value.maleEarNumber = null
form.value.breedingDate = null
form.value.pregnancyDays = null
form.value.technician = null
}
/** 母羊耳号失焦处理 - 自动查询配种信息 */
function handleEarNumberBlur() {
const earNumber = form.value.femaleEarNumber
if (!earNumber || earNumber.trim() === '') {
return
}
// API
getBreedingInfo(earNumber.trim()).then(response => {
if (response.code === 200 && response.data) {
const breedingData = response.data
//
form.value.sheepId = breedingData.sheep_id
form.value.parity = breedingData.parity
form.value.maleEarNumber = breedingData.male_ear_number || '未找到公羊'
form.value.breedingDate = breedingData.breeding_date
form.value.pregnancyDays = breedingData.pregnancy_days
form.value.technician = breedingData.technician || ''
proxy.$modal.msgSuccess("已自动填充配种信息")
} else {
proxy.$modal.msgWarning(response.msg || "未找到该母羊的配种记录")
//
form.value.sheepId = null
form.value.parity = null
form.value.maleEarNumber = null
form.value.breedingDate = null
form.value.pregnancyDays = null
}
}).catch(error => {
console.error('查询配种信息失败:', error)
proxy.$modal.msgError("查询配种信息失败")
})
}
/** 查询产羔记录列表 */
function getList() {
loading.value = true
@ -463,8 +530,12 @@ function cancel() {
function reset() {
form.value = {
id: null,
femaleEarNumber: null,
sheepId: null,
parity: null,
maleEarNumber: null,
breedingDate: null,
pregnancyDays: null,
lambsBorn: null,
survival: null,
technician: null,
@ -523,13 +594,13 @@ function handleLambsBornChange() {
if (count > 0 && count <= 10) { //
showLambForms.value = true
lambForms.value = Array.from({ length: count }, (_, index) => ({
lambEarNumber: '', // ScLambDetail.lambEarNumber
gender: '', // ScLambDetail.gender
isRetained: false, // ScLambDetail.isRetained
birthWeight: null, // ScLambDetail.birthWeight
lambBreed: null, // ScLambDetail.lambBreedIDnullplaceholder
lineage: '', // ScLambDetail.lineage
birthday: '' // ScLambDetail.birthday
lambEarNumber: '',
gender: '',
isRetained: false,
birthWeight: null,
lambBreed: null,
lineage: '',
birthday: ''
}))
} else {
showLambForms.value = false
@ -542,7 +613,6 @@ function handleLambDetail(row) {
detailData.value = row
// API
getLambDetail(row.id).then(response => {
// ScLambDetail
lambDetailList.value = response.data || []
detailOpen.value = true
})
@ -577,7 +647,7 @@ function submitForm() {
if (lamb.birthWeight && typeof lamb.birthWeight === 'string') {
lamb.birthWeight = parseFloat(lamb.birthWeight)
}
// 'male' -> 0, 'female' -> 1
// 'male' -> 1, 'female' -> 0
lamb.gender = genderToNumber(lamb.gender)
// ID
})
@ -602,7 +672,6 @@ function submitForm() {
})
}
/** 删除按钮操作 */
function handleDelete(row) {
const _ids = row.id || ids.value