Compare commits
2 Commits
7b2e282a36
...
df88846432
| Author | SHA1 | Date | |
|---|---|---|---|
| df88846432 | |||
| c6be490aa2 |
@@ -8,6 +8,15 @@ export function listMilkProdclasses(query) {
|
||||
})
|
||||
}
|
||||
|
||||
// 修改处:新增耳号模糊查询接口
|
||||
export function searchEarNumbers(query) {
|
||||
return request({
|
||||
url: '/milkProdclasses/milkProdclasses/search_ear_numbers',
|
||||
method: 'get',
|
||||
params: { query }
|
||||
})
|
||||
}
|
||||
|
||||
export function importMilkProdclasses(data) {
|
||||
return request({
|
||||
url: '/milkProdclasses/milkProdclasses/import',
|
||||
|
||||
@@ -9,6 +9,15 @@ export function listSheepMilkAnalysis(query) {
|
||||
})
|
||||
}
|
||||
|
||||
// 修改处:新增模糊查询耳号接口
|
||||
export function searchEarNumbers(query) {
|
||||
return request({
|
||||
url: '/dairyProducts/sheepMilkAnalysis/search_ear_numbers',
|
||||
method: 'get',
|
||||
params: { query }
|
||||
})
|
||||
}
|
||||
|
||||
// 查询单个羊奶产量分析详细信息
|
||||
export function getSheepMilkAnalysis(sheepId) {
|
||||
return request({
|
||||
|
||||
@@ -12,8 +12,36 @@
|
||||
clearable />
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="管理耳号">
|
||||
<el-input v-model="queryParams.manageEarNo" placeholder="请输入管理耳号" clearable />
|
||||
<el-form-item label="管理耳号" prop="allEarNumbers">
|
||||
<el-select
|
||||
v-model="queryParams.allEarNumbers"
|
||||
multiple
|
||||
filterable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="输入耳号搜索"
|
||||
:remote-method="searchEarNumber"
|
||||
:loading="earNumberLoading"
|
||||
allow-create
|
||||
default-first-option
|
||||
style="width: 300px"
|
||||
@change="handleEarNumberChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in earNumberOptions"
|
||||
:key="item"
|
||||
:label="item"
|
||||
:value="item"
|
||||
/>
|
||||
</el-select>
|
||||
<el-button
|
||||
type="text"
|
||||
@click="clearEarNumbers"
|
||||
v-if="queryParams.allEarNumbers && queryParams.allEarNumbers.length > 0"
|
||||
style="margin-left: 10px"
|
||||
>
|
||||
清空
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="厂区">
|
||||
@@ -39,6 +67,19 @@
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<div v-if="queryParams.allEarNumbers && queryParams.allEarNumbers.length > 0" class="selected-ear-numbers">
|
||||
<span style="margin-right: 10px; color: #606266;">已选择耳号:</span>
|
||||
<el-tag
|
||||
v-for="earNumber in queryParams.allEarNumbers"
|
||||
:key="earNumber"
|
||||
closable
|
||||
@close="removeEarNumber(earNumber)"
|
||||
style="margin-right: 8px;"
|
||||
>
|
||||
{{ earNumber }}
|
||||
</el-tag>
|
||||
</div>
|
||||
|
||||
<el-row :gutter="10" class="mb8">
|
||||
<el-col :span="1.5">
|
||||
<el-button type="info" plain @click="handleImport" v-hasPermi="['milkProdclasses:milkProdclasses:import']">
|
||||
@@ -94,7 +135,8 @@
|
||||
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted, getCurrentInstance } from 'vue'
|
||||
import { listMilkProdclasses, importMilkProdclasses, exportMilkProdclasses } from '@/api/dairyProducts/milkProdclasses/milkProdclasses'
|
||||
// 修改处:引入 searchEarNumbers
|
||||
import { listMilkProdclasses, importMilkProdclasses, exportMilkProdclasses, searchEarNumbers } from '@/api/dairyProducts/milkProdclasses/milkProdclasses'
|
||||
import { getToken } from '@/utils/auth'
|
||||
import { getRanchList } from '@/api/dairyProducts/ranch/ranch.js'
|
||||
import { ElMessage } from 'element-plus'
|
||||
@@ -104,6 +146,10 @@ import { parseTime } from '@/utils/ruoyi'
|
||||
const { proxy } = getCurrentInstance()
|
||||
const ranchOptions = ref([])
|
||||
|
||||
// 修改处:新增耳号搜索相关变量
|
||||
const earNumberOptions = ref([])
|
||||
const earNumberLoading = ref(false)
|
||||
|
||||
onMounted(() => {
|
||||
getRanchList().then(res => {
|
||||
ranchOptions.value = res.data.map(item => ({
|
||||
@@ -117,26 +163,60 @@ onMounted(() => {
|
||||
|
||||
const queryParams = reactive({
|
||||
pageNum: 1,
|
||||
pageSize: 20, // 默认20条
|
||||
datetimeStart: null, // 开始日期
|
||||
datetimeEnd: null, // 结束日期
|
||||
manageEarNo: '', // 管理耳号
|
||||
factory: null, // 厂区
|
||||
classes: null // 班次
|
||||
pageSize: 20,
|
||||
datetimeStart: null,
|
||||
datetimeEnd: null,
|
||||
allEarNumbers: [], // 修改处:改为数组
|
||||
factory: null,
|
||||
classes: null
|
||||
})
|
||||
const dateRange = ref([]) // 新增:日期范围变量
|
||||
const tableData = ref([]) // 表格数据
|
||||
const total = ref(0) // 总数据条数
|
||||
const loading = ref(false) // 加载状态
|
||||
const openImport = ref(false) // 导入弹窗显示状态
|
||||
const dateRange = ref([])
|
||||
const tableData = ref([])
|
||||
const total = ref(0)
|
||||
const loading = ref(false)
|
||||
const openImport = ref(false)
|
||||
|
||||
const uploadUrl = import.meta.env.VITE_APP_BASE_API + '/milkProdclasses/milkProdclasses/import';
|
||||
const headers = { Authorization: 'Bearer ' + getToken() };
|
||||
|
||||
// 修改处:新增耳号搜索相关方法
|
||||
/** 远程搜索耳号 */
|
||||
function searchEarNumber(query) {
|
||||
if (query !== '') {
|
||||
earNumberLoading.value = true
|
||||
searchEarNumbers(query).then(response => {
|
||||
earNumberOptions.value = response.data || []
|
||||
earNumberLoading.value = false
|
||||
}).catch(() => {
|
||||
earNumberOptions.value = []
|
||||
earNumberLoading.value = false
|
||||
})
|
||||
} else {
|
||||
earNumberOptions.value = []
|
||||
}
|
||||
}
|
||||
|
||||
/** 耳号变化处理 */
|
||||
function handleEarNumberChange(value) {
|
||||
console.log('已选择的耳号:', value)
|
||||
}
|
||||
|
||||
/** 清空耳号 */
|
||||
function clearEarNumbers() {
|
||||
queryParams.allEarNumbers = []
|
||||
}
|
||||
|
||||
/** 移除单个耳号 */
|
||||
function removeEarNumber(earNumber) {
|
||||
const index = queryParams.allEarNumbers.indexOf(earNumber)
|
||||
if (index > -1) {
|
||||
queryParams.allEarNumbers.splice(index, 1)
|
||||
}
|
||||
}
|
||||
|
||||
function getList() {
|
||||
loading.value = true
|
||||
|
||||
// 处理日期范围参数
|
||||
if (dateRange.value && dateRange.value.length === 2) {
|
||||
queryParams.datetimeStart = dateRange.value[0];
|
||||
queryParams.datetimeEnd = dateRange.value[1];
|
||||
@@ -161,11 +241,11 @@ function handleQuery() {
|
||||
}
|
||||
|
||||
function resetQuery() {
|
||||
dateRange.value = []; // 清空日期范围
|
||||
// 显式重置所有字段
|
||||
dateRange.value = [];
|
||||
queryParams.datetimeStart = null;
|
||||
queryParams.datetimeEnd = null;
|
||||
queryParams.manageEarNo = '';
|
||||
queryParams.allEarNumbers = []; // 修改处:清空数组
|
||||
earNumberOptions.value = []; // 修改处:清空选项
|
||||
queryParams.factory = null;
|
||||
queryParams.classes = null;
|
||||
queryParams.pageNum = 1;
|
||||
@@ -189,7 +269,6 @@ function uploadError(err) {
|
||||
}
|
||||
|
||||
function handleExport() {
|
||||
// 导出时同样需要处理日期参数
|
||||
if (dateRange.value && dateRange.value.length === 2) {
|
||||
queryParams.datetimeStart = dateRange.value[0];
|
||||
queryParams.datetimeEnd = dateRange.value[1];
|
||||
@@ -225,3 +304,13 @@ function handleExport() {
|
||||
|
||||
getList();
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
/* 修改处:新增样式 */
|
||||
.selected-ear-numbers {
|
||||
margin-bottom: 16px;
|
||||
padding: 10px;
|
||||
background-color: #f5f7fa;
|
||||
border-radius: 4px;
|
||||
}
|
||||
</style>
|
||||
@@ -1,9 +1,38 @@
|
||||
<template>
|
||||
<div class="app-container">
|
||||
<el-form :inline="true" :model="queryParams" class="filter-form">
|
||||
<el-form-item label="耳号">
|
||||
<el-input v-model="queryParams.manageEarTag" placeholder="请输入耳号" clearable />
|
||||
<el-form :inline="true" :model="queryParams" ref="queryRef" class="filter-form">
|
||||
<el-form-item label="耳号" prop="allEarNumbers">
|
||||
<el-select
|
||||
v-model="queryParams.allEarNumbers"
|
||||
multiple
|
||||
filterable
|
||||
remote
|
||||
reserve-keyword
|
||||
placeholder="输入耳号搜索"
|
||||
:remote-method="searchEarNumber"
|
||||
:loading="earNumberLoading"
|
||||
allow-create
|
||||
default-first-option
|
||||
style="width: 300px"
|
||||
@change="handleEarNumberChange"
|
||||
>
|
||||
<el-option
|
||||
v-for="item in earNumberOptions"
|
||||
:key="item"
|
||||
:label="item"
|
||||
:value="item"
|
||||
/>
|
||||
</el-select>
|
||||
<el-button
|
||||
type="text"
|
||||
@click="clearEarNumbers"
|
||||
v-if="queryParams.allEarNumbers && queryParams.allEarNumbers.length > 0"
|
||||
style="margin-left: 10px"
|
||||
>
|
||||
清空
|
||||
</el-button>
|
||||
</el-form-item>
|
||||
|
||||
<el-form-item label="筛选天数">
|
||||
<el-input-number v-model="queryParams.screenDays" :min="1" placeholder="请输入天数" />
|
||||
</el-form-item>
|
||||
@@ -13,6 +42,19 @@
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
|
||||
<div v-if="queryParams.allEarNumbers && queryParams.allEarNumbers.length > 0" class="selected-ear-numbers">
|
||||
<span style="margin-right: 10px; color: #606266;">已选择耳号:</span>
|
||||
<el-tag
|
||||
v-for="earNumber in queryParams.allEarNumbers"
|
||||
:key="earNumber"
|
||||
closable
|
||||
@close="removeEarNumber(earNumber)"
|
||||
style="margin-right: 8px;"
|
||||
>
|
||||
{{ earNumber }}
|
||||
</el-tag>
|
||||
</div>
|
||||
|
||||
<div class="button-group">
|
||||
<el-popover placement="bottom" width="400" trigger="click">
|
||||
<el-checkbox-group v-model="selectedFields" class="checkbox-columns">
|
||||
@@ -51,7 +93,8 @@
|
||||
</template>
|
||||
|
||||
<script>
|
||||
import { listSheepMilkAnalysis } from "@/api/dairyProducts/sheepMilkAnalysis/sheepMilkAnalysis.js";
|
||||
// 修改处:导入 searchEarNumbers
|
||||
import { listSheepMilkAnalysis, searchEarNumbers } from "@/api/dairyProducts/sheepMilkAnalysis/sheepMilkAnalysis.js";
|
||||
import { format } from 'date-fns';
|
||||
import * as XLSX from 'xlsx'; // 导入xlsx库
|
||||
|
||||
@@ -62,14 +105,17 @@ export default {
|
||||
loading: false,
|
||||
total: 0,
|
||||
list: [],
|
||||
// 修改处:新增耳号搜索相关状态
|
||||
earNumberOptions: [],
|
||||
earNumberLoading: false,
|
||||
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 20, // 修改默认每页条数
|
||||
manageEarTag: null,
|
||||
screenDays: 100 // 默认筛选天数
|
||||
pageSize: 20,
|
||||
allEarNumbers: [], // 修改:改为数组
|
||||
screenDays: 100
|
||||
},
|
||||
selectedFields: [],
|
||||
// 修改:为数字字段添加 sortable: true
|
||||
allColumns: [
|
||||
{ label: "耳号", prop: "manageEarTag" },
|
||||
{ label: "品种", prop: "variety" },
|
||||
@@ -122,6 +168,41 @@ export default {
|
||||
}
|
||||
},
|
||||
methods: {
|
||||
// 修改处:新增耳号搜索与处理方法
|
||||
/** 远程搜索耳号 */
|
||||
searchEarNumber(query) {
|
||||
if (query !== '') {
|
||||
this.earNumberLoading = true
|
||||
searchEarNumbers(query).then(response => {
|
||||
this.earNumberOptions = response.data || []
|
||||
this.earNumberLoading = false
|
||||
}).catch(() => {
|
||||
this.earNumberOptions = []
|
||||
this.earNumberLoading = false
|
||||
})
|
||||
} else {
|
||||
this.earNumberOptions = []
|
||||
}
|
||||
},
|
||||
|
||||
/** 耳号变更处理 */
|
||||
handleEarNumberChange(value) {
|
||||
// 可选:添加日志或额外逻辑
|
||||
},
|
||||
|
||||
/** 清空所有耳号 */
|
||||
clearEarNumbers() {
|
||||
this.queryParams.allEarNumbers = []
|
||||
},
|
||||
|
||||
/** 移除单个耳号 */
|
||||
removeEarNumber(earNumber) {
|
||||
const index = this.queryParams.allEarNumbers.indexOf(earNumber)
|
||||
if (index > -1) {
|
||||
this.queryParams.allEarNumbers.splice(index, 1)
|
||||
}
|
||||
},
|
||||
|
||||
getList() {
|
||||
this.loading = true;
|
||||
listSheepMilkAnalysis(this.queryParams).then(response => {
|
||||
@@ -139,9 +220,10 @@ export default {
|
||||
this.queryParams = {
|
||||
pageNum: 1,
|
||||
pageSize: 20,
|
||||
manageEarTag: null,
|
||||
allEarNumbers: [], // 修改:重置为空数组
|
||||
screenDays: 100
|
||||
};
|
||||
this.earNumberOptions = []; // 修改:清空选项
|
||||
this.selectedFields = this.allColumns.map(c => c.prop);
|
||||
this.getList();
|
||||
},
|
||||
@@ -199,4 +281,11 @@ export default {
|
||||
max-height: 300px;
|
||||
overflow-y: auto;
|
||||
}
|
||||
/* 修改处:新增样式 */
|
||||
.selected-ear-numbers {
|
||||
margin-bottom: 16px;
|
||||
padding: 10px;
|
||||
background-color: #f5f7fa;
|
||||
border-radius: 4px;
|
||||
}
|
||||
</style>
|
||||
Reference in New Issue
Block a user