From 9a139cc25da8396c1b257ccf99eb8d2fedfbc94d Mon Sep 17 00:00:00 2001 From: Liuyi <candymxq888@outlook.com> Date: 星期三, 23 十月 2024 17:24:35 +0800 Subject: [PATCH] 添加校验,修改头像 --- pages/addressAdd/index.vue | 157 ++++++++++++++++++++++++++++++++++++++++++---------- 1 files changed, 127 insertions(+), 30 deletions(-) diff --git a/pages/addressAdd/index.vue b/pages/addressAdd/index.vue index 28591f9..3276ff9 100644 --- a/pages/addressAdd/index.vue +++ b/pages/addressAdd/index.vue @@ -1,8 +1,87 @@ <script setup> - import { onMounted, ref } from 'vue'; - import { getRegionApi } from '../../api/index.js'; + import { onMounted, ref, watchEffect } from 'vue'; + import { getRegionApi,creatUserArchive,getAddressApi,editAddressApi } from '../../api/index.js'; + import { onLoad } from "@dcloudio/uni-app" + + const addressId = ref() + const pageTitle = ref('新增地址') + const isCheckedDefault =ref(false) + const form = ref({ + id:'', + userName:'', + userPhone:'', + listRegion:[], + userAddress:'', + isDefault:null, + }) + //获取地址 + async function getAddress(){ + if(addressId.value){ + pageTitle.value = "编辑地址" + await getAddressApi(addressId.value).then((res) =>{ + form.value.id = res.data.id + form.value.userName = res.data.userName + form.value.userPhone = res.data.userPhone + form.value.listRegion = res.data.region.replace(/#/g,'').split(',') + form.value.userAddress = res.data.address + form.value.isDefault = res.data.isDefault + regionName.value = res.data.regionName.replace(/[#,]/g,' ') + isCheckedDefault.value = form.value.isDefault == 1 ? true : false + console.log('form',form.value) + }) + }else{ + console.log('xiznzeng') + } + } + onLoad(async(option)=>{ + addressId.value = option.id + console.log('1') + }) + onMounted(()=>{ + getAddress() + }) + function change(e){ + form.value.isDefault = e.detail.value ? 1 : 0 + } + //提交表单数据 + async function submit(){ + //修改地址 + if(form.value.id){ + await editAddressApi(form.value).then((res) =>{ + if(res.code == 200){ + uni.showToast({ + title: '修改成功', + duration:500 + }) + setTimeout(() =>{ + uni.navigateBack() + form.value = {} + },500) + } + }) + }else{ + //新增地址 + form.value.id = JSON.parse(uni.getStorageSync('userInfo')).id + await creatUserArchive(form.value).then((res) =>{ + if(res.code == 200){ + uni.showToast({ + title: '新增成功', + duration:1000 + }) + setTimeout(() =>{ + uni.navigateBack() + form.value = {} + },1000) + } + }) + } + } + + const DaTreeRef = ref() + const treeListData = ref([]) const isExpandIcon = ref(false) - const regionName = ref('上海市') + const regionName = ref('') + //展开关闭选择框 function expandRegion(){ if(isExpandIcon.value){ isExpandIcon.value = false @@ -22,21 +101,42 @@ console.log(res) }) } - const treeListData = ref([]) + //设置选中区域名 + function setRegionName(){ + let nodeList + let nameList = [] + //判断选中是否根节点,根节点直接取选中node值 + if(DaTreeRef.value.getHalfCheckedNodes()){ + nodeList = DaTreeRef.value.getHalfCheckedNodes().concat(DaTreeRef.value.getCheckedNodes()) + console.log('ban',DaTreeRef.value.getHalfCheckedNodes(),DaTreeRef.value.getCheckedNodes()) + }else{ + nodeList = DaTreeRef.value.getCheckedNodes() + } + nodeList.forEach((item)=>{ + nameList.push(item.label) + }) + regionName.value = nameList.join() + } + //选中区域 function handleTreeChange(e,e2){ - regionName.value = e isExpandIcon.value = false - console.log('change',e,e2) + if(DaTreeRef.value.getHalfCheckedKeys()){ + form.value.listRegion = DaTreeRef.value.getHalfCheckedKeys().concat(DaTreeRef.value.getCheckedKeys()) + }else{ + form.value.listRegion = DaTreeRef.value.getCheckedKeys() + } + setRegionName() + console.log('select',form.value.listRegion,regionName.value) } //遍历树形数据,给展开子节点数据赋值 - function setTreeData(data,code,childData){ + function setTreeData(data,id,childData){ let treeList = data treeList.forEach((item) =>{ - if(item.code === code){ + if(item.id === id){ item.children = childData }else{ if(item.children && item.children.length > 0){ - setTreeData(item.children,code,childData); + setTreeData(item.children,id,childData); } } }) @@ -45,11 +145,10 @@ //展开节点,请求节点数据 async function handleExpandChange(isExpand,item){ if(item.children[0].key != undefined){ - console.log('1',isExpand,item,item.children[0].key) }else{ let treeList = treeListData.value let childData = [] - await getRegionApi(item.key).then((res) =>{ + await getRegionApi(item.originItem.code).then((res) =>{ res.data.forEach((item)=>{ if((item.children == null) && item.level!=4){ item.children = [{}] @@ -61,46 +160,36 @@ DaTreeRef.value.setExpandedKeys([item.key],true) } } - const DaTreeRef = ref() - const isDefault =ref(false) - const form = ref({ - name:'', - phone:'', - region:'', - address:'', - }) - function submit(){ - - } + onMounted(async() =>{ await getRegion() }) </script> <template> <view class="container"> - <navbar title ='新增地址'></navbar> + <navbar :title ='pageTitle'></navbar> <view class="content"> <view class="main"> <view class="item"> <text>联系人</text> - <input v-model="form.name" placeholder="请输入联系人" /> + <input v-model="form.userName" placeholder="请输入联系人" /> </view> <view class="item"> <text>联系电话</text> - <input v-model="form.phpne" placeholder="请输入联系电话" /> + <input v-model="form.userPhone" placeholder="请输入联系电话" /> </view> <view class=" item tree-item"> <text>送水区域</text> <view class="tree-select" @click="expandRegion()"> - <text v-if="!isExpandIcon && !regionName" class="tree-placehoder">请选择送水区域</text> - <text v-if="regionName" class="tree-placehoder">{{regionName}}</text> + <text v-if="!isExpandIcon && !regionName" class="tree-placehoder">省市区域</text> + <view v-if="regionName" class="tree-name">{{regionName}}</view> <image :class="isExpandIcon ? 'tree-img' : 'tree-img-fold'" src="../../static/images/address/expand.png"></image> </view> <view v-if='isExpandIcon' class="tree"> <DaTree ref="DaTreeRef" :data="treeListData" labelField="name" - valueField="code" + valueField="id" :showRadioIcon='false' @change="handleTreeChange" @expand="handleExpandChange"></DaTree> @@ -108,13 +197,13 @@ </view> <view class="item"> <text>送水地址</text> - <input v-model="form.address" placeholder="请输入详细地址" /> + <input v-model="form.userAddress" placeholder="请输入详细地址" /> </view> </view> <view class="default"> <view>设为默认收货地址</view> - <switch :checked = 'isDefault' color="#1890FF"/> + <switch :checked='isCheckedDefault' @change="change" color="#1890FF"/> </view> <view class="subBtn" @click="submit()">提交信息</view> </view> @@ -170,6 +259,14 @@ color: #868686; margin-left:36rpx; } + .tree-name{ + height: 100%; + width:400rpx; + line-height:93rpx; + color: #000; + margin-left:36rpx; + overflow-x:hidden; + } .tree-img-fold{ width:36rpx; height:36rpx; -- Gitblit v1.9.3