Merge branch 'main' of http://e19510c831.iok.la/admin/zhyc-sheep-ui
This commit is contained in:
commit
d6ae5f3654
@ -42,3 +42,4 @@ export function delFreshMilkTest(id) {
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
|
||||
|
@ -52,3 +52,12 @@ export function delSheep_grouping(id) {
|
||||
method: 'delete'
|
||||
})
|
||||
}
|
||||
|
||||
// 根据耳号批量新增分组映射
|
||||
export function addByEarTags(data) {
|
||||
return request({
|
||||
url: '/sheep_grouping/sheep_grouping/addByEarTags',
|
||||
method: 'post',
|
||||
data
|
||||
})
|
||||
}
|
||||
|
@ -1,6 +1,7 @@
|
||||
<template>
|
||||
<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="80px">
|
||||
<el-form-item label="来源" prop="source">
|
||||
<el-input
|
||||
v-model="queryParams.source"
|
||||
@ -17,110 +18,6 @@
|
||||
placeholder="请选择检测日期">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="脂肪g/100g" prop="fat">
|
||||
<el-input
|
||||
v-model="queryParams.fat"
|
||||
placeholder="请输入脂肪g/100g"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="蛋白质g/100g" prop="protein">
|
||||
<el-input
|
||||
v-model="queryParams.protein"
|
||||
placeholder="请输入蛋白质g/100g"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="非脂g/100g" prop="nonFat">
|
||||
<el-input
|
||||
v-model="queryParams.nonFat"
|
||||
placeholder="请输入非脂g/100g"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="酸度oT" prop="acidity">
|
||||
<el-input
|
||||
v-model="queryParams.acidity"
|
||||
placeholder="请输入酸度oT"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="菌落总数CFU/ml_1" prop="bacterialColony1">
|
||||
<el-input
|
||||
v-model="queryParams.bacterialColony1"
|
||||
placeholder="请输入菌落总数CFU/ml_1"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="菌落总数CFU/ml_2" prop="bacterialColony2">
|
||||
<el-input
|
||||
v-model="queryParams.bacterialColony2"
|
||||
placeholder="请输入菌落总数CFU/ml_2"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="菌落总数CFU/ml_3" prop="bacterialColony3">
|
||||
<el-input
|
||||
v-model="queryParams.bacterialColony3"
|
||||
placeholder="请输入菌落总数CFU/ml_3"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="菌落总数CFU/ml_4" prop="bacterialColony4">
|
||||
<el-input
|
||||
v-model="queryParams.bacterialColony4"
|
||||
placeholder="请输入菌落总数CFU/ml_4"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="菌落总数CFU/ml_5" prop="bacterialColony5">
|
||||
<el-input
|
||||
v-model="queryParams.bacterialColony5"
|
||||
placeholder="请输入菌落总数CFU/ml_5"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="大肠菌群CFU/ml" prop="coli">
|
||||
<el-input
|
||||
v-model="queryParams.coli"
|
||||
placeholder="请输入大肠菌群CFU/ml"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="乳铁蛋白" prop="lactoferrin">
|
||||
<el-input
|
||||
v-model="queryParams.lactoferrin"
|
||||
placeholder="请输入乳铁蛋白"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="免疫球蛋白" prop="ig">
|
||||
<el-input
|
||||
v-model="queryParams.ig"
|
||||
placeholder="请输入免疫球蛋白"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="commnet">
|
||||
<el-input
|
||||
v-model="queryParams.commnet"
|
||||
placeholder="请输入备注"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
<el-form-item>
|
||||
<el-button type="primary" icon="Search" @click="handleQuery">搜索</el-button>
|
||||
<el-button icon="Refresh" @click="resetQuery">重置</el-button>
|
||||
@ -166,31 +63,115 @@
|
||||
v-hasPermi="['freshMilkTest:freshMilkTest:export']"
|
||||
>导出</el-button>
|
||||
</el-col>
|
||||
<el-col :span="1.5">
|
||||
<el-button
|
||||
type="info"
|
||||
plain
|
||||
icon="Operation"
|
||||
@click="columnShowDialogVisible = true"
|
||||
>列显示</el-button>
|
||||
</el-col>
|
||||
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
||||
</el-row>
|
||||
|
||||
<!-- 表格显示,使用列选择功能 -->
|
||||
<el-table v-loading="loading" :data="freshMilkTestList" @selection-change="handleSelectionChange">
|
||||
<el-table-column type="selection" width="55" align="center" />
|
||||
<el-table-column label="${comment}" align="center" prop="id" />
|
||||
<el-table-column label="来源" align="center" prop="source" />
|
||||
<el-table-column label="检测日期" align="center" prop="datetime" width="180">
|
||||
<el-table-column
|
||||
label="来源"
|
||||
align="center"
|
||||
prop="source"
|
||||
v-if="selectedColumns.includes('source')" />
|
||||
<el-table-column
|
||||
label="检测日期"
|
||||
align="center"
|
||||
prop="datetime"
|
||||
width="180"
|
||||
v-if="selectedColumns.includes('datetime')">
|
||||
<template #default="scope">
|
||||
<span>{{ parseTime(scope.row.datetime, '{y}-{m}-{d}') }}</span>
|
||||
<span>{{ formatDate(scope.row.datetime) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column
|
||||
label="脂肪g/100g"
|
||||
align="center"
|
||||
prop="fat"
|
||||
v-if="selectedColumns.includes('fat')" />
|
||||
<el-table-column
|
||||
label="蛋白质g/100g"
|
||||
align="center"
|
||||
prop="protein"
|
||||
v-if="selectedColumns.includes('protein')" />
|
||||
<el-table-column
|
||||
label="非脂g/100g"
|
||||
align="center"
|
||||
prop="nonFat"
|
||||
v-if="selectedColumns.includes('nonFat')" />
|
||||
<el-table-column
|
||||
label="酸度oT"
|
||||
align="center"
|
||||
prop="acidity"
|
||||
v-if="selectedColumns.includes('acidity')" />
|
||||
<el-table-column
|
||||
label="菌落总数1"
|
||||
align="center"
|
||||
prop="bacterialColony1"
|
||||
v-if="selectedColumns.includes('bacterialColony1')" />
|
||||
<el-table-column
|
||||
label="菌落总数2"
|
||||
align="center"
|
||||
prop="bacterialColony2"
|
||||
v-if="selectedColumns.includes('bacterialColony2')" />
|
||||
<el-table-column
|
||||
label="菌落总数3"
|
||||
align="center"
|
||||
prop="bacterialColony3"
|
||||
v-if="selectedColumns.includes('bacterialColony3')" />
|
||||
<el-table-column
|
||||
label="菌落总数4"
|
||||
align="center"
|
||||
prop="bacterialColony4"
|
||||
v-if="selectedColumns.includes('bacterialColony4')" />
|
||||
<el-table-column
|
||||
label="菌落总数5"
|
||||
align="center"
|
||||
prop="bacterialColony5"
|
||||
v-if="selectedColumns.includes('bacterialColony5')" />
|
||||
<el-table-column
|
||||
label="大肠菌群(CFU/ml)"
|
||||
align="center"
|
||||
prop="coli"
|
||||
v-if="selectedColumns.includes('coli')" />
|
||||
<el-table-column
|
||||
label="乳铁蛋白(mg/L)"
|
||||
align="center"
|
||||
prop="lactoferrin"
|
||||
v-if="selectedColumns.includes('lactoferrin')" />
|
||||
<el-table-column
|
||||
label="免疫球蛋白(mg/L)"
|
||||
align="center"
|
||||
prop="ig"
|
||||
v-if="selectedColumns.includes('ig')" />
|
||||
<el-table-column
|
||||
label="备注"
|
||||
align="center"
|
||||
prop="commnet"
|
||||
v-if="selectedColumns.includes('commnet')" />
|
||||
<el-table-column
|
||||
label="创建人"
|
||||
align="center"
|
||||
prop="createBy"
|
||||
v-if="selectedColumns.includes('createBy')" />
|
||||
<el-table-column
|
||||
label="创建时间"
|
||||
align="center"
|
||||
prop="createTime"
|
||||
width="180"
|
||||
v-if="selectedColumns.includes('createTime')">
|
||||
<template #default="scope">
|
||||
<span>{{ formatDateTime(scope.row.createTime) }}</span>
|
||||
</template>
|
||||
</el-table-column>
|
||||
<el-table-column label="脂肪g/100g" align="center" prop="fat" />
|
||||
<el-table-column label="蛋白质g/100g" align="center" prop="protein" />
|
||||
<el-table-column label="非脂g/100g" align="center" prop="nonFat" />
|
||||
<el-table-column label="酸度oT" align="center" prop="acidity" />
|
||||
<el-table-column label="菌落总数CFU/ml_1" align="center" prop="bacterialColony1" />
|
||||
<el-table-column label="菌落总数CFU/ml_2" align="center" prop="bacterialColony2" />
|
||||
<el-table-column label="菌落总数CFU/ml_3" align="center" prop="bacterialColony3" />
|
||||
<el-table-column label="菌落总数CFU/ml_4" align="center" prop="bacterialColony4" />
|
||||
<el-table-column label="菌落总数CFU/ml_5" align="center" prop="bacterialColony5" />
|
||||
<el-table-column label="大肠菌群CFU/ml" align="center" prop="coli" />
|
||||
<el-table-column label="乳铁蛋白" align="center" prop="lactoferrin" />
|
||||
<el-table-column label="免疫球蛋白" align="center" prop="ig" />
|
||||
<el-table-column label="备注" align="center" prop="commnet" />
|
||||
<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="['freshMilkTest:freshMilkTest:edit']">修改</el-button>
|
||||
@ -207,9 +188,9 @@
|
||||
@pagination="getList"
|
||||
/>
|
||||
|
||||
<!-- 添加或修改鲜奶生产,成品检验记录对话框 -->
|
||||
<!-- 新增/修改对话框 -->
|
||||
<el-dialog :title="title" v-model="open" width="500px" append-to-body>
|
||||
<el-form ref="freshMilkTestRef" :model="form" :rules="rules" label-width="80px">
|
||||
<el-form ref="freshMilkTestRef" :model="form" :rules="rules" label-width="120px">
|
||||
<el-form-item label="来源" prop="source">
|
||||
<el-input v-model="form.source" placeholder="请输入来源" />
|
||||
</el-form-item>
|
||||
@ -218,7 +199,8 @@
|
||||
v-model="form.datetime"
|
||||
type="date"
|
||||
value-format="YYYY-MM-DD"
|
||||
placeholder="请选择检测日期">
|
||||
placeholder="请选择检测日期"
|
||||
style="width: 100%">
|
||||
</el-date-picker>
|
||||
</el-form-item>
|
||||
<el-form-item label="脂肪g/100g" prop="fat">
|
||||
@ -233,32 +215,38 @@
|
||||
<el-form-item label="酸度oT" prop="acidity">
|
||||
<el-input v-model="form.acidity" placeholder="请输入酸度oT" />
|
||||
</el-form-item>
|
||||
<el-form-item label="菌落总数CFU/ml_1" prop="bacterialColony1">
|
||||
<el-input v-model="form.bacterialColony1" placeholder="请输入菌落总数CFU/ml_1" />
|
||||
<el-form-item label="菌落总数1" prop="bacterialColony1">
|
||||
<el-input v-model="form.bacterialColony1" placeholder="请输入菌落总数1" />
|
||||
</el-form-item>
|
||||
<el-form-item label="菌落总数CFU/ml_2" prop="bacterialColony2">
|
||||
<el-input v-model="form.bacterialColony2" placeholder="请输入菌落总数CFU/ml_2" />
|
||||
<el-form-item label="菌落总数2" prop="bacterialColony2">
|
||||
<el-input v-model="form.bacterialColony2" placeholder="请输入菌落总数2" />
|
||||
</el-form-item>
|
||||
<el-form-item label="菌落总数CFU/ml_3" prop="bacterialColony3">
|
||||
<el-input v-model="form.bacterialColony3" placeholder="请输入菌落总数CFU/ml_3" />
|
||||
<el-form-item label="菌落总数3" prop="bacterialColony3">
|
||||
<el-input v-model="form.bacterialColony3" placeholder="请输入菌落总数3" />
|
||||
</el-form-item>
|
||||
<el-form-item label="菌落总数CFU/ml_4" prop="bacterialColony4">
|
||||
<el-input v-model="form.bacterialColony4" placeholder="请输入菌落总数CFU/ml_4" />
|
||||
<el-form-item label="菌落总数4" prop="bacterialColony4">
|
||||
<el-input v-model="form.bacterialColony4" placeholder="请输入菌落总数4" />
|
||||
</el-form-item>
|
||||
<el-form-item label="菌落总数CFU/ml_5" prop="bacterialColony5">
|
||||
<el-input v-model="form.bacterialColony5" placeholder="请输入菌落总数CFU/ml_5" />
|
||||
<el-form-item label="菌落总数5" prop="bacterialColony5">
|
||||
<el-input v-model="form.bacterialColony5" placeholder="请输入菌落总数5" />
|
||||
</el-form-item>
|
||||
<el-form-item label="大肠菌群CFU/ml" prop="coli">
|
||||
<el-input v-model="form.coli" placeholder="请输入大肠菌群CFU/ml" />
|
||||
<el-form-item label="大肠菌群(CFU/ml)" prop="coli">
|
||||
<el-input v-model="form.coli" placeholder="请输入大肠菌群(CFU/ml)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="乳铁蛋白" prop="lactoferrin">
|
||||
<el-input v-model="form.lactoferrin" placeholder="请输入乳铁蛋白" />
|
||||
<el-form-item label="乳铁蛋白(mg/L)" prop="lactoferrin">
|
||||
<el-input v-model="form.lactoferrin" placeholder="请输入乳铁蛋白(mg/L)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="免疫球蛋白" prop="ig">
|
||||
<el-input v-model="form.ig" placeholder="请输入免疫球蛋白" />
|
||||
<el-form-item label="免疫球蛋白(mg/L)" prop="ig">
|
||||
<el-input v-model="form.ig" placeholder="请输入免疫球蛋白(mg/L)" />
|
||||
</el-form-item>
|
||||
<el-form-item label="备注" prop="commnet">
|
||||
<el-input v-model="form.commnet" placeholder="请输入备注" />
|
||||
<el-input v-model="form.commnet" placeholder="请输入备注" type="textarea" />
|
||||
</el-form-item>
|
||||
<el-form-item label="创建人" v-if="form.id">
|
||||
<el-input v-model="form.createBy" disabled />
|
||||
</el-form-item>
|
||||
<el-form-item label="创建时间" v-if="form.id">
|
||||
<el-input v-model="form.createTime" disabled />
|
||||
</el-form-item>
|
||||
</el-form>
|
||||
<template #footer>
|
||||
@ -268,70 +256,164 @@
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
|
||||
<!-- 列显示设置对话框 -->
|
||||
<el-dialog title="列显示设置" v-model="columnShowDialogVisible" width="500px">
|
||||
<el-checkbox-group v-model="selectedColumns">
|
||||
<el-checkbox label="source">来源</el-checkbox>
|
||||
<el-checkbox label="datetime">检测日期</el-checkbox>
|
||||
<el-checkbox label="fat">脂肪g/100g</el-checkbox>
|
||||
<el-checkbox label="protein">蛋白质g/100g</el-checkbox>
|
||||
<el-checkbox label="nonFat">非脂g/100g</el-checkbox>
|
||||
<el-checkbox label="acidity">酸度oT</el-checkbox>
|
||||
<el-checkbox label="bacterialColony1">菌落总数1</el-checkbox>
|
||||
<el-checkbox label="bacterialColony2">菌落总数2</el-checkbox>
|
||||
<el-checkbox label="bacterialColony3">菌落总数3</el-checkbox>
|
||||
<el-checkbox label="bacterialColony4">菌落总数4</el-checkbox>
|
||||
<el-checkbox label="bacterialColony5">菌落总数5</el-checkbox>
|
||||
<el-checkbox label="coli">大肠菌群(CFU/ml)</el-checkbox>
|
||||
<el-checkbox label="lactoferrin">乳铁蛋白(mg/L)</el-checkbox>
|
||||
<el-checkbox label="ig">免疫球蛋白(mg/L)</el-checkbox>
|
||||
<el-checkbox label="commnet">备注</el-checkbox>
|
||||
<el-checkbox label="createBy">创建人</el-checkbox>
|
||||
<el-checkbox label="createTime">创建时间</el-checkbox>
|
||||
</el-checkbox-group>
|
||||
<template #footer>
|
||||
<div class="dialog-footer">
|
||||
<el-button type="primary" @click="columnShowDialogVisible = false">确 定</el-button>
|
||||
</div>
|
||||
</template>
|
||||
</el-dialog>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script setup name="FreshMilkTest">
|
||||
import { listFreshMilkTest, getFreshMilkTest, delFreshMilkTest, addFreshMilkTest, updateFreshMilkTest } from "@/api/dairyProducts/freshMilkTest/freshMilkTest.js"
|
||||
<script setup>
|
||||
import { ref, reactive, onMounted } from 'vue';
|
||||
import { listFreshMilkTest, getFreshMilkTest, delFreshMilkTest, addFreshMilkTest, updateFreshMilkTest } from "@/api/dairyProducts/freshMilkTest/freshMilkTest.js";
|
||||
import { ElMessage, ElMessageBox } from 'element-plus';
|
||||
|
||||
const { proxy } = getCurrentInstance()
|
||||
const freshMilkTestList = 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 columnShowDialogVisible = ref(false);
|
||||
const freshMilkTestRef = ref(null);
|
||||
|
||||
const freshMilkTestList = 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 selectedColumns = ref([
|
||||
'source', 'datetime', 'fat', 'protein', 'nonFat', 'acidity',
|
||||
'bacterialColony1', 'bacterialColony2', 'bacterialColony3',
|
||||
'bacterialColony4', 'bacterialColony5', 'coli', 'lactoferrin',
|
||||
'ig', 'commnet', 'createBy', 'createTime'
|
||||
]);
|
||||
|
||||
const data = reactive({
|
||||
form: {},
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
source: null,
|
||||
datetime: null,
|
||||
fat: null,
|
||||
protein: null,
|
||||
nonFat: null,
|
||||
acidity: null,
|
||||
bacterialColony1: null,
|
||||
bacterialColony2: null,
|
||||
bacterialColony3: null,
|
||||
bacterialColony4: null,
|
||||
bacterialColony5: null,
|
||||
coli: null,
|
||||
lactoferrin: null,
|
||||
ig: null,
|
||||
commnet: null,
|
||||
},
|
||||
rules: {
|
||||
}
|
||||
})
|
||||
// 查询参数
|
||||
const queryParams = reactive({
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
source: null,
|
||||
datetime: null,
|
||||
});
|
||||
|
||||
const { queryParams, form, rules } = toRefs(data)
|
||||
// 表单数据
|
||||
const form = reactive({
|
||||
id: null,
|
||||
source: null,
|
||||
datetime: null,
|
||||
fat: null,
|
||||
protein: null,
|
||||
nonFat: null,
|
||||
acidity: null,
|
||||
bacterialColony1: null,
|
||||
bacterialColony2: null,
|
||||
bacterialColony3: null,
|
||||
bacterialColony4: null,
|
||||
bacterialColony5: null,
|
||||
coli: null,
|
||||
lactoferrin: null,
|
||||
ig: null,
|
||||
commnet: null,
|
||||
createBy: null,
|
||||
createTime: null
|
||||
});
|
||||
|
||||
/** 查询鲜奶生产,成品检验记录列表 */
|
||||
// 验证规则
|
||||
const rules = reactive({
|
||||
source: [
|
||||
{ required: true, message: "来源不能为空", trigger: "blur" }
|
||||
],
|
||||
datetime: [
|
||||
{ required: true, message: "检测日期不能为空", trigger: "blur" }
|
||||
]
|
||||
});
|
||||
|
||||
/** 获取当前用户名 */
|
||||
const getCurrentUsername = () => {
|
||||
const userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}')
|
||||
return userInfo.userName || userInfo.username || userInfo.nickName || 'admin'
|
||||
}
|
||||
|
||||
/** 查询列表 */
|
||||
function getList() {
|
||||
loading.value = true
|
||||
listFreshMilkTest(queryParams.value).then(response => {
|
||||
freshMilkTestList.value = response.rows
|
||||
total.value = response.total
|
||||
loading.value = false
|
||||
})
|
||||
loading.value = true;
|
||||
listFreshMilkTest(queryParams).then(response => {
|
||||
freshMilkTestList.value = response.rows || [];
|
||||
total.value = response.total || 0;
|
||||
loading.value = false;
|
||||
}).catch(error => {
|
||||
console.error("获取数据失败:", error);
|
||||
loading.value = false;
|
||||
ElMessage.error("获取数据失败");
|
||||
});
|
||||
}
|
||||
|
||||
// 日期格式化函数
|
||||
function formatDate(dateString) {
|
||||
if (!dateString) return '';
|
||||
try {
|
||||
const date = new Date(dateString);
|
||||
const year = date.getFullYear();
|
||||
const month = String(date.getMonth() + 1).padStart(2, '0');
|
||||
const day = String(date.getDate()).padStart(2, '0');
|
||||
return `${year}-${month}-${day}`;
|
||||
} catch (e) {
|
||||
console.error("日期格式化错误:", e);
|
||||
return dateString;
|
||||
}
|
||||
}
|
||||
|
||||
// 日期时间格式化
|
||||
function formatDateTime(dateString) {
|
||||
if (!dateString) return '';
|
||||
try {
|
||||
const date = new Date(dateString);
|
||||
const year = date.getFullYear();
|
||||
const month = String(date.getMonth() + 1).padStart(2, '0');
|
||||
const day = String(date.getDate()).padStart(2, '0');
|
||||
const hours = String(date.getHours()).padStart(2, '0');
|
||||
const minutes = String(date.getMinutes()).padStart(2, '0');
|
||||
const seconds = String(date.getSeconds()).padStart(2, '0');
|
||||
return `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
|
||||
} catch (e) {
|
||||
console.error("日期时间格式化错误:", e);
|
||||
return dateString;
|
||||
}
|
||||
}
|
||||
|
||||
// 取消按钮
|
||||
function cancel() {
|
||||
open.value = false
|
||||
reset()
|
||||
open.value = false;
|
||||
resetForm();
|
||||
}
|
||||
|
||||
// 表单重置
|
||||
function reset() {
|
||||
form.value = {
|
||||
function resetForm() {
|
||||
Object.assign(form, {
|
||||
id: null,
|
||||
source: null,
|
||||
datetime: null,
|
||||
@ -350,85 +432,146 @@ function reset() {
|
||||
commnet: null,
|
||||
createBy: null,
|
||||
createTime: null
|
||||
});
|
||||
|
||||
if (freshMilkTestRef.value) {
|
||||
freshMilkTestRef.value.resetFields();
|
||||
}
|
||||
proxy.resetForm("freshMilkTestRef")
|
||||
}
|
||||
|
||||
/** 搜索按钮操作 */
|
||||
function handleQuery() {
|
||||
queryParams.value.pageNum = 1
|
||||
getList()
|
||||
queryParams.pageNum = 1;
|
||||
getList();
|
||||
}
|
||||
|
||||
/** 重置按钮操作 */
|
||||
function resetQuery() {
|
||||
proxy.resetForm("queryRef")
|
||||
handleQuery()
|
||||
Object.assign(queryParams, {
|
||||
source: null,
|
||||
datetime: null,
|
||||
});
|
||||
handleQuery();
|
||||
}
|
||||
|
||||
// 多选框选中数据
|
||||
function handleSelectionChange(selection) {
|
||||
ids.value = selection.map(item => item.id)
|
||||
single.value = selection.length != 1
|
||||
multiple.value = !selection.length
|
||||
ids.value = selection.map(item => item.id);
|
||||
single.value = selection.length !== 1;
|
||||
multiple.value = !selection.length;
|
||||
}
|
||||
|
||||
/** 新增按钮操作 */
|
||||
function handleAdd() {
|
||||
reset()
|
||||
open.value = true
|
||||
title.value = "添加鲜奶生产,成品检验记录"
|
||||
resetForm();
|
||||
open.value = true;
|
||||
title.value = "添加鲜奶检验记录";
|
||||
|
||||
// 设置创建人和创建时间
|
||||
form.createBy = getCurrentUsername();
|
||||
form.createTime = new Date().toISOString().replace('T', ' ').substring(0, 19);
|
||||
}
|
||||
|
||||
/** 修改按钮操作 */
|
||||
function handleUpdate(row) {
|
||||
reset()
|
||||
const _id = row.id || ids.value
|
||||
getFreshMilkTest(_id).then(response => {
|
||||
form.value = response.data
|
||||
open.value = true
|
||||
title.value = "修改鲜奶生产,成品检验记录"
|
||||
})
|
||||
resetForm();
|
||||
const id = row.id || (ids.value.length ? ids.value[0] : null);
|
||||
if (!id) {
|
||||
ElMessage.error("请选择要修改的数据");
|
||||
return;
|
||||
}
|
||||
|
||||
getFreshMilkTest(id).then(response => {
|
||||
Object.assign(form, response.data);
|
||||
open.value = true;
|
||||
title.value = "修改鲜奶检验记录";
|
||||
}).catch(error => {
|
||||
console.error("获取详情失败:", error);
|
||||
ElMessage.error("获取详情失败");
|
||||
});
|
||||
}
|
||||
|
||||
/** 提交按钮 */
|
||||
function submitForm() {
|
||||
proxy.$refs["freshMilkTestRef"].validate(valid => {
|
||||
freshMilkTestRef.value.validate(valid => {
|
||||
if (valid) {
|
||||
if (form.value.id != null) {
|
||||
updateFreshMilkTest(form.value).then(response => {
|
||||
proxy.$modal.msgSuccess("修改成功")
|
||||
open.value = false
|
||||
getList()
|
||||
})
|
||||
const submitData = { ...form };
|
||||
if (!submitData.id) {
|
||||
submitData.createBy = getCurrentUsername();
|
||||
submitData.createTime = new Date().toISOString().replace('T', ' ').substring(0, 19);
|
||||
} else {
|
||||
addFreshMilkTest(form.value).then(response => {
|
||||
proxy.$modal.msgSuccess("新增成功")
|
||||
open.value = false
|
||||
getList()
|
||||
})
|
||||
delete submitData.createBy;
|
||||
delete submitData.createTime;
|
||||
}
|
||||
|
||||
const request = submitData.id
|
||||
? updateFreshMilkTest(submitData)
|
||||
: addFreshMilkTest(submitData);
|
||||
|
||||
request.then(response => {
|
||||
ElMessage.success(submitData.id ? "修改成功" : "新增成功");
|
||||
open.value = false;
|
||||
getList();
|
||||
}).catch(error => {
|
||||
console.error("操作失败:", error);
|
||||
ElMessage.error("操作失败");
|
||||
});
|
||||
}
|
||||
})
|
||||
});
|
||||
}
|
||||
|
||||
/** 删除按钮操作 */
|
||||
function handleDelete(row) {
|
||||
const _ids = row.id || ids.value
|
||||
proxy.$modal.confirm('是否确认删除鲜奶生产,成品检验记录编号为"' + _ids + '"的数据项?').then(function() {
|
||||
return delFreshMilkTest(_ids)
|
||||
const deleteIds = row.id ? [row.id] : ids.value;
|
||||
if (!deleteIds.length) {
|
||||
ElMessage.error("请选择要删除的数据");
|
||||
return;
|
||||
}
|
||||
|
||||
ElMessageBox.confirm('是否确认删除选中的记录?', '警告', {
|
||||
confirmButtonText: '确定',
|
||||
cancelButtonText: '取消',
|
||||
type: 'warning'
|
||||
}).then(() => {
|
||||
getList()
|
||||
proxy.$modal.msgSuccess("删除成功")
|
||||
}).catch(() => {})
|
||||
return delFreshMilkTest(deleteIds);
|
||||
}).then(() => {
|
||||
getList();
|
||||
ElMessage.success("删除成功");
|
||||
}).catch(error => {
|
||||
console.error("删除失败:", error);
|
||||
if (error !== 'cancel') {
|
||||
ElMessage.error("删除失败");
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
/** 导出按钮操作 */
|
||||
function handleExport() {
|
||||
proxy.download('freshMilkTest/freshMilkTest/export', {
|
||||
...queryParams.value
|
||||
}, `freshMilkTest_${new Date().getTime()}.xlsx`)
|
||||
const params = new URLSearchParams();
|
||||
for (const key in queryParams) {
|
||||
if (queryParams[key] !== null && queryParams[key] !== undefined) {
|
||||
params.append(key, queryParams[key]);
|
||||
}
|
||||
}
|
||||
|
||||
const url = `/freshMilkTest/freshMilkTest/export?${params.toString()}`;
|
||||
window.location.href = url;
|
||||
}
|
||||
|
||||
getList()
|
||||
// 初始化加载
|
||||
onMounted(() => {
|
||||
getList();
|
||||
});
|
||||
</script>
|
||||
|
||||
<style scoped>
|
||||
.app-container {
|
||||
padding: 20px;
|
||||
}
|
||||
.el-form-item {
|
||||
margin-bottom: 15px;
|
||||
}
|
||||
.el-dialog__body {
|
||||
padding: 15px 20px;
|
||||
}
|
||||
</style>
|
@ -1,14 +1,14 @@
|
||||
<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-form-item label="羊只ID" prop="sheepId">
|
||||
<el-input
|
||||
v-model="queryParams.sheepId"
|
||||
placeholder="请输入羊只ID"
|
||||
clearable
|
||||
@keyup.enter="handleQuery"
|
||||
/>
|
||||
</el-form-item>
|
||||
</el-form-item> -->
|
||||
<el-form-item label="耳号" prop="bsManageTags">
|
||||
<el-input
|
||||
v-model="queryParams.bsManageTags"
|
||||
@ -82,9 +82,9 @@
|
||||
|
||||
<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="主键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) }}
|
||||
@ -127,8 +127,11 @@
|
||||
<!-- 添加或修改羊只分组关联对话框 -->
|
||||
<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-form-item label="羊只ID" prop="sheepId">
|
||||
<el-input v-model="form.sheepId" placeholder="请输入羊只ID" />
|
||||
</el-form-item> -->
|
||||
<el-form-item label="耳号列表" prop="earTags">
|
||||
<el-input type="textarea" :rows="4" v-model="form.earTags" :disabled="form.earTagsDisabled" placeholder="请输入耳号,多个耳号用逗号或换行分隔"/>
|
||||
</el-form-item>
|
||||
<el-form-item label="分组" prop="groupId">
|
||||
<el-select v-model="form.groupId" placeholder="请选择分组" clearable>
|
||||
@ -155,7 +158,7 @@
|
||||
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"
|
||||
|
||||
import { addByEarTags } from '@/api/fileManagement/sheep_grouping'
|
||||
|
||||
const { proxy } = getCurrentInstance()
|
||||
|
||||
@ -172,7 +175,11 @@ const leafGroupOptions = ref([])
|
||||
const { sheep_gender } = proxy.useDict('sheep_gender')
|
||||
|
||||
const data = reactive({
|
||||
form: {},
|
||||
form: {
|
||||
earTags: '',
|
||||
groupId: null,
|
||||
earTagsDisabled: false // 新增字段:是否禁用耳号输入框
|
||||
},
|
||||
queryParams: {
|
||||
pageNum: 1,
|
||||
pageSize: 10,
|
||||
@ -182,12 +189,12 @@ const data = reactive({
|
||||
},
|
||||
leafGroupOptions: [],
|
||||
rules: {
|
||||
sheepId: [
|
||||
{ required: true, message: "羊只ID不能为空", trigger: "blur" }
|
||||
earTags: [
|
||||
{ required: true, message: "耳号不能为空", trigger: "blur" }
|
||||
],
|
||||
groupId: [
|
||||
{ required: true, message: "分组ID不能为空", trigger: "change" }
|
||||
]
|
||||
{ required: true, message: "分组不能为空", trigger: "change" }
|
||||
],
|
||||
}
|
||||
})
|
||||
|
||||
@ -205,22 +212,16 @@ const { queryParams, form, rules } = toRefs(data)
|
||||
|
||||
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
|
||||
bsManageTags: queryParams.value.bsManageTags || undefined
|
||||
}
|
||||
console.log(params)
|
||||
const { rows, total: t } = await listSheep_grouping_join(params)
|
||||
console.log(rows)
|
||||
sheep_groupingList.value = rows
|
||||
total.value = t
|
||||
} finally {
|
||||
@ -266,6 +267,8 @@ function handleSelectionChange(selection) {
|
||||
/** 新增按钮操作 */
|
||||
function handleAdd() {
|
||||
reset()
|
||||
form.value.earTagsDisabled = false // 允许输入耳号
|
||||
form.value.earTags = '' // 确保新增时输入框为空
|
||||
open.value = true
|
||||
title.value = "添加羊只分组关联"
|
||||
}
|
||||
@ -273,35 +276,98 @@ function handleAdd() {
|
||||
/** 修改按钮操作 */
|
||||
function handleUpdate(row) {
|
||||
reset()
|
||||
const _id = row.id || ids.value
|
||||
getSheep_grouping(_id).then(response => {
|
||||
form.value = response.data
|
||||
open.value = true
|
||||
title.value = "修改羊只分组关联"
|
||||
})
|
||||
}
|
||||
form.value = {...row,
|
||||
earTags: row.bs_manage_tags,
|
||||
groupId: row.group_id,
|
||||
originalGroupId: row.group_id, // 用于前端预校验
|
||||
earTagsDisabled: true
|
||||
}
|
||||
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 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()
|
||||
})
|
||||
if (!valid) return;
|
||||
|
||||
// ── 1. 修改模式(单条) ──
|
||||
if (form.value.id != null) {
|
||||
|
||||
// 前端预校验:是否已在此分组
|
||||
if (form.value.groupId === form.value.originalGroupId) {
|
||||
proxy.$modal.msgWarning("该羊已在此分组,无需修改");
|
||||
return;
|
||||
}
|
||||
// 只需要更新分组
|
||||
|
||||
console.log(form.value)
|
||||
const data = {
|
||||
id: form.value.id,
|
||||
sheepId:form.value.sheep_id,
|
||||
groupId: form.value.groupId
|
||||
};
|
||||
updateSheep_grouping(data).then(() => {
|
||||
proxy.$modal.msgSuccess("修改成功");
|
||||
open.value = false;
|
||||
getList();
|
||||
});
|
||||
return;
|
||||
}
|
||||
})
|
||||
|
||||
// ── 2. 新增模式(耳号批量) ──
|
||||
const earTags = form.value.earTags
|
||||
.split(/[,\n,\s]+/)
|
||||
.map(tag => tag.trim())
|
||||
.filter(tag => tag);
|
||||
|
||||
const data = { earTags, groupId: form.value.groupId };
|
||||
|
||||
addByEarTags(data)
|
||||
.then(res => {
|
||||
if (res.data?.success) {
|
||||
proxy.$modal.msgSuccess(`新增成功,共 ${res.data.inserted} 条`);
|
||||
open.value = false;
|
||||
getList();
|
||||
} else {
|
||||
const missing = res.data?.missing || [];
|
||||
const already = res.data?.alreadyInGroup || [];
|
||||
if (missing.length) {
|
||||
proxy.$modal.alertError(`以下耳号不存在:${missing.join(", ")}`);
|
||||
} else if (already.length) {
|
||||
proxy.$modal.alertWarning(`以下耳号已在该分组:${already.join(", ")}`);
|
||||
} else {
|
||||
proxy.$modal.alertWarning("所有羊只已存在于该分组");
|
||||
}
|
||||
}
|
||||
})
|
||||
.catch(() => proxy.$modal.msgError("系统异常,请联系管理员"));
|
||||
});
|
||||
}
|
||||
|
||||
|
||||
/** 删除按钮操作 */
|
||||
function handleDelete(row) {
|
||||
const _ids = row.id || ids.value
|
||||
|
Loading…
x
Reference in New Issue
Block a user