diff --git a/src/api/addressManager.ts b/src/api/addressManager.ts index 1d2f537..376ba04 100644 --- a/src/api/addressManager.ts +++ b/src/api/addressManager.ts @@ -17,7 +17,18 @@ import { useRequest } from "@/use/useHttp" */ export const addressAddApi = () => { return useRequest({ - url: `/lymarket/v1/mall/address`, + url: `/v1/mall/address`, method: "post", }) } + +/** + * 地址详情 + * @returns + */ + export const addressDetailApi = () => { + return useRequest({ + url: `/v1/mall/address`, + method: "get", + }) +} diff --git a/src/common/common.ts b/src/common/common.ts index fe8f1cd..5081eb8 100644 --- a/src/common/common.ts +++ b/src/common/common.ts @@ -46,11 +46,23 @@ export const isEmptyObject = (object: any)=>{ /** * 表单检索 * @param data - * @param rules + * @param rules = { + account: [{ + message: "请输入正确的用户名", + // regex: /\d/, // 正则匹配规则 + // validator: (value:any, rule:any)=>{ // 自定义验证,返回true表示匹配到了(错误) + // return false; + // } + }], + password: [{ + message: "请输入正确的密码", + // regex: /\d/ + }] + }; * @param message * @returns */ -export const retrieval = (data: any, message: string="请填写完信息", rules?: Object)=>{ +export const retrieval = (data: any, rules?: Object, message: string="请填写完信息")=>{ return new Promise((resolve, reject)=>{ if(rules){ const keys = Reflect.ownKeys(rules); diff --git a/src/components/AddressList/index.tsx b/src/components/AddressList/index.tsx index 90806e1..e60a20f 100644 --- a/src/components/AddressList/index.tsx +++ b/src/components/AddressList/index.tsx @@ -51,9 +51,11 @@ const AddressList = memo((props:Params)=>{ {/* **省**市**区**街道****仓库 */} {item.province_name+item.city_name+item.district_name} {item.address_detail} - {item.phone} + { + item.is_default&&{item.phone} + } - + diff --git a/src/pages/addressAdd/index.tsx b/src/pages/addressAdd/index.tsx index 5461806..3070ba7 100644 --- a/src/pages/addressAdd/index.tsx +++ b/src/pages/addressAdd/index.tsx @@ -6,74 +6,109 @@ 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} from "@/api/addressManager" +import {addressAddApi, addressDetailApi} from "@/api/addressManager" export default ()=>{ const [showSiteModal, setShowSiteModal] = useState(false); - const {type} = useRouter().params; + const {type,id} = useRouter().params; useEffect(()=>{ if(type=="add"){ setNavigationBarTitle({title:"新增收货地址"}) }else{ + // initalFormData(); setNavigationBarTitle({title:"编辑收货地址"}) } },[]) - - const handleSelectSite = ()=>{ - setShowSiteModal(true); + // 获取编辑地址信息 + const {fetchData: getFromData} = addressDetailApi() + const initalFormData = async ()=>{ + const detail = await getFromData({id}); + const siteArray = [] + // setFormData({ + // name: detail.data.name, + // phone: detail.data.phone, + // site: detail.data., + // siteArray: [], + // district_id: detail.data.district_id, + // address_detail: detail.data.address_detail, + // is_default: false + // }) } + const {fetchData, state} = addressAddApi() // 保存 - const [formData, setFormData] = useState(new Proxy({ + const [formData, setFormData] = useState({ name: "", phone:"", site:"", + siteArray: [], district_id:"", address_detail: "", is_default: false - }, { - get: function (target, propKey, receiver) { - - return Reflect.get(target, propKey, receiver); - }, - set: function (target, propKey, value, receiver) { - console.log("进来了"); - - return Reflect.set(target, propKey, value, receiver); - } - })) - Taro.enableAlertBeforeUnload({ - message: "编辑末保存", - }) - - - const handleSave = async ()=>{ - if(hozon){ - await fetchData({ + const rules = { + name: [{ + message: "请输入收货人姓名" + }], + 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 = await fetchData({ name: formData.name, phone:formData.phone, site:formData.site, district_id:formData.district_id, address_detail: formData.address_detail, + is_default: formData.is_default }); + if(result.success){ + alert.success("保存成功") + }else{ + alert.error(result.msg); + } // Taro.navigateBack(); - }else{ - alert.error("请完善表单!") - } + }).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)=>{ + console.log(ev); + + if(ev.length>=3){ + 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="请输入详细地址(街道、门牌号等)"/> 设为默认地址 @@ -88,7 +123,7 @@ export default ()=>{ -
console.log('地址::',e)} defaultValue={[{name: "广东省", id: 193}, {name: "佛山市", id: 202}, {name: "高明区", id: 204}]} addressOnClose={()=>setShowSiteModal(false)} show={showSiteModal}/> +
setShowSiteModal(false)} show={showSiteModal}/> ) }