const app = getApp(); Page({ data: { params: null, data_list_loding_status: 1, data_list_loding_msg: '', extraction_data: null, province_list: [], city_list: [], county_list: [], province_id: null, city_id: null, county_id: null, default_province: "请选择省", default_city: "请选择市", default_county: "请选择区/县", province_value: null, city_value: null, county_value: null, user_location_cache_key: app.data.cache_userlocation_key, user_location: null, form_submit_disabled_status: false }, onLoad(params) { this.setData({ params: params }); }, onReady: function () { // 清除位置缓存信息 tt.removeStorage({ key: this.data.user_location_cache_key }); this.init(); }, onShow() { this.user_location_init(); }, init() { var user = app.get_user_info(this, "init"); if (user != false) { // 用户未绑定用户则转到登录页面 if (app.user_is_need_login(user)) { tt.redirectTo({ url: "/pages/login/login?event_callback=init" }); this.setData({ data_list_loding_status: 2, data_list_loding_msg: '请先绑定手机号码' }); return false; } else { this.get_province_list(); this.applyinfo_init(); } } else { this.setData({ data_list_loding_status: 2, data_list_loding_msg: '请先授权用户信息' }); } }, // 自提点信息 applyinfo_init() { var self = this; tt.request({ url: app.get_request_url("applyinfo", "extraction", "distribution"), method: "POST", data: {}, dataType: "json", header: { 'content-type': 'application/x-www-form-urlencoded' }, success: res => { if (res.data.code == 0) { var data = res.data.data || null; self.setData({ extraction_data: data }); // 数据设置 if (data != null) { self.setData({ province_id: data.province || null, city_id: data.city || null, county_id: data.county || null }); // 地理位置 var lng = (data.lng || 0) <= 0 ? null : data.lng; var lat = (data.lat || 0) <= 0 ? null : data.lat; if (lng != null && lat != null) { self.setData({ user_location: { lng: lng, lat: lat, address: data.address || '' } }); } } // 获取城市、区县 self.get_city_list(); self.get_county_list(); // 半秒后初始化数据 setTimeout(function () { self.init_region_value(); }, 500); } else { if (app.is_login_check(res.data)) { app.showToast(res.data.msg); } } }, fail: () => { app.showToast("省份信息失败"); } }); }, // 地区数据初始化 init_region_value() { this.setData({ province_value: this.get_region_value("province_list", "province_id"), city_value: this.get_region_value("city_list", "city_id"), county_value: this.get_region_value("county_list", "county_id") }); }, // 地区初始化匹配索引 get_region_value(list, id) { var data = this.data[list]; var data_id = this.data[id]; var value = null; data.forEach((d, i) => { if (d.id == data_id) { value = i; return false; } }); return value; }, // 获取省份 get_province_list() { var self = this; tt.request({ url: app.get_request_url("index", "region"), method: "POST", data: {}, dataType: "json", header: { 'content-type': 'application/x-www-form-urlencoded' }, success: res => { if (res.data.code == 0) { var data = res.data.data; self.setData({ province_list: data }); } else { app.showToast(res.data.msg); } }, fail: () => { app.showToast("省份获取失败"); } }); }, // 获取市 get_city_list() { var self = this; if (self.data.province_id) { tt.request({ url: app.get_request_url("index", "region"), method: "POST", data: { pid: self.data.province_id }, dataType: "json", header: { 'content-type': 'application/x-www-form-urlencoded' }, success: res => { if (res.data.code == 0) { var data = res.data.data; self.setData({ city_list: data }); } else { app.showToast(res.data.msg); } }, fail: () => { app.showToast("城市获取失败"); } }); } }, // 获取区/县 get_county_list() { var self = this; if (self.data.city_id) { // 加载loding tt.request({ url: app.get_request_url("index", "region"), method: "POST", data: { pid: self.data.city_id }, dataType: "json", header: { 'content-type': 'application/x-www-form-urlencoded' }, success: res => { if (res.data.code == 0) { var data = res.data.data; self.setData({ county_list: data }); } else { app.showToast(res.data.msg); } }, fail: () => { app.showToast("区/县获取失败"); } }); } }, // 省份事件 select_province_event(e) { var index = e.detail.value || 0; if (index >= 0) { var data = this.data.province_list[index]; this.setData({ province_value: index, province_id: data.id, city_value: null, county_value: null, city_id: null, county_id: null }); this.get_city_list(); } }, // 市事件 select_city_event(e) { var index = e.detail.value || 0; if (index >= 0) { var data = this.data.city_list[index]; this.setData({ city_value: index, city_id: data.id, county_value: null, county_id: null }); this.get_county_list(); } }, // 区/县事件 select_county_event(e) { var index = e.detail.value || 0; if (index >= 0) { var data = this.data.county_list[index]; this.setData({ county_value: index, county_id: data.id }); } }, // 省市区未按照顺序选择提示 region_select_error_event(e) { var value = e.currentTarget.dataset.value || null; if (value != null) { app.showToast(value); } }, // 选择地理位置 choose_location_event(e) { tt.navigateTo({ url: '/pages/common/open-setting-location/open-setting-location' }); }, // 复制百度地图坐标拾取地址 baidu_map_copy_event(e) { tt.setClipboardData({ data: 'https://lbs.amap.com/console/show/picker', success(res) { app.showToast('复制成功', 'success'); } }); }, // 地址信息初始化 user_location_init() { var result = tt.getStorageSync(this.data.user_location_cache_key) || null; var data = null; if (result != null) { data = { name: result.name || null, address: result.address || null, lat: result.latitude || null, lng: result.longitude || null }; } this.setData({ user_location: data }); }, // 数据提交 form_submit(e) { var self = this; // 表单数据 var form_data = e.detail.value; // 数据校验 var validation = [{ fields: "name", msg: "请填写联系人" }, { fields: "tel", msg: "请填写联系电话" }, { fields: "province", msg: "请选择省份" }, { fields: "city", msg: "请选择城市" }, { fields: "county", msg: "请选择区县" }, { fields: "address", msg: "请填写详细地址" }, { fields: "lng", msg: "请输入经度" }, { fields: "lat", msg: "请输入纬度" }]; form_data["province"] = self.data.province_id; form_data["city"] = self.data.city_id; form_data["county"] = self.data.county_id; // 地理位置 // 验证提交表单 if (app.fields_check(form_data, validation)) { if ((self.data.extraction_data || null) != null && (self.data.extraction_data.status || 0) == 1) { tt.showModal({ title: '温馨提示', content: '数据需重新审核后方可生效', confirmText: '确认', cancelText: '暂不', success: result => { if (result.confirm) { self.request_data_save(form_data); } } }); } else { self.request_data_save(form_data); } } }, // 数据保存 request_data_save(data) { var self = this; self.setData({ form_submit_disabled_status: true }); tt.showLoading({ title: "处理中..." }); tt.request({ url: app.get_request_url("applysave", "extraction", "distribution"), method: "POST", data: data, dataType: "json", header: { 'content-type': 'application/x-www-form-urlencoded' }, success: res => { tt.hideLoading(); if (res.data.code == 0) { app.showToast(res.data.msg, "success"); setTimeout(function () { tt.navigateBack(); }, 1000); } else { self.setData({ form_submit_disabled_status: false }); if (app.is_login_check(res.data)) { app.showToast(res.data.msg); } else { app.showToast('提交失败,请重试!'); } } }, fail: () => { self.setData({ form_submit_disabled_status: false }); tt.hideLoading(); app.showToast("服务器请求出错"); } }); } });