前端更新产羔记录
This commit is contained in:
parent
5f289eaadb
commit
138788e91f
@ -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({
|
||||
|
||||
@ -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.lambBreed(品种ID,设置为null显示placeholder)
|
||||
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
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user