Compare commits
No commits in common. "0bd1c06283493dc2a14626ecbdd963445f85805c" and "f187bec32430f27845cd67f430f187a2b0dd9b5c" have entirely different histories.
0bd1c06283
...
f187bec324
@ -17,14 +17,6 @@ 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({
|
||||||
|
|||||||
@ -155,46 +155,17 @@
|
|||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- 添加或修改产羔记录对话框 -->
|
<!-- 添加或修改产羔记录对话框 -->
|
||||||
<el-dialog :title="title" v-model="open" width="900px" append-to-body>
|
<el-dialog :title="title" v-model="open" width="800px" 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="母羊耳号" prop="femaleEarNumber">
|
<el-form-item label="羊只id" prop="sheepId">
|
||||||
<el-input
|
<el-input v-model="form.sheepId" placeholder="请输入羊只id" />
|
||||||
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="请输入胎次" readonly />
|
<el-input v-model="form.parity" placeholder="请输入胎次" />
|
||||||
</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>
|
||||||
@ -216,27 +187,32 @@
|
|||||||
</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-row>
|
<el-col :span="12">
|
||||||
<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" type="textarea" placeholder="请输入备注" />
|
<el-input v-model="form.comment" placeholder="请输入备注" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
</el-col>
|
</el-col>
|
||||||
</el-row>
|
</el-row>
|
||||||
@ -375,7 +351,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, getBreedingInfo } from "@/api/breed/lambing_records"
|
import { listLambing_records, getLambing_records, delLambing_records, addLambing_records, updateLambing_records, getLambDetail, getVarietyList } from "@/api/breed/lambing_records"
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance()
|
const { proxy } = getCurrentInstance()
|
||||||
|
|
||||||
@ -415,8 +391,8 @@ const data = reactive({
|
|||||||
breedingDate: []
|
breedingDate: []
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
femaleEarNumber: [
|
sheepId: [
|
||||||
{ required: true, message: "母羊耳号不能为空", trigger: "blur" }
|
{ required: true, message: "羊只id不能为空", trigger: "blur" }
|
||||||
],
|
],
|
||||||
lambsBorn: [
|
lambsBorn: [
|
||||||
{ required: true, message: "产羔数量不能为空", trigger: "blur" }
|
{ required: true, message: "产羔数量不能为空", trigger: "blur" }
|
||||||
@ -429,9 +405,10 @@ 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 = []
|
||||||
@ -441,75 +418,31 @@ 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})`
|
return variety ? variety.variety : `未知品种(${varietyId})` // 使用 variety 字段
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 性别转换函数 - 前端显示转后端数值 */
|
/** 性别转换函数 - 前端显示转后端数值 */
|
||||||
function genderToNumber(gender) {
|
function genderToNumber(gender) {
|
||||||
if (gender === 'male') return 1
|
if (gender === 'male') return 0
|
||||||
if (gender === 'female') return 0
|
if (gender === 'female') return 1
|
||||||
return gender
|
return gender
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 性别显示函数 - 后端数值转前端显示 */
|
/** 性别显示函数 - 后端数值转前端显示 */
|
||||||
function getGenderDisplay(gender) {
|
function getGenderDisplay(gender) {
|
||||||
if (gender === 1 || gender === 'male') {
|
if (gender === 0 || gender === 'male') {
|
||||||
return { label: '公', type: 'primary' }
|
return { label: '公', type: 'primary' }
|
||||||
} else if (gender === 0 || gender === 'female') {
|
} else if (gender === 1 || 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
|
||||||
@ -530,12 +463,8 @@ 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,
|
||||||
@ -594,13 +523,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: '',
|
lambEarNumber: '', // 对应ScLambDetail.lambEarNumber
|
||||||
gender: '',
|
gender: '', // 对应ScLambDetail.gender
|
||||||
isRetained: false,
|
isRetained: false, // 对应ScLambDetail.isRetained
|
||||||
birthWeight: null,
|
birthWeight: null, // 对应ScLambDetail.birthWeight
|
||||||
lambBreed: null,
|
lambBreed: null, // 对应ScLambDetail.lambBreed(品种ID,设置为null显示placeholder)
|
||||||
lineage: '',
|
lineage: '', // 对应ScLambDetail.lineage
|
||||||
birthday: ''
|
birthday: '' // 对应ScLambDetail.birthday
|
||||||
}))
|
}))
|
||||||
} else {
|
} else {
|
||||||
showLambForms.value = false
|
showLambForms.value = false
|
||||||
@ -613,6 +542,7 @@ 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
|
||||||
})
|
})
|
||||||
@ -647,7 +577,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' -> 1, 'female' -> 0
|
// 性别转换:'male' -> 0, 'female' -> 1
|
||||||
lamb.gender = genderToNumber(lamb.gender)
|
lamb.gender = genderToNumber(lamb.gender)
|
||||||
// 品种ID已经是数字,无需转换
|
// 品种ID已经是数字,无需转换
|
||||||
})
|
})
|
||||||
@ -672,6 +602,7 @@ function submitForm() {
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
/** 删除按钮操作 */
|
/** 删除按钮操作 */
|
||||||
function handleDelete(row) {
|
function handleDelete(row) {
|
||||||
const _ids = row.id || ids.value
|
const _ids = row.id || ids.value
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user