This commit is contained in:
2026-01-13 21:45:34 +08:00
8 changed files with 217 additions and 28 deletions

View File

@@ -5,9 +5,16 @@
<el-date-picker v-model="daterangeEventDate" type="daterange" range-separator="-" start-placeholder="开始日期"
end-placeholder="结束日期" value-format="YYYY-MM-DD" />
</el-form-item>
<el-form-item label="管理耳号" prop="manageTags">
<el-input v-model="queryParams.manageTags" placeholder="请输入管理耳号" clearable @keyup.enter="handleQuery"
style="max-width: 160px;" />
<el-form-item label="管理耳号" prop="manageTagsList">
<el-select v-model="queryParams.manageTagsList" multiple filterable remote reserve-keyword
placeholder="请输入耳号,支持多选" :remote-method="searchEarNumber" :loading="earLoading" allow-create
default-first-option style="width: 260px">
<el-option v-for="item in earOptions" :key="item" :label="item" :value="item" />
</el-select>
<el-button type="text" @click="clearEarNumbers"
v-if="queryParams.manageTagsList && queryParams.manageTagsList.length > 0" style="margin-left: 8px">
清空
</el-button>
</el-form-item>
<el-form-item label="新备注" prop="newComment">
<el-input v-model="queryParams.newComment" placeholder="请输入新备注" clearable @keyup.enter="handleQuery"
@@ -27,7 +34,17 @@
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<div v-if="queryParams.manageTagsList && queryParams.manageTagsList.length > 0" class="selected-ear-numbers">
<span style="margin-right: 10px; color: #606266;">已选择耳号</span>
<el-tag
v-for="tag in queryParams.manageTagsList"
:key="tag"
closable
@close="removeEarNumber(tag)"
style="margin-right: 8px;">
{{ tag }}
</el-tag>
</div>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd"
@@ -111,7 +128,7 @@
</template>
<script setup name="ChangeComment">
import { listChangeComment, getChangeComment, delChangeComment, addChangeComment, updateChangeComment } from "@/api/produce/manage_sheep/changeComment"
import { listChangeComment, getChangeComment, delChangeComment, addChangeComment, updateChangeComment ,searchEarNumbers} from "@/api/produce/manage_sheep/changeComment"
import { getSheepByManageTags } from "@/api/produce/manage_sheep/changeVariety"
import { listSheepfold_management as listSheepfold } from '@/api/fileManagement/sheepfold_management'
@@ -158,7 +175,8 @@ const data = reactive({
})
const { queryParams, form, rules } = toRefs(data)
const earOptions = ref([])
const earLoading = ref(false)
/** 查询改备注列表 */
function getList() {
loading.value = true
@@ -234,6 +252,7 @@ function resetQuery() {
daterangeCreateTime.value = []
daterangeEventDate.value = []
queryParams.value.sheepfoldId = null
queryParams.value.manageTagsList = []
proxy.resetForm("queryRef")
handleQuery()
}
@@ -318,9 +337,36 @@ function getSheepfoldOptions() {
sheepfoldOptions.value = res.rows
})
}
/* 远程搜耳号 */
function searchEarNumber(query) {
if (!query) { earOptions.value = []; return }
earLoading.value = true
searchEarNumbers(query.trim()).then(res => {
earOptions.value = res.data || []
}).finally(() => earLoading.value = false)
}
/* 清空所有耳号 */
function clearEarNumbers() {
queryParams.value.manageTagsList = []
}
/* 删除单个耳号 */
function removeEarNumber(tag) {
const idx = queryParams.value.manageTagsList.indexOf(tag)
if (idx > -1) queryParams.value.manageTagsList.splice(idx, 1)
}
onMounted(() => {
getSheepfoldOptions();
getList();
});
</script>
<style scoped>
.selected-ear-numbers{
margin-bottom: 16px;
padding: 10px;
background: #f5f7fa;
border-radius: 4px;
}
</style>

View File

@@ -5,9 +5,16 @@
<el-date-picker v-model="daterangeEventDate" type="daterange" range-separator="-" start-placeholder="开始日期"
end-placeholder="结束日期" value-format="YYYY-MM-DD" />
</el-form-item>
<el-form-item label="耳号" prop="manageTag">
<el-input v-model="queryParams.manageTags" placeholder="请输入管理耳号或电子耳号" clearable @keyup.enter="handleQuery"
style="max-width: 160px;" />
<el-form-item label="耳号" prop="manageTagsList">
<el-select v-model="queryParams.manageTagsList" multiple filterable remote reserve-keyword
placeholder="请输入耳号,支持多选" :remote-method="searchEarNumber" :loading="earLoading" allow-create
default-first-option style="width: 260px">
<el-option v-for="item in earOptions" :key="item" :label="item" :value="item" />
</el-select>
<el-button type="text" @click="clearEarNumbers"
v-if="queryParams.manageTagsList && queryParams.manageTagsList.length > 0" style="margin-left: 8px">
清空
</el-button>
</el-form-item>
<el-form-item label="新耳号" prop="newTag">
<el-input v-model="queryParams.newTag" placeholder="请输入新耳号" clearable @keyup.enter="handleQuery"
@@ -33,7 +40,13 @@
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<div v-if="queryParams.manageTagsList && queryParams.manageTagsList.length > 0" class="selected-ear-numbers">
<span style="margin-right: 10px; color: #606266;">已选耳号</span>
<el-tag v-for="tag in queryParams.manageTagsList" :key="tag" closable @close="removeEarNumber(tag)"
style="margin-right: 8px;">
{{ tag }}
</el-tag>
</div>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd"
@@ -132,7 +145,7 @@
</template>
<script setup name="ChangeEar">
import { listChangeEar, getChangeEar, delChangeEar, addChangeEar, updateChangeEar, getSheepByEarNumber, checkTagExists } from "@/api/produce/manage_sheep/changeEar"
import { listChangeEar, getChangeEar, delChangeEar, addChangeEar, updateChangeEar, getSheepByEarNumber, checkTagExists,searchEarNumbers } from "@/api/produce/manage_sheep/changeEar"
import { listSheepfold_management as listSheepfold } from '@/api/fileManagement/sheepfold_management'
const { proxy } = getCurrentInstance()
@@ -191,7 +204,8 @@ const data = reactive({
})
const { queryParams, form, rules } = toRefs(data)
const earOptions = ref([])
const earLoading = ref(false)
/** 查询修改电子耳号记录列表 */
async function getList() {
loading.value = true;
@@ -258,6 +272,7 @@ function resetQuery() {
queryParams.value.newTag = null
queryParams.value.oldTag = null
queryParams.value.earType = null
queryParams.value.manageTagsList = []
proxy.resetForm("queryRef")
@@ -408,9 +423,31 @@ function getSheepfoldOptions() {
sheepfoldOptions.value = res.rows
})
}
function searchEarNumber(query) {
if (!query) { earOptions.value = []; return }
earLoading.value = true
searchEarNumbers(query.trim()).then(res => {
earOptions.value = res.data || []
}).finally(() => earLoading.value = false)
}
function clearEarNumbers() {
queryParams.value.manageTagsList = []
}
function removeEarNumber(tag) {
const idx = queryParams.value.manageTagsList.indexOf(tag)
if (idx > -1) queryParams.value.manageTagsList.splice(idx, 1)
}
onMounted(() => {
getSheepfoldOptions();
getList();
});
</script>
<style scoped>
.selected-ear-numbers{
margin-bottom: 16px;
padding: 10px;
background: #f5f7fa;
border-radius: 4px;
}
</style>

View File

@@ -5,9 +5,16 @@
<el-date-picker v-model="daterangeEventDate" type="daterange" range-separator="-" start-placeholder="开始日期"
end-placeholder="结束日期" value-format="YYYY-MM-DD" />
</el-form-item>
<el-form-item label="管理耳号" prop="manageTags">
<el-input v-model="queryParams.manageTags" placeholder="请输入管理耳号" clearable @keyup.enter="handleQuery"
style="width: 150px;" />
<el-form-item label="管理耳号" prop="manageTagsList">
<el-select v-model="queryParams.manageTagsList" multiple filterable remote reserve-keyword
placeholder="请输入耳号,支持多选" :remote-method="searchEarNumber" :loading="earLoading" allow-create
default-first-option style="width: 260px">
<el-option v-for="item in earOptions" :key="item" :label="item" :value="item" />
</el-select>
<el-button type="text" @click="clearEarNumbers"
v-if="queryParams.manageTagsList && queryParams.manageTagsList.length > 0" style="margin-left: 8px">
清空
</el-button>
</el-form-item>
<el-form-item label="原品种" prop="varietyOld">
<el-select v-model="queryParams.varietyOld" placeholder="请选择原品种" clearable filterable>
@@ -29,7 +36,13 @@
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<div v-if="queryParams.manageTagsList && queryParams.manageTagsList.length > 0" class="selected-ear-numbers">
<span style="margin-right: 10px; color: #606266;">已选耳号</span>
<el-tag v-for="tag in queryParams.manageTagsList" :key="tag" closable @close="removeEarNumber(tag)"
style="margin-right: 8px;">
{{ tag }}
</el-tag>
</div>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button type="primary" plain icon="Plus" @click="handleAdd"
@@ -119,7 +132,7 @@
</template>
<script setup name="ChangeVariety">
import { listChangeVariety, getChangeVariety, delChangeVariety, addChangeVariety, updateChangeVariety, getSheepByManageTags } from "@/api/produce/manage_sheep/changeVariety"
import { listChangeVariety, getChangeVariety, delChangeVariety, addChangeVariety, updateChangeVariety, getSheepByManageTags,searchEarNumbers } from "@/api/produce/manage_sheep/changeVariety"
import { listSheepfold_management as listSheepfold } from '@/api/fileManagement/sheepfold_management'
import { listVariety } from '@/api/variety/variety'
@@ -174,7 +187,8 @@ const data = reactive({
})
const { queryParams, form, rules } = toRefs(data)
const earOptions = ref([])
const earLoading = ref(false)
/** 查询改品种记录列表 */
function getList() {
loading.value = true
@@ -267,6 +281,7 @@ function resetQuery() {
daterangeCreateTime.value = []
queryParams.value.sheepfoldId = null
daterangeEventDate.value = []
queryParams.value.manageTagsList = []
proxy.resetForm("queryRef")
handleQuery()
}
@@ -354,10 +369,31 @@ function getSheepfoldOptions() {
sheepfoldOptions.value = res.rows
})
}
function searchEarNumber(query) {
if (!query) { earOptions.value = []; return }
earLoading.value = true
searchEarNumbers(query.trim()).then(res => {
earOptions.value = res.data || []
}).finally(() => earLoading.value = false)
}
function clearEarNumbers() {
queryParams.value.manageTagsList = []
}
function removeEarNumber(tag) {
const idx = queryParams.value.manageTagsList.indexOf(tag)
if (idx > -1) queryParams.value.manageTagsList.splice(idx, 1)
}
onMounted(() => {
loadVarietyOptions();
getSheepfoldOptions();
getList();
});
</script>
<style scoped>
.selected-ear-numbers {
margin-bottom: 16px;
padding: 10px;
background: #f5f7fa;
border-radius: 4px;
}
</style>

View File

@@ -6,9 +6,16 @@
<el-date-picker v-model="transitionDateRange" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
</el-form-item>
<el-form-item label="管理耳号" prop="manageTags">
<el-input v-model="queryParams.manageTags" placeholder="请输入管理耳号" clearable @keyup.enter="handleQuery"
style="width: 150px;" />
<el-form-item label="管理耳号" prop="manageTagsList">
<el-select v-model="queryParams.manageTagsList" multiple filterable remote reserve-keyword
placeholder="请输入耳号,支持多选" :remote-method="searchEarNumber" :loading="earLoading" allow-create
default-first-option style="width: 260px">
<el-option v-for="item in earOptions" :key="item" :label="item" :value="item" />
</el-select>
<el-button type="text" @click="clearEarNumbers"
v-if="queryParams.manageTagsList && queryParams.manageTagsList.length > 0" style="margin-left: 8px">
清空
</el-button>
</el-form-item>
<el-form-item label="品种" prop="varietyId">
<el-select v-model="queryParams.varietyId" placeholder="请选择品种" style="min-width:150px" clearable>
@@ -42,7 +49,13 @@
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<div v-if="queryParams.manageTagsList && queryParams.manageTagsList.length > 0" class="selected-ear-numbers">
<span style="margin-right: 10px; color: #606266;">已选耳号</span>
<el-tag v-for="tag in queryParams.manageTagsList" :key="tag" closable @close="removeEarNumber(tag)"
style="margin-right: 8px;">
{{ tag }}
</el-tag>
</div>
<!-- 按钮行 -->
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
@@ -222,7 +235,7 @@
</template>
<script setup name="Transition_info">
import { listTransition_info, getTransition_info, delTransition_info, addTransition_info, getSheepByRanchId, updateTransition_info, listRanch, approveTransitionInfo } from "@/api/produce/manage_sheep/transition_info"
import { listTransition_info, getTransition_info, delTransition_info, addTransition_info, getSheepByRanchId, updateTransition_info, listRanch, approveTransitionInfo,searchEarNumbers } from "@/api/produce/manage_sheep/transition_info"
import { checkSheepByManageTags, getSheepBySheepfoldId } from '@/api/produce/other/fixHoof'
import request from '@/utils/request'
@@ -298,7 +311,8 @@ const data = reactive({
}
})
const { queryParams, form, rules } = toRefs(data)
const earOptions = ref([])
const earLoading = ref(false)
//获取转场记录列表
function getList() {
loading.value = true
@@ -379,7 +393,7 @@ function loadSheepfoldsByRanch(ranchName) {
url: '/sheepfold_management/sheepfold_management/list',
method: 'get',
params: {
ranchId: ranchId,
ranchId: ranchId,
pageNum: 1,
pageSize: 999
}
@@ -596,6 +610,7 @@ function handleQuery() {
function resetQuery() {
queryParams.value.transType = null;
transitionDateRange.value = [];
queryParams.value.manageTagsList = []
proxy.resetForm("queryRef")
handleQuery()
}
@@ -721,7 +736,20 @@ function handleDelete(row) {
})
}
function searchEarNumber(query) {
if (!query) { earOptions.value = []; return }
earLoading.value = true
searchEarNumbers(query.trim()).then(res => {
earOptions.value = res.data || []
}).finally(() => earLoading.value = false)
}
function clearEarNumbers() {
queryParams.value.manageTagsList = []
}
function removeEarNumber(tag) {
const idx = queryParams.value.manageTagsList.indexOf(tag)
if (idx > -1) queryParams.value.manageTagsList.splice(idx, 1)
}
onMounted(() => {
loadRanchOptions();
getVarietyOptions();
@@ -738,4 +766,11 @@ onMounted(() => {
border-radius: 12px;
font-size: 12px;
}
.selected-ear-numbers {
margin-bottom: 16px;
padding: 10px;
background: #f5f7fa;
border-radius: 4px;
}
</style>