产出品信息,溯源企业管理页面增删改查功能开发对接后台

This commit is contained in:
郭永超 2025-07-04 17:11:06 +08:00
parent d7fbd3d720
commit 6b1d0fbbf8
5 changed files with 202 additions and 349 deletions

View File

@ -48,6 +48,10 @@ export function delLand(id) {
method: 'DELETE', method: 'DELETE',
}); });
} }
// 获取地块信息
export function getLandInfo(landId) {
return request(`/land-resource/landManage/getLandInfo?landId=${landId}`);
}
// #endregion // #endregion
/* 土地列表 */ /* 土地列表 */
@ -162,6 +166,10 @@ export function delPlantingStage(params) {
method: 'DELETE', method: 'DELETE',
}); });
} }
// 获取种植作物列表
export function getCropsList() {
return request('land-resource/crops/list');
}
//作业记录相关 //作业记录相关
export function getOperationRecord(params = {}) { export function getOperationRecord(params = {}) {

View File

@ -0,0 +1,29 @@
import request from '@/utils/axios';
// 溯源企业管理 - 列表
export function getTraceCompanyList(params) {
return request('/trace/traceCompany/page', {
method: 'GET',
params,
});
}
// 溯源企业管理 - 新增
export function addTraceCompany(data) {
return request('/trace/traceCompany/save', {
method: 'POST',
data,
});
}
// 溯源企业管理 - 编辑
export function editTraceCompany(data) {
return request('/trace/traceCompany/edit', {
method: 'PUT',
data,
});
}
// 溯源企业管理 - 删除
export function deleteTraceCompany(ids) {
return request('/trace/traceCompany/delete/' + ids, {
method: 'GET',
});
}

View File

@ -7,13 +7,7 @@
<div class="search-bar-left"> <div class="search-bar-left">
<el-form ref="searchForm" :inline="true" :model="formInline" class="demo-form-inline" :label-width="'auto'"> <el-form ref="searchForm" :inline="true" :model="formInline" class="demo-form-inline" :label-width="'auto'">
<el-form-item label="" style="margin-left: -15px"> <el-form-item label="" style="margin-left: -15px">
<AreaCascader <AreaCascader v-model:region-code="formInline.regionCode" v-model:grid-id="formInline.gridId" label="行政区域-网格" :width="500" />
v-model:value="areaFormData"
v-model:region-code="formInline.regionCode"
v-model:grid-id="formInline.gridId"
label="行政区域-网格"
:width="500"
/>
</el-form-item> </el-form-item>
<el-form-item label="种子名称" prop="seedId"> <el-form-item label="种子名称" prop="seedId">
<el-select v-model="formInline.seedId" placeholder="请选择" clearable @change="seedTypeChange"> <el-select v-model="formInline.seedId" placeholder="请选择" clearable @change="seedTypeChange">

View File

@ -6,14 +6,14 @@
<div class="search-bar"> <div class="search-bar">
<div class="search-bar-left"> <div class="search-bar-left">
<el-form ref="searchForm" :inline="true" :model="formInline" class="demo-form-inline" :label-width="'auto'"> <el-form ref="searchForm" :inline="true" :model="formInline" class="demo-form-inline" :label-width="'auto'">
<el-form-item label="关键词" prop="name"> <el-form-item label="" style="margin-left: -15px">
<el-input v-model="formInline.name" placeholder="请输入关键词" clearable /> <AreaCascader v-model:region-code="formInline.regionCode" v-model:grid-id="formInline.gridId" label="行政区域-网格" :width="500" />
</el-form-item> </el-form-item>
<!-- <el-form-item label="分类" prop="seedTypeId"> <el-form-item label="农产品" prop="cropId">
<el-select v-model="formInline.seedTypeId" placeholder="请选择" clearable @change="seedTypeChange"> <el-select v-model="formInline.cropId" placeholder="请选择" clearable @change="seedTypeChange">
<el-option v-for="item in seedTypeList" :key="item.id" :value="item.id" :label="item.dataName" /> <el-option v-for="item in cropypeList" :key="item.id" :value="item.id" :label="item.cropsName" />
</el-select> </el-select>
</el-form-item> --> </el-form-item>
<el-form-item label=""> <el-form-item label="">
<el-button type="primary" icon="Search" @click="onSubmit">查询</el-button> <el-button type="primary" icon="Search" @click="onSubmit">查询</el-button>
<el-button icon="Refresh" @click="resetForm">重置</el-button> <el-button icon="Refresh" @click="resetForm">重置</el-button>
@ -53,7 +53,7 @@
<!-- 自定义-操作 --> <!-- 自定义-操作 -->
<template #action="slotProps"> <template #action="slotProps">
<!-- <el-button type="primary" @click="seeDetails(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 type="primary" @click="handleEdit(slotProps.row)">编辑</el-button>
<el-button @click="handleDelete(slotProps.row)">删除</el-button> <el-button @click="handleDelete(slotProps.row)">删除</el-button>
</template> </template>
</tableComponent> </tableComponent>
@ -122,15 +122,18 @@ import inputSuppliesApi from '@/apis/inputSuppliesApi';
const { getMaterailTypes } = inputSuppliesApi; const { getMaterailTypes } = inputSuppliesApi;
import { GetOutputList, AddOutput, UpdateOutput, DeleteOutput } from '@/apis/outputProducts'; import { GetOutputList, AddOutput, UpdateOutput, DeleteOutput } from '@/apis/outputProducts';
import { getLandList } from '@/apis/inputSuppliesApi/supervisionOfInputs'; import { getLandList } from '@/apis/inputSuppliesApi/supervisionOfInputs';
import request from '@/utils/axios'; import { getCropsList, getLandInfo } from '@/apis/land';
import { GetDictTypeInfo } from '@/apis/system/dictType'; import { GetDictTypeInfo } from '@/apis/system/dictType';
import { useApp } from '@/hooks'; import { useApp } from '@/hooks';
const app = useApp(); const app = useApp();
// //
const formInline = reactive({ const formInline = reactive({
name: '', regionCode: '',
seedTypeId: '', regionName: '',
gridId: '',
gridName: '',
cropId: '',
current: 1, current: 1,
size: 10, size: 10,
}); });
@ -164,7 +167,7 @@ const columns = ref([
{ label: '生产经营主体类型', prop: 'businessEntityType', width: 150 }, { label: '生产经营主体类型', prop: 'businessEntityType', width: 150 },
{ label: '生产经营主体名称', prop: 'businessEntityName' }, { label: '生产经营主体名称', prop: 'businessEntityName' },
{ label: '是否溯源', prop: 'isTrace' }, { label: '是否溯源', prop: 'isTrace' },
{ prop: 'action', label: '操作', slotName: 'action', width: 100, fixed: 'right' }, { prop: 'action', label: '操作', slotName: 'action', width: 150, fixed: 'right' },
]); ]);
const handlePaginationChange = ({ page, pageSize }) => { const handlePaginationChange = ({ page, pageSize }) => {
formInline.current = page; formInline.current = page;
@ -205,25 +208,6 @@ const loadData = async () => {
console.error(error); console.error(error);
} }
}; };
const extractThirdLevelChildren = (dataArray) => {
let result = [];
//
for (const level1 of dataArray) {
// children
if (level1.children && Array.isArray(level1.children)) {
//
for (const level2 of level1.children) {
// children
if (level2.children && Array.isArray(level2.children)) {
//
result.push(...level2.children);
}
}
}
}
return result;
};
const seedTypeChange = () => { const seedTypeChange = () => {
console.log(formInline.seedTypeId); console.log(formInline.seedTypeId);
// //
@ -277,32 +261,28 @@ const seeDetails = async (row) => {
console.log(row); console.log(row);
formDisabled.value = true; formDisabled.value = true;
dialogForm.landId = row.landId; dialogForm.landId = row.landId;
getDetails(); await getDetails();
dialogForm.totalYield = row.totalYield ?? 0;
dialogForm.yield = row.yield; dialogForm.yield = row.yield;
dialogForm.useUnit = row.useUnit; // dialogForm.totalYield = row.totalYield ?? 0;
dialogForm.detectionTime = row.useTime; dialogForm.detectionTime = row.harvestDate;
dialogFormVisible.value = true; dialogFormVisible.value = true;
}; };
const handleEdit = (row) => { const handleEdit = async (row) => {
// ElMessage.success('!'); // ElMessage.success('!');
nowSelectRow.value = row; nowSelectRow.value = row;
dialogTitle.value = '编辑'; dialogTitle.value = '编辑';
console.log(row); console.log(row);
formDisabled.value = false; formDisabled.value = false;
dialogForm.landId = row.landId; dialogForm.landId = row.landId;
getDetails(); await getDetails();
dialogForm.totalYield = row.totalYield ?? 0;
dialogForm.yield = row.yield; dialogForm.yield = row.yield;
dialogForm.useUnit = row.useUnit; // dialogForm.totalYield = row.totalYield ?? 0;
dialogForm.detectionTime = row.useTime; dialogForm.detectionTime = row.harvestDate;
dialogFormVisible.value = true; dialogFormVisible.value = true;
}; };
// //
const getDetails = async () => { const getDetails = async () => {
let response = await request({ let response = await getLandInfo(dialogForm.landId);
url: `/land-resource/landManage/getLandInfo?landId=${dialogForm.landId}`,
});
console.log(response); console.log(response);
if (response.code == 200) { if (response.code == 200) {
if (response.data) { if (response.data) {
@ -320,7 +300,6 @@ const setDialogForm = (row) => {
dialogForm.regionName = row.fullRegionName; dialogForm.regionName = row.fullRegionName;
dialogForm.gridId = row.gridId; dialogForm.gridId = row.gridId;
dialogForm.gridName = row.gridName; dialogForm.gridName = row.gridName;
dialogForm.landId = row.id;
dialogForm.landName = row.landName; dialogForm.landName = row.landName;
dialogForm.name = row.propertyName; dialogForm.name = row.propertyName;
dialogForm.phone = row.propertyPhone; dialogForm.phone = row.propertyPhone;
@ -419,18 +398,14 @@ const restDialogForm = () => {
nowSelectRow.value = ref({}); nowSelectRow.value = ref({});
}; };
const seedTypeList = ref([]); const cropypeList = ref([]);
const seedTypeDialogList = ref([]); const getCropypeList = async () => {
const getSeedTypeList = async () => {
try { try {
let response = await getMaterailTypes({ moduleType: '4' }); let response = await getCropsList();
console.log(response); console.log(response);
if (response.code == 200) { if (response.code == 200) {
if (response.data?.length > 0) { if (response.data?.length > 0) {
seedTypeDialogList.value = response.data[0].children; cropypeList.value = response.data;
let result = extractThirdLevelChildren(response.data);
seedTypeList.value = result;
console.log(seedTypeDialogList.value);
} }
} }
} catch (error) { } catch (error) {
@ -476,7 +451,7 @@ onMounted(() => {
onSubmit(); onSubmit();
getLandsList(); getLandsList();
getEntityOptions(); getEntityOptions();
// getSeedTypeList(); getCropypeList();
}); });
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>

View File

@ -6,8 +6,8 @@
<div class="search-bar"> <div class="search-bar">
<div class="search-bar-left"> <div class="search-bar-left">
<el-form ref="searchForm" :inline="true" :model="formInline" class="demo-form-inline" :label-width="'auto'"> <el-form ref="searchForm" :inline="true" :model="formInline" class="demo-form-inline" :label-width="'auto'">
<el-form-item label="关键字" prop="name"> <el-form-item label="关键字" prop="keyword">
<el-input v-model="formInline.name" placeholder="请输入关键字" clearable /> <el-input v-model="formInline.keyword" placeholder="请输入关键字" clearable />
</el-form-item> </el-form-item>
<el-form-item label=""> <el-form-item label="">
@ -42,75 +42,60 @@
</tableComponent> </tableComponent>
</div> </div>
</div> </div>
<el-dialog v-model="dialogFormVisible" :title="dialogTitle" width="800" :close-on-click-modal="false" align-center> <el-dialog v-model="dialogFormVisible" :title="dialogTitle" width="900" :close-on-click-modal="false" align-center>
<el-form :inline="true" :label-width="'auto'">
<LandSelect ref="landSelectRef" v-model="dialogForm.landId" :options="landSelectList" :disabled="formDisabled" @change="handleLandChange" />
</el-form>
<el-descriptions title="地块信息" border class="mb-20 custom-descriptions" :column="2">
<el-descriptions-item label="行政区域编码">{{ dialogForm.regionCode }}</el-descriptions-item>
<el-descriptions-item label="行政区域名称">{{ dialogForm.regionName }}</el-descriptions-item>
<el-descriptions-item label="网格编码">{{ dialogForm.gridId }}</el-descriptions-item>
<el-descriptions-item label="网格名称">{{ dialogForm.gridName }}</el-descriptions-item>
<el-descriptions-item label="地块编码">{{ dialogForm.landId }}</el-descriptions-item>
<el-descriptions-item label="地块名称">{{ dialogForm.landName }}</el-descriptions-item>
</el-descriptions>
<el-descriptions title="经营主体信息" border class="mb-20 custom-descriptions" :column="2">
<el-descriptions-item label="经营主体编码">{{ dialogForm.businessEntityCode }}</el-descriptions-item>
<el-descriptions-item label="经营主体名称">{{ dialogForm.businessEntityName }}</el-descriptions-item>
</el-descriptions>
<el-form <el-form
ref="dialogRef" ref="dialogRef"
:model="dialogForm" :model="dialogForm"
:inline="true" :inline="true"
:label-width="'100'" :label-width="'150'"
:rules="dialogFormRules" :rules="dialogFormRules"
:disabled="formDisabled" :disabled="formDisabled"
class="dialog-form-container" class="dialog-form-container"
> >
<div class="el-descriptions__title" style="margin-bottom: 16px">农药用药详情</div> <el-form-item label="企业名称" prop="comName" class="dialog-form-item" style="width: 100%">
<el-form-item label="肥料编号" prop="fertilizeId" class="dialog-form-item"> <el-input v-model="dialogForm.comName" clearable placeholder="请输入" style="width: 80%" />
<el-input v-model="dialogForm.fertilizeId" clearable placeholder="请输入肥料编号" />
</el-form-item> </el-form-item>
<el-form-item label="肥料名称" prop="fertilizeName" class="dialog-form-item"> <el-form-item label="企业类型" prop="comType" class="dialog-form-item">
<el-input v-model="dialogForm.fertilizeName" clearable placeholder="请输入肥料名称" /> <el-select v-model="dialogForm.comType" placeholder="请选择">
</el-form-item> <el-option value="合作社" label="合作社" />
<el-form-item label="使用量" required prop="useNumber" class="dialog-form-item"> <el-option value="有限责任公司" label="有限责任公司" />
<el-input-number v-model="dialogForm.useNumber" :min="1" controls-position="right" placeholder="请输入使用量" style="width: 150px" />
<el-select v-model="dialogForm.useUnit" placeholder="请选择" style="width: 80px">
<el-option v-for="el in unitList" :key="el.dictValue" :value="el.dictValue" :label="el.dictValue" />
</el-select> </el-select>
</el-form-item> </el-form-item>
<el-form-item label="使用时间" prop="useTime" class="dialog-form-item"> <el-form-item label="统一社会信用代码" prop="uscc" class="dialog-form-item">
<el-date-picker v-model="dialogForm.useTime" :clearable="false" type="date" value-format="YYYY-MM-DD" placeholder="请选择使用时间" /> <el-input v-model="dialogForm.uscc" clearable placeholder="请输入" />
</el-form-item> </el-form-item>
<div class="el-descriptions__title" style="margin-bottom: 16px">检测信息</div> <el-form-item label="法人信息" prop="legalName" class="dialog-form-item">
<div style="display: flex"> <el-input v-model="dialogForm.legalName" clearable placeholder="请输入" />
<div style="display: inline-block; width: 48%"> </el-form-item>
<el-form-item label="检测时间" prop="detectionTime" class="dialog-form-item" :label-width="'100'"> <el-form-item label="厂址" prop="address" class="dialog-form-item">
<el-input v-model="dialogForm.address" clearable placeholder="请输入" />
</el-form-item>
<el-form-item label="联系人" prop="contactName" class="dialog-form-item">
<el-input v-model="dialogForm.contactName" clearable placeholder="请输入" />
</el-form-item>
<el-form-item label="电话" prop="phone" class="dialog-form-item">
<el-input v-model="dialogForm.phone" clearable placeholder="请输入" />
</el-form-item>
<el-form-item label="入驻时间" prop="tenancyTime" class="dialog-form-item">
<el-date-picker <el-date-picker
v-model="dialogForm.detectionTime" v-model="dialogForm.tenancyTime"
:clearable="false" :clearable="false"
type="date" type="datetime"
value-format="YYYY-MM-DD" format="YYYY/MM/DD HH:mm:ss"
placeholder="请选择检测时间" value-format="YYYY/MM/DD HH:mm:ss"
placeholder="请选择使用时间"
/> />
</el-form-item> </el-form-item>
<el-form-item label="检测结果" prop="detectionResult" class="dialog-form-item" :label-width="'100'"> <el-form-item label="申请时间" prop="applyTime" class="dialog-form-item">
<el-select v-model="dialogForm.detectionResult" placeholder="请选择"> <el-date-picker
<el-option value="合格" label="合格" /> v-model="dialogForm.applyTime"
<el-option value="不合格" label="不合格" /> :clearable="false"
</el-select> type="datetime"
format="YYYY/MM/DD HH:mm:ss"
value-format="YYYY/MM/DD HH:mm:ss"
placeholder="请选择使用时间"
/>
</el-form-item> </el-form-item>
<el-form-item label="检测单位" prop="detectionUnit" class="dialog-form-item" :label-width="'100'">
<el-input v-model="dialogForm.detectionUnit" clearable placeholder="请输入检测单位" />
</el-form-item>
</div>
<div style="display: inline-block; width: 50%">
<el-form-item label="检测报告" prop="detectionReport" class="dialog-form-item" :label-width="'80'">
<FileUploader v-model="dialogForm.detectionReport" :limit="1" />
</el-form-item>
</div>
</div>
</el-form> </el-form>
<template #footer> <template #footer>
<div class="dialog-footer"> <div class="dialog-footer">
@ -127,23 +112,16 @@
import { ref, reactive, computed, onMounted, onBeforeUnmount, nextTick } from 'vue'; import { ref, reactive, computed, onMounted, onBeforeUnmount, nextTick } from 'vue';
import tableComponent from '@/components/tableComponent.vue'; import tableComponent from '@/components/tableComponent.vue';
import { ElMessage } from 'element-plus'; import { ElMessage } from 'element-plus';
import inputSuppliesApi from '@/apis/inputSuppliesApi'; import { getLandList } from '@/apis/inputSuppliesApi/supervisionOfInputs';
const { getMaterailTypes } = inputSuppliesApi; import { getTraceCompanyList, addTraceCompany, editTraceCompany, deleteTraceCompany } from '@/apis/trace/products';
import { import { getLandInfo } from '@/apis/land';
getFertilizeUseRegulatoryRecords,
fertilizeUseRegulatorySave,
editFertilizeUseRegulatory,
delFertilizeUseRegulatory,
getLandList,
} from '@/apis/inputSuppliesApi/supervisionOfInputs';
import request from '@/utils/axios';
import { GetDictTypeInfo } from '@/apis/system/dictType'; import { GetDictTypeInfo } from '@/apis/system/dictType';
import { useApp } from '@/hooks'; import { useApp } from '@/hooks';
const app = useApp(); const app = useApp();
// //
const formInline = reactive({ const formInline = reactive({
name: '', keyword: '',
current: 1, current: 1,
size: 10, size: 10,
}); });
@ -157,79 +135,21 @@ const resetForm = () => {
}; };
// //
const tableData = ref([ const tableData = ref([]);
{
batchCode: 'QY-GM-001',
productTypes: '耿马蔗香食品有限公司',
name: '有限责任公司',
purchaseDate: '91530925MA6P8E1234',
number: '杨志明',
Unit: '刀玉兰',
baseCode: '188-8786-1234',
厂址: '云南省临沧市耿马县勐永镇工业园区',
入驻时间: '2023-05-10 00:00:00',
申请时间: '2023-04-25 00:00:00',
},
{
batchCode: 'QY-GM-002',
productTypes: '耿马绿丰食品加工厂',
name: '个体工商户',
purchaseDate: '92530925L3D5F9876',
number: '李红梅',
Unit: '岩温罕',
baseCode: '159-8723-4567',
厂址: '云南省临沧市耿马县孟定镇',
入驻时间: '2022-11-15 00:00:00',
申请时间: '2022-10-30 00:00:00',
},
{
batchCode: 'QY-GM-003',
productTypes: '耿马辣味坊食品厂',
name: '个人独资企业',
purchaseDate: '91530925G7H2K6543',
number: '张丽华',
Unit: '罕香',
baseCode: '137-8765-3210',
厂址: '云南省临沧市耿马县四排山乡',
入驻时间: '2024-02-20 00:00:00',
申请时间: '2024-01-18 00:00:00',
},
{
batchCode: 'QY-GM-004',
productTypes: '耿马山野农产加工厂',
name: '有限责任公司',
purchaseDate: '91530925N9J4R7890',
number: '周建国',
Unit: '俸春燕',
baseCode: '182-8834-5678',
厂址: '云南省临沧市耿马县贺派乡',
入驻时间: '2023-08-05 00:00:00',
申请时间: '2023-07-22 00:00:00',
},
{
batchCode: 'QY-GM-005',
productTypes: '耿马原生茶业',
name: '农民专业合作社',
purchaseDate: '93530925P5K6T2345',
number: '赵志强',
Unit: '艾叶',
baseCode: '151-8790-4321',
厂址: '云南省临沧市耿马县大兴乡',
入驻时间: '2022-09-12 00:00:00',
申请时间: '2022-08-28 00:00:00',
},
]);
const selectedIds = ref([]); const selectedIds = ref([]);
const tableLoading = ref(false); const tableLoading = ref(false);
const tableTotal = ref(0); const tableTotal = ref(0);
const columns = ref([ const columns = ref([
{ prop: 'batchCode', label: '企业编码' }, { prop: 'comCode', label: '企业编码' },
{ prop: 'productTypes', label: '生产商' }, { prop: 'comName', label: '企业名称' },
{ prop: 'name', label: '企业类型' }, { prop: 'comType', label: '企业类型' },
{ prop: 'purchaseDate', label: '统一社会信用代码' }, { prop: 'uscc', label: '统一社会信用代码' },
{ prop: 'number', label: '法人信息' }, { prop: 'legalName', label: '法人信息' },
{ prop: 'Unit', label: '联系人' }, { prop: 'contactName', label: '联系人' },
{ prop: 'baseCode', label: '电话' }, { prop: 'phone', label: '电话' },
{ prop: 'address', label: '厂址' },
{ prop: 'tenancyTime', label: '入驻时间' },
{ prop: 'applyTime', label: '申请时间' },
{ prop: 'action', label: '操作', slotName: 'action', width: 100, fixed: 'right' }, { prop: 'action', label: '操作', slotName: 'action', width: 100, fixed: 'right' },
]); ]);
const handlePaginationChange = ({ page, pageSize }) => { const handlePaginationChange = ({ page, pageSize }) => {
@ -238,37 +158,18 @@ const handlePaginationChange = ({ page, pageSize }) => {
loadData(); loadData();
}; };
const loadData = async () => { const loadData = async () => {
// tableLoading.value = true; tableLoading.value = true;
// try { try {
// let response = await getFertilizeUseRegulatoryRecords(formInline); let response = await getTraceCompanyList(formInline);
// tableLoading.value = false; tableLoading.value = false;
// if (response.code == 200) { if (response.code == 200) {
// tableData.value = response.data.records; tableData.value = response.data.records;
// tableTotal.value = response.data.total; tableTotal.value = response.data.total;
// }
// } catch (error) {
// tableLoading.value = false;
// console.error(error);
// }
};
const extractThirdLevelChildren = (dataArray) => {
let result = [];
//
for (const level1 of dataArray) {
// children
if (level1.children && Array.isArray(level1.children)) {
//
for (const level2 of level1.children) {
// children
if (level2.children && Array.isArray(level2.children)) {
//
result.push(...level2.children);
} }
} catch (error) {
tableLoading.value = false;
console.error(error);
} }
}
}
return result;
}; };
const seedTypeChange = () => { const seedTypeChange = () => {
console.log(formInline.seedTypeId); console.log(formInline.seedTypeId);
@ -279,100 +180,90 @@ const dialogFormVisible = ref(false);
const dialogRef = ref(null); const dialogRef = ref(null);
const dialogTitle = ref('新增'); const dialogTitle = ref('新增');
const formDisabled = ref(false); const formDisabled = ref(false);
const landSelectRef = ref(null);
const nowSelectRow = ref({}); const nowSelectRow = ref({});
const dialogForm = reactive({ const dialogForm = reactive({
regionCode: '', // comCode: '', //
regionName: '', // comName: '', //
gridId: '', // comType: '', //
gridName: '', // uscc: '', //
landId: '', //id legalName: '', //
landName: '', // contactName: '', //
name: '', //
phone: '', // phone: '', //
fertilizeId: '', //id address: '', //
fertilizeName: '', // tenancyTime: '', //
useNumber: 1, //使 applyTime: '', //
useUnit: 'g', //使
useTime: '', //使
businessEntityCode: '', //
businessEntityName: '', //
detectionTime: '', //
detectionResult: '', //'
detectionUnit: '', //
detectionReport: '', //
}); });
const initDialogForm = { ...dialogForm };
console.log(initDialogForm);
const dialogFormRules = ref({ const dialogFormRules = ref({
fertilizeId: [{ required: true, message: '请输入肥料编号', trigger: 'blur' }], comName: [{ required: true, message: '请输入', trigger: 'blur' }],
fertilizeName: [{ required: true, message: '请输入肥料名称', trigger: 'blur' }], uscc: [
useNumber: [{ required: true, message: '请输入使用量', trigger: ['change', 'blur'] }], { required: true, message: '请输入', trigger: 'blur' },
useTime: [{ required: true, message: '请选择使用时间', trigger: 'blur' }],
detectionTime: [{ required: true, message: '请选择检测时间', trigger: ['change', 'blur'] }],
detectionResult: [
{ {
required: true, validator: (rule, value, callback) => {
message: '请选择检测结果', if (!/^[0-9A-Za-z]+$/.test(value)) {
callback(new Error('企业信用代码只能包含数字和字母'));
} else if (value.length !== 18) {
// 18
callback(new Error('企业信用代码必须为18位'));
} else {
callback();
}
},
trigger: 'blur',
},
],
legalName: [{ required: true, message: '请输入', trigger: 'blur' }],
contactName: [{ required: true, message: '请输入', trigger: 'blur' }],
phone: [
{ required: true, message: '请输入', trigger: 'blur' },
{
pattern: /^1[3-9]\d{9}$/,
message: '请输入正确的11位手机号',
trigger: 'blur',
},
],
address: [{ required: true, message: '请输入', trigger: 'blur' }],
tenancyTime: [{ required: true, message: '请选择入驻时间', trigger: 'blur' }],
applyTime: [{ required: true, message: '请选择申请时间', trigger: 'blur' }],
comType: [
{
required: true,
message: '请选择',
trigger: 'blur', trigger: 'blur',
}, },
], ],
detectionUnit: [{ required: true, message: '请输入检测单位', trigger: 'blur' }],
}); });
const addItem = async () => { const addItem = async () => {
ElMessage.success('点击新增!'); restDialogForm();
// restDialogForm(); dialogTitle.value = '新增';
// dialogTitle.value = ''; formDisabled.value = false;
// formDisabled.value = false; dialogFormVisible.value = true;
// dialogFormVisible.value = true;
}; };
const seeDetails = async (row) => { const seeDetails = async (row) => {
ElMessage.success('查看详情!'); // ElMessage.success('!');
// dialogTitle.value = ''; console.log('查看详情的行: ', row);
// formDisabled.value = true; dialogTitle.value = '详情';
// dialogForm.landId = row.landId; formDisabled.value = true;
// getDetails(); Object.assign(dialogForm, row);
// setDialogForm2(); dialogFormVisible.value = true;
// dialogFormVisible.value = true;
}; };
const handleEdit = (row) => { const handleEdit = (row) => {
ElMessage.success('点击编辑!'); // ElMessage.success('!');
console.log('要编辑的行: ', row); console.log('要编辑的行: ', row);
// nowSelectRow.value = row; nowSelectRow.value = row;
// dialogTitle.value = ''; dialogTitle.value = '编辑';
// formDisabled.value = false; formDisabled.value = false;
// dialogForm.landId = row.landId; Object.assign(dialogForm, row);
// getDetails(); dialogFormVisible.value = true;
// setDialogForm2();
// dialogFormVisible.value = true;
}; };
const setDialogForm = (row) => { const setDialogForm = (row) => {
dialogForm.regionCode = row.gridAreaCode; Object.assign(dialogForm, row);
dialogForm.regionName = row.fullRegionName;
dialogForm.gridId = row.gridId;
dialogForm.gridName = row.gridName;
dialogForm.landId = row.id;
dialogForm.landName = row.landName;
dialogForm.name = row.propertyName;
dialogForm.phone = row.propertyPhone;
dialogForm.businessEntityCode = row.businessEntityCode ?? '';
dialogForm.businessEntityName = row.businessEntityName ?? '';
};
const setDialogForm2 = (row) => {
dialogForm.fertilizeId = row.fertilizeId;
dialogForm.fertilizeName = row.fertilizeName;
dialogForm.useNumber = row.useNumber;
dialogForm.useUnit = row.useUnit;
dialogForm.useTime = row.useTime;
dialogForm.detectionTime = row.detectionTime;
dialogForm.detectionResult = row.detectionResult;
dialogForm.detectionUnit = row.detectionUnit;
dialogForm.detectionReport = row.detectionReport ?? '';
}; };
// //
const getDetails = async () => { const getDetails = async () => {
let response = await request({ let response = await getLandInfo(dialogForm.landId);
url: `/land-resource/landManage/getLandInfo?landId=${dialogForm.landId}`,
});
console.log(response); console.log(response);
if (response.code == 200) { if (response.code == 200) {
if (response.data) { if (response.data) {
@ -407,7 +298,7 @@ const handleDelete = (row) => {
}; };
const deleteGoods = async (ids) => { const deleteGoods = async (ids) => {
try { try {
let res = await delFertilizeUseRegulatory(ids); let res = await deleteTraceCompany(ids);
return res; return res;
} catch (error) { } catch (error) {
return false; return false;
@ -415,10 +306,6 @@ const deleteGoods = async (ids) => {
}; };
const onSaveCategory = () => { const onSaveCategory = () => {
console.log(dialogForm); console.log(dialogForm);
if (dialogForm.landId == '') {
landSelectRef.value.handleChange();
return;
}
dialogRef.value.validate(async (valid, fields) => { dialogRef.value.validate(async (valid, fields) => {
if (valid) { if (valid) {
try { try {
@ -426,10 +313,10 @@ const onSaveCategory = () => {
console.log(param); console.log(param);
let response; let response;
if (dialogTitle.value == '新增') { if (dialogTitle.value == '新增') {
response = await fertilizeUseRegulatorySave(param); response = await addTraceCompany(param);
} else { } else {
param.id = nowSelectRow.value.id; param.id = nowSelectRow.value.id;
response = await editFertilizeUseRegulatory(param); response = await editTraceCompany(param);
} }
if (response?.code == 200) { if (response?.code == 200) {
cancelDialog(); cancelDialog();
@ -453,49 +340,10 @@ const cancelDialog = async () => {
dialogFormVisible.value = false; dialogFormVisible.value = false;
}; };
const restDialogForm = () => { const restDialogForm = () => {
Object.assign(dialogForm, { Object.assign(dialogForm, initDialogForm);
regionCode: '', //
regionName: '', //
gridId: '', //
gridName: '', //
landId: '', //id
landName: '', //
name: '', //
phone: '', //
fertilizeId: '', //id
fertilizeName: '', //
useNumber: 1, //使
useUnit: 'g', //使
useTime: '', //使
businessEntityCode: '', //
businessEntityName: '', //
detectionTime: '', //
detectionResult: '', //'
detectionUnit: '', //
detectionReport: '', //
});
nowSelectRow.value = ref({}); nowSelectRow.value = ref({});
}; };
const seedTypeList = ref([]);
const seedTypeDialogList = ref([]);
const getSeedTypeList = async () => {
try {
let response = await getMaterailTypes({ moduleType: '4' });
console.log(response);
if (response.code == 200) {
if (response.data?.length > 0) {
seedTypeDialogList.value = response.data[0].children;
let result = extractThirdLevelChildren(response.data);
seedTypeList.value = result;
console.log(seedTypeDialogList.value);
}
}
} catch (error) {
console.error(error);
}
};
const unitList = ref([ const unitList = ref([
{ dictCode: '52', dictValue: 'g' }, { dictCode: '52', dictValue: 'g' },
{ dictCode: '53', dictValue: 'kg' }, { dictCode: '53', dictValue: 'kg' },
@ -532,9 +380,8 @@ const getEntityOptions = async () => {
onMounted(() => { onMounted(() => {
onSubmit(); onSubmit();
getLandsList(); // getLandsList();
getEntityOptions(); // getEntityOptions();
// getSeedTypeList();
}); });
</script> </script>
<style lang="scss" scoped> <style lang="scss" scoped>