import { alert, retrieval } from "@/common/common" import Address from "@/components/address" import FromList from "@/components/FromList" import { Button, Input, Text, Textarea, View } from "@tarojs/components" import Taro, { setNavigationBarTitle, useRouter } from "@tarojs/taro" import { useEffect, useState } from "react" import "./index.scss" import {addressAddApi, addressDetailApi,addressEditApi} from "@/api/addressManager" import useLogin from "@/use/useLogin" export default ()=>{ useLogin() const [showSiteModal, setShowSiteModal] = useState(false); const {type,id} = useRouter().params; useEffect(()=>{ if(type=="add"){ setNavigationBarTitle({title:"新增收货地址"}) }else{ initalFormData(); setNavigationBarTitle({title:"编辑收货地址"}) } },[]) // 获取编辑地址信息 const {fetchData: getFromData} = addressDetailApi() const initalFormData = async ()=>{ const detail = await getFromData({id}); const { province_id,province_name,city_id,city_name,district_id,district_name } = detail.data; const siteArray = [{id: province_id, name: province_name}]; city_id&&siteArray.push({id: city_id, name: city_name}); district_id&&siteArray.push({id: district_id, name: district_name}); setFormData({ name: detail.data.name, phone: detail.data.phone, site: siteArray.map(item=>item.name).join(" "), siteArray: siteArray as any, district_id: detail.data.district_id, address_detail: detail.data.address_detail, is_default: detail.data.is_default, id: detail.data.id, }) } const {fetchData} = addressAddApi() const {fetchData: editFetch} = addressEditApi() // 保存 const [formData, setFormData] = useState({ name: "", phone:"", site:"", siteArray: [], district_id:"", address_detail: "", is_default: false, id: 0 }) const rules = { name: [{ message: "请输入正确收货人姓名", // validator: (value:any, rule:any)=>{ // 自定义验证,返回true表示匹配到了(错误) // return value.length>5; // } }], phone: [{ message: "请输入正确的电话号码", regex: /^1[3|5|6|9|2|8|7]\d{9}$/ }], district_id: [{ message: "请选择地址" }], address_detail: [{ message: "请输入详细地址" }], } const handleSave = ()=>{ retrieval(formData, rules).then(async ()=>{ const result = type=="add"?await fetchData({ name: formData.name, phone:formData.phone, district_id:formData.district_id, address_detail: formData.address_detail, is_default: formData.is_default }):await editFetch({ name: formData.name, phone:formData.phone, district_id:formData.district_id, address_detail: formData.address_detail, is_default: formData.is_default, id: formData.id }); if(result.success){ Taro.eventCenter.trigger("addressList:refresh"); Taro.navigateBack(); alert.success("保存成功"); }else{ alert.error(result.msg); } }).catch((message)=>{ alert.none(message) }) } // 监听表单完善 const [hozon, setHozon] = useState(false); useEffect(()=>{ if(retrieval){ retrieval(formData).then(()=>setHozon(true)).catch(()=>setHozon(false)) } },[formData]) // 设置选择地址 const handleSetSite = (ev:any)=>{ if(ev.length > 0){ setFormData({ ...formData, siteArray: ev, site: ev.map(item=>item.name+" "), district_id: ev[ev.length-1]?.id }) }else{ alert.error("请选择地址"); } } return ( setFormData({...formData,name:ev.detail.value})} value={formData["name"]} label="联系人" placeholder="请输入收货人姓名"/> setFormData({...formData,phone:ev.detail.value})} value={formData["phone"]} label="联系方式" placeholder="请输入联系方式"/> setShowSiteModal(true)} label="收货地址" type="select" placeholder="请选择/省/市/区"/> setFormData({...formData,address_detail:ev.detail.value})} value={formData["address_detail"]} label="详细地址" type="textarea" placeholder="请输入详细地址(街道、门牌号等)"/> 设为默认地址 setFormData({...formData ,is_default: !formData.is_default})}> { formData.is_default? : }
setShowSiteModal(false)} show={showSiteModal}/> ) }