From fa5361c6776f01975737fb5630594a9c60924fc5 Mon Sep 17 00:00:00 2001 From: liuwh <964324856@qq.com> Date: Mon, 23 Jun 2025 16:44:56 +0800 Subject: [PATCH] fix:修改详情修改中问题属地功能 --- src/views/register/closeCaseEdit/component/selectAddr.jsx | 297 +++++++++++++++++++++++++++++----------------------------- 1 files changed, 148 insertions(+), 149 deletions(-) diff --git a/src/views/register/closeCaseEdit/component/selectAddr.jsx b/src/views/register/closeCaseEdit/component/selectAddr.jsx index ce64dda..6e011be 100644 --- a/src/views/register/closeCaseEdit/component/selectAddr.jsx +++ b/src/views/register/closeCaseEdit/component/selectAddr.jsx @@ -1,174 +1,173 @@ - import React, { useEffect, useRef, useState } from 'react'; import MyDrawer from '@/components/MyDrawer'; import { caselogo } from '@/assets/images'; import * as $$ from '@/utils/utility'; -import { Scrollbars } from "react-custom-scrollbars"; +import { Scrollbars } from 'react-custom-scrollbars'; // import { Col, Button, Input, Form } from 'antd'; import { Input, Select, Button } from '@arco-design/web-react'; import { aiSubmit, Aimge } from '@/assets/images'; - //手动输入的级联数据 function createAiChatMessageApi(data) { - return $$.ax.request({ url: `syRegion/getRegionTree`, type: 'get', service: 'sys', data }); + return $$.ax.request({ url: `syRegion/getRegionTree`, type: 'get', service: 'sys', data }); } const SelectAddr = ({ addAdressClick }) => { - const [cascaderList, setCascaderList] = useState([]); - const [oneList, setOneList] = useState([]); - const [twoList, setTwoList] = useState([]); - const [threeList, setThreeList] = useState([]); - const [formData, setFormData] = useState({}) + const [cascaderList, setCascaderList] = useState([]); + const [oneList, setOneList] = useState([]); + const [twoList, setTwoList] = useState([]); + const [threeList, setThreeList] = useState([]); + const [formData, setFormData] = useState({}); - async function createAiChatMessage() { - global.setSpinning(true); - const res = await createAiChatMessageApi(); - global.setSpinning(false); - if (res.type) { - console.log('res', res.data); - let list = res?.data[0]?.children || []; - let nowList = flattenArray(list) || []; - // 转换为一维数组 - setCascaderList(nowList) - setOneList(nowList?.filter(i => i.level === '2')) - } - } + async function createAiChatMessage() { + global.setSpinning(true); + const res = await createAiChatMessageApi(); + global.setSpinning(false); + if (res.type) { + console.log('res', res.data); + let list = res?.data[0]?.children || []; + let nowList = flattenArray(list) || []; + // 转换为一维数组 + setCascaderList(nowList); + setOneList(nowList?.filter((i) => i.level === '2')); + } + } + // 多维数组转一维数组 + function flattenArray(arr) { + let result = []; + function recursiveFlatten(items) { + items.forEach((item) => { + // 将当前对象推入结果数组 + result.push(item); - // 多维数组转一维数组 - function flattenArray(arr) { - let result = []; - function recursiveFlatten(items) { - items.forEach(item => { - // 将当前对象推入结果数组 - result.push(item); + // 如果该对象有 children 属性且是数组,则递归处理 + if (Array.isArray(item.children)) { + recursiveFlatten(item.children); + } + }); + } - // 如果该对象有 children 属性且是数组,则递归处理 - if (Array.isArray(item.children)) { - recursiveFlatten(item.children); - } - }); - } + recursiveFlatten(arr); + return result; + } - recursiveFlatten(arr); - return result; - } + // 区级下拉事件 + function handleOneChange(e) { + console.log('e', e); + if (e) { + setFormData({ ...formData, queArea: e, queRoad: '', village: '' }); + setTwoList(cascaderList?.filter((i) => i.parentId === e)); + } + } - // 区级下拉事件 - function handleOneChange(e) { - console.log('e', e); + function handleTwoChange(e) { + if (e) { + setFormData({ ...formData, queRoad: e, village: '' }); + setThreeList(cascaderList?.filter((i) => i.parentId === e)); + } + } - if (e) { - setFormData({ ...formData, queArea: e, queRoad: '', village: '' }) - setTwoList(cascaderList?.filter(i => i.parentId === e)) - } - } + function handleThreeChange(e) { + setFormData({ ...formData, village: e }); + } - function handleTwoChange(e) { - if (e) { - setFormData({ ...formData, queRoad: e, village: '' }) - setThreeList(cascaderList?.filter(i => i.parentId === e)) - } - } + function submit() { + if (!formData.queArea) { + return $$.info({ type: 'warning', content: '请选择区、街镇、村社' }); + } + let queAreaName = cascaderList?.find((i) => i.value === formData.queArea)?.label; + let queRoadName = cascaderList?.find((i) => i.value === formData.queRoad)?.label; + let villageName = cascaderList?.find((i) => i.value === formData.village)?.label; + let address = `${queAreaName}${queRoadName || ''}${villageName || ''}${formData.addr || ''}`; + addAdressClick && + addAdressClick({ + addr: address, + addrNameList: [queAreaName, queRoadName], + addrList: formData.queRoad ? [formData.queArea, formData.queRoad] : [formData.queArea], + }); + } - function handleThreeChange(e) { - setFormData({ ...formData, village: e }) - } + useEffect(() => { + createAiChatMessage(); + }, []); + return ( + <div style={{ height: '356px' }}> + <div style={{ display: 'flex', gap: '16px' }}> + <div style={{ width: '200px' }}> + <Select + placeholder="请选择区域" + allowClear + onChange={handleOneChange} + onClear={() => { + setFormData({ ...formData, queArea: '', queRoad: '', village: '' }); + setTwoList([]); + setThreeList([]); + }} + value={formData.queArea || undefined} + style={{ width: 200 }} + > + {oneList.map((i, idx) => ( + <Select.Option key={i.value} value={i.value}> + {i.label} + </Select.Option> + ))} + </Select> + </div> + <div style={{ width: '200px' }}> + <Select + allowClear + placeholder="请选择街镇" + onChange={handleTwoChange} + onClear={() => { + setFormData({ ...formData, queRoad: '', village: '' }); + setThreeList([]); + }} + value={formData.queRoad || undefined} + style={{ width: 200 }} + > + {twoList.map((i, idx) => ( + <Select.Option key={i.value} value={i.value}> + {i.label} + </Select.Option> + ))} + </Select> + </div> + <div style={{ width: '200px' }}> + <Select + allowClear + onClear={() => { + setFormData({ ...formData, village: '' }); + }} + placeholder="请选择村社" + onChange={handleThreeChange} + value={formData.village || undefined} + style={{ width: 200 }} + > + {threeList.map((i, idx) => ( + <Select.Option key={i.value} value={i.value}> + {i.label} + </Select.Option> + ))} + </Select> + </div> + <div style={{ width: '100%' }}> + <Input + placeholder="请填写具体地点信息" + style={{ width: '100%' }} + onChange={(e) => { + setFormData({ ...formData, addr: e }); + }} + /> + </div> + </div> + <Button style={{ marginTop: '16px' }} type="primary" onClick={() => submit()}> + 提交 + </Button> + </div> + ); +}; - function submit() { - if (!formData.queArea || !formData.queRoad || !formData.village) { - return $$.info({ type: 'warning', content: '请选择区、街镇、村社' }); - } - if (!formData.addr) { - return $$.info({ type: 'warning', content: '请填写具体地点信息' }); - } - let queAreaName = cascaderList?.find(i => i.value === formData.queArea)?.label; - let queRoadName = cascaderList?.find(i => i.value === formData.queRoad)?.label; - let villageName = cascaderList?.find(i => i.value === formData.village)?.label; - let address = `${queAreaName}${queRoadName}${villageName}${formData.addr}` - addAdressClick && addAdressClick({ - addr: address, - queArea: formData.queArea, - queAreaName, - queRoadName, - queRoad: formData.queRoad, - }, [formData.queArea, formData.queRoad]) - } - - useEffect(() => { - createAiChatMessage(); - }, []) - - return ( - <div style={{ height: '356px' }}> - <div style={{ display: 'flex', gap: '16px' }}> - <div style={{ width: '200px' }}> - <Select - placeholder="请选择区域" - allowClear - onChange={handleOneChange} - onClear={() => { setFormData({ ...formData, queArea: '', queRoad: '', village: '' }); setTwoList([]); setThreeList([]) }} - value={formData.queArea || undefined} - style={{ width: 200 }} - > - {oneList.map((i, idx) => ( - <Select.Option key={i.value} value={i.value}> - {i.label} - </Select.Option> - ))} - </Select> - </div> - <div style={{ width: '200px' }}> - <Select - allowClear - placeholder="请选择街镇" - onChange={handleTwoChange} - onClear={() => { setFormData({ ...formData, queRoad: '', village: '', }); setThreeList([]) }} - value={formData.queRoad || undefined} - style={{ width: 200 }} - > - {twoList.map((i, idx) => ( - <Select.Option key={i.value} value={i.value}> - {i.label} - </Select.Option> - ))} - </Select> - </div> - <div style={{ width: '200px' }}> - <Select - allowClear - onClear={() => { setFormData({ ...formData, village: '' }) }} - placeholder="请选择村社" - onChange={handleThreeChange} - value={formData.village || undefined} - style={{ width: 200 }} - > - {threeList.map((i, idx) => ( - <Select.Option key={i.value} value={i.value}> - {i.label} - </Select.Option> - ))} - </Select> - </div> - <div style={{ width: '100%' }}> - <Input - placeholder='请填写具体地点信息' - style={{ width: '100%' }} - onChange={(e) => { - setFormData({ ...formData, addr: e }) - }} - /> - </div> - </div> - <Button style={{ marginTop: '16px' }} type="primary" onClick={() => submit()}>提交</Button> - </div> - - ) -} - - - -export default SelectAddr; \ No newline at end of file +export default SelectAddr; -- Gitblit v1.8.0