|
@@ -0,0 +1,518 @@
|
|
|
+var util = require('../../../../../utils/util.js');
|
|
|
+var api = require('../../../../../utils/api');
|
|
|
+var Parse = getApp().Parse;
|
|
|
+import placeArrays from "../../../../../utils/citysearch"
|
|
|
+const placeArray=placeArrays.placeArray
|
|
|
+Page({
|
|
|
+ data: {
|
|
|
+ type:1,
|
|
|
+ address: {
|
|
|
+ id: 0,
|
|
|
+ province_id: 0,
|
|
|
+ city_id: 0,
|
|
|
+ district_id: 0,
|
|
|
+ address: '',
|
|
|
+ full_region: '',
|
|
|
+ name: '',
|
|
|
+ mobile: '',
|
|
|
+ is_default: 0
|
|
|
+ },
|
|
|
+ addressId: 0,
|
|
|
+ openSelectRegion: false,
|
|
|
+ selectRegionList: [{
|
|
|
+ id: 0,
|
|
|
+ name: '省份',
|
|
|
+ parent_id: 1,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 0,
|
|
|
+ name: '城市',
|
|
|
+ parent_id: 1,
|
|
|
+ type: 2
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 0,
|
|
|
+ name: '区县',
|
|
|
+ parent_id: 1,
|
|
|
+ type: 3
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ regionType: 1,
|
|
|
+ regionList: [],
|
|
|
+ selectRegionDone: false,
|
|
|
+ placeArray: placeArray,
|
|
|
+ province: placeArray[0].name, //- 省
|
|
|
+ pIndex: 0,
|
|
|
+ city: placeArray[0].city[0].name, //- 市
|
|
|
+ cIndex: 0,
|
|
|
+ area: placeArray[0].city[0].area[0], //- 区
|
|
|
+ aIndex: 0,
|
|
|
+ isAddress:false,
|
|
|
+ fullName:""
|
|
|
+ },
|
|
|
+ onClose(){
|
|
|
+ this.setData({
|
|
|
+ isAddress:false
|
|
|
+ })
|
|
|
+ },
|
|
|
+ confirm(){
|
|
|
+ let full_region = this.data.province+this.data.city+this.data.area
|
|
|
+ this.setData({
|
|
|
+ ['address.full_region']:full_region,
|
|
|
+ isAddress:false
|
|
|
+ })
|
|
|
+ },
|
|
|
+ showAddress(){
|
|
|
+ this.setData({
|
|
|
+ isAddress:true
|
|
|
+ })
|
|
|
+ },
|
|
|
+ changeProvince: function(e){
|
|
|
+ const val = e.detail.value //这些val都是数组形式的了
|
|
|
+ this.setData({
|
|
|
+ pIndex: val,
|
|
|
+ cIndex: 0,
|
|
|
+ aIndex: 0,
|
|
|
+ province: placeArray[val].name,
|
|
|
+ city: placeArray[val].city[0].name,
|
|
|
+ area: placeArray[val].city[0].area[0]
|
|
|
+ })
|
|
|
+ },
|
|
|
+ changeCity: function(e){
|
|
|
+ const val = e.detail.value
|
|
|
+ this.setData({
|
|
|
+ cIndex: val,
|
|
|
+ aIndex: 0,
|
|
|
+ city: placeArray[this.data.pIndex].city[val].name,
|
|
|
+ area: placeArray[this.data.pIndex].city[val].area[0]
|
|
|
+ })
|
|
|
+ },
|
|
|
+ changeArea: function(e){
|
|
|
+ const val = e.detail.value
|
|
|
+ this.setData({
|
|
|
+ aIndex: val,
|
|
|
+ area: placeArray[this.data.pIndex].city[this.data.cIndex].area[val]
|
|
|
+ })
|
|
|
+ },
|
|
|
+ mobilechange(e) {
|
|
|
+ let mobile = e.detail.value;
|
|
|
+ let address = this.data.address;
|
|
|
+ if (util.testMobile(mobile)) {
|
|
|
+ address.mobile = mobile;
|
|
|
+ this.setData({
|
|
|
+ address: address
|
|
|
+ });
|
|
|
+ }
|
|
|
+ },
|
|
|
+ bindinputName(event) {
|
|
|
+ let address = this.data.address;
|
|
|
+ address.name = event.detail.value;
|
|
|
+ this.setData({
|
|
|
+ address: address
|
|
|
+ });
|
|
|
+ },
|
|
|
+ bindinputAddress(event) {
|
|
|
+ let address = this.data.address;
|
|
|
+ address.address = event.detail.value;
|
|
|
+ this.setData({
|
|
|
+ address: address
|
|
|
+ });
|
|
|
+ },
|
|
|
+ switchChange(e) {
|
|
|
+ let status = e.detail.value;
|
|
|
+ let is_default = 0;
|
|
|
+ if (status == true) {
|
|
|
+ is_default = 1;
|
|
|
+ }
|
|
|
+ let address = 'address.is_default';
|
|
|
+ this.setData({
|
|
|
+ [address]: is_default
|
|
|
+ });
|
|
|
+ },
|
|
|
+ async getAddressDetail() {
|
|
|
+ let that = this;
|
|
|
+ let checkedAddress = {}
|
|
|
+ let query = new Parse.Query("ShopAddress");
|
|
|
+ query.equalTo("objectId", that.data.addressId);
|
|
|
+ let address = await query.first()
|
|
|
+ if(address)
|
|
|
+ {
|
|
|
+ checkedAddress.name = address.get("name")
|
|
|
+ checkedAddress.country_id = address.get("country_id")
|
|
|
+ checkedAddress.province_id = address.get("province_id")
|
|
|
+ checkedAddress.city_id = address.get("city_id")
|
|
|
+ checkedAddress.district_id = address.get("district_id")
|
|
|
+ checkedAddress.address = address.get("address")
|
|
|
+ checkedAddress.mobile = address.get("mobile")
|
|
|
+ checkedAddress.is_default = address.get("is_default")
|
|
|
+ checkedAddress.province_name = address.get("province_name")
|
|
|
+ checkedAddress.city_name = address.get("city_name")
|
|
|
+ checkedAddress.district_name = address.get("district_name")
|
|
|
+ checkedAddress.full_region = address.get("full_region")
|
|
|
+ that.setData({
|
|
|
+ address:checkedAddress
|
|
|
+ })
|
|
|
+ }
|
|
|
+ // util.request(api.AddressDetail, {
|
|
|
+ // id: that.data.addressId
|
|
|
+ // }).then(function(res) {
|
|
|
+ // if (res.errno === 0) {
|
|
|
+ // that.setData({
|
|
|
+ // address: res.data
|
|
|
+ // });
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ },
|
|
|
+ deleteAddress: function() {
|
|
|
+ let id = this.data.addressId;
|
|
|
+ wx.showModal({
|
|
|
+ title: '提示',
|
|
|
+ content: '您确定要删除么?',
|
|
|
+ success: function(res) {
|
|
|
+ if (res.confirm) {
|
|
|
+ util.request(api.DeleteAddress, {
|
|
|
+ id: id
|
|
|
+ }, 'POST').then(function(res) {
|
|
|
+ if (res.errno === 0) {
|
|
|
+ wx.removeStorageSync('addressId');
|
|
|
+ util.showErrorToast('删除成功');
|
|
|
+ wx.navigateBack();
|
|
|
+ } else {
|
|
|
+ util.showErrorToast(res.errmsg);
|
|
|
+ }
|
|
|
+ });
|
|
|
+ }
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ setRegionDoneStatus() {
|
|
|
+ let that = this;
|
|
|
+ let doneStatus = that.data.selectRegionList.every(item => {
|
|
|
+ return item.id != 0;
|
|
|
+ });
|
|
|
+
|
|
|
+ that.setData({
|
|
|
+ selectRegionDone: doneStatus
|
|
|
+ })
|
|
|
+
|
|
|
+ },
|
|
|
+ chooseRegion() {
|
|
|
+ let that = this;
|
|
|
+ this.setData({
|
|
|
+ openSelectRegion: !this.data.openSelectRegion
|
|
|
+ });
|
|
|
+
|
|
|
+ //设置区域选择数据
|
|
|
+ let address = this.data.address;
|
|
|
+ if (address.province_id > 0 && address.city_id > 0 && address.district_id > 0) {
|
|
|
+ let selectRegionList = this.data.selectRegionList;
|
|
|
+ selectRegionList[0].id = address.province_id;
|
|
|
+ selectRegionList[0].name = address.province_name;
|
|
|
+ selectRegionList[0].parent_id = 1;
|
|
|
+
|
|
|
+ selectRegionList[1].id = address.city_id;
|
|
|
+ selectRegionList[1].name = address.city_name;
|
|
|
+ selectRegionList[1].parent_id = address.province_id;
|
|
|
+
|
|
|
+ selectRegionList[2].id = address.district_id;
|
|
|
+ selectRegionList[2].name = address.district_name;
|
|
|
+ selectRegionList[2].parent_id = address.city_id;
|
|
|
+
|
|
|
+ this.setData({
|
|
|
+ selectRegionList: selectRegionList,
|
|
|
+ regionType: 3
|
|
|
+ });
|
|
|
+
|
|
|
+ this.getRegionList(address.city_id);
|
|
|
+ } else {
|
|
|
+ this.setData({
|
|
|
+ selectRegionList: [{
|
|
|
+ id: 0,
|
|
|
+ name: '省份',
|
|
|
+ parent_id: 1,
|
|
|
+ type: 1
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 0,
|
|
|
+ name: '城市',
|
|
|
+ parent_id: 1,
|
|
|
+ type: 2
|
|
|
+ },
|
|
|
+ {
|
|
|
+ id: 0,
|
|
|
+ name: '区县',
|
|
|
+ parent_id: 1,
|
|
|
+ type: 3
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ regionType: 1
|
|
|
+ })
|
|
|
+ this.getRegionList(1);
|
|
|
+ }
|
|
|
+
|
|
|
+ this.setRegionDoneStatus();
|
|
|
+
|
|
|
+ },
|
|
|
+ onLoad: function(options) {
|
|
|
+ let {activeColor,titleColor}=options
|
|
|
+ this.setData({activeColor,titleColor})
|
|
|
+ // 页面初始化 options为页面跳转所带来的参数
|
|
|
+ if (options.id) {
|
|
|
+ this.setData({
|
|
|
+ addressId: options.id,
|
|
|
+ type:2
|
|
|
+ });
|
|
|
+ this.getAddressDetail();
|
|
|
+ }
|
|
|
+ // this.getRegionList(1);
|
|
|
+ },
|
|
|
+ onReady: function() {
|
|
|
+
|
|
|
+ },
|
|
|
+ async saveEditAddress(){
|
|
|
+ let that = this
|
|
|
+ let query = new Parse.Query("ShopAddress");
|
|
|
+ query.equalTo("objectId", that.data.addressId);
|
|
|
+ let shopAddress = await query.first()
|
|
|
+ shopAddress.set("name",that.data.address.name)
|
|
|
+ shopAddress.set("mobile",that.data.address.mobile)
|
|
|
+ shopAddress.set("province_id",that.data.address.province_id)
|
|
|
+ shopAddress.set("city_id",that.data.address.city_id)
|
|
|
+ shopAddress.set("district_id",that.data.address.district_id)
|
|
|
+ shopAddress.set("address",that.data.address.address)
|
|
|
+ shopAddress.set("province_name",that.data.province)
|
|
|
+ shopAddress.set("city_name",that.data.city)
|
|
|
+ shopAddress.set("district_name",that.data.area)
|
|
|
+ shopAddress.set("full_region",that.data.address.full_region)
|
|
|
+ shopAddress.set("is_default",that.data.address.is_default)
|
|
|
+ if(that.data.address.is_default == 1){
|
|
|
+ that.setDefault()
|
|
|
+ }
|
|
|
+ await shopAddress.save().then(data=>{
|
|
|
+ wx.navigateBack()
|
|
|
+ })
|
|
|
+ },
|
|
|
+ selectRegionType(event) {
|
|
|
+ let that = this;
|
|
|
+ let regionTypeIndex = event.target.dataset.regionTypeIndex;
|
|
|
+ let selectRegionList = that.data.selectRegionList;
|
|
|
+
|
|
|
+ //判断是否可点击
|
|
|
+ if (regionTypeIndex + 1 == this.data.regionType || (regionTypeIndex - 1 >= 0 && selectRegionList[regionTypeIndex - 1].id <= 0)) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ this.setData({
|
|
|
+ regionType: regionTypeIndex + 1
|
|
|
+ })
|
|
|
+
|
|
|
+ let selectRegionItem = selectRegionList[regionTypeIndex];
|
|
|
+
|
|
|
+ this.getRegionList(selectRegionItem.parent_id);
|
|
|
+
|
|
|
+ this.setRegionDoneStatus();
|
|
|
+
|
|
|
+ },
|
|
|
+ selectRegion(event) {
|
|
|
+ let that = this;
|
|
|
+ let regionIndex = event.target.dataset.regionIndex;
|
|
|
+ let regionItem = this.data.regionList[regionIndex];
|
|
|
+ let regionType = regionItem.type;
|
|
|
+ let selectRegionList = this.data.selectRegionList;
|
|
|
+ selectRegionList[regionType - 1] = regionItem;
|
|
|
+
|
|
|
+
|
|
|
+ if (regionType != 3) {
|
|
|
+ this.setData({
|
|
|
+ selectRegionList: selectRegionList,
|
|
|
+ regionType: regionType + 1
|
|
|
+ })
|
|
|
+ this.getRegionList(regionItem.id);
|
|
|
+ } else {
|
|
|
+ this.setData({
|
|
|
+ selectRegionList: selectRegionList
|
|
|
+ })
|
|
|
+ }
|
|
|
+
|
|
|
+ //重置下级区域为空
|
|
|
+ selectRegionList.map((item, index) => {
|
|
|
+ if (index > regionType - 1) {
|
|
|
+ item.id = 0;
|
|
|
+ item.name = index == 1 ? '城市' : '区县';
|
|
|
+ item.parent_id = 0;
|
|
|
+ }
|
|
|
+ return item;
|
|
|
+ });
|
|
|
+
|
|
|
+ this.setData({
|
|
|
+ selectRegionList: selectRegionList
|
|
|
+ })
|
|
|
+
|
|
|
+
|
|
|
+ that.setData({
|
|
|
+ regionList: that.data.regionList.map(item => {
|
|
|
+
|
|
|
+ //标记已选择的
|
|
|
+ if (that.data.regionType == item.type && that.data.selectRegionList[that.data.regionType - 1].id == item.id) {
|
|
|
+ item.selected = true;
|
|
|
+ } else {
|
|
|
+ item.selected = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ return item;
|
|
|
+ })
|
|
|
+ });
|
|
|
+
|
|
|
+ this.setRegionDoneStatus();
|
|
|
+
|
|
|
+ },
|
|
|
+ doneSelectRegion() {
|
|
|
+ if (this.data.selectRegionDone === false) {
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+
|
|
|
+ let address = this.data.address;
|
|
|
+ let selectRegionList = this.data.selectRegionList;
|
|
|
+ address.province_id = selectRegionList[0].id;
|
|
|
+ address.city_id = selectRegionList[1].id;
|
|
|
+ address.district_id = selectRegionList[2].id;
|
|
|
+ address.province_name = selectRegionList[0].name;
|
|
|
+ address.city_name = selectRegionList[1].name;
|
|
|
+ address.district_name = selectRegionList[2].name;
|
|
|
+ address.full_region = selectRegionList.map(item => {
|
|
|
+ return item.name;
|
|
|
+ }).join('');
|
|
|
+
|
|
|
+ this.setData({
|
|
|
+ address: address,
|
|
|
+ openSelectRegion: false
|
|
|
+ });
|
|
|
+
|
|
|
+ },
|
|
|
+ cancelSelectRegion() {
|
|
|
+ this.setData({
|
|
|
+ openSelectRegion: false,
|
|
|
+ regionType: this.data.regionDoneStatus ? 3 : 1
|
|
|
+ });
|
|
|
+ },
|
|
|
+ getRegionList(regionId) {
|
|
|
+ let that = this;
|
|
|
+ let regionType = that.data.regionType;
|
|
|
+ util.request(api.RegionList, {
|
|
|
+ parentId: regionId
|
|
|
+ }).then(function(res) {
|
|
|
+ if (res.errno === 0) {
|
|
|
+ that.setData({
|
|
|
+ regionList: res.data.map(item => {
|
|
|
+
|
|
|
+ //标记已选择的
|
|
|
+ if (regionType == item.type && that.data.selectRegionList[regionType - 1].id == item.id) {
|
|
|
+ item.selected = true;
|
|
|
+ } else {
|
|
|
+ item.selected = false;
|
|
|
+ }
|
|
|
+
|
|
|
+ return item;
|
|
|
+ })
|
|
|
+ });
|
|
|
+ }
|
|
|
+ });
|
|
|
+ },
|
|
|
+ async saveAddress() {
|
|
|
+ let address = this.data.address;
|
|
|
+ let company = getApp().globalData.company
|
|
|
+ let user = Parse.User.current();
|
|
|
+ if (address.name == '' || address.name == undefined) {
|
|
|
+ util.showErrorToast('请输入姓名');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (address.mobile == '' || address.mobile == undefined) {
|
|
|
+ util.showErrorToast('请输入手机号码');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (address.province == "" || address.city == "") {
|
|
|
+ util.showErrorToast('请输入省市区');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ if (address.address == '' || address.address == undefined) {
|
|
|
+ util.showErrorToast('请输入详细地址');
|
|
|
+ return false;
|
|
|
+ }
|
|
|
+ let that = this;
|
|
|
+ let ShopAddress = Parse.Object.extend("ShopAddress");
|
|
|
+ let shopAddress = new ShopAddress();
|
|
|
+ shopAddress.set("user",{
|
|
|
+ "__type": "Pointer",
|
|
|
+ "className": "_User",
|
|
|
+ "objectId": user.id
|
|
|
+ })
|
|
|
+ shopAddress.set("company",{
|
|
|
+ "__type": "Pointer",
|
|
|
+ "className": "Company",
|
|
|
+ "objectId": company
|
|
|
+ })
|
|
|
+ shopAddress.set("name",that.data.address.name)
|
|
|
+ shopAddress.set("mobile",that.data.address.mobile)
|
|
|
+ shopAddress.set("province_id",that.data.address.province_id)
|
|
|
+ shopAddress.set("city_id",that.data.address.city_id)
|
|
|
+ shopAddress.set("district_id",that.data.address.district_id)
|
|
|
+ shopAddress.set("address",that.data.address.address)
|
|
|
+ shopAddress.set("province_name",that.data.province)
|
|
|
+ shopAddress.set("city_name",that.data.city)
|
|
|
+ shopAddress.set("district_name",that.data.area)
|
|
|
+ shopAddress.set("full_region",that.data.address.full_region)
|
|
|
+ shopAddress.set("is_default",that.data.address.is_default)
|
|
|
+ if(that.data.address.is_default == 1){
|
|
|
+ that.setDefault()
|
|
|
+ }
|
|
|
+ await shopAddress.save().then(data=>{
|
|
|
+ wx.navigateBack()
|
|
|
+ })
|
|
|
+ // util.request(api.SaveAddress, {
|
|
|
+ // id: address.id,
|
|
|
+ // name: address.name,
|
|
|
+ // mobile: address.mobile,
|
|
|
+ // province_id: address.province_id,
|
|
|
+ // city_id: address.city_id,
|
|
|
+ // district_id: address.district_id,
|
|
|
+ // address: address.address,
|
|
|
+ // is_default: address.is_default,
|
|
|
+ // }, 'POST').then(function(res) {
|
|
|
+ // if (res.errno === 0) {
|
|
|
+ //
|
|
|
+ // }
|
|
|
+ // });
|
|
|
+ },
|
|
|
+ setDefault(){
|
|
|
+ let ShopAddress = new Parse.Query("ShopAddress")
|
|
|
+ ShopAddress.equalTo("user",Parse.User.current().id)
|
|
|
+ ShopAddress.equalTo("is_default",1)
|
|
|
+ ShopAddress.first().then(res=>{
|
|
|
+ if(res){
|
|
|
+ res.set("is_default",0)
|
|
|
+ res.save()
|
|
|
+ }
|
|
|
+ })
|
|
|
+ },
|
|
|
+ onShow: function() {
|
|
|
+ let id = this.data.addressId;
|
|
|
+ if (id > 0) {
|
|
|
+ wx.setNavigationBarTitle({
|
|
|
+ title: '编辑地址',
|
|
|
+ })
|
|
|
+ } else {
|
|
|
+ wx.setNavigationBarTitle({
|
|
|
+ title: '新增地址',
|
|
|
+ })
|
|
|
+ }
|
|
|
+ },
|
|
|
+ onHide: function() {
|
|
|
+ // 页面隐藏
|
|
|
+
|
|
|
+ },
|
|
|
+ onUnload: function() {
|
|
|
+ // 页面关闭
|
|
|
+
|
|
|
+ }
|
|
|
+})
|