采收批次管理列表查询,删除功能开发对接后台联调

This commit is contained in:
郭永超 2025-07-08 17:09:48 +08:00
parent 5b52c343ef
commit f9f83986df
3 changed files with 115 additions and 200 deletions

View File

@ -28,6 +28,34 @@ export function deleteTraceCompany(ids) {
});
}
// 采收批次查询 - 列表
export function getHarvestBatchList(params) {
return request('/trace/harvestBatch/page', {
method: 'GET',
params,
});
}
// 采收批次查询 - 新增
export function addHarvestBatch(data) {
return request('/trace/harvestBatch/save', {
method: 'POST',
data,
});
}
// 采收批次查询 - 编辑
export function editHarvestBatch(data) {
return request('/trace/harvestBatch/edit', {
method: 'PUT',
data,
});
}
// 采收批次查询 - 删除
export function deleteHarvestBatch(ids) {
return request('/trace/harvestBatch/delete/' + ids, {
method: 'GET',
});
}
// 原材料质检管理 - 列表
export function getQualityManageList(params) {
return request('/trace/code/qualityManage/page', {

View File

@ -1,30 +1,30 @@
<template>
<div class="app-container">
<div class="container-custom">
<h2 class="custom-h2">采收批次查询</h2>
<h2 class="custom-h2">采收批次管理</h2>
<div ref="searchBarRef" class="search-box">
<div class="search-bar">
<div class="search-bar-left">
<el-form ref="searchForm" :inline="true" :model="formInline" class="demo-form-inline" :label-width="'auto'">
<el-form-item label="采收批次" prop="harvestBatch">
<el-input v-model="formInline.harvestBatch" placeholder="请输入采收批次" clearable />
<el-form-item label="采收批次" prop="batchCode">
<el-input v-model="formInline.batchCode" placeholder="请输入采收批次编码" clearable />
</el-form-item>
<el-form-item label="产品种类" prop="seedTypeId">
<el-select v-model="formInline.seedTypeId" placeholder="请选择" clearable @change="seedTypeChange">
<el-form-item label="产品种类" prop="productType">
<el-select v-model="formInline.productType" placeholder="请选择" clearable @change="seedTypeChange">
<el-option v-for="item in seedTypeList" :key="item.id" :value="item.id" :label="item.dataName" />
</el-select>
</el-form-item>
<el-form-item label="产品名称" prop="name">
<el-input v-model="formInline.name" placeholder="请输入产品名称" clearable />
<el-form-item label="产品名称" prop="cropName">
<el-input v-model="formInline.cropName" placeholder="请输入农产品名称" clearable />
</el-form-item>
<el-form-item label="采收日期" prop="date1">
<el-date-picker v-model="formInline.date1" type="date" placeholder="请选择采收时间" style="width: 100%" />
<el-form-item label="采收日期" prop="harvestDate">
<el-date-picker v-model="formInline.harvestDate" type="date" placeholder="请选择采收时间" style="width: 100%" />
</el-form-item>
<el-form-item label="原场地" prop="name">
<el-input v-model="formInline.name" placeholder="请输入原场地" clearable />
<el-form-item label="原产地" prop="traceArea">
<el-input v-model="formInline.traceArea" placeholder="请输入原产地" clearable />
</el-form-item>
<el-form-item label="经营主体" prop="name">
<el-input v-model="formInline.name" placeholder="请输入经营主体" clearable />
<el-form-item label="经营主体" prop="businessEntityName">
<el-input v-model="formInline.businessEntityName" placeholder="请输入经营主体" clearable />
</el-form-item>
<el-form-item label="">
<el-button type="primary" icon="Search" @click="onSubmit">查询</el-button>
@ -51,9 +51,9 @@
>
<!-- 自定义-操作 -->
<template #action="slotProps">
<el-button type="primary" @click="seeDetails(slotProps.row)">查看</el-button>
<!-- <el-button type="primary" @click="handleEdit(slotProps.row)">编辑</el-button>
<el-button @click="handleDelete(slotProps.row)">删除</el-button> -->
<!-- <el-button type="primary" @click="seeDetails(slotProps.row)">查看</el-button> -->
<!-- <el-button type="primary" @click="handleEdit(slotProps.row)">编辑</el-button> -->
<el-button @click="handleDelete(slotProps.row)">删除</el-button>
</template>
</tableComponent>
</div>
@ -145,13 +145,8 @@ import tableComponent from '@/components/tableComponent.vue';
import { ElMessage } from 'element-plus';
import inputSuppliesApi from '@/apis/inputSuppliesApi';
const { getMaterailTypes } = inputSuppliesApi;
import {
getFertilizeUseRegulatoryRecords,
fertilizeUseRegulatorySave,
editFertilizeUseRegulatory,
delFertilizeUseRegulatory,
getLandList,
} from '@/apis/inputSuppliesApi/supervisionOfInputs';
import { getHarvestBatchList, addHarvestBatch, editHarvestBatch, deleteHarvestBatch } from '@/apis/trace/products';
import { getLandList } from '@/apis/inputSuppliesApi/supervisionOfInputs';
import request from '@/utils/axios';
import { GetDictTypeInfo } from '@/apis/system/dictType';
import { useApp } from '@/hooks';
@ -159,10 +154,12 @@ const app = useApp();
//
const formInline = reactive({
harvestBatch: '',
name: '',
seedTypeId: '',
date1: '',
batchCode: '',
cropName: '',
productType: '',
harvestDate: '',
traceArea: '',
businessEntityName: '',
current: 1,
size: 10,
});
@ -177,169 +174,41 @@ const resetForm = () => {
//
const tableData = ref([
{
batchCode: 'GM2025041201',
productTypes: '黄皮甘蔗',
name: '黄皮甘蔗',
purchaseDate: '2025-04-12 00:00:00',
number: 50,
Unit: '吨',
baseCode: 'GMZJ017',
baseName: '耿马镇甘蔗基地',
baseAddress: '耿马镇南华村',
plotCode: 'GMDK034',
plotName: '甘蔗地块七',
businessEntity: '耿马镇甘蔗种植合作社',
record: '张浩于2025-01-15播种2025-03-20施肥2025-04-05灌溉2025-04-10病虫害防治',
createDate: '2025-04-12 08:30:15',
},
{
batchCode: 'GM2025041802',
productTypes: '圆茄',
name: '圆茄',
purchaseDate: '2025-04-18 00:00:00',
number: 150,
Unit: '箱',
baseCode: 'GMZJ009',
baseName: '勐永镇蔬菜基地',
baseAddress: '勐永镇红星村',
plotCode: 'GMDK021',
plotName: '圆茄地块三',
businessEntity: '勐永镇蔬菜种植合作社',
record: '李明2025-01-20播种2025-03-25施肥2025-04-10灌溉',
createDate: '2025-04-18 09:45:30',
},
{
batchCode: 'GM2025041503',
productTypes: '小米辣',
name: '小米辣',
purchaseDate: '2025-04-15 00:00:00',
number: 80,
Unit: '箱',
baseCode: 'GMZJ012',
baseName: '四排山乡辣椒基地',
baseAddress: '四排山乡光明村',
plotCode: 'GMDK042',
plotName: '小米辣地块五',
businessEntity: '四排山乡辣椒种植户',
record: '赵强东2025-01-10播种2025-03-15施肥2025-04-01灌溉',
createDate: '2025-04-15 10:20:45',
},
{
batchCode: 'GM2025042004',
productTypes: '丝瓜',
name: '丝瓜',
purchaseDate: '2025-04-20 00:00:00',
number: 100,
Unit: '箱',
baseCode: 'GMZJ005',
baseName: '勐撒镇蔬菜园',
baseAddress: '勐撒镇建设村',
plotCode: 'GMDK018',
plotName: '丝瓜地块一',
businessEntity: '勐撒镇蔬菜种植协会',
record: '刘洋2025-01-25播种2025-03-30施肥2025-04-12灌溉',
createDate: '2025-04-20 11:55:20',
},
{
batchCode: 'GM2025041705',
productTypes: '苦瓜',
name: '苦瓜',
purchaseDate: '2025-04-17 00:00:00',
number: 90,
Unit: '箱',
baseCode: 'GMZJ014',
baseName: '耿马镇苦瓜基地',
baseAddress: '耿马镇民主村',
plotCode: 'GMDK038',
plotName: '苦瓜地块二',
businessEntity: '耿马镇苦瓜种植户',
record: '陈宇2025-01-18播种2025-03-22施肥2025-04-08灌溉',
createDate: '2025-04-17 12:30:35',
},
{
batchCode: 'GM2025042206',
productTypes: '香蕉',
name: '香蕉',
purchaseDate: '2025-04-22 00:00:00',
number: 200,
Unit: '箱',
baseCode: 'GMZJ007',
baseName: '勐永镇香蕉园',
baseAddress: '勐永镇幸福村',
plotCode: 'GMDK027',
plotName: '香蕉地块四',
businessEntity: '勐永镇香蕉种植合作社',
record: '赵莉菊2024-08-10种植2025-02-15施肥2025-04-15灌溉',
createDate: '2025-04-22 13:05:40',
},
{
batchCode: 'GM2025041907',
productTypes: '榴莲',
name: '榴莲',
purchaseDate: '2025-04-19 00:00:00',
number: 60,
Unit: '箱',
baseCode: 'GMZJ019',
baseName: '勐撒镇榴莲园',
baseAddress: '勐撒镇团结村',
plotCode: 'GMDK051',
plotName: '榴莲地块六',
businessEntity: '勐撒镇榴莲种植户',
record: '周同于2024-07-15种植2025-02-20施肥2025-04-10灌溉',
createDate: '2025-04-19 14:40:45',
},
{
batchCode: 'GM2025042108',
productTypes: '芒果',
name: '芒果',
purchaseDate: '2025-04-21 00:00:00',
number: 180,
Unit: '箱',
baseCode: 'GMZJ011',
baseName: '耿马镇芒果园',
baseAddress: '耿马镇和平村',
plotCode: 'GMDK047',
plotName: '芒果地块八',
businessEntity: '耿马镇芒果种植合作社',
record: '吴强浩2024-09-20种植2025-02-25施肥2025-04-13灌溉',
createDate: '2025-04-21 15:15:50',
},
{
batchCode: 'GM2025041609',
productTypes: '铁皮石斛',
name: '铁皮石斛',
purchaseDate: '2025-04-16 00:00:00',
number: 40,
Unit: '千克',
baseCode: 'GMZJ021',
baseName: '四排山乡石斛基地',
baseAddress: '四排山乡繁荣村',
plotCode: 'GMDK053',
plotName: '石斛地块九',
businessEntity: '四排山乡石斛种植合作社',
record: '吴迪于2024-10-10种植2025-01-15施肥2025-04-05灌溉',
createDate: '2025-04-16 09:50:55',
},
// {
// batchCode: 'GM2025041201',
// productTypes: '',
// name: '',
// purchaseDate: '2025-04-12 00:00:00',
// number: 50,
// Unit: '',
// baseCode: 'GMZJ017',
// baseName: '',
// baseAddress: '',
// plotCode: 'GMDK034',
// plotName: '',
// businessEntity: '',
// record: '2025-01-152025-03-202025-04-052025-04-10',
// createDate: '2025-04-12 08:30:15',
// },
]);
const selectedIds = ref([]);
const tableLoading = ref(false);
const tableTotal = ref(0);
const columns = ref([
{ prop: 'batchCode', label: '采收批次编码' },
{ prop: 'productTypes', label: '产品种类' },
{ prop: 'name', label: '农产品名称' },
{ prop: 'purchaseDate', label: '采购日期' },
{ prop: 'number', label: '数量' },
{ prop: 'Unit', label: '单位' },
{ prop: 'productType', label: '产品种类' },
{ prop: 'cropName', label: '农产品名称' },
{ prop: 'harvestDate', label: '采收日期' },
{ prop: 'count', label: '数量' },
{ prop: 'unit', label: '单位' },
{ prop: 'baseCode', label: '种植基地编码' },
{ prop: 'baseName', label: '种植基地名称' },
{ prop: 'baseAddress', label: '基地地址' },
{ prop: 'plotCode', label: '地块编码' },
{ prop: 'plotName', label: '地块名称' },
{ prop: 'businessEntity', label: '经营主体' },
{ prop: 'record', label: '农事活动记录', width: 200 },
{ prop: 'createDate', label: '创建日期' },
{ prop: 'landCode', label: '地块编码' },
{ prop: 'landName', label: '地块名称' },
{ prop: 'businessEntityName', label: '经营主体' },
{ prop: 'farmActivityRecords', label: '农事活动记录', width: 200 },
{ prop: 'createTime', label: '创建时间' },
{ prop: 'action', label: '操作', slotName: 'action', width: 100, fixed: 'right' },
]);
const handlePaginationChange = ({ page, pageSize }) => {
@ -348,18 +217,18 @@ const handlePaginationChange = ({ page, pageSize }) => {
loadData();
};
const loadData = async () => {
// tableLoading.value = true;
// try {
// let response = await getFertilizeUseRegulatoryRecords(formInline);
// tableLoading.value = false;
// if (response.code == 200) {
// tableData.value = response.data.records;
// tableTotal.value = response.data.total;
// }
// } catch (error) {
// tableLoading.value = false;
// console.error(error);
// }
tableLoading.value = true;
try {
let response = await getHarvestBatchList(formInline);
tableLoading.value = false;
if (response.code == 200) {
tableData.value = response.data.records;
tableTotal.value = response.data.total;
}
} catch (error) {
tableLoading.value = false;
console.error(error);
}
};
const extractThirdLevelChildren = (dataArray) => {
@ -517,7 +386,7 @@ const handleDelete = (row) => {
};
const deleteGoods = async (ids) => {
try {
let res = await delFertilizeUseRegulatory(ids);
let res = await deleteHarvestBatch(ids);
return res;
} catch (error) {
return false;
@ -536,10 +405,10 @@ const onSaveCategory = () => {
console.log(param);
let response;
if (dialogTitle.value == '新增') {
response = await fertilizeUseRegulatorySave(param);
response = await addHarvestBatch(param);
} else {
param.id = nowSelectRow.value.id;
response = await editFertilizeUseRegulatory(param);
response = await editHarvestBatch(param);
}
if (response?.code == 200) {
cancelDialog();

View File

@ -71,7 +71,7 @@
>
<!-- 自定义-产品溯源码 -->
<template #traceCode="slotProps">
<el-link underline="always" type="primary" @click="seeImg(slotProps.row)">{{ slotProps.row.traceCode }}</el-link>
<el-link :underline="true" type="primary" @click="seeImg(slotProps.row)">{{ slotProps.row.traceCode }}</el-link>
</template>
<!-- 自定义-操作 -->
<template #action="slotProps">
@ -109,8 +109,9 @@
<el-descriptions-item label="经纬度">{{ dialogForm.plantationInfoVO?.coordinate ?? '' }}</el-descriptions-item>
<el-descriptions-item label="气候条件">{{ dialogForm.plantationInfoVO?.climate ?? '' }}</el-descriptions-item>
<el-descriptions-item label="海拔">{{ dialogForm.plantationInfoVO?.altitude ?? '' }}</el-descriptions-item>
<el-descriptions-item label="地块编码">{{ dialogForm.plantationInfoVO?.landNumber ?? '' }}</el-descriptions-item>
<el-descriptions-item label="面积(亩)">{{ dialogForm.plantationInfoVO?.area ?? '' }}</el-descriptions-item>
<el-descriptions-item label="地块名称">{{ dialogForm.plantationInfoVO?.landName ?? '' }}</el-descriptions-item>
<el-descriptions-item label="基地照片">{{ dialogForm.plantationInfoVO?.url ?? '' }}</el-descriptions-item>
</el-descriptions>
<el-descriptions title="经营主体信息" border class="mb-20 custom-descriptions" :column="2">
<el-descriptions-item label="经营主体代码">{{ dialogForm.enterpriseCooperativeVO?.id ?? '' }}</el-descriptions-item>
@ -119,10 +120,26 @@
<el-descriptions-item label="联系人">{{ dialogForm.enterpriseCooperativeVO?.contactPerson ?? '' }}</el-descriptions-item>
<el-descriptions-item label="联系电话">{{ dialogForm.enterpriseCooperativeVO?.phone ?? '' }}</el-descriptions-item>
</el-descriptions>
<el-descriptions title="种植批次" border class="mb-20 custom-descriptions" :column="2">
<!-- <el-descriptions title="种植批次" border class="mb-20 custom-descriptions" :column="2">
<el-descriptions-item label="种植批次编码">{{ dialogForm.enterpriseCooperativeVO?.id ?? '' }}</el-descriptions-item>
<el-descriptions-item label="种植批次名称">{{ dialogForm.enterpriseCooperativeVO?.comType ?? '' }}</el-descriptions-item>
<el-descriptions-item label="种植作物">{{ dialogForm.enterpriseCooperativeVO?.businessName ?? '' }}</el-descriptions-item>
</el-descriptions> -->
<el-descriptions title="采收信息" border class="mb-20 custom-descriptions" :column="2">
<el-descriptions-item label="采收批次编码">{{ dialogForm.enterpriseCooperativeVO?.id ?? '' }}</el-descriptions-item>
<el-descriptions-item label="采收时间">{{ dialogForm.enterpriseCooperativeVO?.comType ?? '' }}</el-descriptions-item>
</el-descriptions>
<el-descriptions title="质检信息" border class="mb-20 custom-descriptions" :column="1">
<el-descriptions-item label="质检结果">{{ dialogForm.enterpriseCooperativeVO?.id ?? '' }}</el-descriptions-item>
<el-descriptions-item label="质检说明">{{ dialogForm.enterpriseCooperativeVO?.comType ?? '' }}</el-descriptions-item>
<el-descriptions-item label="质检报告">
<img :src="dialogForm?.traceUrl ?? ''" alt="" />
</el-descriptions-item>
</el-descriptions>
<el-descriptions title="区块链认证信息" border class="mb-20 custom-descriptions" :column="1">
<el-descriptions-item label="质检报告">
<img :src="dialogForm?.traceUrl ?? ''" alt="" />
</el-descriptions-item>
</el-descriptions>
</div>
<template #footer>
@ -258,7 +275,7 @@ const seedTypeChange = () => {
};
const tabsRadio = ref(2);
const dialogFormVisible = ref(true);
const dialogFormVisible = ref(false);
const dialogRef = ref(null);
const dialogTitle = ref('溯源产品详情');
const formDisabled = ref(false);
@ -530,6 +547,7 @@ onMounted(() => {
font-weight: bold;
text-align: left;
background: #f5f7fa;
vertical-align: middle;
}
.custom-descriptions :deep(.el-descriptions__content) {