产羔,孕检,流产,干奶,死亡模块技术员下拉框修改

This commit is contained in:
ll
2026-02-06 22:24:40 +08:00
parent 072cd4cca5
commit 136662fdaa
5 changed files with 271 additions and 139 deletions

View File

@@ -1,10 +1,8 @@
<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="80px">
<!-- 修改母羊耳号查询组件 -->
<el-form-item label="耳号" prop="allEarNumbers">
<div style="display: flex; align-items: center; gap: 10px; flex-wrap: wrap;">
<!-- 主选择器不显示已选标签 -->
<el-select
v-model="queryParams.allEarNumbers"
multiple
@@ -29,7 +27,6 @@
/>
</el-select>
<!-- 辅助粘贴输入框 -->
<el-input
v-model="pasteInput"
placeholder="或粘贴多个耳号(空格/换行/逗号分隔)"
@@ -43,7 +40,6 @@
</template>
</el-input>
<!-- 耳号计数显示 -->
<el-tag
v-if="queryParams.allEarNumbers && queryParams.allEarNumbers.length > 0"
type="info"
@@ -53,7 +49,6 @@
已选: {{ queryParams.allEarNumbers.length }}
</el-tag>
<!-- 清空按钮 -->
<el-button
type="danger"
plain
@@ -65,13 +60,11 @@
</el-button>
</div>
<!-- 已选耳号展示区域默认显示2个可展开 -->
<div
v-if="queryParams.allEarNumbers && queryParams.allEarNumbers.length > 0"
class="selected-ear-numbers-display"
style="margin-top: 10px;"
>
<!-- 显示前2个或全部耳号 -->
<el-tag
v-for="(tag, index) in displayedEarNumbers"
:key="tag"
@@ -83,7 +76,6 @@
{{ tag }}
</el-tag>
<!-- 展开/收起按钮 -->
<el-button
v-if="queryParams.allEarNumbers.length > defaultShowCount"
type="primary"
@@ -99,7 +91,6 @@
</div>
</el-form-item>
<!-- 其他查询条件保持不变 -->
<el-form-item label="母羊品种" prop="femaleBreed">
<el-input
v-model="queryParams.femaleBreed"
@@ -116,14 +107,25 @@
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="技术员" prop="technician">
<el-input
<el-select
v-model="queryParams.technician"
placeholder="请输入技术员"
placeholder="请选择技术员"
filterable
clearable
@keyup.enter="handleQuery"
/>
style="width: 200px"
@change="handleQuery"
>
<el-option
v-for="item in technicalOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
<el-form-item label="所在牧场" prop="farm">
<el-input
v-model="queryParams.farm"
@@ -246,7 +248,6 @@
@pagination="getList"
/>
<!-- 添加或修改产羔记录对话框 -->
<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">
@@ -284,9 +285,23 @@
<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-select
v-model="form.technician"
placeholder="请选择技术员"
filterable
clearable
style="width: 100%"
>
<el-option
v-for="item in technicalOptions"
:key="item.value"
:label="item.label"
:value="item.value"
/>
</el-select>
</el-form-item>
</el-col>
</el-row>
@@ -332,7 +347,6 @@
</el-form-item>
</el-col>
</el-row>
<!-- 显示已选择的耳号标签 -->
<div v-if="queryParams.femaleEarNumbers && queryParams.femaleEarNumbers.length > 0" class="selected-ear-numbers">
<span style="margin-right: 10px; color: #606266;">已选择耳号</span>
<el-tag
@@ -346,7 +360,6 @@
</el-tag>
</div>
<!-- 羔羊信息录入 -->
<div v-if="form.lambsBorn > 0 && showLambForms">
<el-divider content-position="left">羔羊信息录入</el-divider>
<div v-for="(lamb, index) in lambForms" :key="index" class="lamb-form-item">
@@ -430,7 +443,6 @@
</template>
</el-dialog>
<!-- 产羔详情对话框 -->
<el-dialog title="产羔详情" v-model="detailOpen" width="1000px" append-to-body>
<el-descriptions :column="3" border>
<el-descriptions-item label="母羊耳号">{{ detailData.femaleEarNumber }}</el-descriptions-item>
@@ -481,6 +493,7 @@
<script setup name="Lambing_records">
import { listLambing_records, getLambing_records, delLambing_records, addLambing_records, updateLambing_records, getLambDetail, getVarietyList, getBreedingInfo,searchEarNumbers } from "@/api/breed/lambing_records"
import { getUserByPost } from '@/api/common/user' // 新增引入
import { ref, computed, nextTick } from 'vue'
import { ArrowUp, ArrowDown, Plus, Delete } from '@element-plus/icons-vue'
@@ -491,6 +504,9 @@ const earNumberLoading = ref(false) // 耳号加载状态
const isExpanded = ref(false) // 控制耳号展开/折叠状态
const defaultShowCount = 2 // 默认显示的耳号数量
// 新增:技术员选项
const technicalOptions = ref([])
// 计算属性:控制显示的耳号列表
const displayedEarNumbers = computed(() => {
if (!queryParams.value.allEarNumbers || queryParams.value.allEarNumbers.length === 0) {
@@ -552,6 +568,25 @@ const data = reactive({
})
const { queryParams, form, rules } = toRefs(data)
// 新增:获取技术员列表
const fetchTechnicalList = () => {
getUserByPost({ postCode: "techs" })
.then(res => {
if (res.code === 200 && Array.isArray(res.data)) {
technicalOptions.value = res.data.map(item => ({
value: item.nickName,
label: item.nickName
}))
} else {
technicalOptions.value = []
}
})
.catch(err => {
technicalOptions.value = []
})
}
/** 处理粘贴事件 */
function handlePaste(event) {
nextTick(() => {
@@ -953,6 +988,7 @@ function handleExport() {
// 页面初始化
onMounted(() => {
fetchTechnicalList() // 初始化加载技术员列表
console.log('页面初始化开始')
getVarietyData() // 先获取品种列表
.then(() => {