Commit 51ace0e9 authored by Morson's avatar Morson

feat(parts):修改地址逻辑调整

parent db22cdc3
......@@ -4,6 +4,7 @@ let partsApiFun = function (vm) {
const coverage = '/wxh-worker-rest/rest/coverage/'
const parts = '/wxh-worker-rest/rest/parts/'
const base = '/wxh-worker-rest/rest/base/'
const formType = {'content-type': 'application/x-www-form-urlencoded'}
/**
* 配件申请单-查询网点地址信息
......@@ -12,7 +13,7 @@ let partsApiFun = function (vm) {
/**
* 配件申请单-修改网点地址信息
*/
let updateAddress = async (params = {}) => await vm.$u.post(coverage + vm.vuex_token + '/updateSiteAddress', params);
let updateAddress = async (params = {}) => await vm.$u.post(coverage + vm.vuex_token + '/updateSiteAddress', params, formType);
/**
* 配件过滤-品类列表
*/
......
......@@ -30,7 +30,7 @@ export default {
info: {
type: Object,
default() {
return {name: '', mobile: '', address: ''};
return {name: '', mobile: '', address: '', region: []};
}
},
isDefault: {
......@@ -73,8 +73,13 @@ export default {
let address = this.info && this.info.address;
if (this.$u.test.isEmpty(address)) {
return '--';
} else {
}
let region = this.info && this.info.region;
let regionStr = region.join('');
if(this.$u.test.contains(address, regionStr)) {
return address;
} else {
return regionStr + address;
}
}
},
......
......@@ -31,7 +31,7 @@
<view class="list-view">
<view v-for="(group, ind) in items" :key="ind" class="group-view">
<u-cell-group :border="false">
<view v-for="(item, index) in group" :key="index.pathName">
<view v-for="(item, index) in group" :key="index">
<u-cell-item :value="item.value" :border-bottom="false" @click="handleClick(item.pathName)">
<image slot="icon" :src="qnFile(item.icon)" :style="item.imageStyle"></image>
<view slot="title" class="item-title">{{item.title}}</view>
......
......@@ -8,7 +8,7 @@
</view>
<view class="item">
<view class="left">电话号码</view>
<input :disabled="mobileStatus" v-model="mobile" type="text" placeholder-class="line" placeholder="请填写收货人手机号" />
<input :disabled="mobileStatus" v-model="mobile" type="text" @blur="verifyMobile" placeholder-class="line" placeholder="请填写收货人手机号" />
</view>
<view class="item">
......@@ -120,13 +120,19 @@ export default {
if(e.mobile) {
this.mobile = decodeURIComponent(e.mobile);
}
if(e.address) {
this.address = decodeURIComponent(e.address);
}
if(e.region) {
let regionStr = decodeURIComponent(e.region);
this.region = regionStr.split('-')
}
if(e.address) {
let address = decodeURIComponent(e.address);
let region = this.region.join('')
if(this.$u.test.contains(address, region)) {
this.address = address.replace(region, '')
} else {
this.address = address
}
}
}
},
onShow() {
......@@ -138,34 +144,44 @@ export default {
this.nameStatus = false;
this.mobileStatus = false;
} else if (this.siteType == 'edit') {
let address = '';
if (this.$u.test.isEmpty(this.siteInfo)) {
if (this.$u.test.isEmpty(this.name)
|| this.$u.test.isEmpty(this.mobile)) {
const callback = (vm, res) => {
this.settled = res.record;
if (this.loading) {
this.name = this.settled.id_card_name;
this.mobile = this.settled.mobile;
this.address = this.settled.address;
this.geocoding();
}
this.loading = this.$u.test.isEmpty(this.settled);
this.name = this.settled.id_card_name;
this.mobile = this.settled.mobile;
};
if (this.vuex_settled && this.vuex_settled.record) {
callback(this, this.vuex_settled);
} else {
getApp().getBaseInfo(this, callback);
}
} else {
if (this.loading) {
this.loading = false;
this.name = this.siteInfo.name;
this.mobile = this.siteInfo.mobile;
this.address = this.siteInfo.address;
this.geocoding();
}
}
if (this.$u.test.isEmpty(this.region)
|| this.$u.test.isEmpty(this.address)) {
}
}
},
loadMineAddress() {
this.$u.api.getSiteAddress().then((res) => {
if(res.code == 200 && res.data) {
this.region = [
res.data.provinceName,
res.data.cityName,
res.data.districtName
]
let address = res.data.address
const regionStr = this.region.join('')
if(this.$u.test.contains(address, regionStr)) {
this.address = address.replace(regionStr, '')
} else {
this.address = address
}
}
})
},
showRegionPicker() {
this.showPicker = true;
},
......@@ -234,23 +250,54 @@ export default {
});
},
verifyMobile() {
if(this.$u.test.isEmpty(this.mobile)) {
this.$u.toast('电话号码不能为空')
return false
} else if(!this.$u.test.mobile(this.mobile)) {
this.$u.toast('电话号码格式错误')
return false
}
return true
},
validateForm() {
if(this.$u.test.isEmpty(this.name)) {
this.$u.toast('收货人姓名不能为空')
return false
}
if(!this.verifyMobile()) {
return false
}
if(this.$u.test.isEmpty(this.region)) {
this.$u.toast('所在地区不能为空')
return false
}
if(this.$u.test.isEmpty(this.address)) {
this.$u.toast('详细地址不能为空')
return false
}
return true
},
async submitForm() {
if(!this.validateForm()) {
return false
}
if (this.siteType === 'add') {
} else if (this.siteType === 'select') {
this.commitSite()
} else if (this.siteType === 'edit') {
if (this.$u.test.isEmpty(this.siteInfo)) {
let params = {
type: this.type,
updateFlag: true,
provinceName: this.region[0],
cityName: this.region[1],
districtName: this.region[2],
address: this.region.join("") + this.address
};
let res = await this.$u.api.syncAddress(params);
const callback = (vm, res) => {
let res = await this.$u.api.updateAddress(params);
if (res && res.code == 200) {
this.$u.route({ type: 'back' });
this.show = false
};
if (res && res.code == 200) {
getApp().getBaseInfo(this, callback);
}
} else {
......@@ -258,6 +305,9 @@ export default {
}
},
commitSite() {
if(!this.validateForm()) {
return false
}
// 获取当前页面栈的实例,以数组形式按栈的顺序给出,第一个元素为首页,最后一个元素为当前页面。
var pages = getCurrentPages();
var prevPage = pages[pages.length - 2]; //上一个页面
......
......@@ -28,13 +28,17 @@ export default {
return this.vuex_settled && this.vuex_settled.record || null
},
hasAdderss() {
return this.settled && this.settled.address && this.settled.id_card_name
return this.settled && this.address && this.settled.id_card_name
},
settledName() {
return this.settled.id_card_name || this.settled.nickname || this.settled.name
},
addressInfo() {
return {
name: this.settled.id_card_name || this.settled.nickname || this.settled.name,
name: this.settledName,
mobile: this.settled.mobile,
address: this.settled.address
address: this.address,
region: this.region || [],
}
}
},
......@@ -45,13 +49,12 @@ export default {
if(!this.vuex_token) {
this.$u.route({url: 'pages/login/index'})
} else if(!this.settled) {
this.getData();
app.getBaseInfo(this);
}
this.getData();
},
methods: {
getData() {
let self = this
app.getBaseInfo(self);
this.getMineSite()
},
getMineSite() {
......@@ -67,11 +70,17 @@ export default {
})
},
toAddSite(title){
const info = this.addressInfo
const region = this.region.join('-')
this.$u.route({
url: 'pages/mine/address/addSite',
// params: {
// title: title
// }
params: {
type: 'edit',
name: info.name,
mobile: info.mobile,
region: region,
address: info.address
}
})
}
}
......
......@@ -6,8 +6,9 @@
<view class="title" v-if="isEmptyParts">配件信息</view>
<view class="u-flex u-row-between title" v-else>
<view>选择配件</view>
<u-icon name="arrow-right" size="24" color="#2272FF" @click="$u.throttle(addParts, 500)"
label="添加配件" label-pos="left" label-color="#2272FF" label-size="26"/>
<u-icon name="arrow-right" size="24" color="#2272FF"
@click="$u.throttle(addParts, 500)" label="添加配件"
label-pos="left" label-color="#2272FF" label-size="26"/>
</view>
<view class="body">
<view v-if="isEmptyParts" class="u-flex-col u-col-center list">
......@@ -36,8 +37,7 @@
:bold="false" font-size="26" height="76"
active-color="#FFFFFF" inactive-color="#333333"
bg-color="#FFFFFF" button-color="#2272FF"
@change="typeChange"
></u-subsection>
@change="typeChange" />
</view>
<view class="body">
<w-address :info="addressInfo" @editSite="editSite" />
......@@ -45,7 +45,9 @@
</view>
</view>
<view class="bottom">
<u-button shape="circle" :disabled="isEmptyParts" :hair-line="false" :custom-style="customStyle" hover-class="none" @click="submitParts">提交</u-button>
<u-button shape="circle" :disabled="isEmptyParts"
:hair-line="false" :custom-style="customStyle"
hover-class="none" @click="submitParts">提交</u-button>
</view>
</view>
</template>
......@@ -132,24 +134,19 @@ export default {
},
initCustomer() {
if(this.$u.test.isEmpty(this.order)) {
this.customer = {}
this.customer = {name: '', mobile: '', address: '', region: []}
} else {
// this.mine.name = this.order.maintainWorkerName
// this.mine.mobile = this.order.maintainWorkerPhone
this.mine.name = '王先生'
this.mine.mobile = '13045861456'
const region = [
this.order.contactProvinceText,
this.order.contactCityText,
this.order.contactCommunityText,
]
let address = region.join("") + (this.order.contactStreetText || '') + this.order.contactAddress
this.mine.name = this.order.maintainWorkerName
this.mine.mobile = this.order.maintainWorkerPhone
this.customer = {
name: this.order.contactName,
mobile: this.order.contactPhone,
address: address,
region: region,
address: this.order.contactAddress,
region: [
this.order.contactProvinceText,
this.order.contactCityText,
this.order.contactCommunityText,
],
}
}
},
......@@ -160,21 +157,15 @@ export default {
this.curType = index
},
editSite() {
let region = this.addressInfo.region.join('')
let address = this.addressInfo.address
if(this.$u.test.contains(address, region)) {
address = address.replace(region, '')
}
let params = {
type: 'select',
name: this.addressInfo.name,
mobile: this.addressInfo.mobile,
address: address,
region: this.addressInfo.region.join('-'),
};
this.$u.route({
url: "pages/mine/address/addSite",
params: params
params: {
type: 'select',
name: this.addressInfo.name,
mobile: this.addressInfo.mobile,
address: this.addressInfo.address,
region: this.addressInfo.region.join('-'),
}
})
},
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