Merge branch 'dev' of http://47.109.205.240:3000/Web/daimp-front into dev
This commit is contained in:
		
						commit
						eb48bf786e
					
				| @ -17,5 +17,5 @@ VITE_APP_BASE_URL = 'http://192.168.18.99:8080' | |||||||
| VITE_APP_UPLOAD_URL = 'http://192.168.18.99:8080' | VITE_APP_UPLOAD_URL = 'http://192.168.18.99:8080' | ||||||
| 
 | 
 | ||||||
| # 本地开发接口地址 | # 本地开发接口地址 | ||||||
| # VITE_APP_BASE_URL = 'http://192.168.18.74:8080' | VITE_APP_BASE_URL = 'http://192.168.18.99:8080' | ||||||
| # VITE_APP_UPLOAD_URL = 'http://192.168.18.74:8080' | VITE_APP_UPLOAD_URL = 'http://192.168.18.99:8080' | ||||||
| @ -0,0 +1,31 @@ | |||||||
|  | import request from '@/utils/axios'; | ||||||
|  | 
 | ||||||
|  | /* 种子使用监管-列表 */ | ||||||
|  | export function getSeedUseRegulatoryRecords(params) { | ||||||
|  |   return request('/inputGoods/supervise/provenance/page', { | ||||||
|  |     params, | ||||||
|  |   }); | ||||||
|  | } | ||||||
|  | /* 种子使用监管-新增 */ | ||||||
|  | export function seedUseRegulatorySave(data) { | ||||||
|  |   return request('/inputGoods/supervise/provenance/save', { | ||||||
|  |     method: 'POST', | ||||||
|  |     data, | ||||||
|  |   }); | ||||||
|  | } | ||||||
|  | /* 种子使用监管-编辑 */ | ||||||
|  | export function editSeedUseRegulatory(data) { | ||||||
|  |   return request('/inputGoods/supervise/provenance/edit', { | ||||||
|  |     data, | ||||||
|  |     method: 'PUT', | ||||||
|  |   }); | ||||||
|  | } | ||||||
|  | /* 种子使用监管-删除 */ | ||||||
|  | export function delSeedUseRegulatory(ids) { | ||||||
|  |   return request(`/inputGoods/supervise/provenance/delete/${ids}`); | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | /* 获取详情-通用,传入url和参数 */ | ||||||
|  | export function getRowDetails({ url, id }) { | ||||||
|  |   return request(`${url}${id}`); | ||||||
|  | } | ||||||
| @ -51,6 +51,32 @@ const inputSuppliesRoutes = [ | |||||||
|         component: () => import('@/views/inputSuppliesManage/material/others/index.vue'), |         component: () => import('@/views/inputSuppliesManage/material/others/index.vue'), | ||||||
|         meta: { title: '其他投入品管理', icon: 'TakeawayBox' }, |         meta: { title: '其他投入品管理', icon: 'TakeawayBox' }, | ||||||
|       }, |       }, | ||||||
|  |       { | ||||||
|  |         path: '/sub-government-affairs-service/supervisionOfInputs ', | ||||||
|  |         name: 'supervisionOfInputs', | ||||||
|  |         redirect: '/sub-government-affairs-service/supervisionOfInputs/seedRegulation', | ||||||
|  |         meta: { title: '投入品使用监管', icon: 'Connection' }, | ||||||
|  |         children: [ | ||||||
|  |           // {
 | ||||||
|  |           //   path: '/sub-government-affairs-service/supervisionOfInputs/regulatoryOverview',
 | ||||||
|  |           //   name: 'regulatoryOverview',
 | ||||||
|  |           //   component: () => import('@/views/inputSuppliesManage/supervisionOfInputs/regulatoryOverview.vue'),
 | ||||||
|  |           //   meta: { title: '使用监管概览', icon: '' },
 | ||||||
|  |           // },
 | ||||||
|  |           { | ||||||
|  |             path: '/sub-government-affairs-service/supervisionOfInputs/seedRegulation', | ||||||
|  |             name: 'seedRegulation', | ||||||
|  |             component: () => import('@/views/inputSuppliesManage/supervisionOfInputs/seedRegulation.vue'), | ||||||
|  |             meta: { title: '种子使用监管', icon: '' }, | ||||||
|  |           }, | ||||||
|  |           { | ||||||
|  |             path: '/sub-government-affairs-service/supervisionOfInputs/fertilizerRegulation', | ||||||
|  |             name: 'fertilizerRegulation', | ||||||
|  |             component: () => import('@/views/inputSuppliesManage/supervisionOfInputs/fertilizerRegulation.vue'), | ||||||
|  |             meta: { title: '肥料使用监管', icon: '' }, | ||||||
|  |           }, | ||||||
|  |         ], | ||||||
|  |       }, | ||||||
|     ], |     ], | ||||||
|   }, |   }, | ||||||
| ]; | ]; | ||||||
|  | |||||||
| @ -76,7 +76,7 @@ | |||||||
|                 :clearable="false" |                 :clearable="false" | ||||||
|                 type="date" |                 type="date" | ||||||
|                 value-format="YYYY-MM-DD" |                 value-format="YYYY-MM-DD" | ||||||
|                 placeholder="请选择起始日期" |                 placeholder="请选择检测时间" | ||||||
|               /> |               /> | ||||||
|             </el-form-item> |             </el-form-item> | ||||||
|             <el-form-item label="检测结果" prop="detectionResult" class="dialog-form-item"> |             <el-form-item label="检测结果" prop="detectionResult" class="dialog-form-item"> | ||||||
|  | |||||||
| @ -136,6 +136,7 @@ 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: 'id', label: '编码' }, | ||||||
|   { prop: 'seedName', label: '种子种苗名称' }, |   { prop: 'seedName', label: '种子种苗名称' }, | ||||||
|   { prop: 'varietyName', label: '品种名称' }, |   { prop: 'varietyName', label: '品种名称' }, | ||||||
|   { prop: 'brand', label: '品牌' }, |   { prop: 'brand', label: '品牌' }, | ||||||
|  | |||||||
| @ -0,0 +1,414 @@ | |||||||
|  | <template> | ||||||
|  |   <div class="app-container"> | ||||||
|  |     <div class="container-custom"> | ||||||
|  |       <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="seedName"> | ||||||
|  |                 <el-input v-model="formInline.seedName" placeholder="请输入姓名" clearable /> | ||||||
|  |               </el-form-item> | ||||||
|  |               <el-form-item label="分类" prop="seedTypeId"> | ||||||
|  |                 <el-select v-model="formInline.seedTypeId" 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=""> | ||||||
|  |                 <el-button type="primary" icon="Search" @click="onSubmit">查询</el-button> | ||||||
|  |                 <el-button icon="Refresh" @click="resetForm">重置</el-button> | ||||||
|  |               </el-form-item> | ||||||
|  |             </el-form> | ||||||
|  |           </div> | ||||||
|  |         </div> | ||||||
|  |       </div> | ||||||
|  |       <div class="table-toolbar"> | ||||||
|  |         <el-button type="primary" icon="plus" @click="addItem()">新增</el-button> | ||||||
|  |       </div> | ||||||
|  |       <div class="table-cont"> | ||||||
|  |         <tableComponent | ||||||
|  |           :table-data="tableData" | ||||||
|  |           :columns="columns" | ||||||
|  |           :show-selection="false" | ||||||
|  |           :loading="tableLoading" | ||||||
|  |           :total="tableTotal" | ||||||
|  |           :current-page="formInline.current" | ||||||
|  |           :page-size="formInline.size" | ||||||
|  |           :show-sort="true" | ||||||
|  |           @page-change="handlePaginationChange" | ||||||
|  |         > | ||||||
|  |           <!-- 自定义-操作 --> | ||||||
|  |           <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> | ||||||
|  |           </template> | ||||||
|  |         </tableComponent> | ||||||
|  |       </div> | ||||||
|  |     </div> | ||||||
|  |     <el-dialog v-model="dialogFormVisible" :title="dialogTitle" width="800" :close-on-click-modal="false"> | ||||||
|  |       <el-form | ||||||
|  |         ref="dialogRef" | ||||||
|  |         :model="dialogForm" | ||||||
|  |         :inline="true" | ||||||
|  |         :label-width="'120'" | ||||||
|  |         :rules="dialogFormRules" | ||||||
|  |         :disabled="formDisabled" | ||||||
|  |         class="dialog-form-container" | ||||||
|  |       > | ||||||
|  |         <el-form-item label="种子种苗名称" prop="seedName" class="dialog-form-item"> | ||||||
|  |           <el-input v-model="dialogForm.seedName" clearable placeholder="请输入种子种苗名称" /> | ||||||
|  |         </el-form-item> | ||||||
|  |         <el-form-item label="品种名称" prop="varietyName" class="dialog-form-item"> | ||||||
|  |           <el-input v-model="dialogForm.varietyName" clearable placeholder="请输入品种名称" /> | ||||||
|  |         </el-form-item> | ||||||
|  |         <el-form-item label="品牌" prop="brand" class="dialog-form-item"> | ||||||
|  |           <el-input v-model="dialogForm.brand" clearable placeholder="请输入品牌" /> | ||||||
|  |         </el-form-item> | ||||||
|  |         <el-form-item label="生产厂家" prop="manufacturer" class="dialog-form-item"> | ||||||
|  |           <el-input v-model="dialogForm.manufacturer" clearable placeholder="请输入生产厂家" /> | ||||||
|  |         </el-form-item> | ||||||
|  |         <el-form-item label="蔬菜种苗" prop="classifyId" class="dialog-form-item"> | ||||||
|  |           <el-cascader | ||||||
|  |             v-model="dialogForm.classifyId" | ||||||
|  |             :options="seedTypeDialogList" | ||||||
|  |             :props="cascaderProps" | ||||||
|  |             placeholder="请选择" | ||||||
|  |             @change="handleCascaderChange" | ||||||
|  |           /> | ||||||
|  |         </el-form-item> | ||||||
|  |         <el-form-item label="产品规格" prop="productUnit" class="dialog-form-item"> | ||||||
|  |           <el-input v-model="dialogForm.productUnit" clearable placeholder="请输入产品规格" /> | ||||||
|  |         </el-form-item> | ||||||
|  | 
 | ||||||
|  |         <div style="display: flex"> | ||||||
|  |           <div style="width: 50%; display: inline-block"> | ||||||
|  |             <el-form-item label="种子种苗主图" prop="photoUrl" class="dialog-form-item" style="width: 100%"> | ||||||
|  |               <FileUploader v-model="dialogForm.photoUrl" :limit="1" /> | ||||||
|  |             </el-form-item> | ||||||
|  |           </div> | ||||||
|  |           <div style="width: 50%; display: inline-block"> | ||||||
|  |             <el-form-item label="种子种苗详情图" prop="photoUrlDetail" class="dialog-form-item" style="width: 100%"> | ||||||
|  |               <FileUploader v-model="dialogForm.photoUrlDetail" :limit="1" /> | ||||||
|  |             </el-form-item> | ||||||
|  |           </div> | ||||||
|  |         </div> | ||||||
|  |       </el-form> | ||||||
|  |       <template #footer> | ||||||
|  |         <div class="dialog-footer"> | ||||||
|  |           <el-button v-if="!formDisabled" type="primary" @click="onSaveCategory">保存</el-button> | ||||||
|  |           <el-button v-if="!formDisabled" @click="cancelDialog">取消</el-button> | ||||||
|  |           <el-button v-else @click="cancelDialog">关闭</el-button> | ||||||
|  |         </div> | ||||||
|  |       </template> | ||||||
|  |     </el-dialog> | ||||||
|  |   </div> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
|  | <script setup> | ||||||
|  | import { ref, reactive, computed, onMounted, onBeforeUnmount, nextTick } from 'vue'; | ||||||
|  | import tableComponent from '@/components/tableComponent.vue'; | ||||||
|  | import { ElMessage } from 'element-plus'; | ||||||
|  | import inputSuppliesApi from '@/apis/inputSuppliesApi'; | ||||||
|  | const { getSeedList, seedSave, delSeed, getMaterailTypes } = inputSuppliesApi; | ||||||
|  | import { useApp } from '@/hooks'; | ||||||
|  | const app = useApp(); | ||||||
|  | 
 | ||||||
|  | // 查询条件 | ||||||
|  | const formInline = reactive({ | ||||||
|  |   seedName: '', | ||||||
|  |   seedTypeId: '', | ||||||
|  |   current: 1, | ||||||
|  |   size: 10, | ||||||
|  | }); | ||||||
|  | const searchForm = ref(null); | ||||||
|  | const onSubmit = () => { | ||||||
|  |   formInline.current = 1; | ||||||
|  |   loadData(); | ||||||
|  | }; | ||||||
|  | const resetForm = () => { | ||||||
|  |   searchForm.value.resetFields(); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | // 表格数据 | ||||||
|  | const tableData = ref([]); | ||||||
|  | const selectedIds = ref([]); | ||||||
|  | const tableLoading = ref(false); | ||||||
|  | const tableTotal = ref(0); | ||||||
|  | const columns = ref([ | ||||||
|  |   { prop: 'id', label: '编码' }, | ||||||
|  |   { prop: 'seedName', label: '种子种苗名称' }, | ||||||
|  |   { prop: 'varietyName', label: '品种名称' }, | ||||||
|  |   { prop: 'brand', label: '品牌' }, | ||||||
|  |   { prop: 'manufacturer', label: '生产厂家' }, | ||||||
|  |   { prop: 'classifyName', label: '分类' }, | ||||||
|  |   { prop: 'productUnit', label: '产品规格' }, | ||||||
|  |   { prop: 'action', label: '操作', slotName: 'action', width: 230, fixed: 'right' }, | ||||||
|  | ]); | ||||||
|  | const handlePaginationChange = ({ page, pageSize }) => { | ||||||
|  |   formInline.current = page; | ||||||
|  |   formInline.size = pageSize; | ||||||
|  |   loadData(); | ||||||
|  | }; | ||||||
|  | const loadData = async () => { | ||||||
|  |   tableLoading.value = true; | ||||||
|  |   try { | ||||||
|  |     let response = await getSeedList(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) => { | ||||||
|  |   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 = () => { | ||||||
|  |   console.log(formInline.seedTypeId); | ||||||
|  |   // 重新获取表格数据,需添加参数 | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | const dialogFormVisible = ref(false); | ||||||
|  | const dialogRef = ref(null); | ||||||
|  | const dialogTitle = ref('新增'); | ||||||
|  | const formDisabled = ref(false); | ||||||
|  | const dialogForm = reactive({ | ||||||
|  |   id: '', | ||||||
|  |   seedName: '', //种子种苗名称 | ||||||
|  |   varietyName: '', //品种名称 | ||||||
|  |   brand: '', //品牌 | ||||||
|  |   manufacturer: '', //生产厂家 | ||||||
|  |   classifyId: '', //蔬菜种苗id | ||||||
|  |   classifyName: '', //蔬菜种苗名称 | ||||||
|  |   productSpecification: '', //产品规格(number) | ||||||
|  |   productUnit: '', //产品规格单位 | ||||||
|  |   productAttributes: '', //自定义商品属性 | ||||||
|  |   photoUrl: '', //种子种苗主图 | ||||||
|  |   photoUrlDetail: '', //种子种苗详情图 | ||||||
|  | }); | ||||||
|  | const dialogFormRules = ref({ | ||||||
|  |   seedName: [{ required: true, message: '请输入种子种苗名称', trigger: 'blur' }], | ||||||
|  |   varietyName: [{ required: true, message: '请输入品种名称', trigger: 'blur' }], | ||||||
|  |   brand: [{ required: true, message: '请输入品牌', trigger: 'blur' }], | ||||||
|  |   manufacturer: [{ required: true, message: '请输入品牌', trigger: 'blur' }], | ||||||
|  |   classifyId: [ | ||||||
|  |     { | ||||||
|  |       required: true, | ||||||
|  |       message: '请选择蔬菜种苗', | ||||||
|  |       trigger: ['change', 'blur'], | ||||||
|  |     }, | ||||||
|  |   ], | ||||||
|  |   productUnit: [{ required: true, message: '请输入产品规格', trigger: 'blur' }], | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | // 新增操作 | ||||||
|  | const addItem = async () => { | ||||||
|  |   restDialogForm(); | ||||||
|  |   dialogTitle.value = '新增'; | ||||||
|  |   formDisabled.value = false; | ||||||
|  |   dialogFormVisible.value = true; | ||||||
|  | }; | ||||||
|  | // 查看详情 | ||||||
|  | const seeDetails = async (row) => { | ||||||
|  |   dialogTitle.value = '详情'; | ||||||
|  |   setDialogForm(row); | ||||||
|  |   formDisabled.value = true; | ||||||
|  |   dialogFormVisible.value = true; | ||||||
|  | }; | ||||||
|  | // 编辑操作 | ||||||
|  | const handleEdit = (row) => { | ||||||
|  |   console.log('要编辑的行: ', row); | ||||||
|  |   dialogTitle.value = '编辑'; | ||||||
|  |   setDialogForm(row); | ||||||
|  |   formDisabled.value = false; | ||||||
|  |   dialogFormVisible.value = true; | ||||||
|  | }; | ||||||
|  | const setDialogForm = (row) => { | ||||||
|  |   dialogForm.id = row.id; | ||||||
|  |   dialogForm.seedName = row.seedName; | ||||||
|  |   dialogForm.varietyName = row.varietyName; | ||||||
|  |   dialogForm.brand = row.brand; | ||||||
|  |   dialogForm.manufacturer = row.manufacturer; | ||||||
|  |   dialogForm.classifyId = row.classifyId; | ||||||
|  |   dialogForm.classifyName = row.classifyName; | ||||||
|  |   dialogForm.productSpecification = row.productSpecification; | ||||||
|  |   dialogForm.productUnit = row.productUnit; | ||||||
|  |   dialogForm.productAttributes = row.productAttributes; | ||||||
|  |   dialogForm.photoUrl = row.photoUrl; | ||||||
|  |   dialogForm.photoUrlDetail = row.photoUrlDetail; | ||||||
|  | }; | ||||||
|  | // 删除操作 | ||||||
|  | const handleDelete = (row) => { | ||||||
|  |   app | ||||||
|  |     .$confirm(`删除后信息将不可查看,确认要删除吗?`, '确定删除', { | ||||||
|  |       confirmButtonText: '确定', | ||||||
|  |       cancelButtonText: '取消', | ||||||
|  |       type: 'warning', | ||||||
|  |     }) | ||||||
|  |     .then(() => { | ||||||
|  |       deleteGoods(row.id) | ||||||
|  |         .then((res) => { | ||||||
|  |           if (res.code === 200) { | ||||||
|  |             onSubmit(); | ||||||
|  |             app.$message.success('删除成功!'); | ||||||
|  |           } | ||||||
|  |         }) | ||||||
|  |         .catch((err) => { | ||||||
|  |           app.$message.error(err.msg); | ||||||
|  |         }); | ||||||
|  |     }) | ||||||
|  |     .catch(() => {}); | ||||||
|  | }; | ||||||
|  | const deleteGoods = async (ids) => { | ||||||
|  |   try { | ||||||
|  |     let res = await delSeed(ids); | ||||||
|  |     return res; | ||||||
|  |   } catch (error) { | ||||||
|  |     return false; | ||||||
|  |   } | ||||||
|  | }; | ||||||
|  | const onSaveCategory = () => { | ||||||
|  |   console.log(dialogForm); | ||||||
|  |   dialogRef.value.validate(async (valid, fields) => { | ||||||
|  |     if (valid) { | ||||||
|  |       try { | ||||||
|  |         let param = { ...dialogForm }; | ||||||
|  |         param.classifyId = dialogForm.classifyId.join(','); | ||||||
|  |         param.classifyName = dialogForm.classifyName.join(','); | ||||||
|  |         console.log(param); | ||||||
|  |         let response; | ||||||
|  |         if (dialogTitle.value == '新增') { | ||||||
|  |           response = await seedSave(param); | ||||||
|  |         } else { | ||||||
|  |           response = await seedSave(param); | ||||||
|  |         } | ||||||
|  |         if (response.code == 200) { | ||||||
|  |           cancelDialog(); | ||||||
|  |           onSubmit(); | ||||||
|  |           if (dialogTitle.value == '新增') { | ||||||
|  |             ElMessage.success('新增成功!'); | ||||||
|  |           } else { | ||||||
|  |             ElMessage.success('编辑成功!'); | ||||||
|  |           } | ||||||
|  |         } else { | ||||||
|  |           ElMessage.error(response.msg); | ||||||
|  |         } | ||||||
|  |       } catch (error) { | ||||||
|  |         console.error(error); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   }); | ||||||
|  | }; | ||||||
|  | const cancelDialog = async () => { | ||||||
|  |   restDialogForm(); | ||||||
|  |   dialogFormVisible.value = false; | ||||||
|  | }; | ||||||
|  | const restDialogForm = () => { | ||||||
|  |   Object.assign(dialogForm, { | ||||||
|  |     id: '', | ||||||
|  |     seedName: '', //种子种苗名称 | ||||||
|  |     varietyName: '', //品种名称 | ||||||
|  |     brand: '', //品牌 | ||||||
|  |     manufacturer: '', //生产厂家 | ||||||
|  |     classifyId: '', //蔬菜种苗id | ||||||
|  |     classifyName: '', //蔬菜种苗名称 | ||||||
|  |     productSpecification: '', //产品规格(number) | ||||||
|  |     productUnit: '', //产品规格单位 | ||||||
|  |     productAttributes: '', //自定义商品属性 | ||||||
|  |     photoUrl: '', //种子种苗主图 | ||||||
|  |     photoUrlDetail: '', //种子种苗详情图 | ||||||
|  |   }); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 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 cascaderProps = ref({ | ||||||
|  |   label: 'dataName', // 选项标签字段名 | ||||||
|  |   value: 'id', // 选项值字段名 | ||||||
|  |   children: 'children', // 子选项字段名 | ||||||
|  |   emitPath: true, | ||||||
|  |   expandTrigger: 'hover', | ||||||
|  | }); | ||||||
|  | const handleCascaderChange = () => { | ||||||
|  |   const selectedNames = getSelectedNames(dialogForm.classifyId); | ||||||
|  |   console.log('对应的名称:', selectedNames); // 例如: ['花草类种子', '具体种子名称'] | ||||||
|  |   // 如果需要,可以将名称也保存到表单数据中 | ||||||
|  |   dialogForm.classifyName = selectedNames; | ||||||
|  | }; | ||||||
|  | const getSelectedNames = (ids) => { | ||||||
|  |   if (!ids || !ids.length) return []; | ||||||
|  | 
 | ||||||
|  |   let names = []; | ||||||
|  |   let currentLevel = seedTypeDialogList.value; | ||||||
|  | 
 | ||||||
|  |   for (const id of ids) { | ||||||
|  |     const foundItem = currentLevel.find((item) => item.id === id); | ||||||
|  |     if (!foundItem) break; | ||||||
|  | 
 | ||||||
|  |     names.push(foundItem.dataName); | ||||||
|  |     currentLevel = foundItem.children || []; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   return names; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | onMounted(() => { | ||||||
|  |   onSubmit(); | ||||||
|  |   getSeedTypeList(); | ||||||
|  | }); | ||||||
|  | </script> | ||||||
|  | <style lang="scss" scoped> | ||||||
|  | .dialog-form-item { | ||||||
|  |   :deep(.el-upload--picture-card) { | ||||||
|  |     width: 100px; | ||||||
|  |     height: 100px; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   :deep(.file-uploader__upload) { | ||||||
|  |     width: 100px; | ||||||
|  |     height: 100px; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   :deep(.el-upload-list__item) { | ||||||
|  |     width: 100px; | ||||||
|  |     height: 100px; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | </style> | ||||||
| @ -0,0 +1,7 @@ | |||||||
|  | <template> | ||||||
|  |   <div>使用监管概览,开发中...</div> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
|  | <script setup></script> | ||||||
|  | 
 | ||||||
|  | <style lang="scss" scoped></style> | ||||||
| @ -0,0 +1,434 @@ | |||||||
|  | <template> | ||||||
|  |   <div class="app-container"> | ||||||
|  |     <div class="container-custom"> | ||||||
|  |       <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="seedName"> | ||||||
|  |                 <el-input v-model="formInline.seedName" placeholder="请输入" clearable /> | ||||||
|  |               </el-form-item> | ||||||
|  |               <!-- <el-form-item label="分类" prop="seedTypeId"> | ||||||
|  |                 <el-select v-model="formInline.seedTypeId" 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=""> | ||||||
|  |                 <el-button type="primary" icon="Search" @click="onSubmit">查询</el-button> | ||||||
|  |                 <el-button icon="Refresh" @click="resetForm">重置</el-button> | ||||||
|  |               </el-form-item> | ||||||
|  |             </el-form> | ||||||
|  |           </div> | ||||||
|  |         </div> | ||||||
|  |       </div> | ||||||
|  |       <div class="table-toolbar"> | ||||||
|  |         <el-button type="primary" icon="plus" @click="addItem()">新增</el-button> | ||||||
|  |       </div> | ||||||
|  |       <div class="table-cont"> | ||||||
|  |         <tableComponent | ||||||
|  |           :table-data="tableData" | ||||||
|  |           :columns="columns" | ||||||
|  |           :show-selection="false" | ||||||
|  |           :loading="tableLoading" | ||||||
|  |           :total="tableTotal" | ||||||
|  |           :current-page="formInline.current" | ||||||
|  |           :page-size="formInline.size" | ||||||
|  |           :show-sort="false" | ||||||
|  |           @page-change="handlePaginationChange" | ||||||
|  |         > | ||||||
|  |           <!-- 自定义-操作 --> | ||||||
|  |           <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> | ||||||
|  |           </template> | ||||||
|  |         </tableComponent> | ||||||
|  |       </div> | ||||||
|  |     </div> | ||||||
|  |     <el-dialog v-model="dialogFormVisible" :title="dialogTitle" width="800" :close-on-click-modal="false"> | ||||||
|  |       <el-form :inline="true" :label-width="'auto'"> | ||||||
|  |         <el-form-item label="地块编号" prop="seedName"> | ||||||
|  |           <el-input v-model="dialogForm.id" placeholder="请输入地块编号" clearable /> | ||||||
|  |         </el-form-item> | ||||||
|  |         <el-form-item label=""> | ||||||
|  |           <el-button type="primary" icon="Search" @click="getDetails">查询</el-button> | ||||||
|  |         </el-form-item> | ||||||
|  |       </el-form> | ||||||
|  |       <el-descriptions title="地块信息" border> | ||||||
|  |         <el-descriptions-item label="地块">kooriookami</el-descriptions-item> | ||||||
|  |         <el-descriptions-item label="所属行政区">18100000000</el-descriptions-item> | ||||||
|  |         <el-descriptions-item label="所属网格">Suzhou</el-descriptions-item> | ||||||
|  |       </el-descriptions> | ||||||
|  |       <el-descriptions title="经营主体信息" border> | ||||||
|  |         <el-descriptions-item label="姓名">kooriookami</el-descriptions-item> | ||||||
|  |         <el-descriptions-item label="联系方式">18100000000</el-descriptions-item> | ||||||
|  |       </el-descriptions> | ||||||
|  |       <el-form | ||||||
|  |         ref="dialogRef" | ||||||
|  |         :model="dialogForm" | ||||||
|  |         :inline="true" | ||||||
|  |         :label-width="'80'" | ||||||
|  |         :rules="dialogFormRules" | ||||||
|  |         :disabled="formDisabled" | ||||||
|  |         class="dialog-form-container" | ||||||
|  |       > | ||||||
|  |         <div class="dialog-form-title">农药用药详情</div> | ||||||
|  |         <el-form-item label="种子编号" prop="name" class="dialog-form-item"> | ||||||
|  |           <el-input v-model="dialogForm.name" 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="使用量" required prop="useNumber" class="dialog-form-item"> | ||||||
|  |           <el-input-number v-model="dialogForm.useNumber" :min="1" :controls="false" placeholder="请输入用药量" style="width: 150px" /> | ||||||
|  |           <el-select v-model="dialogForm.useUnit" placeholder="请选择" style="width: 80px"> | ||||||
|  |             <el-option v-for="el in unitList" :key="el.unit" :value="el.unit" :label="el.unit" /> | ||||||
|  |           </el-select> | ||||||
|  |         </el-form-item> | ||||||
|  |         <el-form-item label="使用时间" prop="detectionTime" class="dialog-form-item"> | ||||||
|  |           <el-date-picker v-model="dialogForm.detectionTime" :clearable="false" type="date" value-format="YYYY-MM-DD" placeholder="请选择使用时间" /> | ||||||
|  |         </el-form-item> | ||||||
|  |       </el-form> | ||||||
|  |       <template #footer> | ||||||
|  |         <div class="dialog-footer"> | ||||||
|  |           <el-button v-if="!formDisabled" type="primary" @click="onSaveCategory">保存</el-button> | ||||||
|  |           <el-button v-if="!formDisabled" @click="cancelDialog">取消</el-button> | ||||||
|  |           <el-button v-else @click="cancelDialog">关闭</el-button> | ||||||
|  |         </div> | ||||||
|  |       </template> | ||||||
|  |     </el-dialog> | ||||||
|  |   </div> | ||||||
|  | </template> | ||||||
|  | 
 | ||||||
|  | <script setup> | ||||||
|  | import { ref, reactive, computed, onMounted, onBeforeUnmount, nextTick } from 'vue'; | ||||||
|  | import tableComponent from '@/components/tableComponent.vue'; | ||||||
|  | import { ElMessage } from 'element-plus'; | ||||||
|  | import inputSuppliesApi from '@/apis/inputSuppliesApi'; | ||||||
|  | const { getMaterailTypes } = inputSuppliesApi; | ||||||
|  | import { | ||||||
|  |   getSeedUseRegulatoryRecords, | ||||||
|  |   seedUseRegulatorySave, | ||||||
|  |   editSeedUseRegulatory, | ||||||
|  |   delSeedUseRegulatory, | ||||||
|  |   getRowDetails, | ||||||
|  | } from '@/apis/inputSuppliesApi/supervisionOfInputs'; | ||||||
|  | import { useApp } from '@/hooks'; | ||||||
|  | const app = useApp(); | ||||||
|  | 
 | ||||||
|  | // 查询条件 | ||||||
|  | const formInline = reactive({ | ||||||
|  |   seedName: '', | ||||||
|  |   seedTypeId: '', | ||||||
|  |   current: 1, | ||||||
|  |   size: 10, | ||||||
|  | }); | ||||||
|  | const searchForm = ref(null); | ||||||
|  | const onSubmit = () => { | ||||||
|  |   formInline.current = 1; | ||||||
|  |   loadData(); | ||||||
|  | }; | ||||||
|  | const resetForm = () => { | ||||||
|  |   searchForm.value.resetFields(); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | // 表格数据 | ||||||
|  | const tableData = ref([]); | ||||||
|  | const selectedIds = ref([]); | ||||||
|  | const tableLoading = ref(false); | ||||||
|  | const tableTotal = ref(0); | ||||||
|  | const columns = ref([ | ||||||
|  |   { prop: 'landName', label: '地块名称' }, | ||||||
|  |   { prop: 'regionName', label: '所属行政区域' }, | ||||||
|  |   { prop: 'gridName', label: '所属网格' }, | ||||||
|  |   { prop: 'name', label: '负责人姓名' }, | ||||||
|  |   { prop: 'phone', label: '联系方式' }, | ||||||
|  |   { prop: 'provenanceId', label: '种子编号' }, | ||||||
|  |   { prop: 'provenanceName', label: '种子名称' }, | ||||||
|  |   { prop: 'action', label: '操作', slotName: 'action', width: 230, fixed: 'right' }, | ||||||
|  | ]); | ||||||
|  | const handlePaginationChange = ({ page, pageSize }) => { | ||||||
|  |   formInline.current = page; | ||||||
|  |   formInline.size = pageSize; | ||||||
|  |   loadData(); | ||||||
|  | }; | ||||||
|  | const loadData = async () => { | ||||||
|  |   tableLoading.value = true; | ||||||
|  |   try { | ||||||
|  |     let response = await getSeedUseRegulatoryRecords(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) => { | ||||||
|  |   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 = () => { | ||||||
|  |   console.log(formInline.seedTypeId); | ||||||
|  |   // 重新获取表格数据,需添加参数 | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | const dialogFormVisible = ref(false); | ||||||
|  | const dialogRef = ref(null); | ||||||
|  | const dialogTitle = ref('新增'); | ||||||
|  | const formDisabled = ref(false); | ||||||
|  | const dialogForm = reactive({ | ||||||
|  |   id: '', | ||||||
|  |   seedName: '', //种子种苗名称 | ||||||
|  |   varietyName: '', //品种名称 | ||||||
|  |   brand: '', //品牌 | ||||||
|  |   manufacturer: '', //生产厂家 | ||||||
|  |   classifyId: '', //蔬菜种苗id | ||||||
|  |   classifyName: '', //蔬菜种苗名称 | ||||||
|  |   productSpecification: '', //产品规格(number) | ||||||
|  |   productUnit: '', //产品规格单位 | ||||||
|  |   productAttributes: '', //自定义商品属性 | ||||||
|  |   photoUrl: '', //种子种苗主图 | ||||||
|  |   photoUrlDetail: '', //种子种苗详情图 | ||||||
|  | }); | ||||||
|  | const dialogFormRules = ref({ | ||||||
|  |   seedName: [{ required: true, message: '请输入种子种苗名称', trigger: 'blur' }], | ||||||
|  |   varietyName: [{ required: true, message: '请输入品种名称', trigger: 'blur' }], | ||||||
|  |   brand: [{ required: true, message: '请输入品牌', trigger: 'blur' }], | ||||||
|  |   manufacturer: [{ required: true, message: '请输入品牌', trigger: 'blur' }], | ||||||
|  |   classifyId: [{ required: true, message: '请选择蔬菜种苗', trigger: ['change', 'blur'] }], | ||||||
|  |   productUnit: [{ required: true, message: '请输入产品规格', trigger: 'blur' }], | ||||||
|  | }); | ||||||
|  | 
 | ||||||
|  | // 新增操作 | ||||||
|  | const addItem = async () => { | ||||||
|  |   restDialogForm(); | ||||||
|  |   dialogTitle.value = '新增'; | ||||||
|  |   formDisabled.value = false; | ||||||
|  |   dialogFormVisible.value = true; | ||||||
|  | }; | ||||||
|  | // 查看详情 | ||||||
|  | const seeDetails = async (row) => { | ||||||
|  |   console.log('查看详情: ', row); | ||||||
|  |   ElMessage.success('点击查看详情!'); | ||||||
|  |   // dialogTitle.value = '详情'; | ||||||
|  |   // setDialogForm(row); | ||||||
|  |   // formDisabled.value = true; | ||||||
|  |   // dialogFormVisible.value = true; | ||||||
|  | }; | ||||||
|  | // 编辑操作 | ||||||
|  | const handleEdit = (row) => { | ||||||
|  |   console.log('要编辑的行: ', row); | ||||||
|  |   ElMessage.success('点击编辑!'); | ||||||
|  |   // dialogTitle.value = '编辑'; | ||||||
|  |   // setDialogForm(row); | ||||||
|  |   // formDisabled.value = false; | ||||||
|  |   // dialogFormVisible.value = true; | ||||||
|  | }; | ||||||
|  | const getDetails = async () => { | ||||||
|  |   let response = await getRowDetails({ | ||||||
|  |     url: '/inputGoods/supervise/provenance/getDetail/', | ||||||
|  |     id: dialogForm.id, | ||||||
|  |   }); | ||||||
|  |   console.log(response); | ||||||
|  |   if (response.code == 200) { | ||||||
|  |     setDialogForm(response.data); | ||||||
|  |   } else { | ||||||
|  |     ElMessage.error(response.message); | ||||||
|  |   } | ||||||
|  | }; | ||||||
|  | const setDialogForm = (row) => { | ||||||
|  |   dialogForm.id = row.id; | ||||||
|  |   dialogForm.seedName = row.seedName; | ||||||
|  |   dialogForm.varietyName = row.varietyName; | ||||||
|  |   dialogForm.brand = row.brand; | ||||||
|  |   dialogForm.manufacturer = row.manufacturer; | ||||||
|  |   dialogForm.classifyId = row.classifyId; | ||||||
|  |   dialogForm.classifyName = row.classifyName; | ||||||
|  |   dialogForm.productSpecification = row.productSpecification; | ||||||
|  |   dialogForm.productUnit = row.productUnit; | ||||||
|  |   dialogForm.productAttributes = row.productAttributes; | ||||||
|  |   dialogForm.photoUrl = row.photoUrl; | ||||||
|  |   dialogForm.photoUrlDetail = row.photoUrlDetail; | ||||||
|  | }; | ||||||
|  | // 删除操作 | ||||||
|  | const handleDelete = (row) => { | ||||||
|  |   console.log('删除操作: ', row); | ||||||
|  |   app | ||||||
|  |     .$confirm(`删除后信息将不可查看,确认要删除吗?`, '确定删除', { | ||||||
|  |       confirmButtonText: '确定', | ||||||
|  |       cancelButtonText: '取消', | ||||||
|  |       type: 'warning', | ||||||
|  |     }) | ||||||
|  |     .then(() => { | ||||||
|  |       deleteGoods(row.id) | ||||||
|  |         .then((res) => { | ||||||
|  |           if (res.code === 200) { | ||||||
|  |             onSubmit(); | ||||||
|  |             app.$message.success('删除成功!'); | ||||||
|  |           } | ||||||
|  |         }) | ||||||
|  |         .catch((err) => { | ||||||
|  |           app.$message.error(err.msg); | ||||||
|  |         }); | ||||||
|  |     }) | ||||||
|  |     .catch(() => {}); | ||||||
|  | }; | ||||||
|  | const deleteGoods = async (ids) => { | ||||||
|  |   try { | ||||||
|  |     let res = await delSeedUseRegulatory(ids); | ||||||
|  |     return res; | ||||||
|  |   } catch (error) { | ||||||
|  |     return false; | ||||||
|  |   } | ||||||
|  | }; | ||||||
|  | const onSaveCategory = () => { | ||||||
|  |   console.log(dialogForm); | ||||||
|  |   dialogRef.value.validate(async (valid, fields) => { | ||||||
|  |     if (valid) { | ||||||
|  |       try { | ||||||
|  |         let param = { ...dialogForm }; | ||||||
|  |         param.classifyId = dialogForm.classifyId.join(','); | ||||||
|  |         param.classifyName = dialogForm.classifyName.join(','); | ||||||
|  |         console.log(param); | ||||||
|  |         let response; | ||||||
|  |         if (dialogTitle.value == '新增') { | ||||||
|  |           response = await seedUseRegulatorySave(param); | ||||||
|  |         } else { | ||||||
|  |           response = await editSeedUseRegulatory(param); | ||||||
|  |         } | ||||||
|  |         if (response.code == 200) { | ||||||
|  |           cancelDialog(); | ||||||
|  |           onSubmit(); | ||||||
|  |           if (dialogTitle.value == '新增') { | ||||||
|  |             ElMessage.success('新增成功!'); | ||||||
|  |           } else { | ||||||
|  |             ElMessage.success('编辑成功!'); | ||||||
|  |           } | ||||||
|  |         } else { | ||||||
|  |           ElMessage.error(response.msg); | ||||||
|  |         } | ||||||
|  |       } catch (error) { | ||||||
|  |         console.error(error); | ||||||
|  |       } | ||||||
|  |     } | ||||||
|  |   }); | ||||||
|  | }; | ||||||
|  | const cancelDialog = async () => { | ||||||
|  |   restDialogForm(); | ||||||
|  |   dialogFormVisible.value = false; | ||||||
|  | }; | ||||||
|  | const restDialogForm = () => { | ||||||
|  |   Object.assign(dialogForm, { | ||||||
|  |     id: '', | ||||||
|  |     seedName: '', //种子种苗名称 | ||||||
|  |     varietyName: '', //品种名称 | ||||||
|  |     brand: '', //品牌 | ||||||
|  |     manufacturer: '', //生产厂家 | ||||||
|  |     classifyId: '', //蔬菜种苗id | ||||||
|  |     classifyName: '', //蔬菜种苗名称 | ||||||
|  |     productSpecification: '', //产品规格(number) | ||||||
|  |     productUnit: '', //产品规格单位 | ||||||
|  |     productAttributes: '', //自定义商品属性 | ||||||
|  |     photoUrl: '', //种子种苗主图 | ||||||
|  |     photoUrlDetail: '', //种子种苗详情图 | ||||||
|  |   }); | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | 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 cascaderProps = ref({ | ||||||
|  |   label: 'dataName', // 选项标签字段名 | ||||||
|  |   value: 'id', // 选项值字段名 | ||||||
|  |   children: 'children', // 子选项字段名 | ||||||
|  |   emitPath: true, | ||||||
|  |   expandTrigger: 'hover', | ||||||
|  | }); | ||||||
|  | const handleCascaderChange = () => { | ||||||
|  |   const selectedNames = getSelectedNames(dialogForm.classifyId); | ||||||
|  |   console.log('对应的名称:', selectedNames); // 例如: ['花草类种子', '具体种子名称'] | ||||||
|  |   // 如果需要,可以将名称也保存到表单数据中 | ||||||
|  |   dialogForm.classifyName = selectedNames; | ||||||
|  | }; | ||||||
|  | const getSelectedNames = (ids) => { | ||||||
|  |   if (!ids || !ids.length) return []; | ||||||
|  | 
 | ||||||
|  |   let names = []; | ||||||
|  |   let currentLevel = seedTypeDialogList.value; | ||||||
|  | 
 | ||||||
|  |   for (const id of ids) { | ||||||
|  |     const foundItem = currentLevel.find((item) => item.id === id); | ||||||
|  |     if (!foundItem) break; | ||||||
|  | 
 | ||||||
|  |     names.push(foundItem.dataName); | ||||||
|  |     currentLevel = foundItem.children || []; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   return names; | ||||||
|  | }; | ||||||
|  | 
 | ||||||
|  | const unitList = ref([ | ||||||
|  |   { id: '1', unit: 'kg' }, | ||||||
|  |   { id: '2', unit: 'g' }, | ||||||
|  |   { id: '3', unit: 'L' }, | ||||||
|  |   { id: '4', unit: 'ml' }, | ||||||
|  | ]); | ||||||
|  | 
 | ||||||
|  | onMounted(() => { | ||||||
|  |   onSubmit(); | ||||||
|  |   // getSeedTypeList(); | ||||||
|  | }); | ||||||
|  | </script> | ||||||
|  | <style lang="scss" scoped> | ||||||
|  | .dialog-form-item { | ||||||
|  |   :deep(.el-upload--picture-card) { | ||||||
|  |     width: 100px; | ||||||
|  |     height: 100px; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   :deep(.file-uploader__upload) { | ||||||
|  |     width: 100px; | ||||||
|  |     height: 100px; | ||||||
|  |   } | ||||||
|  | 
 | ||||||
|  |   :deep(.el-upload-list__item) { | ||||||
|  |     width: 100px; | ||||||
|  |     height: 100px; | ||||||
|  |   } | ||||||
|  | } | ||||||
|  | </style> | ||||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user