From 85641b3113be902cefff43fe615935845bc118f0 Mon Sep 17 00:00:00 2001
From: li tong bao <2903733959@qq.com>
Date: Thu, 12 May 2022 11:28:53 +0800
Subject: [PATCH] =?UTF-8?q?--=E5=AF=B9=E6=8E=A5=E5=9C=B0=E5=9D=80=E6=96=B0?=
=?UTF-8?q?=E5=A2=9E=E7=BC=96=E8=BE=91?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
src/api/addressManager.ts | 13 +++-
src/common/common.ts | 16 ++++-
src/components/AddressList/index.tsx | 6 +-
src/pages/addressAdd/index.tsx | 95 +++++++++++++++++++---------
4 files changed, 95 insertions(+), 35 deletions(-)
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}/>
)
}