Compare commits

...

2 Commits

Author SHA1 Message Date
zyk
0bd1c06283 Merge remote-tracking branch 'origin/main' 2025-08-21 10:14:37 +08:00
zyk
138788e91f 前端更新产羔记录 2025-08-21 10:14:16 +08:00
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) { export function addLambing_records(data) {
return request({ 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-form ref="lambing_recordsRef" :model="form" :rules="rules" label-width="120px">
<el-row :gutter="20"> <el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="羊只id" prop="sheepId"> <el-form-item label="母羊耳号" prop="femaleEarNumber">
<el-input v-model="form.sheepId" placeholder="请输入羊只id" /> <el-input
v-model="form.femaleEarNumber"
placeholder="请输入母羊耳号"
@blur="handleEarNumberBlur"
@input="handleEarNumberInput"
/>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> <el-col :span="12">
<el-form-item label="胎次" prop="parity"> <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-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -187,32 +216,27 @@
</el-col> </el-col>
</el-row> </el-row>
<el-row :gutter="20"> <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-col :span="12">
<el-form-item label="产羔评分" prop="score"> <el-form-item label="产羔评分" prop="score">
<el-input v-model.number="form.score" placeholder="请输入产羔评分" type="number" /> <el-input v-model.number="form.score" placeholder="请输入产羔评分" type="number" />
</el-form-item> </el-form-item>
</el-col> </el-col>
</el-row>
<el-row :gutter="20">
<el-col :span="12"> <el-col :span="12">
<el-form-item label="创建日期" prop="createTime"> <el-form-item label="产羔日期" prop="createTime">
<el-date-picker <el-date-picker
clearable clearable
v-model="form.createTime" v-model="form.createTime"
type="date" type="date"
value-format="YYYY-MM-DD" value-format="YYYY-MM-DD"
placeholder="请选择创建日期"> placeholder="请选择产羔日期">
</el-date-picker> </el-date-picker>
</el-form-item> </el-form-item>
</el-col> </el-col>
<el-col :span="12"> </el-row>
<el-row :gutter="20">
<el-col :span="24">
<el-form-item label="备注" prop="comment"> <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-form-item>
</el-col> </el-col>
</el-row> </el-row>
@ -351,7 +375,7 @@
</template> </template>
<script setup name="Lambing_records"> <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() const { proxy } = getCurrentInstance()
@ -391,8 +415,8 @@ const data = reactive({
breedingDate: [] breedingDate: []
}, },
rules: { rules: {
sheepId: [ femaleEarNumber: [
{ required: true, message: "羊只id不能为空", trigger: "blur" } { required: true, message: "母羊耳号不能为空", trigger: "blur" }
], ],
lambsBorn: [ lambsBorn: [
{ required: true, message: "产羔数量不能为空", trigger: "blur" } { required: true, message: "产羔数量不能为空", trigger: "blur" }
@ -405,10 +429,9 @@ const { queryParams, form, rules } = toRefs(data)
/** 获取品种列表 */ /** 获取品种列表 */
function getVarietyData() { function getVarietyData() {
return getVarietyList().then(response => { return getVarietyList().then(response => {
console.log('品种列表数据:', response) // console.log('品种列表数据:', response)
varietyList.value = response.rows || [] varietyList.value = response.rows || []
console.log('处理后的品种列表:', varietyList.value) // console.log('处理后的品种列表:', varietyList.value)
console.log('第一个品种数据结构:', varietyList.value[0]) //
}).catch(error => { }).catch(error => {
console.error('获取品种列表失败:', error) console.error('获取品种列表失败:', error)
varietyList.value = [] varietyList.value = []
@ -418,31 +441,75 @@ function getVarietyData() {
/** 根据品种ID获取品种名称 */ /** 根据品种ID获取品种名称 */
function getVarietyName(varietyId) { function getVarietyName(varietyId) {
if (!varietyId) return '-' if (!varietyId) return '-'
// varietyId
const id = typeof varietyId === 'string' ? parseInt(varietyId) : varietyId const id = typeof varietyId === 'string' ? parseInt(varietyId) : varietyId
const variety = varietyList.value.find(item => item.id === id) const variety = varietyList.value.find(item => item.id === id)
return variety ? variety.variety : `未知品种(${varietyId})` // 使 variety return variety ? variety.variety : `未知品种(${varietyId})`
} }
/** 性别转换函数 - 前端显示转后端数值 */ /** 性别转换函数 - 前端显示转后端数值 */
function genderToNumber(gender) { function genderToNumber(gender) {
if (gender === 'male') return 0 if (gender === 'male') return 1
if (gender === 'female') return 1 if (gender === 'female') return 0
return gender return gender
} }
/** 性别显示函数 - 后端数值转前端显示 */ /** 性别显示函数 - 后端数值转前端显示 */
function getGenderDisplay(gender) { function getGenderDisplay(gender) {
if (gender === 0 || gender === 'male') { if (gender === 1 || gender === 'male') {
return { label: '公', type: 'primary' } return { label: '公', type: 'primary' }
} else if (gender === 1 || gender === 'female') { } else if (gender === 0 || gender === 'female') {
return { label: '母', type: 'success' } return { label: '母', type: 'success' }
} }
return { label: '未知', type: 'info' } 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() { function getList() {
loading.value = true loading.value = true
@ -463,8 +530,12 @@ function cancel() {
function reset() { function reset() {
form.value = { form.value = {
id: null, id: null,
femaleEarNumber: null,
sheepId: null, sheepId: null,
parity: null, parity: null,
maleEarNumber: null,
breedingDate: null,
pregnancyDays: null,
lambsBorn: null, lambsBorn: null,
survival: null, survival: null,
technician: null, technician: null,
@ -523,13 +594,13 @@ function handleLambsBornChange() {
if (count > 0 && count <= 10) { // if (count > 0 && count <= 10) { //
showLambForms.value = true showLambForms.value = true
lambForms.value = Array.from({ length: count }, (_, index) => ({ lambForms.value = Array.from({ length: count }, (_, index) => ({
lambEarNumber: '', // ScLambDetail.lambEarNumber lambEarNumber: '',
gender: '', // ScLambDetail.gender gender: '',
isRetained: false, // ScLambDetail.isRetained isRetained: false,
birthWeight: null, // ScLambDetail.birthWeight birthWeight: null,
lambBreed: null, // ScLambDetail.lambBreedIDnullplaceholder lambBreed: null,
lineage: '', // ScLambDetail.lineage lineage: '',
birthday: '' // ScLambDetail.birthday birthday: ''
})) }))
} else { } else {
showLambForms.value = false showLambForms.value = false
@ -542,7 +613,6 @@ function handleLambDetail(row) {
detailData.value = row detailData.value = row
// API // API
getLambDetail(row.id).then(response => { getLambDetail(row.id).then(response => {
// ScLambDetail
lambDetailList.value = response.data || [] lambDetailList.value = response.data || []
detailOpen.value = true detailOpen.value = true
}) })
@ -577,7 +647,7 @@ function submitForm() {
if (lamb.birthWeight && typeof lamb.birthWeight === 'string') { if (lamb.birthWeight && typeof lamb.birthWeight === 'string') {
lamb.birthWeight = parseFloat(lamb.birthWeight) lamb.birthWeight = parseFloat(lamb.birthWeight)
} }
// 'male' -> 0, 'female' -> 1 // 'male' -> 1, 'female' -> 0
lamb.gender = genderToNumber(lamb.gender) lamb.gender = genderToNumber(lamb.gender)
// ID // ID
}) })
@ -602,7 +672,6 @@ function submitForm() {
}) })
} }
/** 删除按钮操作 */ /** 删除按钮操作 */
function handleDelete(row) { function handleDelete(row) {
const _ids = row.id || ids.value const _ids = row.id || ids.value