Compare commits

..

No commits in common. "95888a090718c6342e19f2e0eeba50e3d5689632" and "476daa47606ba67f1b099f1b2aaf260920015ed0" have entirely different histories.

12 changed files with 365 additions and 714 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.2", "@element-plus/icons-vue": "^2.3.1",
"@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,10 +1,13 @@
<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="羊只id" prop="sheepId">
<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>
@ -56,7 +59,17 @@
<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="manageTags" min-width="100px" fixed /> <el-table-column label="创建时间" align="center" prop="createTime" width="180" 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" />
@ -66,270 +79,43 @@
<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" />
<template #header> <el-table-column label="出生体重(kg)" align="center" prop="birthWeight" 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="weaningWeight" min-width="100px" />
<span>胎次</span> <el-table-column label="当前体重(kg)" align="center" prop="currentWeight" min-width="100px" />
<el-icon size="16" style="color: skyblue;"> <el-table-column label="体高" align="center" prop="height" />
<ArrowUp v-if="!sortStates.parity.isSorting || sortStates.parity.isAsc" /> <el-table-column label="胸围" align="center" prop="bust" />
<ArrowDown v-else /> <el-table-column label="体斜长" align="center" prop="bodyLength" />
</el-icon> <el-table-column label="管围" align="center" prop="pipeLength" />
</div> <el-table-column label="胸深" align="center" prop="chestDepth" />
</template> <el-table-column label="臀高" align="center" prop="hipHeight" />
<template #default="scope"> <el-table-column label="尻宽" align="center" prop="rumpWidth" />
<span>{{ scope.row.parity }}</span> <el-table-column label="尻高" align="center" prop="rumpHeignt" />
</template> <el-table-column label="腰角宽" align="center" prop="hipWidth" />
</el-table-column> <el-table-column label="十字部高" align="center" prop="hipCrossHeight" />
<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)"
@ -341,7 +127,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" :page-sizes="[20, 50, 100, 200, 500, 1000, 2000]" /> v-model:limit="queryParams.pageSize" @pagination="getList" />
<!-- 添加或修改体尺测量对话框 --> <!-- 添加或修改体尺测量对话框 -->
<el-dialog :title="title" v-model="open" width="700px" append-to-body> <el-dialog :title="title" v-model="open" width="700px" append-to-body>
@ -426,8 +212,6 @@ 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([])
@ -453,7 +237,7 @@ const data = reactive({
form: { manageTags: null, technician: null }, form: { manageTags: null, technician: null },
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 20, pageSize: 10,
sheepId: null, sheepId: null,
sheepfoldId: null, sheepfoldId: null,
varietyId: null, varietyId: null,
@ -478,20 +262,7 @@ 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 = {}
@ -510,23 +281,6 @@ 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();
@ -597,12 +351,6 @@ 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,10 +1,13 @@
<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="羊只id" prop="sheepId">
<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>
@ -55,37 +58,27 @@
<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="管理耳号" align="center" prop="manageTags" min-width="100px" fixed /> <!-- <el-table-column label="${comment}" align="center" prop="id" /> -->
<el-table-column label="品种" align="center" prop="varietyName" /> <!-- <el-table-column label="羊只id" align="center" prop="sheepId" /> -->
<el-table-column label="事件类型" align="center" prop="eventType" /> <el-table-column label="创建时间" align="center" prop="createTime" min-width="130px" 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="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="score" min-width="100px"> <el-table-column label="管理耳号" align="center" prop="manageTags" min-width="100px" />
<template #header> <el-table-column label="品种" align="center" prop="varietyName" />
<div style="display: flex; align-items: center; gap: 8px; cursor: pointer;" @click="handleScoreSort"> <el-table-column label="事件类型" align="center" prop="eventType" />
<span>体况评分</span> <el-table-column label="体况评分" align="center" prop="score" />
<el-icon size="16" style="color: skyblue;"> <!-- <el-table-column label="羊舍id" align="center" prop="sheepfold" /> -->
<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)"
@ -97,11 +90,14 @@
</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" :page-sizes="[20, 50, 100, 200, 500, 1000, 2000]" /> v-model:limit="queryParams.pageSize" @pagination="getList" />
<!-- 添加或修改体况评分对话框 --> <!-- 添加或修改体况评分对话框 -->
<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 />
@ -119,6 +115,9 @@
<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>
@ -141,7 +140,6 @@ 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()
@ -158,8 +156,6 @@ 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: {
@ -173,7 +169,7 @@ const data = reactive({
}, },
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 20, pageSize: 10,
manageTags: null, manageTags: null,
varietyId: null, varietyId: null,
sheepfold: null, sheepfold: null,
@ -187,7 +183,7 @@ const data = reactive({
score: [ score: [
{ required: true, message: '请输入体况评分', trigger: 'blur' } { required: true, message: '请输入体况评分', trigger: 'blur' }
], ],
datetime: [ datetime:[
{ required: true, message: '请选择事件日期', trigger: 'blur' } { required: true, message: '请选择事件日期', trigger: 'blur' }
], ],
technician: [ technician: [
@ -210,13 +206,6 @@ 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
@ -254,18 +243,6 @@ 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() {
@ -308,8 +285,6 @@ 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,11 +1,14 @@
<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="羊只id" prop="sheepId">
<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>
</el-form-item> </el-form-item>
@ -50,68 +53,29 @@
<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="manageTags" min-width="100px" fixed /> <el-table-column label="创建时间" align="center" prop="createTime" min-width="150" fixed>
<el-table-column label="品种" align="center" prop="varietyName" /> <template #default="scope">
<el-table-column label="事件类型" align="center" prop="eventType" /> <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</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" />
<template #header> <el-table-column label="乳房长度" align="center" prop="length" />
<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)"
@ -123,11 +87,14 @@
</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" :page-sizes="[20, 50, 100, 200, 500, 1000, 2000]" /> v-model:limit="queryParams.pageSize" @pagination="getList" />
<!-- 添加或修改乳房评分对话框 --> <!-- 添加或修改乳房评分对话框 -->
<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" />
@ -177,7 +144,6 @@ 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()
@ -193,15 +159,6 @@ 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,
@ -218,14 +175,14 @@ const data = reactive({
}, },
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 20, pageSize: 10,
manageTags: null manageTags: null
}, },
rules: { rules: {
manageTags: [ manageTags: [
{ required: true, message: '请输入管理耳号', trigger: 'blur' } { required: true, message: '请输入管理耳号', trigger: 'blur' }
], ],
eventDate: [ eventDate:[
{ required: true, message: '请选择事件日期', trigger: 'blur' } { required: true, message: '请选择事件日期', trigger: 'blur' }
], ],
score: [ score: [
@ -251,20 +208,6 @@ 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
@ -296,49 +239,6 @@ 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() {
@ -377,12 +277,6 @@ 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,10 +1,9 @@
<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"
@ -179,6 +178,7 @@ 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,9 +1,17 @@
<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="羊只id" prop="sheepId">
<el-date-picker v-model="daterangeEventDate" type="daterange" range-separator="-" start-placeholder="开始日期" <el-input
end-placeholder="结束日期" value-format="YYYY-MM-DD" /> 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="-"
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"
@ -50,23 +58,19 @@
<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="管理耳号" align="center" prop="manageTags" /> <!-- <el-table-column label="${comment}" align="center" prop="id" /> -->
<el-table-column label="羊舍" align="center" prop="sheepfoldName" /> <!-- <el-table-column label="羊只id" align="center" prop="sheepId" /> -->
<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="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="createTime" width="180"> <el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span> <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="管理耳号" align="center" prop="manageTags" />
<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="newComment" />
<el-table-column label="原备注" align="center" prop="oldComment" />
<el-table-column label="创建人" align="center" prop="createBy" />
<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)"
@ -78,11 +82,14 @@
</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" :page-sizes="[20, 50, 100, 200, 500, 1000, 2000]" /> v-model:limit="queryParams.pageSize" @pagination="getList" />
<!-- 添加或修改改备注对话框 --> <!-- 添加或修改改备注对话框 -->
<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>
@ -92,13 +99,6 @@
<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,12 +128,11 @@ 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, eventDate: null, technician: null }, form: { manageTags: null, },
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 20, pageSize: 10,
sheepId: null, sheepId: null,
manageTags: null, manageTags: null,
sheepfoldId: null, sheepfoldId: null,
@ -147,12 +146,6 @@ 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" }
] ]
} }
}) })
@ -170,10 +163,6 @@ 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
@ -216,7 +205,6 @@ function reset() {
sheepId: null, sheepId: null,
newComment: null, newComment: null,
oldComment: null, oldComment: null,
technician: null,
createBy: null, createBy: null,
createTime: null createTime: null
} }
@ -232,7 +220,6 @@ 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,12 +1,15 @@
<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: 300px"> <!-- <el-form-item label="羊只id" prop="sheepId">
<el-date-picker v-model="daterangeEventDate" type="daterange" range-separator="-" start-placeholder="开始日期" <el-input v-model="queryParams.sheepId" placeholder="请输入羊只id" clearable @keyup.enter="handleQuery" />
end-placeholder="结束日期" value-format="YYYY-MM-DD" /> </el-form-item> -->
<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">
@ -22,12 +25,6 @@
<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>
@ -56,6 +53,13 @@
<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" />
@ -66,19 +70,8 @@
</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)"
@ -90,11 +83,14 @@
</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" :page-sizes="[20, 50, 100, 200, 500, 1000, 2000]" /> v-model:limit="queryParams.pageSize" @pagination="getList" />
<!-- 添加或修改修改电子耳号记录对话框 --> <!-- 添加或修改修改电子耳号记录对话框 -->
<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>
@ -110,14 +106,7 @@
<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="technician"> <el-form-item label="备注" prop="comment" v-if="!isAddMode">
<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>
@ -147,23 +136,19 @@ 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: 20, pageSize: 10,
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: [
@ -178,15 +163,6 @@ 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" }
]
} }
}) })
@ -206,10 +182,6 @@ 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 => {
@ -230,12 +202,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
@ -252,7 +224,6 @@ 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,9 +1,17 @@
<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="羊只id" prop="sheepId">
<el-date-picker v-model="daterangeEventDate" type="daterange" range-separator="-" start-placeholder="开始日期" <el-input
end-placeholder="结束日期" value-format="YYYY-MM-DD" /> 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="-"
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"
@ -52,24 +60,20 @@
<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="管理耳号" align="center" prop="manageTags" /> <!-- <el-table-column label="${comment}" align="center" prop="id" />
<el-table-column label="羊舍" align="center" prop="sheepfoldName" /> <el-table-column label="羊只id" align="center" prop="sheepId" /> -->
<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="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="createBy" />
<el-table-column label="创建日期" align="center" prop="createTime" width="180"> <el-table-column label="创建日期" align="center" prop="createTime" width="180">
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span> <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<el-table-column label="管理耳号" align="center" prop="manageTags" />
<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="varietyOld" />
<el-table-column label="新品种" align="center" prop="varietyNew" />
<el-table-column label="备注" align="center" prop="comment" />
<el-table-column label="创建人" align="center" prop="createBy" />
<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)"
@ -81,11 +85,14 @@
</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" :page-sizes="[20, 50, 100, 200, 500, 1000, 2000]" /> v-model:limit="queryParams.pageSize" @pagination="getList" />
<!-- 添加或修改改品种记录对话框 --> <!-- 添加或修改改品种记录对话框 -->
<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>
@ -97,13 +104,6 @@
<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,21 +138,19 @@ 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: 20, pageSize: 10,
// 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: [
@ -164,12 +162,6 @@ 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" }
]
} }
}) })
@ -186,10 +178,6 @@ 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
@ -252,21 +240,13 @@ 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,6 +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="创建时间" 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="结束日期" />
@ -9,6 +13,11 @@
<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" />
@ -29,6 +38,11 @@
<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>
@ -40,6 +54,10 @@
<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>
@ -53,24 +71,34 @@
<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="manageTags" min-width="100" fixed /> <el-table-column label="创建时间" align="center" prop="createTime" min-width="120" fixed>
<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="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="sheepTypeName" />
<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="comment" min-width="120" />
<el-table-column label="创建人" align="center" prop="createBy" />
<el-table-column label="创建时间" align="center" prop="createTime" min-width="120">
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span> <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template> </template>
</el-table-column> </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="foldFromName" min-width="130" />
<el-table-column label="转入羊舍" align="center" prop="foldToName" min-width="130" />
<el-table-column label="品种" align="center" prop="varietyName" />
<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="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="createBy" />
<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']">
删除 删除
@ -80,7 +108,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" :page-sizes="[20, 50, 100, 200, 500, 1000, 2000]" /> v-model:limit="queryParams.pageSize" @pagination="getList" />
<!-- 添加或修改转群记录对话框 --> <!-- 添加或修改转群记录对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body> <el-dialog :title="title" v-model="open" width="500px" append-to-body>
@ -149,7 +177,44 @@
</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>
@ -173,7 +238,11 @@ 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({});
@ -192,15 +261,17 @@ const data = reactive({
}, },
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 20, pageSize: 10,
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' }],
@ -219,6 +290,10 @@ 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];
@ -491,7 +566,9 @@ function handleQuery() {
// //
function resetQuery() { function resetQuery() {
daterangeCreateTime.value = [];
daterangeTransDate.value = []; daterangeTransDate.value = [];
queryParams.value.eventType = null;
proxy.resetForm('queryRef'); proxy.resetForm('queryRef');
handleQuery(); handleQuery();
} }
@ -621,6 +698,40 @@ 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,6 +2,10 @@
<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>
@ -15,6 +19,12 @@
<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" />
@ -67,14 +77,19 @@
<!-- 列表 --> <!-- 列表 -->
<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="manageTags" min-width="100" fixed /> <el-table-column label="创建时间" align="center" prop="createTime" min-width="130" fixed>
<el-table-column label="事件类型" align="center" prop="eventType" min-width="120" /> <template #default="scope">
<el-table-column label="转场类型" align="center" prop="transTypeText" /> <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</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" />
@ -93,11 +108,6 @@
</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)"
@ -109,7 +119,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" :page-sizes="[20, 50, 100, 200, 500, 1000, 2000]" /> v-model:limit="queryParams.pageSize" @pagination="getList" />
<!-- 新增/修改 --> <!-- 新增/修改 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body> <el-dialog :title="title" v-model="open" width="500px" append-to-body>
@ -240,6 +250,7 @@ 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('')
@ -264,13 +275,15 @@ const data = reactive({
}, },
queryParams: { queryParams: {
pageNum: 1, pageNum: 1,
pageSize: 20, pageSize: 10,
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: {
@ -303,6 +316,10 @@ 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;
} }
@ -363,8 +380,10 @@ 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
); );
@ -373,13 +392,14 @@ function loadSheepfoldsByRanch(ranchName) {
acceptSheepfold.value = []; acceptSheepfold.value = [];
return; return;
} }
const ranchId = matchedRanch.id; const ranchId = matchedRanch.id; // 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, ranchId: ranchId, // 使ID
pageNum: 1, pageNum: 1,
pageSize: 999 pageSize: 999
} }
@ -394,6 +414,7 @@ function loadSheepfoldsByRanch(ranchName) {
}); });
} }
// ID
async function getRanchNameByRanchId(ranchId) { async function getRanchNameByRanchId(ranchId) {
if (!ranchId) return ''; if (!ranchId) return '';
try { try {
@ -570,7 +591,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)) {
@ -594,6 +615,7 @@ 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="daterangeEventDate" 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="结束日期" /> start-placeholder="开始日期" end-placeholder="结束日期" />
</el-form-item> </el-form-item>
<el-form-item label="管理耳号" prop="manageTags"> <el-form-item label="管理耳号" prop="manageTags">
@ -51,23 +51,19 @@
<!-- 列表表格 --> <!-- 列表表格 -->
<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="耳号" align="center" prop="manageTags" /> <!-- <el-table-column label="羊只id" align="center" prop="sheepId" /> -->
<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="varietyName" />
<el-table-column label="备注" align="center" prop="comment" />
<el-table-column label="技术员" align="center" prop="technician" />
<el-table-column label="创建人" align="center" prop="createBy" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> <el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span> <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<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="sheepfoldName" />
<el-table-column label="品种" align="center" prop="varietyName" />
<el-table-column label="备注" align="center" prop="comment" />
<el-table-column label="技术员" align="center" prop="technician" />
<el-table-column label="创建人" align="center" prop="createBy" />
<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">
<!-- 按需添加 是否需要修改功能 --> <!-- 按需添加 是否需要修改功能 -->
@ -80,7 +76,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" :page-sizes="[20, 50, 100, 200, 500, 1000, 2000]" /> v-model:limit="queryParams.pageSize" @pagination="getList" />
<!-- 新增/修改弹窗 --> <!-- 新增/修改弹窗 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body> <el-dialog :title="title" v-model="open" width="500px" append-to-body>
@ -105,9 +101,6 @@
<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">
@ -138,38 +131,37 @@ 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: 20, pageSize: 10,
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' }
] ]
} }
}) })
@ -265,14 +257,9 @@ 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;
}); });
@ -295,7 +282,6 @@ function reset() {
manageTags: [], manageTags: [],
sheepfold: null, sheepfold: null,
technician: null, technician: null,
eventDate: null
}; };
sheepOptions.value = []; sheepOptions.value = [];
proxy.resetForm('castrateRef'); proxy.resetForm('castrateRef');
@ -310,7 +296,6 @@ function handleQuery() {
// //
function resetQuery() { function resetQuery() {
daterangeCreateTime.value = [] daterangeCreateTime.value = []
daterangeEventDate.value = []
proxy.resetForm('queryRef') proxy.resetForm('queryRef')
handleQuery() handleQuery()
} }
@ -403,8 +388,7 @@ 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="daterangeEventDate" 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="结束日期" /> start-placeholder="开始日期" end-placeholder="结束日期" />
</el-form-item> </el-form-item>
<el-form-item label="管理耳号" prop="manageTags"> <el-form-item label="管理耳号" prop="manageTags">
@ -50,23 +50,18 @@
<!-- 列表 --> <!-- 列表 -->
<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="manageTags" />
<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="varietyName" />
<el-table-column label="备注" align="center" prop="comment" />
<el-table-column label="技术员" align="center" prop="technician" />
<el-table-column label="创建人" align="center" prop="createBy" />
<el-table-column label="创建时间" align="center" prop="createTime" width="180"> <el-table-column label="创建时间" align="center" prop="createTime" width="180">
<template #default="scope"> <template #default="scope">
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span> <span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}') }}</span>
</template> </template>
</el-table-column> </el-table-column>
<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="sheepfoldName" />
<el-table-column label="品种" align="center" prop="varietyName" />
<el-table-column label="备注" align="center" prop="comment" />
<el-table-column label="技术员" align="center" prop="technician" />
<el-table-column label="创建人" align="center" prop="createBy" />
<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">
<!-- 按需添加 是否需要修改功能 --> <!-- 按需添加 是否需要修改功能 -->
@ -79,7 +74,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" :page-sizes="[20, 50, 100, 200, 500, 1000, 2000]" /> v-model:limit="queryParams.pageSize" @pagination="getList" />
<!-- 弹窗 --> <!-- 弹窗 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body> <el-dialog :title="title" v-model="open" width="500px" append-to-body>
@ -104,10 +99,6 @@
<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">
@ -137,18 +128,16 @@ 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: 20, pageSize: 10,
sheepId: null, sheepId: null,
sheepfold: null, sheepfold: null,
varietyId: null, varietyId: null,
@ -164,9 +153,6 @@ const data = reactive({
], ],
technician: [ technician: [
{ required: true, message: '请输入技术员', trigger: 'blur' } { required: true, message: '请输入技术员', trigger: 'blur' }
],
eventDate: [
{ required: true, message: '请选择事件日期', trigger: 'change' }
] ]
} }
}) })
@ -254,11 +240,6 @@ 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
@ -282,8 +263,7 @@ 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')
@ -298,7 +278,6 @@ 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()