341 lines
10 KiB
Vue
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<template>
<div class="app-container">
<el-form :model="queryParams" ref="queryRef" :inline="true" v-show="showSearch" label-width="68px">
<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="耳号" prop="bsManageTags">
<el-input
v-model="queryParams.bsManageTags"
placeholder="请输入耳号"
clearable
@keyup.enter="handleQuery"
/>
</el-form-item>
<el-form-item label="分组" prop="groupId">
<el-select
v-model="queryParams.groupId"
placeholder="请选择分组"
clearable
style="width: 200px"
>
<el-option
v-for="g in leafGroupOptions"
:key="g.groupId"
:label="g.groupName"
:value="g.groupId"
/>
</el-select>
</el-form-item>
<el-form-item>
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
</el-form-item>
</el-form>
<el-row :gutter="10" class="mb8">
<el-col :span="1.5">
<el-button
type="primary"
plain
icon="Plus"
@click="handleAdd"
v-hasPermi="['sheep_grouping:sheep_grouping:add']"
>新增</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="success"
plain
icon="Edit"
:disabled="single"
@click="handleUpdate"
v-hasPermi="['sheep_grouping:sheep_grouping:edit']"
>修改</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="danger"
plain
icon="Delete"
:disabled="multiple"
@click="handleDelete"
v-hasPermi="['sheep_grouping:sheep_grouping:remove']"
>删除</el-button>
</el-col>
<el-col :span="1.5">
<el-button
type="warning"
plain
icon="Download"
@click="handleExport"
v-hasPermi="['sheep_grouping:sheep_grouping:export']"
>导出</el-button>
</el-col>
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
</el-row>
<el-table v-loading="loading" :data="sheep_groupingList" @selection-change="handleSelectionChange">
<el-table-column type="selection" width="55" align="center"/>
<el-table-column label="主键ID" align="center" prop="id" sortable/>
<el-table-column label="羊只ID" align="center" prop="sheep_id" sortable/>
<el-table-column label="分组ID" align="center" prop="group_id" sortable/>
<el-table-column label="分组名称" align="center" prop="groupName" sortable>
<template #default="scope">
{{ getGroupName(scope.row.group_id) }}
</template>
</el-table-column>
<el-table-column label="耳号" align="center" prop="bs_manage_tags" sortable/>
<el-table-column label="品种" align="center" prop="variety" sortable/>
<el-table-column label="性别" align="center" prop="gender" sortable>
<template #default="scope">
<dict-tag :options="sheep_gender" :value="scope.row.gender"/>
</template>
</el-table-column>
<el-table-column label="羊只类型" align="center" prop="name" sortable/>
<el-table-column label="出生日期" align="center" prop="birthday" sortable/>
<el-table-column label="胎次" align="center" prop="parity" sortable/>
<el-table-column label="月龄" align="center" prop="month_age" sortable/>
<el-table-column label="繁殖状态" align="center" prop="breed" sortable/>
<el-table-column label="出生体重" align="center" prop="birth_weight" sortable/>
<el-table-column label="断奶体重" align="center" prop="weaning_weight" sortable/>
<el-table-column label="当前体重" align="center" prop="current_weight" sortable/>
<el-table-column label="父号" align="center" prop="father_manage_tags" sortable/>
<el-table-column label="母号" align="center" prop="mother_manage_tags" sortable/>
<el-table-column label="家系" align="center" prop="family" sortable/>
<el-table-column label="操作" align="center" class-name="small-padding fixed-width">
<template #default="scope">
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['sheep_grouping:sheep_grouping:edit']">修改</el-button>
<el-button link type="primary" icon="Delete" @click="handleDelete(scope.row)" v-hasPermi="['sheep_grouping:sheep_grouping:remove']">删除</el-button>
</template>
</el-table-column>
</el-table>
<pagination
v-show="total>0"
:total="total"
v-model:page="queryParams.pageNum"
v-model:limit="queryParams.pageSize"
@pagination="getList"
/>
<!-- 添加或修改羊只分组关联对话框 -->
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
<el-form ref="sheep_groupingRef" :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="groupId">
<el-select v-model="form.groupId" placeholder="请选择分组" clearable>
<el-option
v-for="g in leafGroupOptions"
:key="g.groupId"
:label="g.groupName"
:value="g.groupId"
/>
</el-select>
</el-form-item>
</el-form>
<template #footer>
<div class="dialog-footer">
<el-button type="primary" @click="submitForm"> </el-button>
<el-button @click="cancel"> </el-button>
</div>
</template>
</el-dialog>
</div>
</template>
<script setup name="Sheep_grouping">
import { listSheep_grouping, getSheep_grouping, delSheep_grouping, addSheep_grouping, updateSheep_grouping } from "@/api/fileManagement/sheep_grouping"
import {listLeafGroup} from "@/api/fileManagement/group_management"
import {listSheep_grouping_join} from "@/api/fileManagement/sheep_grouping"
const { proxy } = getCurrentInstance()
const sheep_groupingList = ref([])
const open = ref(false)
const loading = ref(true)
const showSearch = ref(true)
const ids = ref([])
const single = ref(true)
const multiple = ref(true)
const total = ref(0)
const title = ref("")
const leafGroupOptions = ref([])
const { sheep_gender } = proxy.useDict('sheep_gender')
const data = reactive({
form: {},
queryParams: {
pageNum: 1,
pageSize: 10,
sheepId: null,
groupId: null,
bsManageTags: ''
},
leafGroupOptions: [],
rules: {
sheepId: [
{ required: true, message: "羊只ID不能为空", trigger: "blur" }
],
groupId: [
{ required: true, message: "分组ID不能为空", trigger: "change" }
]
}
})
const { queryParams, form, rules } = toRefs(data)
/** 查询羊只分组关联列表 */
// function getList() {
// loading.value = true
// listSheep_grouping(queryParams.value).then(response => {
// sheep_groupingList.value = response.rows
// total.value = response.total
// loading.value = false
// })
// }
import { getSheep_file } from '@/api/fileManagement/sheep_file'
async function getList() {
loading.value = true
try {
// 1. 把耳号字符串拆成数组
const params = {
...queryParams.value,
bsManageTags: queryParams.value.bsManageTags
? String(queryParams.value.bsManageTags)
.split(/[,\s]+/)
.map(s => s.trim())
.filter(Boolean)
: undefined
}
console.log(params)
const { rows, total: t } = await listSheep_grouping_join(params)
console.log(rows)
sheep_groupingList.value = rows
total.value = t
} finally {
loading.value = false
}
}
// 取消按钮
function cancel() {
open.value = false
reset()
}
// 表单重置
function reset() {
form.value = {
id: null,
sheepId: null,
groupId: null
}
proxy.resetForm("sheep_groupingRef")
}
/** 搜索按钮操作 */
function handleQuery() {
queryParams.value.pageNum = 1
getList()
}
/** 重置按钮操作 */
function resetQuery() {
proxy.resetForm("queryRef")
handleQuery()
}
// 多选框选中数据
function handleSelectionChange(selection) {
ids.value = selection.map(item => item.id)
single.value = selection.length != 1
multiple.value = !selection.length
}
/** 新增按钮操作 */
function handleAdd() {
reset()
open.value = true
title.value = "添加羊只分组关联"
}
/** 修改按钮操作 */
function handleUpdate(row) {
reset()
const _id = row.id || ids.value
getSheep_grouping(_id).then(response => {
form.value = response.data
open.value = true
title.value = "修改羊只分组关联"
})
}
/** 提交按钮 */
function submitForm() {
proxy.$refs["sheep_groupingRef"].validate(valid => {
if (valid) {
if (form.value.id != null) {
updateSheep_grouping(form.value).then(response => {
proxy.$modal.msgSuccess("修改成功")
open.value = false
getList()
})
} else {
addSheep_grouping(form.value).then(response => {
proxy.$modal.msgSuccess("新增成功")
open.value = false
getList()
})
}
}
})
}
/** 删除按钮操作 */
function handleDelete(row) {
const _ids = row.id || ids.value
proxy.$modal.confirm('是否确认删除羊只分组关联编号为"' + _ids + '"的数据项?').then(function() {
return delSheep_grouping(_ids)
}).then(() => {
getList()
proxy.$modal.msgSuccess("删除成功")
}).catch(() => {})
}
/** 导出按钮操作 */
function handleExport() {
proxy.download('sheep_grouping/sheep_grouping/export', {
...queryParams.value
}, `sheep_grouping_${new Date().getTime()}.xlsx`)
}
loadLeafGroups()
getList()
// 调用示例
function loadLeafGroups() {
listLeafGroup().then(res => {
leafGroupOptions.value = res.data
})
}
// 根据 groupId 获取分组名称
function getGroupName(id) {
const group = leafGroupOptions.value.find(g => g.groupId === id)
return group ? group.groupName : ''
}
</script>