新增羊只中羊只类型改为非必填;转场转群部分搜索框去除创建时间和事件类型;三个改**页面的新增,查询,导出完善;每页条数设置;填写数字的字段数可排序

This commit is contained in:
zyh 2025-10-23 16:37:00 +08:00
parent 9c200ba2f5
commit 6483eab3b3
12 changed files with 702 additions and 353 deletions

View File

@ -16,7 +16,7 @@
"url": "https://gitee.com/y_project/RuoYi-Vue.git" "url": "https://gitee.com/y_project/RuoYi-Vue.git"
}, },
"dependencies": { "dependencies": {
"@element-plus/icons-vue": "^2.3.1", "@element-plus/icons-vue": "^2.3.2",
"@vueup/vue-quill": "1.2.0", "@vueup/vue-quill": "1.2.0",
"@vueuse/core": "10.11.0", "@vueuse/core": "10.11.0",
"axios": "0.28.1", "axios": "0.28.1",

View File

@ -1,13 +1,10 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<!-- <el-form-item label="羊只id" prop="sheepId"> <!-- <el-form-item label="创建时间" style="width: 308px">
<el-input v-model="queryParams.sheepId" placeholder="请输入羊只id" clearable @keyup.enter="handleQuery" />
</el-form-item> -->
<el-form-item label="创建时间" style="width: 308px">
<el-date-picker v-model="daterangeCreateTime" value-format="YYYY-MM-DD" type="daterange" range-separator="-" <el-date-picker v-model="daterangeCreateTime" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker> start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
</el-form-item> </el-form-item> -->
<el-form-item label="测量日期" style="width: 308px"> <el-form-item label="测量日期" style="width: 308px">
<el-date-picker v-model="daterangeMeasureDate" value-format="YYYY-MM-DD" type="daterange" range-separator="-" <el-date-picker v-model="daterangeMeasureDate" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker> start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
@ -59,17 +56,7 @@
<el-table v-loading="loading" :data="body_measureList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="body_measureList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180" fixed> <el-table-column label="管理耳号" align="center" prop="manageTags" min-width="100px" fixed />
<template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template>
</el-table-column>
<el-table-column label="测量日期" align="center" prop="measureDate" width="120">
<template #default="scope">
<span>{{ parseTime(scope.row.measureDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="管理耳号" align="center" prop="manageTags" min-width="100px" />
<el-table-column label="羊舍" align="center" prop="sheepfoldName" min-width="100px" /> <el-table-column label="羊舍" align="center" prop="sheepfoldName" min-width="100px" />
<el-table-column label="品种" align="center" prop="varietyName" /> <el-table-column label="品种" align="center" prop="varietyName" />
<el-table-column label="事件类型" align="center" prop="eventType" width="120" /> <el-table-column label="事件类型" align="center" prop="eventType" width="120" />
@ -79,43 +66,270 @@
<span>{{ genderMap[scope.row.gender] || '未知' }}</span> <span>{{ genderMap[scope.row.gender] || '未知' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="胎次" align="center" prop="parity" /> <el-table-column label="胎次" align="center" prop="parity">
<el-table-column label="出生体重(kg)" align="center" prop="birthWeight" min-width="100px" /> <template #header>
<el-table-column label="断奶体重(kg)" align="center" prop="weaningWeight" min-width="100px" /> <div style="display: flex; align-items: center; gap: 4px; cursor: pointer;" @click="handleSort('parity')">
<el-table-column label="当前体重(kg)" align="center" prop="currentWeight" min-width="100px" /> <span>胎次</span>
<el-table-column label="体高" align="center" prop="height" /> <el-icon size="16" style="color: skyblue;">
<el-table-column label="胸围" align="center" prop="bust" /> <ArrowUp v-if="!sortStates.parity.isSorting || sortStates.parity.isAsc" />
<el-table-column label="体斜长" align="center" prop="bodyLength" /> <ArrowDown v-else />
<el-table-column label="管围" align="center" prop="pipeLength" /> </el-icon>
<el-table-column label="胸深" align="center" prop="chestDepth" /> </div>
<el-table-column label="臀高" align="center" prop="hipHeight" /> </template>
<el-table-column label="尻宽" align="center" prop="rumpWidth" /> <template #default="scope">
<el-table-column label="尻高" align="center" prop="rumpHeignt" /> <span>{{ scope.row.parity }}</span>
<el-table-column label="腰角宽" align="center" prop="hipWidth" /> </template>
<el-table-column label="十字部高" align="center" prop="hipCrossHeight" /> </el-table-column>
<el-table-column label="出生体重(kg)" align="center" prop="birthWeight" min-width="100px">
<template #header>
<div style="display: flex; align-items: center; gap: 4px; cursor: pointer;"
@click="handleSort('birthWeight')">
<span>出生体重(kg)</span>
<el-icon size="16" style="color: skyblue;">
<ArrowUp v-if="!sortStates.birthWeight.isSorting || sortStates.birthWeight.isAsc" />
<ArrowDown v-else />
</el-icon>
</div>
</template>
<template #default="scope">
<span>{{ scope.row.birthWeight }}</span>
</template>
</el-table-column>
<el-table-column label="断奶体重(kg)" align="center" prop="weaningWeight" min-width="100px">
<template #header>
<div style="display: flex; align-items: center; gap: 4px; cursor: pointer;"
@click="handleSort('weaningWeight')">
<span>断奶体重(kg)</span>
<el-icon size="16" style="color: skyblue;">
<ArrowUp v-if="!sortStates.weaningWeight.isSorting || sortStates.weaningWeight.isAsc" />
<ArrowDown v-else />
</el-icon>
</div>
</template>
<template #default="scope">
<span>{{ scope.row.weaningWeight }}</span>
</template>
</el-table-column>
<el-table-column label="当前体重(kg)" align="center" prop="currentWeight" min-width="100px">
<template #header>
<div style="display: flex; align-items: center; gap: 4px; cursor: pointer;"
@click="handleSort('currentWeight')">
<span>当前体重(kg)</span>
<el-icon size="16" style="color: skyblue;">
<ArrowUp v-if="!sortStates.currentWeight.isSorting || sortStates.currentWeight.isAsc" />
<ArrowDown v-else />
</el-icon>
</div>
</template>
<template #default="scope">
<span>{{ scope.row.currentWeight }}</span>
</template>
</el-table-column>
<el-table-column label="体高" align="center" prop="height">
<template #header>
<div style="display: flex; align-items: center; gap: 4px; cursor: pointer;" @click="handleSort('height')">
<span>体高</span>
<el-icon size="16" style="color: skyblue;">
<ArrowUp v-if="!sortStates.height.isSorting || sortStates.height.isAsc" />
<ArrowDown v-else />
</el-icon>
</div>
</template>
<template #default="scope">
<span>{{ scope.row.height }}</span>
</template>
</el-table-column>
<el-table-column label="胸围" align="center" prop="bust">
<template #header>
<div style="display: flex; align-items: center; gap: 4px; cursor: pointer;" @click="handleSort('bust')">
<span>胸围</span>
<el-icon size="16" style="color: skyblue;">
<ArrowUp v-if="!sortStates.bust.isSorting || sortStates.bust.isAsc" />
<ArrowDown v-else />
</el-icon>
</div>
</template>
<template #default="scope">
<span>{{ scope.row.bust }}</span>
</template>
</el-table-column>
<el-table-column label="体斜长" align="center" prop="bodyLength">
<template #header>
<div style="display: flex; align-items: center; gap: 4px; cursor: pointer;" @click="handleSort('bodyLength')">
<span>体斜长</span>
<el-icon size="16" style="color: skyblue;">
<ArrowUp v-if="!sortStates.bodyLength.isSorting || sortStates.bodyLength.isAsc" />
<ArrowDown v-else />
</el-icon>
</div>
</template>
<template #default="scope">
<span>{{ scope.row.bodyLength }}</span>
</template>
</el-table-column>
<el-table-column label="管围" align="center" prop="pipeLength">
<template #header>
<div style="display: flex; align-items: center; gap: 4px; cursor: pointer;" @click="handleSort('pipeLength')">
<span>管围</span>
<el-icon size="16" style="color: skyblue;">
<ArrowUp v-if="!sortStates.pipeLength.isSorting || sortStates.pipeLength.isAsc" />
<ArrowDown v-else />
</el-icon>
</div>
</template>
<template #default="scope">
<span>{{ scope.row.pipeLength }}</span>
</template>
</el-table-column>
<el-table-column label="胸深" align="center" prop="chestDepth">
<template #header>
<div style="display: flex; align-items: center; gap: 4px; cursor: pointer;" @click="handleSort('chestDepth')">
<span>胸深</span>
<el-icon size="16" style="color: skyblue;">
<ArrowUp v-if="!sortStates.chestDepth.isSorting || sortStates.chestDepth.isAsc" />
<ArrowDown v-else />
</el-icon>
</div>
</template>
<template #default="scope">
<span>{{ scope.row.chestDepth }}</span>
</template>
</el-table-column>
<el-table-column label="臀高" align="center" prop="hipHeight">
<template #header>
<div style="display: flex; align-items: center; gap: 4px; cursor: pointer;" @click="handleSort('hipHeight')">
<span>臀高</span>
<el-icon size="16" style="color: skyblue;">
<ArrowUp v-if="!sortStates.hipHeight.isSorting || sortStates.hipHeight.isAsc" />
<ArrowDown v-else />
</el-icon>
</div>
</template>
<template #default="scope">
<span>{{ scope.row.hipHeight }}</span>
</template>
</el-table-column>
<el-table-column label="尻宽" align="center" prop="rumpWidth">
<template #header>
<div style="display: flex; align-items: center; gap: 4px; cursor: pointer;" @click="handleSort('rumpWidth')">
<span>尻宽</span>
<el-icon size="16" style="color: skyblue;">
<ArrowUp v-if="!sortStates.rumpWidth.isSorting || sortStates.rumpWidth.isAsc" />
<ArrowDown v-else />
</el-icon>
</div>
</template>
<template #default="scope">
<span>{{ scope.row.rumpWidth }}</span>
</template>
</el-table-column>
<el-table-column label="尻高" align="center" prop="rumpHeignt">
<template #header>
<div style="display: flex; align-items: center; gap: 4px; cursor: pointer;" @click="handleSort('rumpHeignt')">
<span>尻高</span>
<el-icon size="16" style="color: skyblue;">
<ArrowUp v-if="!sortStates.rumpHeignt.isSorting || sortStates.rumpHeignt.isAsc" />
<ArrowDown v-else />
</el-icon>
</div>
</template>
<template #default="scope">
<span>{{ scope.row.rumpHeignt }}</span>
</template>
</el-table-column>
<el-table-column label="腰角宽" align="center" prop="hipWidth">
<template #header>
<div style="display: flex; align-items: center; gap: 4px; cursor: pointer;" @click="handleSort('hipWidth')">
<span>腰角宽</span>
<el-icon size="16" style="color: skyblue;">
<ArrowUp v-if="!sortStates.hipWidth.isSorting || sortStates.hipWidth.isAsc" />
<ArrowDown v-else />
</el-icon>
</div>
</template>
<template #default="scope">
<span>{{ scope.row.hipWidth }}</span>
</template>
</el-table-column>
<el-table-column label="十字部高" align="center" prop="hipCrossHeight">
<template #header>
<div style="display: flex; align-items: center; gap: 4px; cursor: pointer;"
@click="handleSort('hipCrossHeight')">
<span>十字部高</span>
<el-icon size="16" style="color: skyblue;">
<ArrowUp v-if="!sortStates.hipCrossHeight.isSorting || sortStates.hipCrossHeight.isAsc" />
<ArrowDown v-else />
</el-icon>
</div>
</template>
<template #default="scope">
<span>{{ scope.row.hipCrossHeight }}</span>
</template>
</el-table-column>
<el-table-column label="繁育状态" align="center" prop="breedStatusName" width="100"> <el-table-column label="繁育状态" align="center" prop="breedStatusName" width="100">
<template #default="scope"> <template #default="scope">
<span>{{ scope.row.breedStatusName || '未设置' }}</span> <span>{{ scope.row.breedStatusName || '未设置' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="泌乳天数" align="center" prop="lactationDay" width="100"> <el-table-column label="泌乳天数" align="center" prop="lactationDay" width="100">
<template #header>
<div style="display: flex; align-items: center; gap: 4px; cursor: pointer;"
@click="handleSort('lactationDay')">
<span>泌乳天数</span>
<el-icon size="16" style="color: skyblue;">
<ArrowUp v-if="!sortStates.lactationDay.isSorting || sortStates.lactationDay.isAsc" />
<ArrowDown v-else />
</el-icon>
</div>
</template>
<template #default="scope"> <template #default="scope">
<span>{{ scope.row.lactationDay || '-' }}</span> <span>{{ scope.row.lactationDay || '-' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="怀孕天数" align="center" prop="gestationDay" width="100"> <el-table-column label="怀孕天数" align="center" prop="gestationDay" width="100">
<template #header>
<div style="display: flex; align-items: center; gap: 4px; cursor: pointer;"
@click="handleSort('gestationDay')">
<span>怀孕天数</span>
<el-icon size="16" style="color: skyblue;">
<ArrowUp v-if="!sortStates.gestationDay.isSorting || sortStates.gestationDay.isAsc" />
<ArrowDown v-else />
</el-icon>
</div>
</template>
<template #default="scope"> <template #default="scope">
<span>{{ scope.row.gestationDay || '-' }}</span> <span>{{ scope.row.gestationDay || '-' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="配后天数" align="center" prop="postMatingDay" width="100"> <el-table-column label="配后天数" align="center" prop="postMatingDay" width="100">
<template #header>
<div style="display: flex; align-items: center; gap: 4px; cursor: pointer;"
@click="handleSort('postMatingDay')">
<span>配后天数</span>
<el-icon size="16" style="color: skyblue;">
<ArrowUp v-if="!sortStates.postMatingDay.isSorting || sortStates.postMatingDay.isAsc" />
<ArrowDown v-else />
</el-icon>
</div>
</template>
<template #default="scope"> <template #default="scope">
<span>{{ scope.row.postMatingDay || '-' }}</span> <span>{{ scope.row.postMatingDay || '-' }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="备注" align="center" prop="comment" min-width="100px" /> <el-table-column label="备注" align="center" prop="comment" min-width="100px" />
<el-table-column label="技术员" align="center" prop="technician" /> <el-table-column label="技术员" align="center" prop="technician" />
<el-table-column label="测量日期" align="center" prop="measureDate" width="120">
<template #default="scope">
<span>{{ parseTime(scope.row.measureDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="创建人" align="center" prop="createBy" /> <el-table-column label="创建人" align="center" prop="createBy" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" min-width="130px"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width" fixed="right" min-width="130px">
<template #default="scope"> <template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
@ -127,7 +341,7 @@
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize" @pagination="getList" /> v-model:limit="queryParams.pageSize" @pagination="getList" :page-sizes="[20, 50, 100, 200, 500, 1000, 2000]" />
<!-- 添加或修改体尺测量对话框 --> <!-- 添加或修改体尺测量对话框 -->
<el-dialog :title="title" v-model="open" width="700px" append-to-body> <el-dialog :title="title" v-model="open" width="700px" append-to-body>
@ -212,6 +426,8 @@ import { getSheepByManageTags } from "@/api/produce/manage_sheep/changeVariety"
import { listSheepfold_management as listSheepfold } from '@/api/fileManagement/sheepfold_management' import { listSheepfold_management as listSheepfold } from '@/api/fileManagement/sheepfold_management'
import { getVarietyOptions } from '@/api/produce/other/fixHoof' import { getVarietyOptions } from '@/api/produce/other/fixHoof'
import { getCurrentInstance } from 'vue' import { getCurrentInstance } from 'vue'
import { ArrowUp, ArrowDown } from '@element-plus/icons-vue'
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
const body_measureList = ref([]) const body_measureList = ref([])
@ -237,7 +453,7 @@ const data = reactive({
form: { manageTags: null, technician: null }, form: { manageTags: null, technician: null },
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 20,
sheepId: null, sheepId: null,
sheepfoldId: null, sheepfoldId: null,
varietyId: null, varietyId: null,
@ -262,7 +478,20 @@ const data = reactive({
const { queryParams, form, rules } = toRefs(data) const { queryParams, form, rules } = toRefs(data)
/** 查询体尺测量列表 */ const [smFields, bsFields] = [
// sc_body_measure
['height', 'bust', 'bodyLength', 'pipeLength', 'chestDepth', 'hipHeight', 'rumpWidth', 'rumpHeignt', 'hipWidth', 'hipCrossHeight'],
// bas_sheep
['parity', 'birthWeight', 'weaningWeight', 'currentWeight', 'lactationDay', 'gestationDay', 'postMatingDay']
];
//
const sortStates = reactive({
...smFields.reduce((obj, field) => ({ ...obj, [field]: { isSorting: false, isAsc: true } }), {}),
...bsFields.reduce((obj, field) => ({ ...obj, [field]: { isSorting: false, isAsc: true } }), {})
});
//
function getList() { function getList() {
loading.value = true loading.value = true
queryParams.value.params = {} queryParams.value.params = {}
@ -281,6 +510,23 @@ function getList() {
}) })
} }
/**
* 通用排序方法所有需要排序的列共用
* @param {String} prop - 排序字段
*/
function handleSort(prop) {
Object.keys(sortStates).forEach(key => {
sortStates[key].isSorting = false;
});
const current = sortStates[prop];
current.isSorting = true;
current.isAsc = !current.isAsc;
queryParams.value.orderBy = prop;
queryParams.value.sortDirection = current.isAsc ? 'ASC' : 'DESC';
queryParams.value.pageNum = 1;
getList();
}
// //
function onManageTagsBlur() { function onManageTagsBlur() {
const tag = form.value.manageTags?.trim(); const tag = form.value.manageTags?.trim();
@ -351,6 +597,12 @@ function resetQuery() {
data.varietyName = ''; data.varietyName = '';
daterangeMeasureDate.value = []; daterangeMeasureDate.value = [];
proxy.resetForm("queryRef"); proxy.resetForm("queryRef");
Object.keys(sortStates).forEach(key => {
sortStates[key].isSorting = false
sortStates[key].isAsc = true
})
queryParams.value.orderBy = null;
queryParams.value.sortDirection = null;
handleQuery(); handleQuery();
} }

View File

@ -1,13 +1,10 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<!-- <el-form-item label="羊只id" prop="sheepId"> <!-- <el-form-item label="创建时间" style="width: 308px">
<el-input v-model="queryParams.sheepId" placeholder="请输入羊只id" clearable @keyup.enter="handleQuery" />
</el-form-item> -->
<el-form-item label="创建时间" style="width: 308px">
<el-date-picker v-model="daterangeCreateTime" value-format="YYYY-MM-DD" type="daterange" range-separator="-" <el-date-picker v-model="daterangeCreateTime" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker> start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
</el-form-item> </el-form-item> -->
<el-form-item label="事件日期" style="width: 308px"> <el-form-item label="事件日期" style="width: 308px">
<el-date-picker v-model="daterangeDatetime" value-format="YYYY-MM-DD" type="daterange" range-separator="-" <el-date-picker v-model="daterangeDatetime" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker> start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
@ -58,27 +55,37 @@
<el-table v-loading="loading" :data="body_scoreList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="body_scoreList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="${comment}" align="center" prop="id" /> --> <el-table-column label="管理耳号" align="center" prop="manageTags" min-width="100px" fixed />
<!-- <el-table-column label="羊只id" align="center" prop="sheepId" /> --> <el-table-column label="品种" align="center" prop="varietyName" />
<el-table-column label="创建时间" align="center" prop="createTime" min-width="130px" fixed> <el-table-column label="事件类型" align="center" prop="eventType" />
<template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template>
</el-table-column>
<el-table-column label="事件日期" align="center" prop="datetime" min-width="120px"> <el-table-column label="事件日期" align="center" prop="datetime" min-width="120px">
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.datetime, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.datetime, '{y}-{m}-{d}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="管理耳号" align="center" prop="manageTags" min-width="100px" /> <el-table-column label="体况评分" align="center" prop="score" min-width="100px">
<el-table-column label="品种" align="center" prop="varietyName" /> <template #header>
<el-table-column label="事件类型" align="center" prop="eventType" /> <div style="display: flex; align-items: center; gap: 8px; cursor: pointer;" @click="handleScoreSort">
<el-table-column label="体况评分" align="center" prop="score" /> <span>体况评分</span>
<!-- <el-table-column label="羊舍id" align="center" prop="sheepfold" /> --> <el-icon size="16" style="color: skyblue;">
<ArrowUp v-if="!sortByScore || sortScoreAsc" />
<ArrowDown v-else />
</el-icon>
</div>
</template>
<template #default="scope">
<span>{{ scope.row.score }}</span>
</template>
</el-table-column>
<el-table-column label="羊舍" align="center" prop="sheepfoldName" min-width="100px" /> <el-table-column label="羊舍" align="center" prop="sheepfoldName" min-width="100px" />
<el-table-column label="备注" align="center" prop="comment" min-width="130px" /> <el-table-column label="备注" align="center" prop="comment" min-width="130px" />
<el-table-column label="技术员" align="center" prop="technician" /> <el-table-column label="技术员" align="center" prop="technician" />
<el-table-column label="创建人" align="center" prop="createBy" /> <el-table-column label="创建人" align="center" prop="createBy" />
<el-table-column label="创建时间" align="center" prop="createTime" min-width="130px">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" min-width="150px" fixed="right"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width" min-width="150px" fixed="right">
<template #default="scope"> <template #default="scope">
<!-- <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" <!-- <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
@ -90,14 +97,11 @@
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize" @pagination="getList" /> v-model:limit="queryParams.pageSize" @pagination="getList" :page-sizes="[20, 50, 100, 200, 500, 1000, 2000]" />
<!-- 添加或修改体况评分对话框 --> <!-- 添加或修改体况评分对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body> <el-dialog :title="title" v-model="open" width="500px" append-to-body>
<el-form ref="body_scoreRef" :model="form" :rules="rules" label-width="80px"> <el-form ref="body_scoreRef" :model="form" :rules="rules" label-width="80px">
<!-- <el-form-item label="羊只id" prop="sheepId">
<el-input v-model="form.sheepId" placeholder="请输入羊只id" />
</el-form-item> -->
<el-form-item label="管理耳号" prop="manageTags"> <el-form-item label="管理耳号" prop="manageTags">
<el-input v-model="form.manageTags" placeholder="请输入管理耳号" @blur="onManageTagsBlur" :disabled="!isAdd" <el-input v-model="form.manageTags" placeholder="请输入管理耳号" @blur="onManageTagsBlur" :disabled="!isAdd"
clearable /> clearable />
@ -115,9 +119,6 @@
<el-option v-for="item in sheepfoldList" :key="item.id" :label="item.sheepfoldName" :value="item.id" /> <el-option v-for="item in sheepfoldList" :key="item.id" :label="item.sheepfoldName" :value="item.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- <el-form-item label="羊舍id" prop="sheepfold">
<el-input v-model="form.sheepfold" placeholder="请输入羊舍id" :disabled="!isAdd" />
</el-form-item> -->
<el-form-item label="备注" v-if="!isAdd"> <el-form-item label="备注" v-if="!isAdd">
<el-input v-model="form.comment" disabled type="textarea" rows="2" /> <el-input v-model="form.comment" disabled type="textarea" rows="2" />
</el-form-item> </el-form-item>
@ -140,6 +141,7 @@ import { listBody_score, getBody_score, delBody_score, addBody_score, updateBody
import { listSheepfold_management as listSheepfold } from '@/api/fileManagement/sheepfold_management' import { listSheepfold_management as listSheepfold } from '@/api/fileManagement/sheepfold_management'
import { checkSheepByManageTags, getVarietyOptions } from "@/api/produce/other/fixHoof" import { checkSheepByManageTags, getVarietyOptions } from "@/api/produce/other/fixHoof"
import { getCurrentInstance, ref, reactive, toRefs } from 'vue' import { getCurrentInstance, ref, reactive, toRefs } from 'vue'
import { ArrowUp, ArrowDown } from '@element-plus/icons-vue'
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
@ -156,6 +158,8 @@ const daterangeDatetime = ref([])
const daterangeCreateTime = ref([]) const daterangeCreateTime = ref([])
const sheepfoldList = ref([]) const sheepfoldList = ref([])
const isAdd = ref(false) const isAdd = ref(false)
const sortByScore = ref(false)
const sortScoreAsc = ref(true)
const data = reactive({ const data = reactive({
form: { form: {
@ -169,7 +173,7 @@ const data = reactive({
}, },
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 20,
manageTags: null, manageTags: null,
varietyId: null, varietyId: null,
sheepfold: null, sheepfold: null,
@ -206,6 +210,13 @@ function getList() {
queryParams.value.params["beginCreateTime"] = daterangeCreateTime.value[0] queryParams.value.params["beginCreateTime"] = daterangeCreateTime.value[0]
queryParams.value.params["endCreateTime"] = daterangeCreateTime.value[1] queryParams.value.params["endCreateTime"] = daterangeCreateTime.value[1]
} }
if (sortByScore.value) {
queryParams.value.orderBy = "score";
queryParams.value.sortDirection = sortScoreAsc.value ? "ASC" : "DESC";
} else {
queryParams.value.orderBy = null;
queryParams.value.sortDirection = null;
}
listBody_score(queryParams.value).then(response => { listBody_score(queryParams.value).then(response => {
body_scoreList.value = response.rows body_scoreList.value = response.rows
total.value = response.total total.value = response.total
@ -243,6 +254,18 @@ function onManageTagsBlur() {
}); });
} }
//
function handleScoreSort() {
if (sortByScore.value) {
sortScoreAsc.value = !sortScoreAsc.value;
} else {
sortByScore.value = true;
sortScoreAsc.value = true;
}
queryParams.value.pageNum = 1;
getList();
}
// //
const sheepfoldOptions = ref([]) const sheepfoldOptions = ref([])
function getSheepfoldOptions() { function getSheepfoldOptions() {
@ -285,6 +308,8 @@ function resetQuery() {
daterangeCreateTime.value = [] daterangeCreateTime.value = []
queryParams.value.varietyId = null; queryParams.value.varietyId = null;
proxy.resetForm("queryRef") proxy.resetForm("queryRef")
sortByScore.value = false;
sortScoreAsc.value = true;
handleQuery() handleQuery()
} }

View File

@ -1,13 +1,10 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<!-- <el-form-item label="羊只id" prop="sheepId"> <!-- <el-form-item label="创建时间" style="width: 308px">
<el-input v-model="queryParams.sheepId" placeholder="请输入羊只id" clearable @keyup.enter="handleQuery" />
</el-form-item> -->
<el-form-item label="创建时间" style="width: 308px">
<el-date-picker v-model="daterangeCreateTime" value-format="YYYY-MM-DD" type="daterange" range-separator="-" <el-date-picker v-model="daterangeCreateTime" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker> start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
</el-form-item> </el-form-item> -->
<el-form-item label="事件日期" style="width: 308px"> <el-form-item label="事件日期" style="width: 308px">
<el-date-picker v-model="daterangeEventDate" value-format="YYYY-MM-DD" type="daterange" range-separator="-" <el-date-picker v-model="daterangeEventDate" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker> start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
@ -53,29 +50,68 @@
<el-table v-loading="loading" :data="breast_ratingList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="breast_ratingList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="创建时间" align="center" prop="createTime" min-width="150" fixed> <el-table-column label="管理耳号" align="center" prop="manageTags" min-width="100px" fixed />
<template #default="scope"> <el-table-column label="品种" align="center" prop="varietyName" />
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span> <el-table-column label="事件类型" align="center" prop="eventType" />
</template>
</el-table-column>
<el-table-column label="事件日期" align="center" prop="eventDate" min-width="120px"> <el-table-column label="事件日期" align="center" prop="eventDate" min-width="120px">
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.eventDate, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.eventDate, '{y}-{m}-{d}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="管理耳号" align="center" prop="manageTags" min-width="100px" />
<el-table-column label="品种" align="center" prop="varietyName" />
<el-table-column label="事件类型" align="center" prop="eventType" />
<el-table-column label="羊舍" align="center" prop="sheepfoldName" min-width="120px" /> <el-table-column label="羊舍" align="center" prop="sheepfoldName" min-width="120px" />
<el-table-column label="乳房深度" align="center" prop="depth" /> <el-table-column label="乳房深度" align="center" prop="depth">
<el-table-column label="乳房长度" align="center" prop="length" /> <template #header>
<div style="display: flex; align-items: center; gap: 4px; cursor: pointer;" @click="handleDepthSort">
<span>乳房深度</span>
<el-icon size="16" style="color: #409EFF;">
<ArrowUp v-if="!sortByDepth || sortDepthAsc" />
<ArrowDown v-else />
</el-icon>
</div>
</template>
<template #default="scope">
<span>{{ scope.row.depth }}</span>
</template>
</el-table-column>
<el-table-column label="乳房长度" align="center" prop="length">
<template #header>
<div style="display: flex; align-items: center; gap: 4px; cursor: pointer;" @click="handleLengthSort">
<span>乳房长度</span>
<el-icon size="16" style="color: #409EFF;">
<ArrowUp v-if="!sortByLength || sortLengthAsc" />
<ArrowDown v-else />
</el-icon>
</div>
</template>
<template #default="scope">
<span>{{ scope.row.length }}</span>
</template>
</el-table-column>
<el-table-column label="乳房位置" align="center" prop="position" /> <el-table-column label="乳房位置" align="center" prop="position" />
<el-table-column label="乳房附着" align="center" prop="adbere" /> <el-table-column label="乳房附着" align="center" prop="adbere" />
<el-table-column label="乳房间隔度" align="center" prop="spacing" min-width="120px" /> <el-table-column label="乳房间隔度" align="center" prop="spacing" min-width="120px" />
<el-table-column label="乳房评分" align="center" prop="score" /> <el-table-column label="乳房评分" align="center" prop="score">
<template #header>
<div style="display: flex; align-items: center; gap: 4px; cursor: pointer;" @click="handleScoreSort">
<span>乳房评分</span>
<el-icon size="16" style="color: #409EFF;">
<ArrowUp v-if="!sortByScore || sortScoreAsc" />
<ArrowDown v-else />
</el-icon>
</div>
</template>
<template #default="scope">
<span>{{ scope.row.score }}</span>
</template>
</el-table-column>
<el-table-column label="备注" align="center" prop="comment" /> <el-table-column label="备注" align="center" prop="comment" />
<el-table-column label="技术员" align="center" prop="technician" /> <el-table-column label="技术员" align="center" prop="technician" />
<el-table-column label="创建人" align="center" prop="createBy" /> <el-table-column label="创建人" align="center" prop="createBy" />
<el-table-column label="创建时间" align="center" prop="createTime" min-width="150">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" min-width="120px" fixed="right"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width" min-width="120px" fixed="right">
<template #default="scope"> <template #default="scope">
<!-- <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" <!-- <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
@ -87,14 +123,11 @@
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize" @pagination="getList" /> v-model:limit="queryParams.pageSize" @pagination="getList" :page-sizes="[20, 50, 100, 200, 500, 1000, 2000]" />
<!-- 添加或修改乳房评分对话框 --> <!-- 添加或修改乳房评分对话框 -->
<el-dialog :title="title" v-model="open" width="550px" append-to-body> <el-dialog :title="title" v-model="open" width="550px" append-to-body>
<el-form ref="breast_ratingRef" :model="form" :rules="rules" label-width="115px"> <el-form ref="breast_ratingRef" :model="form" :rules="rules" label-width="115px">
<!-- <el-form-item label="羊只id" prop="sheepId">
<el-input v-model="form.sheepId" placeholder="请输入羊只id" />
</el-form-item> -->
<el-form-item label="管理耳号" prop="manageTags"> <el-form-item label="管理耳号" prop="manageTags">
<el-input v-model="form.manageTags" placeholder="请输入管理耳号" @blur="onManageTagsBlur" clearable <el-input v-model="form.manageTags" placeholder="请输入管理耳号" @blur="onManageTagsBlur" clearable
:disabled="!isAdd" /> :disabled="!isAdd" />
@ -144,6 +177,7 @@ import { listBreast_rating, getBreast_rating, delBreast_rating, addBreast_rating
import { checkSheepByManageTags, getVarietyOptions } from "@/api/produce/other/fixHoof" import { checkSheepByManageTags, getVarietyOptions } from "@/api/produce/other/fixHoof"
import { listSheepfold_management as listSheepfold } from '@/api/fileManagement/sheepfold_management' import { listSheepfold_management as listSheepfold } from '@/api/fileManagement/sheepfold_management'
import { getCurrentInstance, reactive, ref } from "vue" import { getCurrentInstance, reactive, ref } from "vue"
import { ArrowUp, ArrowDown } from '@element-plus/icons-vue'
const { proxy } = getCurrentInstance() const { proxy } = getCurrentInstance()
@ -159,6 +193,15 @@ const title = ref("")
const daterangeCreateTime = ref([]) const daterangeCreateTime = ref([])
const daterangeEventDate = ref([]); const daterangeEventDate = ref([]);
const isAdd = ref(false) const isAdd = ref(false)
//
const sortByDepth = ref(false)
const sortDepthAsc = ref(true)
//
const sortByLength = ref(false)
const sortLengthAsc = ref(true)
//
const sortByScore = ref(false)
const sortScoreAsc = ref(true)
const data = reactive({ const data = reactive({
form: { form: {
id: null, id: null,
@ -175,7 +218,7 @@ const data = reactive({
}, },
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 20,
manageTags: null manageTags: null
}, },
rules: { rules: {
@ -208,6 +251,20 @@ function getList() {
queryParams.value.params["beginCreateTime"] = daterangeCreateTime.value[0] queryParams.value.params["beginCreateTime"] = daterangeCreateTime.value[0]
queryParams.value.params["endCreateTime"] = daterangeCreateTime.value[1] queryParams.value.params["endCreateTime"] = daterangeCreateTime.value[1]
} }
if (sortByDepth.value) {
queryParams.value.orderBy = "depth";
queryParams.value.sortDirection = sortDepthAsc.value ? "ASC" : "DESC";
} else if (sortByLength.value) {
queryParams.value.orderBy = "length";
queryParams.value.sortDirection = sortLengthAsc.value ? "ASC" : "DESC";
} else if (sortByScore.value) {
queryParams.value.orderBy = "score";
queryParams.value.sortDirection = sortScoreAsc.value ? "ASC" : "DESC";
} else {
queryParams.value.orderBy = null;
queryParams.value.sortDirection = null;
}
listBreast_rating(queryParams.value).then(response => { listBreast_rating(queryParams.value).then(response => {
breast_ratingList.value = response.rows breast_ratingList.value = response.rows
total.value = response.total total.value = response.total
@ -239,6 +296,49 @@ function onManageTagsBlur() {
form.value.comment = null; form.value.comment = null;
}); });
} }
//
function handleDepthSort() {
console.log("sortByDepth before:", sortByDepth.value);
sortByLength.value = false;
sortByScore.value = false;
if (sortByDepth.value) {
sortDepthAsc.value = !sortDepthAsc.value;
} else {
sortByDepth.value = true;
sortDepthAsc.value = true;
}
queryParams.value.pageNum = 1;
console.log("sortByDepth after:", sortByDepth.value);
getList();
}
//
function handleLengthSort() {
sortByDepth.value = false;
sortByScore.value = false;
if (sortByLength.value) {
sortLengthAsc.value = !sortLengthAsc.value;
} else {
sortByLength.value = true;
sortLengthAsc.value = true;
}
queryParams.value.pageNum = 1;
getList();
}
//
function handleScoreSort() {
sortByDepth.value = false;
sortByLength.value = false;
if (sortByScore.value) {
sortScoreAsc.value = !sortScoreAsc.value;
} else {
sortByScore.value = true;
sortScoreAsc.value = true;
}
queryParams.value.pageNum = 1;
getList();
}
// //
function cancel() { function cancel() {
@ -277,6 +377,12 @@ function resetQuery() {
daterangeCreateTime.value = [] daterangeCreateTime.value = []
daterangeEventDate.value = []; daterangeEventDate.value = [];
proxy.resetForm("queryRef") proxy.resetForm("queryRef")
sortByDepth.value = false
sortByLength.value = false
sortByScore.value = false
sortDepthAsc.value = true
sortLengthAsc.value = true
sortScoreAsc.value = true
handleQuery() handleQuery()
} }

View File

@ -1,9 +1,10 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<!-- 顶部按钮 --> <!-- 顶部按钮 -->
<el-button type="warning" icon="Upload" @click="handleExportForm">导出</el-button>
<el-button type="primary" plain icon="Plus" @click="handleImport" <el-button type="primary" plain icon="Plus" @click="handleImport"
v-hasPermi="['produce:add_sheep:import']">导入</el-button> v-hasPermi="['produce:add_sheep:import']">导入</el-button>
<el-button type="warning" icon="Upload" @click="handleExportForm">下载模板</el-button>
<!-- 新增/编辑表单 --> <!-- 新增/编辑表单 -->
<el-form :model="form" ref="formRef" label-position="left" label-width="120px" style="margin-top:15px" <el-form :model="form" ref="formRef" label-position="left" label-width="120px" style="margin-top:15px"
@ -178,7 +179,6 @@ const rules = {
birthday: [{ required: true, message: '请选择出生日期', trigger: 'change' }], birthday: [{ required: true, message: '请选择出生日期', trigger: 'change' }],
gender: [{ required: true, message: '请选择性别', trigger: 'change' }], gender: [{ required: true, message: '请选择性别', trigger: 'change' }],
varietyId: [{ required: true, message: '请选择品种', trigger: 'change' }], varietyId: [{ required: true, message: '请选择品种', trigger: 'change' }],
typeId: [{ required: true, message: '请选择羊只类别', trigger: 'change' }],
joinDate: [{ required: true, message: '请选择入群日期', trigger: 'change' }], joinDate: [{ required: true, message: '请选择入群日期', trigger: 'change' }],
technician: [{ required: true, message: '请输入技术员', trigger: 'change' }], technician: [{ required: true, message: '请输入技术员', trigger: 'change' }],
} }
@ -238,11 +238,11 @@ function handleRanchChange(ranchId) {
} }
// //
function getSheepfoldOptions() { //function getSheepfoldOptions() {
// listSheepfold({ pageNum: 1, pageSize: 9999 }).then(res => { // listSheepfold({ pageNum: 1, pageSize: 9999 }).then(res => {
// sheepfoldOptions.value = res.rows || [] // sheepfoldOptions.value = res.rows || []
// }) // })
} //}
// //
function getVarietyOptions() { function getVarietyOptions() {
@ -382,7 +382,7 @@ function handleImportError(err) {
} }
onMounted(() => { onMounted(() => {
getSheepfoldOptions() // getSheepfoldOptions()
loadSheepTypeList() loadSheepTypeList()
loadRanchList() loadRanchList()
getVarietyOptions() getVarietyOptions()

View File

@ -1,17 +1,9 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<!-- <el-form-item label="羊只id" prop="sheepId"> <el-form-item label="事件日期" style="width: 308px">
<el-input <el-date-picker v-model="daterangeEventDate" type="daterange" range-separator="-" start-placeholder="开始日期"
v-model="queryParams.sheepId" end-placeholder="结束日期" value-format="YYYY-MM-DD" />
placeholder="请输入羊只id"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item> -->
<el-form-item label="创建时间" style="width: 308px">
<el-date-picker v-model="daterangeCreateTime" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="管理耳号" prop="manageTags"> <el-form-item label="管理耳号" prop="manageTags">
<el-input v-model="queryParams.manageTags" placeholder="请输入管理耳号" clearable @keyup.enter="handleQuery" <el-input v-model="queryParams.manageTags" placeholder="请输入管理耳号" clearable @keyup.enter="handleQuery"
@ -58,19 +50,23 @@
<el-table v-loading="loading" :data="changeCommentList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="changeCommentList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="${comment}" align="center" prop="id" /> -->
<!-- <el-table-column label="羊只id" align="center" prop="sheepId" /> -->
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template>
</el-table-column>
<el-table-column label="管理耳号" align="center" prop="manageTags" /> <el-table-column label="管理耳号" align="center" prop="manageTags" />
<el-table-column label="羊舍" align="center" prop="sheepfoldName" /> <el-table-column label="羊舍" align="center" prop="sheepfoldName" />
<el-table-column label="事件类型" align="center" prop="eventType" width="120" /> <el-table-column label="事件类型" align="center" prop="eventType" width="120" />
<el-table-column label="新备注" align="center" prop="newComment" /> <el-table-column label="新备注" align="center" prop="newComment" />
<el-table-column label="原备注" align="center" prop="oldComment" /> <el-table-column label="原备注" align="center" prop="oldComment" />
<el-table-column label="事件日期" align="center" prop="eventDate">
<template #default="scope">
<span>{{ parseTime(scope.row.eventDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="技术员" align="center" prop="technician" />
<el-table-column label="创建人" align="center" prop="createBy" /> <el-table-column label="创建人" align="center" prop="createBy" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope"> <template #default="scope">
<!-- <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" <!-- <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
@ -82,14 +78,11 @@
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize" @pagination="getList" /> v-model:limit="queryParams.pageSize" @pagination="getList" :page-sizes="[20, 50, 100, 200, 500, 1000, 2000]" />
<!-- 添加或修改改备注对话框 --> <!-- 添加或修改改备注对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body> <el-dialog :title="title" v-model="open" width="500px" append-to-body>
<el-form ref="changeCommentRef" :model="form" :rules="rules" label-width="80px"> <el-form ref="changeCommentRef" :model="form" :rules="rules" label-width="80px">
<!-- <el-form-item label="羊只id" prop="sheepId">
<el-input v-model="form.sheepId" placeholder="请输入羊只id" />
</el-form-item> -->
<el-form-item label="管理耳号" prop="manageTags"> <el-form-item label="管理耳号" prop="manageTags">
<el-input v-model="form.manageTags" placeholder="请输入管理耳号" @blur="onManageTagsBlur" :disabled="!isAddMode" /> <el-input v-model="form.manageTags" placeholder="请输入管理耳号" @blur="onManageTagsBlur" :disabled="!isAddMode" />
</el-form-item> </el-form-item>
@ -99,6 +92,13 @@
<el-form-item label="原备注" prop="oldComment"> <el-form-item label="原备注" prop="oldComment">
<el-input v-model="form.oldComment" placeholder="请输入原备注" disabled /> <el-input v-model="form.oldComment" placeholder="请输入原备注" disabled />
</el-form-item> </el-form-item>
<el-form-item label="事件日期" prop="eventDate">
<el-date-picker v-model="form.eventDate" type="date" placeholder="请选择事件日期" value-format="YYYY-MM-DD"
:disabled="!isAddMode" />
</el-form-item>
<el-form-item label="技术员" prop="technician">
<el-input v-model="form.technician" placeholder="请输入技术员" :disabled="!isAddMode" />
</el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
@ -128,11 +128,12 @@ const total = ref(0)
const title = ref("") const title = ref("")
const daterangeCreateTime = ref([]) const daterangeCreateTime = ref([])
const isAddMode = ref(true); const isAddMode = ref(true);
const daterangeEventDate = ref([])
const data = reactive({ const data = reactive({
form: { manageTags: null, }, form: { manageTags: null, eventDate: null, technician: null },
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 20,
sheepId: null, sheepId: null,
manageTags: null, manageTags: null,
sheepfoldId: null, sheepfoldId: null,
@ -146,6 +147,12 @@ const data = reactive({
], ],
newComment: [ newComment: [
{ required: true, message: "请输入新备注", trigger: "blur" } { required: true, message: "请输入新备注", trigger: "blur" }
],
eventDate: [
{ required: true, message: "请选择事件日期", trigger: "change" }
],
technician: [
{ required: true, message: "请输入技术员", trigger: "blur" }
] ]
} }
}) })
@ -163,6 +170,10 @@ function getList() {
if (queryParams.value.sheepfoldId) { if (queryParams.value.sheepfoldId) {
queryParams.value.params["sheepfoldId"] = queryParams.value.sheepfoldId; queryParams.value.params["sheepfoldId"] = queryParams.value.sheepfoldId;
} }
if (daterangeEventDate.value.length > 0) {
queryParams.value.params["beginEventDate"] = daterangeEventDate.value[0];
queryParams.value.params["endEventDate"] = daterangeEventDate.value[1];
}
listChangeComment(queryParams.value).then(response => { listChangeComment(queryParams.value).then(response => {
changeCommentList.value = response.rows changeCommentList.value = response.rows
total.value = response.total total.value = response.total
@ -205,6 +216,7 @@ function reset() {
sheepId: null, sheepId: null,
newComment: null, newComment: null,
oldComment: null, oldComment: null,
technician: null,
createBy: null, createBy: null,
createTime: null createTime: null
} }
@ -220,6 +232,7 @@ function handleQuery() {
/** 重置按钮操作 */ /** 重置按钮操作 */
function resetQuery() { function resetQuery() {
daterangeCreateTime.value = [] daterangeCreateTime.value = []
daterangeEventDate.value = []
queryParams.value.sheepfoldId = null queryParams.value.sheepfoldId = null
proxy.resetForm("queryRef") proxy.resetForm("queryRef")
handleQuery() handleQuery()

View File

@ -1,15 +1,12 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<!-- <el-form-item label="羊只id" prop="sheepId"> <el-form-item label="事件日期" style="width: 300px">
<el-input v-model="queryParams.sheepId" placeholder="请输入羊只id" clearable @keyup.enter="handleQuery" /> <el-date-picker v-model="daterangeEventDate" type="daterange" range-separator="-" start-placeholder="开始日期"
</el-form-item> --> end-placeholder="结束日期" value-format="YYYY-MM-DD" />
<el-form-item label="创建时间" style="width: 300px">
<el-date-picker v-model="daterangeCreateTime" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="耳号" prop="manageTag"> <el-form-item label="耳号" prop="manageTag">
<el-input v-model="queryParams.manageTags" placeholder="请输入耳号" clearable @keyup.enter="handleQuery" <el-input v-model="queryParams.manageTags" placeholder="请输入管理耳号或电子耳号" clearable @keyup.enter="handleQuery"
style="max-width: 160px;" /> style="max-width: 160px;" />
</el-form-item> </el-form-item>
<el-form-item label="新耳号" prop="newTag"> <el-form-item label="新耳号" prop="newTag">
@ -25,6 +22,12 @@
<el-option v-for="fold in sheepfoldOptions" :key="fold.id" :label="fold.sheepfoldName" :value="fold.id" /> <el-option v-for="fold in sheepfoldOptions" :key="fold.id" :label="fold.sheepfoldName" :value="fold.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="耳号类型" prop="earType">
<el-select v-model="queryParams.earType" placeholder="请选择耳号类型" style="min-width:150px" clearable>
<el-option label="电子耳号" :value="0"></el-option>
<el-option label="管理耳号" :value="1"></el-option>
</el-select>
</el-form-item>
<el-form-item> <el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button> <el-button icon="Refresh" @click="resetQuery">重置</el-button>
@ -53,13 +56,6 @@
<el-table v-loading="loading" :data="changeEarList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="changeEarList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="id" align="center" prop="id" />
<el-table-column label="羊只id" align="center" prop="sheepId" /> -->
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template>
</el-table-column>
<el-table-column label="耳号" align="center" prop="manageTags" /> <el-table-column label="耳号" align="center" prop="manageTags" />
<el-table-column label="羊舍" align="center" prop="sheepfoldName" /> <el-table-column label="羊舍" align="center" prop="sheepfoldName" />
<el-table-column label="事件类型" align="center" prop="eventType" /> <el-table-column label="事件类型" align="center" prop="eventType" />
@ -70,8 +66,19 @@
</el-table-column> </el-table-column>
<el-table-column label="新耳号" align="center" prop="newTag" /> <el-table-column label="新耳号" align="center" prop="newTag" />
<el-table-column label="旧耳号" align="center" prop="oldTag" /> <el-table-column label="旧耳号" align="center" prop="oldTag" />
<el-table-column label="事件日期" align="center" prop="eventDate">
<template #default="scope">
<span>{{ parseTime(scope.row.eventDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="技术员" align="center" prop="technician" />
<el-table-column label="备注" align="center" prop="comment" /> <el-table-column label="备注" align="center" prop="comment" />
<el-table-column label="创建人" align="center" prop="createBy" /> <el-table-column label="创建人" align="center" prop="createBy" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope"> <template #default="scope">
<!-- <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" <!-- <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
@ -83,14 +90,11 @@
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize" @pagination="getList" /> v-model:limit="queryParams.pageSize" @pagination="getList" :page-sizes="[20, 50, 100, 200, 500, 1000, 2000]" />
<!-- 添加或修改修改电子耳号记录对话框 --> <!-- 添加或修改修改电子耳号记录对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body> <el-dialog :title="title" v-model="open" width="500px" append-to-body>
<el-form ref="changeEarRef" :model="form" :rules="rules" label-width="80px"> <el-form ref="changeEarRef" :model="form" :rules="rules" label-width="80px">
<!-- <el-form-item label="羊只id" prop="sheepId">
<el-input v-model="form.sheepId" placeholder="请输入羊只id" />
</el-form-item> -->
<el-form-item label="耳号" prop="earNumber"> <el-form-item label="耳号" prop="earNumber">
<el-input v-model="form.earNumber" placeholder="请输入管理耳号或电子耳号" @change="fetchOldTag" :disabled="!isAddMode" /> <el-input v-model="form.earNumber" placeholder="请输入管理耳号或电子耳号" @change="fetchOldTag" :disabled="!isAddMode" />
</el-form-item> </el-form-item>
@ -106,7 +110,14 @@
<el-form-item label="旧耳号" prop="oldTag"> <el-form-item label="旧耳号" prop="oldTag">
<el-input v-model="form.oldTag" placeholder="请输入旧耳号/电子耳号" disabled /> <el-input v-model="form.oldTag" placeholder="请输入旧耳号/电子耳号" disabled />
</el-form-item> </el-form-item>
<el-form-item label="备注" prop="comment" v-if="!isAddMode"> <el-form-item label="技术员" prop="technician">
<el-input v-model="form.technician" placeholder="请输入技术员" :disabled="!isAddMode" />
</el-form-item>
<el-form-item label="事件日期" prop="eventDate">
<el-date-picker v-model="form.eventDate" type="date" placeholder="请选择事件日期" value-format="YYYY-MM-DD"
:disabled="!isAddMode" />
</el-form-item>
<el-form-item label="备注" prop="comment">
<el-input v-model="form.comment" type="textarea" placeholder="请输入内容" :disabled="!isAddMode" /> <el-input v-model="form.comment" type="textarea" placeholder="请输入内容" :disabled="!isAddMode" />
</el-form-item> </el-form-item>
</el-form> </el-form>
@ -136,19 +147,23 @@ const total = ref(0)
const title = ref("") const title = ref("")
const daterangeCreateTime = ref([]) const daterangeCreateTime = ref([])
const isAddMode = ref(true); const isAddMode = ref(true);
const daterangeEventDate = ref([]);
const data = reactive({ const data = reactive({
form: {}, form: {
technician: null,
eventDate: null
},
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 20,
manageTags: null, manageTags: null,
// sheepId: null,
sheepfoldId: null, sheepfoldId: null,
earType: null, earType: null,
newTag: null, newTag: null,
oldTag: null, oldTag: null,
createTime: null createTime: null,
earType: null,
}, },
rules: { rules: {
earNumber: [ earNumber: [
@ -163,6 +178,15 @@ const data = reactive({
oldTag: [ oldTag: [
{ required: true, message: "请输入旧耳号", trigger: "change" } { required: true, message: "请输入旧耳号", trigger: "change" }
], ],
technician: [
{ required: true, message: "请输入技术员", trigger: "blur" }
],
eventDate: [
{ required: true, message: "请选择事件日期", trigger: "change" }
],
comment: [
{ required: true, message: "请输入备注", trigger: "blur" }
]
} }
}) })
@ -182,6 +206,10 @@ async function getList() {
queryParams.value.params["beginCreateTime"] = daterangeCreateTime.value[0]; queryParams.value.params["beginCreateTime"] = daterangeCreateTime.value[0];
queryParams.value.params["endCreateTime"] = daterangeCreateTime.value[1]; queryParams.value.params["endCreateTime"] = daterangeCreateTime.value[1];
} }
if (daterangeEventDate.value && daterangeEventDate.value.length > 0) {
queryParams.value.params["beginEventDate"] = daterangeEventDate.value[0];
queryParams.value.params["endEventDate"] = daterangeEventDate.value[1];
}
const response = await listChangeEar(queryParams.value); const response = await listChangeEar(queryParams.value);
changeEarList.value = response.rows.map(item => { changeEarList.value = response.rows.map(item => {
@ -202,12 +230,12 @@ function cancel() {
// //
function reset() { function reset() {
form.value = { form.value = {
// id: null,
// sheepId: null,
manageTags: null, manageTags: null,
earType: null, earType: null,
newTag: null, newTag: null,
oldTag: null, oldTag: null,
technician: null,
eventDate: null,
comment: null, comment: null,
createBy: null, createBy: null,
createTime: null createTime: null
@ -224,6 +252,7 @@ function handleQuery() {
/** 重置按钮操作 */ /** 重置按钮操作 */
function resetQuery() { function resetQuery() {
daterangeCreateTime.value = [] daterangeCreateTime.value = []
daterangeEventDate.value = []
queryParams.value.sheepfoldName = null queryParams.value.sheepfoldName = null
queryParams.value.manageTags = null queryParams.value.manageTags = null
queryParams.value.newTag = null queryParams.value.newTag = null

View File

@ -1,17 +1,9 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<!-- <el-form-item label="羊只id" prop="sheepId"> <el-form-item label="事件日期" style="width: 308px">
<el-input <el-date-picker v-model="daterangeEventDate" type="daterange" range-separator="-" start-placeholder="开始日期"
v-model="queryParams.sheepId" end-placeholder="结束日期" value-format="YYYY-MM-DD" />
placeholder="请输入羊只id"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item> -->
<el-form-item label="创建日期" style="width: 308px">
<el-date-picker v-model="daterangeCreateTime" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
</el-form-item> </el-form-item>
<el-form-item label="管理耳号" prop="manageTags"> <el-form-item label="管理耳号" prop="manageTags">
<el-input v-model="queryParams.manageTags" placeholder="请输入管理耳号" clearable @keyup.enter="handleQuery" <el-input v-model="queryParams.manageTags" placeholder="请输入管理耳号" clearable @keyup.enter="handleQuery"
@ -60,20 +52,24 @@
<el-table v-loading="loading" :data="changeVarietyList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="changeVarietyList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="${comment}" align="center" prop="id" />
<el-table-column label="羊只id" align="center" prop="sheepId" /> -->
<el-table-column label="创建日期" align="center" prop="createTime" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template>
</el-table-column>
<el-table-column label="管理耳号" align="center" prop="manageTags" /> <el-table-column label="管理耳号" align="center" prop="manageTags" />
<el-table-column label="羊舍" align="center" prop="sheepfoldName" /> <el-table-column label="羊舍" align="center" prop="sheepfoldName" />
<el-table-column label="事件类型" align="center" prop="eventType" width="120" /> <el-table-column label="事件类型" align="center" prop="eventType" width="120" />
<el-table-column label="原品种" align="center" prop="varietyOld" /> <el-table-column label="原品种" align="center" prop="varietyOld" />
<el-table-column label="新品种" align="center" prop="varietyNew" /> <el-table-column label="新品种" align="center" prop="varietyNew" />
<el-table-column label="事件日期" align="center" prop="eventDate">
<template #default="scope">
<span>{{ parseTime(scope.row.eventDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="技术员" align="center" prop="technician" />
<el-table-column label="备注" align="center" prop="comment" /> <el-table-column label="备注" align="center" prop="comment" />
<el-table-column label="创建人" align="center" prop="createBy" /> <el-table-column label="创建人" align="center" prop="createBy" />
<el-table-column label="创建日期" align="center" prop="createTime" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope"> <template #default="scope">
<!-- <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" <!-- <el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)"
@ -85,14 +81,11 @@
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize" @pagination="getList" /> v-model:limit="queryParams.pageSize" @pagination="getList" :page-sizes="[20, 50, 100, 200, 500, 1000, 2000]" />
<!-- 添加或修改改品种记录对话框 --> <!-- 添加或修改改品种记录对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body> <el-dialog :title="title" v-model="open" width="500px" append-to-body>
<el-form ref="changeVarietyRef" :model="form" :rules="rules" label-width="80px"> <el-form ref="changeVarietyRef" :model="form" :rules="rules" label-width="80px">
<!-- <el-form-item label="羊只id" prop="sheepId">
<el-input v-model="form.sheepId" placeholder="请输入羊只id" />
</el-form-item> -->
<el-form-item label="管理耳号" prop="manageTags"> <el-form-item label="管理耳号" prop="manageTags">
<el-input v-model="form.manageTags" placeholder="请输入管理耳号" @blur="onManageTagsBlur" :disabled="!isAdd" /> <el-input v-model="form.manageTags" placeholder="请输入管理耳号" @blur="onManageTagsBlur" :disabled="!isAdd" />
</el-form-item> </el-form-item>
@ -104,6 +97,13 @@
<el-option v-for="item in varietyOptions" :key="item.value" :label="item.label" :value="item.value" /> <el-option v-for="item in varietyOptions" :key="item.value" :label="item.label" :value="item.value" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="事件日期" prop="eventDate">
<el-date-picker v-model="form.eventDate" type="date" placeholder="请选择事件日期" value-format="YYYY-MM-DD"
:disabled="!isAdd" />
</el-form-item>
<el-form-item label="技术员" prop="technician">
<el-input v-model="form.technician" placeholder="请输入技术员" :disabled="!isAdd" />
</el-form-item>
<el-form-item label="备注" prop="comment" v-if="!isAdd"> <el-form-item label="备注" prop="comment" v-if="!isAdd">
<el-input v-model="form.comment" placeholder="请输入备注" :disabled="!isAdd" /> <el-input v-model="form.comment" placeholder="请输入备注" :disabled="!isAdd" />
</el-form-item> </el-form-item>
@ -138,19 +138,21 @@ const daterangeCreateTime = ref([])
const isAdd = ref(false); const isAdd = ref(false);
const varietyOptions = ref([]) const varietyOptions = ref([])
const daterangeEventDate = ref([]);
const data = reactive({ const data = reactive({
form: { form: {
manageTags: null, manageTags: null,
technician: null,
eventDate: null
}, },
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 20,
// sheepId: null,
manageTags: null, manageTags: null,
sheepfoldId: null, sheepfoldId: null,
varietyOld: null, varietyOld: null,
varietyNew: null, varietyNew: null,
createTime: null createTime: null,
}, },
rules: { rules: {
manageTags: [ manageTags: [
@ -162,6 +164,12 @@ const data = reactive({
varietyNew: [ varietyNew: [
{ required: true, message: "请选择新品种", trigger: "blur" } { required: true, message: "请选择新品种", trigger: "blur" }
], ],
technician: [
{ required: true, message: "请输入技术员", trigger: "blur" }
],
eventDate: [
{ required: true, message: "请选择事件日期", trigger: "change" }
]
} }
}) })
@ -178,6 +186,10 @@ function getList() {
if (queryParams.value.sheepfoldId) { if (queryParams.value.sheepfoldId) {
queryParams.value.params["sheepfoldId"] = queryParams.value.sheepfoldId; queryParams.value.params["sheepfoldId"] = queryParams.value.sheepfoldId;
} }
if (daterangeEventDate.value.length > 0) {
queryParams.value.params["beginEventDate"] = daterangeEventDate.value[0];
queryParams.value.params["endEventDate"] = daterangeEventDate.value[1];
}
listChangeVariety(queryParams.value).then(response => { listChangeVariety(queryParams.value).then(response => {
changeVarietyList.value = response.rows changeVarietyList.value = response.rows
total.value = response.total total.value = response.total
@ -240,13 +252,21 @@ function reset() {
function handleQuery() { function handleQuery() {
loadVarietyOptions() loadVarietyOptions()
queryParams.value.pageNum = 1 queryParams.value.pageNum = 1
if (daterangeEventDate.value.length > 0) {
queryParams.value.beginEventDate = daterangeEventDate.value[0];
queryParams.value.endEventDate = daterangeEventDate.value[1];
} else {
queryParams.value.beginEventDate = null;
queryParams.value.endEventDate = null;
}
getList() getList()
} }
/** 重置按钮操作 */ /** 重置按钮操作 */
function resetQuery() { function resetQuery() {
daterangeCreateTime.value = [] daterangeCreateTime.value = []
queryParams.value.sheepfoldId = null; queryParams.value.sheepfoldId = null
daterangeEventDate.value = []
proxy.resetForm("queryRef") proxy.resetForm("queryRef")
handleQuery() handleQuery()
} }

View File

@ -1,10 +1,6 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="创建时间" style="width: 308px">
<el-date-picker v-model="daterangeCreateTime" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
</el-form-item>
<el-form-item label="转群日期" style="width: 308px"> <el-form-item label="转群日期" style="width: 308px">
<el-date-picker v-model="daterangeTransDate" value-format="YYYY-MM-DD" type="daterange" range-separator="-" <el-date-picker v-model="daterangeTransDate" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
start-placeholder="开始日期" end-placeholder="结束日期" /> start-placeholder="开始日期" end-placeholder="结束日期" />
@ -13,11 +9,6 @@
<el-input v-model="queryParams.manageTags" placeholder="请输入耳号" clearable @keyup.enter="handleQuery" <el-input v-model="queryParams.manageTags" placeholder="请输入耳号" clearable @keyup.enter="handleQuery"
style="width: 150px;" /> style="width: 150px;" />
</el-form-item> </el-form-item>
<el-form-item label="事件类型" prop="eventType">
<el-select v-model="queryParams.eventType" placeholder="请选择事件类型" style="min-width:150px" clearable required>
<el-option v-for="dict in eventTypeOptions" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item>
<el-form-item label="转出羊舍" prop="foldFrom" style="width: 308px"> <el-form-item label="转出羊舍" prop="foldFrom" style="width: 308px">
<el-select v-model="queryParams.foldFrom" placeholder="请选择转出羊舍" style="min-width:150px" clearable> <el-select v-model="queryParams.foldFrom" placeholder="请选择转出羊舍" style="min-width:150px" clearable>
<el-option v-for="item in sheepfoldOptions" :key="item.id" :label="item.sheepfoldName" :value="item.id" /> <el-option v-for="item in sheepfoldOptions" :key="item.id" :label="item.sheepfoldName" :value="item.id" />
@ -38,11 +29,6 @@
<el-option v-for="type in sheepTypeOptions" :key="type.id" :label="type.name" :value="type.id" /> <el-option v-for="type in sheepTypeOptions" :key="type.id" :label="type.name" :value="type.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<!-- <el-form-item label="状态" prop="status">
<el-select v-model="queryParams.status" style="width: 150px;" placeholder="请选择状态" clearable>
<el-option v-for="dict in status" :key="dict.value" :label="dict.label" :value="dict.value" />
</el-select>
</el-form-item> -->
<el-form-item> <el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button> <el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button> <el-button icon="Refresh" @click="resetQuery">重置</el-button>
@ -54,10 +40,6 @@
<el-button type="primary" plain icon="Plus" @click="handleAdd" <el-button type="primary" plain icon="Plus" @click="handleAdd"
v-hasPermi="['trans_group:trans_group:add']">新增</el-button> v-hasPermi="['trans_group:trans_group:add']">新增</el-button>
</el-col> </el-col>
<!-- <el-col :span="1.5">
<el-button type="success" plain icon="Edit" :disabled="single" @click="handleUpdate"
v-hasPermi="['trans_group:trans_group:edit']">修改</el-button>
</el-col> -->
<el-col :span="1.5"> <el-col :span="1.5">
<el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete" <el-button type="danger" plain icon="Delete" :disabled="multiple" @click="handleDelete"
v-hasPermi="['trans_group:trans_group:remove']">删除</el-button> v-hasPermi="['trans_group:trans_group:remove']">删除</el-button>
@ -71,34 +53,24 @@
<el-table v-loading="loading" :data="trans_groupList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="trans_groupList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="创建时间" align="center" prop="createTime" min-width="120" fixed> <el-table-column label="管理耳号" align="center" prop="manageTags" min-width="100" fixed />
<template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template>
</el-table-column>
<el-table-column label="转群日期" align="center" prop="transDate" min-width="120" />
<el-table-column label="管理耳号" align="center" prop="manageTags" min-width="100" />
<el-table-column label="事件类型" align="center" prop="eventTypeText" /> <el-table-column label="事件类型" align="center" prop="eventTypeText" />
<el-table-column label="转出羊舍" align="center" prop="foldFromName" min-width="130" /> <el-table-column label="转出羊舍" align="center" prop="foldFromName" min-width="130" />
<el-table-column label="转入羊舍" align="center" prop="foldToName" min-width="130" /> <el-table-column label="转入羊舍" align="center" prop="foldToName" min-width="130" />
<el-table-column label="转群日期" align="center" prop="transDate" min-width="120" />
<el-table-column label="品种" align="center" prop="varietyName" /> <el-table-column label="品种" align="center" prop="varietyName" />
<el-table-column label="羊只类别" align="center" prop="sheepTypeName" /> <el-table-column label="羊只类别" align="center" prop="sheepTypeName" />
<el-table-column label="转群原因" align="center" prop="reasonText" min-width="120" /> <el-table-column label="转群原因" align="center" prop="reasonText" min-width="120" />
<el-table-column label="技术员" align="center" prop="technician" /> <el-table-column label="技术员" align="center" prop="technician" />
<!-- <el-table-column label="状态" align="center" prop="status">
<template #default="scope">
<dict-tag :options="status" :value="scope.row.status" />
</template>
</el-table-column> -->
<el-table-column label="备注" align="center" prop="comment" min-width="120" /> <el-table-column label="备注" align="center" prop="comment" min-width="120" />
<el-table-column label="创建人" align="center" prop="createBy" /> <el-table-column label="创建人" align="center" prop="createBy" />
<el-table-column label="创建时间" align="center" prop="createTime" min-width="120">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width" min-width="160" fixed="right"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width" min-width="160" fixed="right">
<template #default="scope"> <template #default="scope">
<!-- <el-button link type="primary" icon="Edit" @click="handleApprove(scope.row)"
v-hasPermi="['trans_group:trans_group:approve']">
审批
</el-button> -->
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" <el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)"
v-hasPermi="['trans_group:trans_group:remove']"> v-hasPermi="['trans_group:trans_group:remove']">
删除 删除
@ -108,7 +80,7 @@
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize" @pagination="getList" /> v-model:limit="queryParams.pageSize" @pagination="getList" :page-sizes="[20, 50, 100, 200, 500, 1000, 2000]" />
<!-- 添加或修改转群记录对话框 --> <!-- 添加或修改转群记录对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body> <el-dialog :title="title" v-model="open" width="500px" append-to-body>
@ -177,44 +149,7 @@
</template> </template>
</el-dialog> </el-dialog>
<!-- 审批对话框 -->
<!-- <el-dialog :title="'审批转群记录'" v-model="approveDialog" width="500px" append-to-body>
<el-form ref="approveFormRef" :model="approveForm" label-width="120px">
<el-form-item label="耳号">
<el-input v-model="displayManageTags" disabled />
</el-form-item>
<el-form-item label="事件类型">
<el-input :value="approveForm.eventTypeText || '未知'" disabled />
</el-form-item>
<el-form-item label="转出羊舍">
<el-input :value="sheepfoldNameMap[approveForm.foldFrom] || approveForm.foldFrom" disabled />
</el-form-item>
<el-form-item label="转入羊舍">
<el-input :value="sheepfoldNameMap[approveForm.foldTo] || approveForm.foldTo" disabled />
</el-form-item>
<el-form-item label="品种">
<el-input :value="approveForm.varietyName" disabled />
</el-form-item>
<el-form-item label="转群原因">
<el-input :value="approveForm.reasonText" disabled />
</el-form-item>
<el-form-item label="状态">
<el-input :value="approveForm.statusText" disabled />
</el-form-item>
<el-form-item label="技术员">
<el-input v-model="approveForm.technician" disabled />
</el-form-item>
<el-form-item label="备注">
<el-input v-model="approveForm.comment" disabled />
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="handleApproveAgree">同意</el-button>
<el-button type="danger" @click="handleApproveReject">驳回</el-button>
</div>
</template>
</el-dialog> -->
</div> </div>
</template> </template>
@ -238,11 +173,7 @@ const multiple = ref(false);
const total = ref(0); const total = ref(0);
const title = ref(''); const title = ref('');
const daterangeTransDate = ref([]); const daterangeTransDate = ref([]);
const daterangeCreateTime = ref([]);
const eventTypeOptions = trans_group_event_type || []; const eventTypeOptions = trans_group_event_type || [];
// const approveDialog = ref(false);
// const approveForm = ref({});
// const displayManageTags = ref('');
const sheepOptions = ref([]); const sheepOptions = ref([]);
const sheepfoldOptions = ref([]); const sheepfoldOptions = ref([]);
const sheepfoldNameMap = ref({}); const sheepfoldNameMap = ref({});
@ -261,17 +192,15 @@ const data = reactive({
}, },
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 20,
sheepId: null, sheepId: null,
manageTags: null, manageTags: null,
eventType: null,
ranchId: null, ranchId: null,
foldTo: null, foldTo: null,
foldFrom: null, foldFrom: null,
varietyId: null, varietyId: null,
sheepTypeId: null, sheepTypeId: null,
status: null, status: null,
createTime: null,
}, },
rules: { rules: {
manageTags: [{ required: true, message: '请输入耳号', trigger: 'blur' }], manageTags: [{ required: true, message: '请输入耳号', trigger: 'blur' }],
@ -290,10 +219,6 @@ const { queryParams, form, rules } = toRefs(data);
function getList() { function getList() {
loading.value = true; loading.value = true;
queryParams.value.params = {}; queryParams.value.params = {};
if (daterangeCreateTime.value?.length) {
queryParams.value.params.beginCreateTime = daterangeCreateTime.value[0];
queryParams.value.params.endCreateTime = daterangeCreateTime.value[1];
}
if (daterangeTransDate.value?.length) { if (daterangeTransDate.value?.length) {
queryParams.value.params.beginTransDate = daterangeTransDate.value[0]; queryParams.value.params.beginTransDate = daterangeTransDate.value[0];
queryParams.value.params.endTransDate = daterangeTransDate.value[1]; queryParams.value.params.endTransDate = daterangeTransDate.value[1];
@ -566,9 +491,7 @@ function handleQuery() {
// //
function resetQuery() { function resetQuery() {
daterangeCreateTime.value = [];
daterangeTransDate.value = []; daterangeTransDate.value = [];
queryParams.value.eventType = null;
proxy.resetForm('queryRef'); proxy.resetForm('queryRef');
handleQuery(); handleQuery();
} }
@ -698,40 +621,6 @@ function handleExport() {
); );
} }
//
//function handleApprove(row) {
// approveForm.value = { ...row };
// approveDialog.value = true;
// displayManageTags.value = row.manageTags;
// }
//
// function handleApproveAgree() {
// if (typeof approveForm.value.foldTo !== 'number') {
// approveForm.value.foldTo = Number(approveForm.value.foldTo);
// }
// approveForm.value.status = 1;
// approveScTransGroup(approveForm.value).then(() => {
// approveDialog.value = false;
// proxy.$modal.msgSuccess('');
// getList();
// }).catch(error => {
// proxy.$modal.msgError(`${error.message}`);
// });
// }
// function handleApproveReject() {
// approveForm.value.status = 2;
// approveScTransGroup(approveForm.value).then(() => {
// approveDialog.value = false;
// proxy.$modal.msgSuccess('');
// getList();
// }).catch(error => {
// proxy.$modal.msgError(`${error.message}`);
// });
// }
// //
function loadSheepfold() { function loadSheepfold() {
listSheepfold({ pageNum: 1, pageSize: 9999 }).then((res) => { listSheepfold({ pageNum: 1, pageSize: 9999 }).then((res) => {

View File

@ -2,10 +2,6 @@
<div class="app-container"> <div class="app-container">
<!-- 查询表单 --> <!-- 查询表单 -->
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="创建时间" style="width: 308px">
<el-date-picker v-model="daterangeCreateTime" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
start-placeholder="开始日期" end-placeholder="结束日期" />
</el-form-item>
<el-form-item label="转场日期" style="width: 308px"> <el-form-item label="转场日期" style="width: 308px">
<el-date-picker v-model="transitionDateRange" value-format="YYYY-MM-DD" type="daterange" range-separator="-" <el-date-picker v-model="transitionDateRange" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker> start-placeholder="开始日期" end-placeholder="结束日期"></el-date-picker>
@ -19,12 +15,6 @@
<el-option v-for="item in varietyOptions" :key="item.id" :label="item.variety" :value="item.id" /> <el-option v-for="item in varietyOptions" :key="item.id" :label="item.variety" :value="item.id" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="事件类型" prop="eventType" style="width: 308px">
<el-select v-model="queryParams.eventType" placeholder="请选择事件类型" clearable style="min-width:150px">
<el-option label="转场转入" value="转场转入" />
<el-option label="转场转出" value="转场转出" />
</el-select>
</el-form-item>
<el-form-item label="转场类型" prop="transType" style="width: 308px"> <el-form-item label="转场类型" prop="transType" style="width: 308px">
<el-select v-model="queryParams.transType" placeholder="请选择转场类型" clearable style="min-width:150px"> <el-select v-model="queryParams.transType" placeholder="请选择转场类型" clearable style="min-width:150px">
<el-option label="内部调拨" :value="0" /> <el-option label="内部调拨" :value="0" />
@ -77,19 +67,14 @@
<!-- 列表 --> <!-- 列表 -->
<el-table v-loading="loading" :data="transition_infoList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="transition_infoList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="创建时间" align="center" prop="createTime" min-width="130" fixed> <el-table-column label="管理耳号" align="center" prop="manageTags" min-width="100" fixed />
<template #default="scope"> <el-table-column label="事件类型" align="center" prop="eventType" min-width="120" />
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span> <el-table-column label="转场类型" align="center" prop="transTypeText" />
</template>
</el-table-column>
<el-table-column label="转场日期" align="center" prop="transitionDate" min-width="150"> <el-table-column label="转场日期" align="center" prop="transitionDate" min-width="150">
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.transitionDate, '{y}-{m}-{d}') }}</span> <span>{{ parseTime(scope.row.transitionDate, '{y}-{m}-{d}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="管理耳号" align="center" prop="manageTags" min-width="100" />
<el-table-column label="事件类型" align="center" prop="eventType" min-width="120" />
<el-table-column label="转场类型" align="center" prop="transTypeText" />
<el-table-column label="品种" align="center" prop="varietyName" /> <el-table-column label="品种" align="center" prop="varietyName" />
<el-table-column label="转入牧场" align="center" prop="transTo" min-width="120" /> <el-table-column label="转入牧场" align="center" prop="transTo" min-width="120" />
<el-table-column label="当前牧场" align="center" prop="transFrom" /> <el-table-column label="当前牧场" align="center" prop="transFrom" />
@ -108,6 +93,11 @@
</el-table-column> </el-table-column>
<el-table-column label="备注" align="center" prop="comment" /> <el-table-column label="备注" align="center" prop="comment" />
<el-table-column label="创建人" align="center" prop="createBy" /> <el-table-column label="创建人" align="center" prop="createBy" />
<el-table-column label="创建时间" align="center" prop="createTime" min-width="130">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" min-width="180" fixed="right"> <el-table-column label="操作" align="center" min-width="180" fixed="right">
<template #default="scope"> <template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleApprove(scope.row)" <el-button link type="primary" icon="Edit" @click="handleApprove(scope.row)"
@ -119,7 +109,7 @@
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize" @pagination="getList" /> v-model:limit="queryParams.pageSize" @pagination="getList" :page-sizes="[20, 50, 100, 200, 500, 1000, 2000]" />
<!-- 新增/修改 --> <!-- 新增/修改 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body> <el-dialog :title="title" v-model="open" width="500px" append-to-body>
@ -250,7 +240,6 @@ const multiple = ref(true)
const total = ref(0) const total = ref(0)
const title = ref('') const title = ref('')
const transitionDateRange = ref([]) const transitionDateRange = ref([])
const daterangeCreateTime = ref([])
const approveDialog = ref(false) const approveDialog = ref(false)
const approveForm = ref({}) const approveForm = ref({})
const displayManageTags = ref('') const displayManageTags = ref('')
@ -275,15 +264,13 @@ const data = reactive({
}, },
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 20,
manageTags: [], manageTags: [],
varietyId: null, varietyId: null,
eventType: null,
transType: null, transType: null,
transTo: null, transTo: null,
transFrom: null, transFrom: null,
status: null, status: null,
createTime: null,
transitionDate: null transitionDate: null
}, },
rules: { rules: {
@ -316,10 +303,6 @@ const { queryParams, form, rules } = toRefs(data)
function getList() { function getList() {
loading.value = true loading.value = true
queryParams.value.params = {} queryParams.value.params = {}
if (daterangeCreateTime.value?.length) {
queryParams.value.params.beginCreateTime = daterangeCreateTime.value[0]
queryParams.value.params.endCreateTime = daterangeCreateTime.value[1]
}
if (queryParams.value.transType !== null) { if (queryParams.value.transType !== null) {
queryParams.value.params.transType = queryParams.value.transType; queryParams.value.params.transType = queryParams.value.transType;
} }
@ -380,10 +363,8 @@ function loadSheepOptions() {
}); });
} }
// //
// 使ID
function loadSheepfoldsByRanch(ranchName) { function loadSheepfoldsByRanch(ranchName) {
// 1. ID
const matchedRanch = ranchOptions.value.find( const matchedRanch = ranchOptions.value.find(
ranch => ranch.ranchName === ranchName ranch => ranch.ranchName === ranchName
); );
@ -392,14 +373,13 @@ function loadSheepfoldsByRanch(ranchName) {
acceptSheepfold.value = []; acceptSheepfold.value = [];
return; return;
} }
const ranchId = matchedRanch.id; // ID const ranchId = matchedRanch.id;
// 2. 使ID
request({ request({
url: '/sheepfold_management/sheepfold_management/list', url: '/sheepfold_management/sheepfold_management/list',
method: 'get', method: 'get',
params: { params: {
ranchId: ranchId, // 使ID ranchId: ranchId,
pageNum: 1, pageNum: 1,
pageSize: 999 pageSize: 999
} }
@ -414,7 +394,6 @@ function loadSheepfoldsByRanch(ranchName) {
}); });
} }
// ID
async function getRanchNameByRanchId(ranchId) { async function getRanchNameByRanchId(ranchId) {
if (!ranchId) return ''; if (!ranchId) return '';
try { try {
@ -591,7 +570,7 @@ function getTransTypeLabel(value) {
return item ? item.label : '未知类型'; return item ? item.label : '未知类型';
} }
// //
function getStatusLabel(value) { function getStatusLabel(value) {
const statusArray = status.value; const statusArray = status.value;
if (!Array.isArray(statusArray)) { if (!Array.isArray(statusArray)) {
@ -615,7 +594,6 @@ function handleQuery() {
// //
function resetQuery() { function resetQuery() {
daterangeCreateTime.value = []
queryParams.value.transType = null; queryParams.value.transType = null;
transitionDateRange.value = []; transitionDateRange.value = [];
proxy.resetForm("queryRef") proxy.resetForm("queryRef")

View File

@ -2,8 +2,8 @@
<div class="app-container"> <div class="app-container">
<!-- 搜索区域 --> <!-- 搜索区域 -->
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="创建时间" style="width: 308px"> <el-form-item label="事件日期" style="width: 308px">
<el-date-picker v-model="daterangeCreateTime" value-format="YYYY-MM-DD" type="daterange" range-separator="-" <el-date-picker v-model="daterangeEventDate" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
start-placeholder="开始日期" end-placeholder="结束日期" /> start-placeholder="开始日期" end-placeholder="结束日期" />
</el-form-item> </el-form-item>
<el-form-item label="管理耳号" prop="manageTags"> <el-form-item label="管理耳号" prop="manageTags">
@ -51,19 +51,23 @@
<!-- 列表表格 --> <!-- 列表表格 -->
<el-table v-loading="loading" :data="castrateList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="castrateList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<!-- <el-table-column label="羊只id" align="center" prop="sheepId" /> -->
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template>
</el-table-column>
<el-table-column label="耳号" align="center" prop="manageTags" /> <el-table-column label="耳号" align="center" prop="manageTags" />
<el-table-column label="事件类型" align="center" prop="eventType" width="120" /> <el-table-column label="事件类型" align="center" prop="eventType" width="120" />
<el-table-column label="事件日期" align="center" prop="eventDate" width="130">
<template #default="scope">
<span>{{ parseTime(scope.row.eventDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="羊舍" align="center" prop="sheepfoldName" /> <el-table-column label="羊舍" align="center" prop="sheepfoldName" />
<el-table-column label="品种" align="center" prop="varietyName" /> <el-table-column label="品种" align="center" prop="varietyName" />
<el-table-column label="备注" align="center" prop="comment" /> <el-table-column label="备注" align="center" prop="comment" />
<el-table-column label="技术员" align="center" prop="technician" /> <el-table-column label="技术员" align="center" prop="technician" />
<el-table-column label="创建人" align="center" prop="createBy" /> <el-table-column label="创建人" align="center" prop="createBy" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope"> <template #default="scope">
<!-- 按需添加 是否需要修改功能 --> <!-- 按需添加 是否需要修改功能 -->
@ -76,7 +80,7 @@
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize" @pagination="getList" /> v-model:limit="queryParams.pageSize" @pagination="getList" :page-sizes="[20, 50, 100, 200, 500, 1000, 2000]" />
<!-- 新增/修改弹窗 --> <!-- 新增/修改弹窗 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body> <el-dialog :title="title" v-model="open" width="500px" append-to-body>
@ -101,6 +105,9 @@
<el-form-item label="技术员" prop="technician"> <el-form-item label="技术员" prop="technician">
<el-input v-model="form.technician" placeholder="请输入技术员" /> <el-input v-model="form.technician" placeholder="请输入技术员" />
</el-form-item> </el-form-item>
<el-form-item label="事件日期" prop="eventDate">
<el-date-picker v-model="form.eventDate" value-format="YYYY-MM-DD" type="date" placeholder="请选择事件日期" />
</el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
@ -131,37 +138,38 @@ const title = ref('')
const daterangeCreateTime = ref([]) const daterangeCreateTime = ref([])
const sheepOptions = ref([]) const sheepOptions = ref([])
const varietyOptions = ref([]) const varietyOptions = ref([])
const daterangeEventDate = ref([])
const data = reactive({ const data = reactive({
form: { form: {
manageTags: [], manageTags: [],
sheepfold: null, sheepfold: null,
sheepfoldDisabled: false,
technician: null, technician: null,
tagDetails: {} tagDetails: {},
eventDate: null,
}, },
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 20,
manageTags: null, manageTags: null,
// sheepId: null, // sheepId: null,
sheepfold: null, sheepfold: null,
varietyId: null, varietyId: null,
technician: null, technician: null,
createTime: null createTime: null,
beginEventDate: null,
endEventDate: null,
}, },
rules: { rules: {
// sheepId: [
// { required: true, message: 'id', trigger: 'blur' }
// ],
manageTags: [ manageTags: [
{ required: true, message: '请输入管理耳号', trigger: 'blur' } { required: true, message: '请输入管理耳号', trigger: 'blur' }
], ],
// sheepfold: [
// { required: true, message: '', trigger: 'change' }
// ],
technician: [ technician: [
{ required: true, message: '请输入技术员', trigger: 'blur' } { required: true, message: '请输入技术员', trigger: 'blur' }
],
eventDate: [
{ required: true, message: '请选择事件日期', trigger: 'change' }
] ]
} }
}) })
@ -257,9 +265,14 @@ function getList() {
q.params.beginCreateTime = daterangeCreateTime.value[0]; q.params.beginCreateTime = daterangeCreateTime.value[0];
q.params.endCreateTime = daterangeCreateTime.value[1]; q.params.endCreateTime = daterangeCreateTime.value[1];
} }
if (daterangeEventDate.value?.length) {
q.params.beginEventDate = daterangeEventDate.value[0];
q.params.endEventDate = daterangeEventDate.value[1];
}
listCastrate(q).then(res => { listCastrate(q).then(res => {
castrateList.value = res.rows; castrateList.value = res.rows;
console.log("后端返回的列表数据:", res.rows);
total.value = res.total; total.value = res.total;
loading.value = false; loading.value = false;
}); });
@ -282,6 +295,7 @@ function reset() {
manageTags: [], manageTags: [],
sheepfold: null, sheepfold: null,
technician: null, technician: null,
eventDate: null
}; };
sheepOptions.value = []; sheepOptions.value = [];
proxy.resetForm('castrateRef'); proxy.resetForm('castrateRef');
@ -296,6 +310,7 @@ function handleQuery() {
// //
function resetQuery() { function resetQuery() {
daterangeCreateTime.value = [] daterangeCreateTime.value = []
daterangeEventDate.value = []
proxy.resetForm('queryRef') proxy.resetForm('queryRef')
handleQuery() handleQuery()
} }
@ -388,7 +403,8 @@ function submitForm() {
sheepfold: details.sheepfoldId || form.value.sheepfold, sheepfold: details.sheepfoldId || form.value.sheepfold,
technician: form.value.technician, technician: form.value.technician,
varietyId: details.varietyId, varietyId: details.varietyId,
comment: details.comment comment: details.comment,
eventDate: form.value.eventDate
}); });
}); });

View File

@ -1,8 +1,8 @@
<template> <template>
<div class="app-container"> <div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px"> <el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<el-form-item label="创建时间" style="width: 308px"> <el-form-item label="事件日期" style="width: 308px">
<el-date-picker v-model="daterangeCreateTime" value-format="YYYY-MM-DD" type="daterange" range-separator="-" <el-date-picker v-model="daterangeEventDate" value-format="YYYY-MM-DD" type="daterange" range-separator="-"
start-placeholder="开始日期" end-placeholder="结束日期" /> start-placeholder="开始日期" end-placeholder="结束日期" />
</el-form-item> </el-form-item>
<el-form-item label="管理耳号" prop="manageTags"> <el-form-item label="管理耳号" prop="manageTags">
@ -50,18 +50,23 @@
<!-- 列表 --> <!-- 列表 -->
<el-table v-loading="loading" :data="fixHoofList" @selection-change="handleSelectionChange"> <el-table v-loading="loading" :data="fixHoofList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center" /> <el-table-column type="selection" width="55" align="center" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template>
</el-table-column>
<el-table-column label="耳号" align="center" prop="manageTags" /> <el-table-column label="耳号" align="center" prop="manageTags" />
<el-table-column label="事件类型" align="center" prop="eventType" width="120" /> <el-table-column label="事件类型" align="center" prop="eventType" width="120" />
<el-table-column label="事件日期" align="center" prop="eventDate" width="130">
<template #default="scope">
<span>{{ parseTime(scope.row.eventDate, '{y}-{m}-{d}') }}</span>
</template>
</el-table-column>
<el-table-column label="羊舍" align="center" prop="sheepfoldName" /> <el-table-column label="羊舍" align="center" prop="sheepfoldName" />
<el-table-column label="品种" align="center" prop="varietyName" /> <el-table-column label="品种" align="center" prop="varietyName" />
<el-table-column label="备注" align="center" prop="comment" /> <el-table-column label="备注" align="center" prop="comment" />
<el-table-column label="技术员" align="center" prop="technician" /> <el-table-column label="技术员" align="center" prop="technician" />
<el-table-column label="创建人" align="center" prop="createBy" /> <el-table-column label="创建人" align="center" prop="createBy" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template>
</el-table-column>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width"> <el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope"> <template #default="scope">
<!-- 按需添加 是否需要修改功能 --> <!-- 按需添加 是否需要修改功能 -->
@ -74,7 +79,7 @@
</el-table> </el-table>
<pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum" <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize" @pagination="getList" /> v-model:limit="queryParams.pageSize" @pagination="getList" :page-sizes="[20, 50, 100, 200, 500, 1000, 2000]" />
<!-- 弹窗 --> <!-- 弹窗 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body> <el-dialog :title="title" v-model="open" width="500px" append-to-body>
@ -99,6 +104,10 @@
<el-form-item label="技术员" prop="technician"> <el-form-item label="技术员" prop="technician">
<el-input v-model="form.technician" placeholder="请输入技术员" /> <el-input v-model="form.technician" placeholder="请输入技术员" />
</el-form-item> </el-form-item>
<el-form-item label="事件日期" prop="eventDate">
<el-date-picker v-model="form.eventDate" value-format="YYYY-MM-DD" type="date" placeholder="请选择事件日期"
clearable />
</el-form-item>
</el-form> </el-form>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
@ -128,16 +137,18 @@ const title = ref('')
const daterangeCreateTime = ref([]) const daterangeCreateTime = ref([])
const varietyOptions = ref([]) const varietyOptions = ref([])
const sheepOptions = ref([]) const sheepOptions = ref([])
const daterangeEventDate = ref([])
const data = reactive({ const data = reactive({
form: { form: {
sheepfold: null, sheepfold: null,
manageTags: [], manageTags: [],
tagDetails: {}, tagDetails: {},
eventDate: null,
}, },
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 10, pageSize: 20,
sheepId: null, sheepId: null,
sheepfold: null, sheepfold: null,
varietyId: null, varietyId: null,
@ -153,6 +164,9 @@ const data = reactive({
], ],
technician: [ technician: [
{ required: true, message: '请输入技术员', trigger: 'blur' } { required: true, message: '请输入技术员', trigger: 'blur' }
],
eventDate: [
{ required: true, message: '请选择事件日期', trigger: 'change' }
] ]
} }
}) })
@ -240,6 +254,11 @@ function getList() {
q.params.beginCreateTime = daterangeCreateTime.value[0] q.params.beginCreateTime = daterangeCreateTime.value[0]
q.params.endCreateTime = daterangeCreateTime.value[1] q.params.endCreateTime = daterangeCreateTime.value[1]
} }
if (daterangeEventDate.value?.length) {
q.params.beginEventDate = daterangeEventDate.value[0]
q.params.endEventDate = daterangeEventDate.value[1]
}
listFixHoof(q).then(res => { listFixHoof(q).then(res => {
fixHoofList.value = res.rows fixHoofList.value = res.rows
total.value = res.total total.value = res.total
@ -263,7 +282,8 @@ function reset() {
sheepfold: null, sheepfold: null,
manageTags: [], manageTags: [],
varietyId: null, varietyId: null,
varietyName: null varietyName: null,
eventDate: null
} }
sheepOptions.value = []; sheepOptions.value = [];
proxy.resetForm('fixHoofRef') proxy.resetForm('fixHoofRef')
@ -278,6 +298,7 @@ function handleQuery() {
// //
function resetQuery() { function resetQuery() {
daterangeCreateTime.value = [] daterangeCreateTime.value = []
daterangeEventDate.value = []
queryParams.value.varietyId = null queryParams.value.varietyId = null
proxy.resetForm('queryRef') proxy.resetForm('queryRef')
handleQuery() handleQuery()