Merge branch 'main' of http://e19510c831.iok.la/admin/zhyc-sheep-ui
This commit is contained in:
commit
72fddd06e5
@ -34,7 +34,8 @@
|
|||||||
"vue": "3.4.31",
|
"vue": "3.4.31",
|
||||||
"vue-cropper": "1.1.1",
|
"vue-cropper": "1.1.1",
|
||||||
"vue-router": "4.4.0",
|
"vue-router": "4.4.0",
|
||||||
"vuedraggable": "4.1.0"
|
"vuedraggable": "4.1.0",
|
||||||
|
"vuex": "^4.0.2"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@vitejs/plugin-vue": "5.0.5",
|
"@vitejs/plugin-vue": "5.0.5",
|
||||||
|
10
src/api/produce/sheep/sheep.js
Normal file
10
src/api/produce/sheep/sheep.js
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
import request from '@/utils/request';
|
||||||
|
|
||||||
|
// 新增羊只基本信息
|
||||||
|
export function addSheep(data) {
|
||||||
|
return request({
|
||||||
|
url: '/produce/sheep', // 确保这是正确的后端接口地址
|
||||||
|
method: 'post',
|
||||||
|
data: data
|
||||||
|
});
|
||||||
|
}
|
@ -17,142 +17,6 @@
|
|||||||
@keyup.enter="handleQuery"
|
@keyup.enter="handleQuery"
|
||||||
/>
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="冰点" prop="freeze">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.freeze"
|
|
||||||
placeholder="请输入冰点"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="相对密度" prop="density">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.density"
|
|
||||||
placeholder="请输入相对密度"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
/>
|
|
||||||
</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="干物质mg/100g" prop="dryMatter">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.dryMatter"
|
|
||||||
placeholder="请输入干物质mg/100g"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="杂物质mg/100g" prop="impurity">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.impurity"
|
|
||||||
placeholder="请输入杂物质mg/100g"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="乳糖g/100g" prop="lactose">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.lactose"
|
|
||||||
placeholder="请输入乳糖g/100g"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="酸度" prop="acidity">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.acidity"
|
|
||||||
placeholder="请输入酸度"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="ph" prop="ph">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.ph"
|
|
||||||
placeholder="请输入ph"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="菌落总数" prop="bacterialColony">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.bacterialColony"
|
|
||||||
placeholder="请输入菌落总数"
|
|
||||||
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="somaticCell">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.somaticCell"
|
|
||||||
placeholder="请输入体细胞"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="尿素氮" prop="usea">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.usea"
|
|
||||||
placeholder="请输入尿素氮"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="脂蛋比" prop="fatRatio">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.fatRatio"
|
|
||||||
placeholder="请输入脂蛋比"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
/>
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="备注" prop="comment">
|
|
||||||
<el-input
|
|
||||||
v-model="queryParams.comment"
|
|
||||||
placeholder="请输入备注"
|
|
||||||
clearable
|
|
||||||
@keyup.enter="handleQuery"
|
|
||||||
/>
|
|
||||||
</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>
|
||||||
@ -198,36 +62,49 @@
|
|||||||
v-hasPermi="['rawMilkTest:rawMilkTest:export']"
|
v-hasPermi="['rawMilkTest:rawMilkTest:export']"
|
||||||
>导出</el-button>
|
>导出</el-button>
|
||||||
</el-col>
|
</el-col>
|
||||||
|
<el-col :span="1.5">
|
||||||
|
<el-button
|
||||||
|
type="info"
|
||||||
|
plain
|
||||||
|
icon="Menu"
|
||||||
|
@click="showColumnSelector = true"
|
||||||
|
>字段显示</el-button>
|
||||||
|
</el-col>
|
||||||
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
<right-toolbar v-model:showSearch="showSearch" @queryTable="getList"></right-toolbar>
|
||||||
</el-row>
|
</el-row>
|
||||||
|
|
||||||
<el-table v-loading="loading" :data="rawMilkTestList" @selection-change="handleSelectionChange">
|
<el-table v-loading="loading" :data="rawMilkTestList" @selection-change="handleSelectionChange">
|
||||||
<el-table-column type="selection" width="55" align="center" />
|
<el-table-column type="selection" width="55" align="center" />
|
||||||
<el-table-column label="${comment}" align="center" prop="id" />
|
<el-table-column label="检测日期" align="center" prop="datetime" width="180" v-if="visibleColumns.datetime">
|
||||||
<el-table-column label="检测日期" align="center" prop="datetime" width="180">
|
|
||||||
<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="source" />
|
<el-table-column label="来源" align="center" prop="source" v-if="visibleColumns.source" />
|
||||||
<el-table-column label="冰点" align="center" prop="freeze" />
|
<el-table-column label="冰点" align="center" prop="freeze" v-if="visibleColumns.freeze" />
|
||||||
<el-table-column label="相对密度" align="center" prop="density" />
|
<el-table-column label="相对密度" align="center" prop="density" v-if="visibleColumns.density" />
|
||||||
<el-table-column label="脂肪g/100g" align="center" prop="fat" />
|
<el-table-column label="脂肪g/100g" align="center" prop="fat" v-if="visibleColumns.fat" />
|
||||||
<el-table-column label="蛋白质g/100g" align="center" prop="protein" />
|
<el-table-column label="蛋白质g/100g" align="center" prop="protein" v-if="visibleColumns.protein" />
|
||||||
<el-table-column label="非脂g/100g" align="center" prop="nonFat" />
|
<el-table-column label="非脂g/100g" align="center" prop="nonFat" v-if="visibleColumns.nonFat" />
|
||||||
<el-table-column label="干物质mg/100g" align="center" prop="dryMatter" />
|
<el-table-column label="干物质mg/100g" align="center" prop="dryMatter" v-if="visibleColumns.dryMatter" />
|
||||||
<el-table-column label="杂物质mg/100g" align="center" prop="impurity" />
|
<el-table-column label="杂质度mg/100g" align="center" prop="impurityDegree" v-if="visibleColumns.impurityDegree" />
|
||||||
<el-table-column label="乳糖g/100g" align="center" prop="lactose" />
|
<el-table-column label="乳糖g/100g" align="center" prop="lactose" v-if="visibleColumns.lactose" />
|
||||||
<el-table-column label="灰度g/100g" align="center" prop="ashContent" />
|
<el-table-column label="灰度g/100g" align="center" prop="ashContent" v-if="visibleColumns.ashContent" />
|
||||||
<el-table-column label="酸度" align="center" prop="acidity" />
|
<el-table-column label="酸度" align="center" prop="acidity" v-if="visibleColumns.acidity" />
|
||||||
<el-table-column label="ph" align="center" prop="ph" />
|
<el-table-column label="ph" align="center" prop="ph" v-if="visibleColumns.ph" />
|
||||||
<el-table-column label="菌落总数" align="center" prop="bacterialColony" />
|
<el-table-column label="菌落总数" align="center" prop="bacterialColony" v-if="visibleColumns.bacterialColony" />
|
||||||
<el-table-column label="乳铁蛋白" align="center" prop="lactoferrin" />
|
<el-table-column label="乳铁蛋白" align="center" prop="lactoferrin" v-if="visibleColumns.lactoferrin" />
|
||||||
<el-table-column label="免疫球蛋白" align="center" prop="ig" />
|
<el-table-column label="免疫球蛋白" align="center" prop="ig" v-if="visibleColumns.ig" />
|
||||||
<el-table-column label="体细胞" align="center" prop="somaticCell" />
|
<el-table-column label="体细胞" align="center" prop="somaticCell" v-if="visibleColumns.somaticCell" />
|
||||||
<el-table-column label="尿素氮" align="center" prop="usea" />
|
<el-table-column label="尿素氮" align="center" prop="usea" v-if="visibleColumns.usea" />
|
||||||
<el-table-column label="脂蛋比" align="center" prop="fatRatio" />
|
<el-table-column label="脂蛋比" align="center" prop="fatRatio" v-if="visibleColumns.fatRatio" />
|
||||||
<el-table-column label="备注" align="center" prop="comment" />
|
<el-table-column label="备注" align="center" prop="comment" v-if="visibleColumns.comment" />
|
||||||
|
<el-table-column label="创建人" align="center" prop="createBy" v-if="visibleColumns.createBy" />
|
||||||
|
<el-table-column label="创建时间" align="center" prop="createTime" width="180" v-if="visibleColumns.createTime">
|
||||||
|
<template #default="scope">
|
||||||
|
<span>{{ parseTime(scope.row.createTime, '{y}-{m}-{d} {h}:{i}:{s}') }}</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)" v-hasPermi="['rawMilkTest:rawMilkTest:edit']">修改</el-button>
|
<el-button link type="primary" icon="Edit" @click="handleUpdate(scope.row)" v-hasPermi="['rawMilkTest:rawMilkTest:edit']">修改</el-button>
|
||||||
@ -246,7 +123,7 @@
|
|||||||
|
|
||||||
<!-- 添加或修改生乳检验记录对话框 -->
|
<!-- 添加或修改生乳检验记录对话框 -->
|
||||||
<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="rawMilkTestRef" :model="form" :rules="rules" label-width="80px">
|
<el-form ref="rawMilkTestRef" :model="form" :rules="rules" label-width="120px">
|
||||||
<el-form-item label="检测日期" prop="datetime">
|
<el-form-item label="检测日期" prop="datetime">
|
||||||
<el-date-picker clearable
|
<el-date-picker clearable
|
||||||
v-model="form.datetime"
|
v-model="form.datetime"
|
||||||
@ -265,10 +142,18 @@
|
|||||||
<el-input v-model="form.density" placeholder="请输入相对密度" />
|
<el-input v-model="form.density" placeholder="请输入相对密度" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="脂肪g/100g" prop="fat">
|
<el-form-item label="脂肪g/100g" prop="fat">
|
||||||
<el-input v-model="form.fat" placeholder="请输入脂肪g/100g" />
|
<el-input
|
||||||
|
v-model="form.fat"
|
||||||
|
placeholder="请输入脂肪g/100g"
|
||||||
|
@input="calculateFatRatio"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="蛋白质g/100g" prop="protein">
|
<el-form-item label="蛋白质g/100g" prop="protein">
|
||||||
<el-input v-model="form.protein" placeholder="请输入蛋白质g/100g" />
|
<el-input
|
||||||
|
v-model="form.protein"
|
||||||
|
placeholder="请输入蛋白质g/100g"
|
||||||
|
@input="calculateFatRatio"
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="非脂g/100g" prop="nonFat">
|
<el-form-item label="非脂g/100g" prop="nonFat">
|
||||||
<el-input v-model="form.nonFat" placeholder="请输入非脂g/100g" />
|
<el-input v-model="form.nonFat" placeholder="请输入非脂g/100g" />
|
||||||
@ -276,14 +161,14 @@
|
|||||||
<el-form-item label="干物质mg/100g" prop="dryMatter">
|
<el-form-item label="干物质mg/100g" prop="dryMatter">
|
||||||
<el-input v-model="form.dryMatter" placeholder="请输入干物质mg/100g" />
|
<el-input v-model="form.dryMatter" placeholder="请输入干物质mg/100g" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="杂物质mg/100g" prop="impurity">
|
<el-form-item label="杂质度mg/100g" prop="impurityDegree">
|
||||||
<el-input v-model="form.impurity" placeholder="请输入杂物质mg/100g" />
|
<el-input v-model="form.impurityDegree" placeholder="请输入杂质度mg/100g" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="乳糖g/100g" prop="lactose">
|
<el-form-item label="乳糖g/100g" prop="lactose">
|
||||||
<el-input v-model="form.lactose" placeholder="请输入乳糖g/100g" />
|
<el-input v-model="form.lactose" placeholder="请输入乳糖g/100g" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="灰度g/100g">
|
<el-form-item label="灰度g/100g" prop="ashContent">
|
||||||
<editor v-model="form.ashContent" :min-height="192"/>
|
<el-input v-model="form.ashContent" placeholder="请输入灰度g/100g" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="酸度" prop="acidity">
|
<el-form-item label="酸度" prop="acidity">
|
||||||
<el-input v-model="form.acidity" placeholder="请输入酸度" />
|
<el-input v-model="form.acidity" placeholder="请输入酸度" />
|
||||||
@ -307,11 +192,21 @@
|
|||||||
<el-input v-model="form.usea" placeholder="请输入尿素氮" />
|
<el-input v-model="form.usea" placeholder="请输入尿素氮" />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="脂蛋比" prop="fatRatio">
|
<el-form-item label="脂蛋比" prop="fatRatio">
|
||||||
<el-input v-model="form.fatRatio" placeholder="请输入脂蛋比" />
|
<el-input
|
||||||
|
v-model="form.fatRatio"
|
||||||
|
placeholder="自动计算"
|
||||||
|
readonly
|
||||||
|
/>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="备注" prop="comment">
|
<el-form-item label="备注" prop="comment">
|
||||||
<el-input v-model="form.comment" placeholder="请输入备注" />
|
<el-input v-model="form.comment" placeholder="请输入备注" />
|
||||||
</el-form-item>
|
</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>
|
</el-form>
|
||||||
<template #footer>
|
<template #footer>
|
||||||
<div class="dialog-footer">
|
<div class="dialog-footer">
|
||||||
@ -320,14 +215,39 @@
|
|||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
</el-dialog>
|
</el-dialog>
|
||||||
|
|
||||||
|
<!-- 字段选择对话框 -->
|
||||||
|
<el-dialog title="字段显示设置" v-model="showColumnSelector" width="600px" append-to-body>
|
||||||
|
<el-checkbox-group v-model="selectedColumns">
|
||||||
|
<el-row>
|
||||||
|
<el-col :span="8" v-for="column in allColumns" :key="column.prop">
|
||||||
|
<el-checkbox :label="column.prop">{{ column.label }}</el-checkbox>
|
||||||
|
</el-col>
|
||||||
|
</el-row>
|
||||||
|
</el-checkbox-group>
|
||||||
|
<template #footer>
|
||||||
|
<div class="dialog-footer">
|
||||||
|
<el-button type="primary" @click="applyColumnSelection">确 定</el-button>
|
||||||
|
<el-button @click="showColumnSelector = false">取 消</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-dialog>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="RawMilkTest">
|
<script setup name="RawMilkTest">
|
||||||
import { listRawMilkTest, getRawMilkTest, delRawMilkTest, addRawMilkTest, updateRawMilkTest } from "@/api/dairyProducts/rawMilkTest/rawMilkTest.js"
|
import { listRawMilkTest, getRawMilkTest, delRawMilkTest, addRawMilkTest, updateRawMilkTest } from "@/api/dairyProducts/rawMilkTest/rawMilkTest.js"
|
||||||
|
import { getCurrentInstance, ref, reactive, toRefs, onMounted } from 'vue'
|
||||||
|
import { parseTime } from '@/utils/ruoyi'
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance()
|
const { proxy } = getCurrentInstance()
|
||||||
|
|
||||||
|
// 获取当前用户名
|
||||||
|
const getCurrentUsername = () => {
|
||||||
|
const userInfo = JSON.parse(localStorage.getItem('userInfo') || '{}')
|
||||||
|
return userInfo.userName || userInfo.username || userInfo.nickName || 'admin'
|
||||||
|
}
|
||||||
|
|
||||||
const rawMilkTestList = ref([])
|
const rawMilkTestList = ref([])
|
||||||
const open = ref(false)
|
const open = ref(false)
|
||||||
const loading = ref(true)
|
const loading = ref(true)
|
||||||
@ -337,6 +257,51 @@ const single = ref(true)
|
|||||||
const multiple = ref(true)
|
const multiple = ref(true)
|
||||||
const total = ref(0)
|
const total = ref(0)
|
||||||
const title = ref("")
|
const title = ref("")
|
||||||
|
const showColumnSelector = ref(false)
|
||||||
|
|
||||||
|
// 所有可选的列配置
|
||||||
|
const allColumns = ref([
|
||||||
|
{ prop: 'datetime', label: '检测日期' },
|
||||||
|
{ prop: 'source', label: '来源' },
|
||||||
|
{ prop: 'freeze', label: '冰点' },
|
||||||
|
{ prop: 'density', label: '相对密度' },
|
||||||
|
{ prop: 'fat', label: '脂肪g/100g' },
|
||||||
|
{ prop: 'protein', label: '蛋白质g/100g' },
|
||||||
|
{ prop: 'nonFat', label: '非脂g/100g' },
|
||||||
|
{ prop: 'dryMatter', label: '干物质mg/100g' },
|
||||||
|
{ prop: 'impurityDegree', label: '杂质度mg/100g' },
|
||||||
|
{ prop: 'lactose', label: '乳糖g/100g' },
|
||||||
|
{ prop: 'ashContent', label: '灰度g/100g' },
|
||||||
|
{ prop: 'acidity', label: '酸度' },
|
||||||
|
{ prop: 'ph', label: 'ph' },
|
||||||
|
{ prop: 'bacterialColony', label: '菌落总数' },
|
||||||
|
{ prop: 'lactoferrin', label: '乳铁蛋白' },
|
||||||
|
{ prop: 'ig', label: '免疫球蛋白' },
|
||||||
|
{ prop: 'somaticCell', label: '体细胞' },
|
||||||
|
{ prop: 'usea', label: '尿素氮' },
|
||||||
|
{ prop: 'fatRatio', label: '脂蛋比' },
|
||||||
|
{ prop: 'comment', label: '备注' },
|
||||||
|
{ prop: 'createBy', label: '创建人' },
|
||||||
|
{ prop: 'createTime', label: '创建时间' }
|
||||||
|
])
|
||||||
|
|
||||||
|
// 默认选中的列
|
||||||
|
const selectedColumns = ref([
|
||||||
|
'datetime', 'source', 'freeze', 'density', 'fat', 'protein', 'nonFat',
|
||||||
|
'dryMatter', 'impurityDegree', 'lactose', 'ashContent', 'acidity', 'ph',
|
||||||
|
'bacterialColony', 'lactoferrin', 'ig', 'somaticCell', 'usea', 'fatRatio',
|
||||||
|
'comment', 'createBy', 'createTime'
|
||||||
|
])
|
||||||
|
|
||||||
|
// 当前显示的列
|
||||||
|
const visibleColumns = ref({})
|
||||||
|
|
||||||
|
// 初始化列显示状态
|
||||||
|
const initVisibleColumns = () => {
|
||||||
|
allColumns.value.forEach(column => {
|
||||||
|
visibleColumns.value[column.prop] = selectedColumns.value.includes(column.prop)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
const data = reactive({
|
const data = reactive({
|
||||||
form: {},
|
form: {},
|
||||||
@ -344,32 +309,43 @@ const data = reactive({
|
|||||||
pageNum: 1,
|
pageNum: 1,
|
||||||
pageSize: 10,
|
pageSize: 10,
|
||||||
datetime: null,
|
datetime: null,
|
||||||
source: null,
|
source: null
|
||||||
freeze: null,
|
|
||||||
density: null,
|
|
||||||
fat: null,
|
|
||||||
protein: null,
|
|
||||||
nonFat: null,
|
|
||||||
dryMatter: null,
|
|
||||||
impurity: null,
|
|
||||||
lactose: null,
|
|
||||||
ashContent: null,
|
|
||||||
acidity: null,
|
|
||||||
ph: null,
|
|
||||||
bacterialColony: null,
|
|
||||||
lactoferrin: null,
|
|
||||||
ig: null,
|
|
||||||
somaticCell: null,
|
|
||||||
usea: null,
|
|
||||||
fatRatio: null,
|
|
||||||
comment: null,
|
|
||||||
},
|
},
|
||||||
rules: {
|
rules: {
|
||||||
|
datetime: [
|
||||||
|
{ required: true, message: "检测日期不能为空", trigger: "blur" }
|
||||||
|
],
|
||||||
|
source: [
|
||||||
|
{ required: true, message: "来源不能为空", trigger: "blur" }
|
||||||
|
],
|
||||||
|
// 其他字段根据需要添加验证规则
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
|
||||||
const { queryParams, form, rules } = toRefs(data)
|
const { queryParams, form, rules } = toRefs(data)
|
||||||
|
|
||||||
|
// 应用列选择
|
||||||
|
const applyColumnSelection = () => {
|
||||||
|
initVisibleColumns()
|
||||||
|
showColumnSelector.value = false
|
||||||
|
}
|
||||||
|
|
||||||
|
// 脂蛋比计算方法
|
||||||
|
const calculateFatRatio = () => {
|
||||||
|
try {
|
||||||
|
const fat = parseFloat(form.value.fat)
|
||||||
|
const protein = parseFloat(form.value.protein)
|
||||||
|
|
||||||
|
if (!isNaN(fat) && !isNaN(protein) && protein !== 0) {
|
||||||
|
form.value.fatRatio = (fat / protein).toFixed(4) // 保留4位小数
|
||||||
|
} else {
|
||||||
|
form.value.fatRatio = ""
|
||||||
|
}
|
||||||
|
} catch (e) {
|
||||||
|
form.value.fatRatio = ""
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/** 查询生乳检验记录列表 */
|
/** 查询生乳检验记录列表 */
|
||||||
function getList() {
|
function getList() {
|
||||||
loading.value = true
|
loading.value = true
|
||||||
@ -377,6 +353,8 @@ function getList() {
|
|||||||
rawMilkTestList.value = response.rows
|
rawMilkTestList.value = response.rows
|
||||||
total.value = response.total
|
total.value = response.total
|
||||||
loading.value = false
|
loading.value = false
|
||||||
|
}).catch(() => {
|
||||||
|
loading.value = false
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -398,7 +376,7 @@ function reset() {
|
|||||||
protein: null,
|
protein: null,
|
||||||
nonFat: null,
|
nonFat: null,
|
||||||
dryMatter: null,
|
dryMatter: null,
|
||||||
impurity: null,
|
impurityDegree: null,
|
||||||
lactose: null,
|
lactose: null,
|
||||||
ashContent: null,
|
ashContent: null,
|
||||||
acidity: null,
|
acidity: null,
|
||||||
@ -409,9 +387,7 @@ function reset() {
|
|||||||
somaticCell: null,
|
somaticCell: null,
|
||||||
usea: null,
|
usea: null,
|
||||||
fatRatio: null,
|
fatRatio: null,
|
||||||
comment: null,
|
comment: null
|
||||||
createBy: null,
|
|
||||||
createTime: null
|
|
||||||
}
|
}
|
||||||
proxy.resetForm("rawMilkTestRef")
|
proxy.resetForm("rawMilkTestRef")
|
||||||
}
|
}
|
||||||
@ -440,6 +416,20 @@ function handleAdd() {
|
|||||||
reset()
|
reset()
|
||||||
open.value = true
|
open.value = true
|
||||||
title.value = "添加生乳检验记录"
|
title.value = "添加生乳检验记录"
|
||||||
|
|
||||||
|
// 设置创建人和创建时间(格式化为YYYY-MM-DD HH:mm:ss)
|
||||||
|
form.value.createBy = getCurrentUsername()
|
||||||
|
form.value.createTime = new Date().toLocaleString('zh-CN', {
|
||||||
|
year: 'numeric',
|
||||||
|
month: '2-digit',
|
||||||
|
day: '2-digit',
|
||||||
|
hour: '2-digit',
|
||||||
|
minute: '2-digit',
|
||||||
|
second: '2-digit'
|
||||||
|
}).replace(/\//g, '-')
|
||||||
|
|
||||||
|
// 初始化脂蛋比
|
||||||
|
form.value.fatRatio = ""
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 修改按钮操作 */
|
/** 修改按钮操作 */
|
||||||
@ -448,8 +438,12 @@ function handleUpdate(row) {
|
|||||||
const _id = row.id || ids.value
|
const _id = row.id || ids.value
|
||||||
getRawMilkTest(_id).then(response => {
|
getRawMilkTest(_id).then(response => {
|
||||||
form.value = response.data
|
form.value = response.data
|
||||||
|
// 计算脂蛋比
|
||||||
|
calculateFatRatio()
|
||||||
open.value = true
|
open.value = true
|
||||||
title.value = "修改生乳检验记录"
|
title.value = "修改生乳检验记录"
|
||||||
|
}).catch(() => {
|
||||||
|
proxy.$modal.msgError("获取数据失败")
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -457,19 +451,31 @@ function handleUpdate(row) {
|
|||||||
function submitForm() {
|
function submitForm() {
|
||||||
proxy.$refs["rawMilkTestRef"].validate(valid => {
|
proxy.$refs["rawMilkTestRef"].validate(valid => {
|
||||||
if (valid) {
|
if (valid) {
|
||||||
if (form.value.id != null) {
|
// 新增时设置创建信息
|
||||||
updateRawMilkTest(form.value).then(response => {
|
if (form.value.id == null) {
|
||||||
proxy.$modal.msgSuccess("修改成功")
|
form.value.createBy = getCurrentUsername()
|
||||||
open.value = false
|
form.value.createTime = new Date().toLocaleString('zh-CN', {
|
||||||
getList()
|
year: 'numeric',
|
||||||
})
|
month: '2-digit',
|
||||||
} else {
|
day: '2-digit',
|
||||||
addRawMilkTest(form.value).then(response => {
|
hour: '2-digit',
|
||||||
proxy.$modal.msgSuccess("新增成功")
|
minute: '2-digit',
|
||||||
open.value = false
|
second: '2-digit'
|
||||||
getList()
|
}).replace(/\//g, '-')
|
||||||
})
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const savePromise = form.value.id
|
||||||
|
? updateRawMilkTest(form.value)
|
||||||
|
: addRawMilkTest(form.value)
|
||||||
|
|
||||||
|
savePromise.then(response => {
|
||||||
|
proxy.$modal.msgSuccess(form.value.id ? "修改成功" : "新增成功")
|
||||||
|
open.value = false
|
||||||
|
getList()
|
||||||
|
}).catch(error => {
|
||||||
|
console.error("保存失败:", error)
|
||||||
|
proxy.$modal.msgError("操作失败,请重试")
|
||||||
|
})
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
@ -482,7 +488,10 @@ function handleDelete(row) {
|
|||||||
}).then(() => {
|
}).then(() => {
|
||||||
getList()
|
getList()
|
||||||
proxy.$modal.msgSuccess("删除成功")
|
proxy.$modal.msgSuccess("删除成功")
|
||||||
}).catch(() => {})
|
}).catch(error => {
|
||||||
|
console.error("删除失败:", error)
|
||||||
|
proxy.$modal.msgError("删除失败")
|
||||||
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
/** 导出按钮操作 */
|
/** 导出按钮操作 */
|
||||||
@ -492,5 +501,8 @@ function handleExport() {
|
|||||||
}, `rawMilkTest_${new Date().getTime()}.xlsx`)
|
}, `rawMilkTest_${new Date().getTime()}.xlsx`)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
initVisibleColumns()
|
||||||
getList()
|
getList()
|
||||||
|
})
|
||||||
</script>
|
</script>
|
@ -109,7 +109,7 @@
|
|||||||
<script setup>
|
<script setup>
|
||||||
import { ref } from 'vue';
|
import { ref } from 'vue';
|
||||||
import { addSheep } from '@/api/produce/manage_sheep/add_sheep/add_sheep';
|
import { addSheep } from '@/api/produce/manage_sheep/add_sheep/add_sheep';
|
||||||
import { listSheepfold_management as listSheepfold } from '@/api/sheepfold_management/sheepfold_management';
|
import { listSheepfold_management as listSheepfold } from '@/api/fileManagement/sheepfold_management';
|
||||||
|
|
||||||
const form = ref({
|
const form = ref({
|
||||||
earNumber: '',
|
earNumber: '',
|
||||||
@ -143,21 +143,24 @@ const rules = {
|
|||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
//表单验证
|
//表单验证 提交表单数据
|
||||||
const submitForm = () => {
|
const submitForm = () => {
|
||||||
formRef.value.validate((valid) => {
|
formRef.value.validate((valid) => {
|
||||||
console.log('表单验证结果:', valid);
|
|
||||||
if (valid) {
|
if (valid) {
|
||||||
addSheep(form.value)
|
addSheep(form.value) // 调用 API 方法,addSheep 应已在 @/api/sheep/sheep.js 中定义
|
||||||
.then(response => {
|
.then(response => {
|
||||||
console.log('后端响应:', response);
|
|
||||||
if (response.code === 200) {
|
if (response.code === 200) {
|
||||||
alert('新增成功');
|
alert('新增成功');
|
||||||
resetForm();
|
resetForm();
|
||||||
|
// 可以在这里添加刷新列表的逻辑,例如调用 list 方法
|
||||||
} else {
|
} else {
|
||||||
alert(response.msg || '新增失败');
|
alert(response.msg || '新增失败');
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
.catch(error => {
|
||||||
|
console.error('新增失败:', error);
|
||||||
|
alert('新增失败,请稍后重试');
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
alert('请填写所有必填字段');
|
alert('请填写所有必填字段');
|
||||||
}
|
}
|
||||||
|
@ -107,9 +107,8 @@
|
|||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="转群原因" prop="reason">
|
<el-form-item label="转群原因" prop="reason">
|
||||||
<el-select v-model="form.reason" placeholder="请选择转群原因">
|
<el-select v-model="form.reason" placeholder="请选择转群原因" clearable>
|
||||||
<el-option v-for="dict in trans_group_reason" :key="dict.value" :label="dict.label"
|
<el-option v-for="dict in trans_group_reason" :key="dict.value" :label="dict.label" :value="dict.value" />
|
||||||
:value="dict.value"></el-option>
|
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="技术员" prop="technician">
|
<el-form-item label="技术员" prop="technician">
|
||||||
@ -134,15 +133,16 @@
|
|||||||
<el-form-item label="羊只id">
|
<el-form-item label="羊只id">
|
||||||
<el-input v-model="approveForm.sheepId" disabled />
|
<el-input v-model="approveForm.sheepId" disabled />
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="转入羊舍">
|
|
||||||
<el-input v-model="approveForm.foldTo" disabled />
|
|
||||||
</el-form-item>
|
|
||||||
<el-form-item label="转出羊舍">
|
<el-form-item label="转出羊舍">
|
||||||
<el-input v-model="approveForm.foldFrom" disabled />
|
<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>
|
||||||
<el-form-item label="转群原因">
|
<el-form-item label="转群原因">
|
||||||
<el-select v-model="approveForm.reason" disabled>
|
<el-select v-model="approveForm.reason" disabled>
|
||||||
<el-option v-for="dict in trans_group_reason" :key="dict.value" :label="dict.label" :value="dict.value" />
|
<el-option :label="trans_group_reason.find(d => d.value == approveForm.reason)?.label || ''"
|
||||||
|
:value="approveForm.reason" />
|
||||||
</el-select>
|
</el-select>
|
||||||
</el-form-item>
|
</el-form-item>
|
||||||
<el-form-item label="技术员">
|
<el-form-item label="技术员">
|
||||||
@ -163,7 +163,8 @@
|
|||||||
|
|
||||||
<script setup name="Trans_group">
|
<script setup name="Trans_group">
|
||||||
import { listTrans_group, getTrans_group, delTrans_group, addTrans_group, updateTrans_group } from "@/api/produce/manage_sheep/trans_group/trans_group"
|
import { listTrans_group, getTrans_group, delTrans_group, addTrans_group, updateTrans_group } from "@/api/produce/manage_sheep/trans_group/trans_group"
|
||||||
import { listSheepfold_management as listSheepfold } from '@/api/sheepfold_management/sheepfold_management';
|
import { listSheepfold_management as listSheepfold } from '@/api/fileManagement/sheepfold_management';
|
||||||
|
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance()
|
const { proxy } = getCurrentInstance()
|
||||||
const { trans_group_reason, status } = proxy.useDict('trans_group_reason', 'status')
|
const { trans_group_reason, status } = proxy.useDict('trans_group_reason', 'status')
|
||||||
@ -284,9 +285,12 @@ function handleUpdate(row) {
|
|||||||
reset()
|
reset()
|
||||||
const _id = row.id || ids.value
|
const _id = row.id || ids.value
|
||||||
getTrans_group(_id).then(response => {
|
getTrans_group(_id).then(response => {
|
||||||
form.value = response.data
|
const data = response.data
|
||||||
|
data.foldFrom = Number(data.foldFrom)
|
||||||
|
data.foldTo = Number(data.foldTo)
|
||||||
|
data.reason = String(data.reason)
|
||||||
|
form.value = data
|
||||||
open.value = true
|
open.value = true
|
||||||
title.value = "修改转群记录"
|
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -329,7 +333,6 @@ function handleExport() {
|
|||||||
}, `trans_group_${new Date().getTime()}.xlsx`);
|
}, `trans_group_${new Date().getTime()}.xlsx`);
|
||||||
}
|
}
|
||||||
|
|
||||||
getList()
|
|
||||||
|
|
||||||
// 审批记录的对话框
|
// 审批记录的对话框
|
||||||
const approveDialog = ref(false);
|
const approveDialog = ref(false);
|
||||||
@ -337,7 +340,6 @@ const approveForm = ref({});
|
|||||||
|
|
||||||
// 审批按钮操作
|
// 审批按钮操作
|
||||||
function handleApprove(row) {
|
function handleApprove(row) {
|
||||||
// 打开审批对话框
|
|
||||||
approveForm.value = { ...row };
|
approveForm.value = { ...row };
|
||||||
approveDialog.value = true;
|
approveDialog.value = true;
|
||||||
}
|
}
|
||||||
@ -366,7 +368,7 @@ function handleApproveReject() {
|
|||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
//羊舍名称
|
//加载所有羊舍
|
||||||
const sheepfoldOptions = ref([]);
|
const sheepfoldOptions = ref([]);
|
||||||
|
|
||||||
function getSheepfoldOptions() {
|
function getSheepfoldOptions() {
|
||||||
@ -376,7 +378,32 @@ function getSheepfoldOptions() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
onMounted(() => {
|
onMounted(() => {
|
||||||
getList();
|
|
||||||
getSheepfoldOptions();
|
getSheepfoldOptions();
|
||||||
});
|
});
|
||||||
|
|
||||||
|
|
||||||
|
const sheepfoldNameMap = ref({})
|
||||||
|
|
||||||
|
function loadSheepfoldMap() {
|
||||||
|
listSheepfold({ pageNum: 1, pageSize: 9999 }).then(res => {
|
||||||
|
sheepfoldNameMap.value = res.rows.reduce((acc, item) => {
|
||||||
|
acc[item.id] = item.sheepfoldName
|
||||||
|
return acc
|
||||||
|
}, {})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
|
||||||
|
onMounted(() => {
|
||||||
|
nextTick(() => {
|
||||||
|
if (trans_group_reason.value && trans_group_reason.value.length) {
|
||||||
|
trans_group_reason.value.forEach(item => {
|
||||||
|
item.value = Number(item.value)
|
||||||
|
})
|
||||||
|
}
|
||||||
|
loadSheepfoldMap()
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
|
||||||
|
getList()
|
||||||
</script>
|
</script>
|
||||||
|
@ -94,7 +94,7 @@
|
|||||||
|
|
||||||
<script setup name="castrate">
|
<script setup name="castrate">
|
||||||
import { listCastrate, getCastrate, delCastrate, addCastrate, updateCastrate } from "@/api/produce/other/castrate/castrate"
|
import { listCastrate, getCastrate, delCastrate, addCastrate, updateCastrate } from "@/api/produce/other/castrate/castrate"
|
||||||
import { listSheepfold_management as listSheepfold } from '@/api/sheepfold_management/sheepfold_management';
|
import { listSheepfold_management as listSheepfold } from '@/api/fileManagement/sheepfold_management';
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance()
|
const { proxy } = getCurrentInstance()
|
||||||
|
|
||||||
|
@ -94,7 +94,7 @@
|
|||||||
|
|
||||||
<script setup name="FixHoof">
|
<script setup name="FixHoof">
|
||||||
import { listFixHoof, getFixHoof, delFixHoof, addFixHoof, updateFixHoof } from "@/api/produce/other/fixHoof/fixHoof"
|
import { listFixHoof, getFixHoof, delFixHoof, addFixHoof, updateFixHoof } from "@/api/produce/other/fixHoof/fixHoof"
|
||||||
import { listSheepfold_management as listSheepfold } from '@/api/sheepfold_management/sheepfold_management';
|
import { listSheepfold_management as listSheepfold } from '@/api/fileManagement/sheepfold_management';
|
||||||
|
|
||||||
const { proxy } = getCurrentInstance()
|
const { proxy } = getCurrentInstance()
|
||||||
|
|
||||||
|
Loading…
x
Reference in New Issue
Block a user