Commit 7c9f25e9 authored by Damon's avatar Damon

refactor: 区分物料收货地址和我的收货地址

parent 48ffc955
......@@ -13,7 +13,7 @@
<u-icon name="checkmark-circle" :color="isDefault ? '#2272FF' : '#999'" size="32"></u-icon>
<text class="txt">默认地址</text>
</view>
<view @click="$u.throttle(remove, 500)">
<view @click="$u.throttle(remove, 500)" v-if="showRemove">
<text class="txt">删除</text>
</view>
</view>
......@@ -45,6 +45,10 @@ export default {
siteType: {
type: String,
default: 'edit'
},
showRemove: {
type: Boolean,
default: false
}
},
data() {
......
......@@ -563,6 +563,15 @@
"disableScroll": true
}
},
{
"path":"address",
"style": {
"navigationBarTitleText": "收货地址",
"enablePullDownRefresh": false,
"navigationStyle": "custom",
"disableScroll": true
}
},
{
"path": "addParts",
"style": {
......
......@@ -274,15 +274,13 @@ export default {
} else {
if (this.$u.test.isEmpty(this.siteInfo)) {
let params = {
mobile: this.mobile,
name: this.name,
updateFlag: true,
provinceName: this.region[0],
cityName: this.region[1],
districtName: this.region[2],
address: this.region.join("") + this.address
};
if (this.id) params.id = this.id
let res = await this.$u.api.saveMyAddress(params);
let res = await this.$u.api.updateAddress(params);
if (res && res.code == 200) {
this.$u.route({ type: 'back' });
this.show = false
......@@ -292,23 +290,37 @@ export default {
}
}
},
commitSite() {
async commitSite() {
if(!this.validateForm()) {
return false
}
// 获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。
var pages = getCurrentPages();
var prevPage = pages[pages.length - 2]; //上一个页面
//prevPage.route获取上一页面的页面路径
let address = this.region.join("") + this.address
let site = {
name: this.name,
let params = {
mobile: this.mobile,
address: address,
region: this.region
name: this.name,
provinceName: this.region[0],
cityName: this.region[1],
districtName: this.region[2],
address: this.region.join("") + this.address
};
if (this.id) params.id = this.id
let res = await this.$u.api.saveMyAddress(params);
if (res && res.code == 200) {
let pages = getCurrentPages()
let prevPage = pages[pages.length - 2]
if (prevPage.route === 'pages/parts/application') {
let address = this.region.join("") + this.address
let site = {
name: this.name,
mobile: this.mobile,
address: address,
region: this.region,
id: this.id
}
prevPage.$vm.updateSite(site)
}
this.show = false
this.$u.route({ type: 'back' });
}
prevPage.$vm.updateSite(site)
this.$u.route({ type: 'back' });
}
}
};
......
<template>
<view class="u-flex address-wrap">
<view class="address-wrap">
<w-navbar title="收货地址"></w-navbar>
<view class="lists">
<view class="body" v-for="(item, index) in lists" :key="item.id">
<w-address @editSite="toEditSite(item)" @selectSite="selectSite(item)" @setDefault="setDefault(item, index)" @remove="remove(item)" :info="item" :is-default="item.enable === 1" />
</view>
</view>
<view class="addSite" @tap="toAddSite">
<view class="add">
新建收货地址
</view>
<view class="body" v-if="hasAdderss">
<w-address @editSite="toAddSite" :info="info" :is-default="true" />
</view>
</view>
</template>
......@@ -23,24 +15,31 @@ export default {
background: {
backgroundColor: 'none'
},
lists: [],
type: ''
info: {
name: '',
mobile: '',
address: '',
region: [],
},
};
},
computed: {
editPen() {
return process.uniEnv.qn_base_url + 'icon/edit-pen.png'
},
submitBtn() {
hasAdderss() {
return this.info.address
},
addressInfo() {
return {
color: '#FFFFFF',
backgroundColor: '#2272FF'
name: this.name,
mobile: this.mobile,
address: this.address,
region: this.region || [],
}
}
},
onLoad(options) {
if (options) this.type = options.type
onLoad() {
getApp().trackPage('我的收获地址页')
},
onShow() {
......@@ -54,98 +53,32 @@ export default {
this.getMineSite()
},
getMineSite() {
this.$u.api.getMyAddress().then((res) => {
this.$u.api.getSiteAddress().then((res) => {
const data = res.data
if (data.length > 0) {
this.lists = data.map(v => {
let region = []
if(v.provinceName && v.cityName && v.districtName) {
region = [v.provinceName, v.cityName, v.districtName]
}
v.region = region
return v
})
}
})
},
toAddSite() {
this.$u.route({
url: 'pages/mine/address/addSite',
params: {
type: 'add'
}
})
},
setDefault(val) {
this.$u.api.setDefaultAddress({id: val.id}).then((res) => {
if (res.code === 200) {
this.lists.forEach(v => {
this.$set(v, 'enable', v.id === val.id ? 1 : 0)
})
this.getMineSite()
if (this.type === 'parts') {
let pages = getCurrentPages()
let prevPage = pages[pages.length - 2]
prevPage.$vm.loadAddress()
if(res.code == 200 && !this.$u.test.isEmpty(data)) {
let region = []
if(data.provinceName && data.cityName && data.districtName) {
region = [data.provinceName, data.cityName, data.districtName]
}
}
})
},
remove(val) {
uni.showModal({
title: '温馨提示',
content: '确定要删除该收货地址?',
success: (res) => {
if (res.confirm) {
uni.showLoading({
title: '加载中',
})
this.$u.api.deleteMyAddress({id: val.id}).then((res) => {
uni.hideLoading()
if (res.code === 200) {
this.getMineSite()
} else {
uni.showToast({
icon: "none",
title: res.message,
})
}
})
this.info = {
name: data.name,
mobile: data.mobile,
address: data.address,
region: region,
}
}
})
},
selectSite(val) {
if (this.type === 'parts') {
let pages = getCurrentPages();
let prevPage = pages[pages.length - 2]; //上一个页面
let address = val.region.join("") + val.address
let site = {
name: val.name,
mobile: val.mobile,
address: address,
region: val.region,
id: val.id
}
prevPage.$vm.updateSite(site)
this.$u.route({
type: 'back'
})
} else {
this.toEditSite(val)
}
},
toEditSite(val){
const region = val.region.join('-')
toAddSite(title){
const region = this.info.region.join('-')
this.$u.route({
url: 'pages/mine/address/addSite',
params: {
type: 'edit',
region: region,
name: val.name,
mobile: val.mobile,
address: val.address,
id: val.id
name: this.info.name,
mobile: this.info.mobile,
address: this.info.address,
}
})
}
......@@ -156,13 +89,6 @@ export default {
<style lang="scss" scoped>
.address-wrap {
background-color: #F4F5F7;
flex-direction:column;
height: 100vh;
.lists {
width: 100%;
flex: 1;
overflow-y:auto;
}
}
.body {
padding: 30rpx;
......@@ -170,24 +96,4 @@ export default {
border-radius: 12rpx;
background-color: #FFFFFF;
}
.addSite {
display: flex;
justify-content: space-around;
width: 600rpx;
height: 100rpx;
line-height: 100rpx;
margin: 50rpx 0;
background-color: #2272FF;
border-radius: 60rpx;
font-size: 30rpx;
.add{
display: flex;
align-items: center;
color: #ffffff;
.icon{
margin-right: 10rpx;
}
}
}
</style>
<template>
<view class="u-flex address-wrap">
<w-navbar title="收货地址"></w-navbar>
<view class="lists">
<view class="body" v-for="(item, index) in lists" :key="item.id">
<w-address @editSite="toEditSite(item)" @selectSite="selectSite(item)" @setDefault="setDefault(item, index)" @remove="remove(item)" :info="item" :is-default="item.enable === 1" :showRemove="true" />
</view>
</view>
<view class="addSite" @tap="toAddSite">
<view class="add">
新建收货地址
</view>
</view>
</view>
</template>
<script>
const app = getApp();
export default {
data() {
return {
background: {
backgroundColor: 'none'
},
lists: []
};
},
computed: {
editPen() {
return process.uniEnv.qn_base_url + 'icon/edit-pen.png'
},
submitBtn() {
return {
color: '#FFFFFF',
backgroundColor: '#2272FF'
}
}
},
onLoad(options) {
getApp().trackPage('我的收获地址页')
},
onShow() {
if(this.$u.test.isEmpty(this.vuex_token)) {
this.$u.route({url: 'pages/login/index'})
}
this.getData();
},
methods: {
getData() {
this.getMineSite()
},
getMineSite() {
this.$u.api.getMyAddress().then((res) => {
const data = res.data
if (data.length > 0) {
this.lists = data.map(v => {
let region = []
if(v.provinceName && v.cityName && v.districtName) {
region = [v.provinceName, v.cityName, v.districtName]
}
v.region = region
return v
})
}
})
},
toAddSite() {
this.$u.route({
url: 'pages/mine/address/addSite',
params: {
type: 'select'
}
})
},
setDefault(val) {
this.$u.api.setDefaultAddress({id: val.id}).then((res) => {
if (res.code === 200) {
this.lists.forEach(v => {
this.$set(v, 'enable', v.id === val.id ? 1 : 0)
})
this.getMineSite()
let pages = getCurrentPages()
let prevPage = pages[pages.length - 2]
prevPage.$vm.loadAddress()
}
})
},
remove(val) {
uni.showModal({
title: '温馨提示',
content: '确定要删除该收货地址?',
success: (res) => {
if (res.confirm) {
uni.showLoading({
title: '加载中',
})
this.$u.api.deleteMyAddress({id: val.id}).then((res) => {
uni.hideLoading()
if (res.code === 200) {
this.getMineSite()
} else {
uni.showToast({
icon: "none",
title: res.message,
})
}
})
}
}
})
},
selectSite(val) {
let pages = getCurrentPages();
let prevPage = pages[pages.length - 2]; //上一个页面
let address = val.region.join("") + val.address
let site = {
name: val.name,
mobile: val.mobile,
address: address,
region: val.region,
id: val.id
}
prevPage.$vm.updateSite(site)
this.$u.route({
type: 'back'
})
},
toEditSite(val){
const region = val.region.join('-')
this.$u.route({
url: 'pages/mine/address/addSite',
params: {
type: 'select',
region: region,
name: val.name,
mobile: val.mobile,
address: val.address,
id: val.id
}
})
}
}
};
</script>
<style lang="scss" scoped>
.address-wrap {
background-color: #F4F5F7;
flex-direction:column;
height: 100vh;
.lists {
width: 100%;
flex: 1;
overflow-y:auto;
}
}
.body {
padding: 30rpx;
margin: 30rpx;
border-radius: 12rpx;
background-color: #FFFFFF;
}
.addSite {
display: flex;
justify-content: space-around;
width: 600rpx;
height: 100rpx;
line-height: 100rpx;
margin: 50rpx 0;
background-color: #2272FF;
border-radius: 60rpx;
font-size: 30rpx;
.add{
display: flex;
align-items: center;
color: #ffffff;
.icon{
margin-right: 10rpx;
}
}
}
</style>
......@@ -68,7 +68,7 @@ export default {
remark: '',
curType: 0,
addressInfo: {
name: '', mobile: '', address: '', region: []
id: '', name: '', mobile: '', address: '', region: []
},
};
},
......@@ -106,6 +106,7 @@ export default {
loadAddress() {
this.$u.api.getDefaultAddress().then((res) => {
if(res.code == 200 && res.data) {
this.addressInfo.id = res.data.id
this.addressInfo.name = res.data.name
this.addressInfo.mobile = res.data.mobile
this.addressInfo.address = res.data.address
......@@ -136,6 +137,7 @@ export default {
url: "pages/mine/address/addSite",
params: {
type: 'select',
id: this.addressInfo.id,
name: this.addressInfo.name,
mobile: this.addressInfo.mobile,
address: this.addressInfo.address,
......@@ -145,10 +147,7 @@ export default {
},
toAddress() {
this.$u.route({
url: "pages/mine/address/index",
params: {
type: 'parts'
}
url: "pages/parts/address"
})
},
updateSite(site) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment