diff --git a/miniprogram/images/home/Associatio.png b/miniprogram/images/home/Associatio.png deleted file mode 100644 index 719b243..0000000 Binary files a/miniprogram/images/home/Associatio.png and /dev/null differ diff --git a/miniprogram/images/home/add-issue.png b/miniprogram/images/home/add-issue.png deleted file mode 100644 index 1fc7f52..0000000 Binary files a/miniprogram/images/home/add-issue.png and /dev/null differ diff --git a/miniprogram/images/home/appramise.png b/miniprogram/images/home/appramise.png deleted file mode 100644 index eb67b84..0000000 Binary files a/miniprogram/images/home/appramise.png and /dev/null differ diff --git a/miniprogram/images/home/banshizhinan.png b/miniprogram/images/home/banshizhinan.png deleted file mode 100644 index abcd37d..0000000 Binary files a/miniprogram/images/home/banshizhinan.png and /dev/null differ diff --git a/miniprogram/images/home/chuangC.png b/miniprogram/images/home/chuangC.png deleted file mode 100644 index 0d5ed16..0000000 Binary files a/miniprogram/images/home/chuangC.png and /dev/null differ diff --git a/miniprogram/images/home/consult.png b/miniprogram/images/home/consult.png deleted file mode 100644 index 71c5d47..0000000 Binary files a/miniprogram/images/home/consult.png and /dev/null differ diff --git a/miniprogram/images/home/dang_logo.png b/miniprogram/images/home/dang_logo.png deleted file mode 100644 index 2c30d7f..0000000 Binary files a/miniprogram/images/home/dang_logo.png and /dev/null differ diff --git a/miniprogram/images/home/down.png b/miniprogram/images/home/down.png deleted file mode 100644 index fa0f0a1..0000000 Binary files a/miniprogram/images/home/down.png and /dev/null differ diff --git a/miniprogram/images/home/dyfc.png b/miniprogram/images/home/dyfc.png deleted file mode 100644 index 605047b..0000000 Binary files a/miniprogram/images/home/dyfc.png and /dev/null differ diff --git a/miniprogram/images/home/empty.png b/miniprogram/images/home/empty.png deleted file mode 100644 index 4a3d6d4..0000000 Binary files a/miniprogram/images/home/empty.png and /dev/null differ diff --git a/miniprogram/images/home/happy.png b/miniprogram/images/home/happy.png deleted file mode 100644 index b06468b..0000000 Binary files a/miniprogram/images/home/happy.png and /dev/null differ diff --git a/miniprogram/images/home/home-grid-bg.png b/miniprogram/images/home/home-grid-bg.png deleted file mode 100644 index fd33a89..0000000 Binary files a/miniprogram/images/home/home-grid-bg.png and /dev/null differ diff --git a/miniprogram/images/home/home-status.png b/miniprogram/images/home/home-status.png deleted file mode 100644 index 641bfb0..0000000 Binary files a/miniprogram/images/home/home-status.png and /dev/null differ diff --git a/miniprogram/images/home/ic_dang.png b/miniprogram/images/home/ic_dang.png deleted file mode 100644 index d5ef418..0000000 Binary files a/miniprogram/images/home/ic_dang.png and /dev/null differ diff --git a/miniprogram/images/home/ic_tongzhixiaoxi.png b/miniprogram/images/home/ic_tongzhixiaoxi.png deleted file mode 100644 index ca5e785..0000000 Binary files a/miniprogram/images/home/ic_tongzhixiaoxi.png and /dev/null differ diff --git a/miniprogram/images/home/info-note.png b/miniprogram/images/home/info-note.png deleted file mode 100644 index cd83bc4..0000000 Binary files a/miniprogram/images/home/info-note.png and /dev/null differ diff --git a/miniprogram/images/home/new-progress.png b/miniprogram/images/home/new-progress.png deleted file mode 100644 index 0273791..0000000 Binary files a/miniprogram/images/home/new-progress.png and /dev/null differ diff --git a/miniprogram/images/home/notice-logo.png b/miniprogram/images/home/notice-logo.png deleted file mode 100644 index 3a6b920..0000000 Binary files a/miniprogram/images/home/notice-logo.png and /dev/null differ diff --git a/miniprogram/images/home/notice.png b/miniprogram/images/home/notice.png deleted file mode 100644 index 16962b1..0000000 Binary files a/miniprogram/images/home/notice.png and /dev/null differ diff --git a/miniprogram/images/home/party-masses.png b/miniprogram/images/home/party-masses.png deleted file mode 100644 index 7a85c18..0000000 Binary files a/miniprogram/images/home/party-masses.png and /dev/null differ diff --git a/miniprogram/images/home/partyElegant.png b/miniprogram/images/home/partyElegant.png deleted file mode 100644 index 9794556..0000000 Binary files a/miniprogram/images/home/partyElegant.png and /dev/null differ diff --git a/miniprogram/images/home/partyhistory.png b/miniprogram/images/home/partyhistory.png deleted file mode 100644 index 294792b..0000000 Binary files a/miniprogram/images/home/partyhistory.png and /dev/null differ diff --git a/miniprogram/images/home/project-close.png b/miniprogram/images/home/project-close.png deleted file mode 100644 index 4e08288..0000000 Binary files a/miniprogram/images/home/project-close.png and /dev/null differ diff --git a/miniprogram/images/home/project-end.png b/miniprogram/images/home/project-end.png deleted file mode 100644 index 3f1c2de..0000000 Binary files a/miniprogram/images/home/project-end.png and /dev/null differ diff --git a/miniprogram/images/home/project-handle.png b/miniprogram/images/home/project-handle.png deleted file mode 100644 index 958cbd3..0000000 Binary files a/miniprogram/images/home/project-handle.png and /dev/null differ diff --git a/miniprogram/images/home/right-sword.png b/miniprogram/images/home/right-sword.png deleted file mode 100644 index 98a50a8..0000000 Binary files a/miniprogram/images/home/right-sword.png and /dev/null differ diff --git a/miniprogram/images/home/signin.png b/miniprogram/images/home/signin.png deleted file mode 100644 index dc4b961..0000000 Binary files a/miniprogram/images/home/signin.png and /dev/null differ diff --git a/miniprogram/images/home/signined.png b/miniprogram/images/home/signined.png deleted file mode 100644 index 2d5c436..0000000 Binary files a/miniprogram/images/home/signined.png and /dev/null differ diff --git a/miniprogram/images/home/suishibao.png b/miniprogram/images/home/suishibao.png deleted file mode 100644 index 1483c55..0000000 Binary files a/miniprogram/images/home/suishibao.png and /dev/null differ diff --git a/miniprogram/images/home/suishijiang.png b/miniprogram/images/home/suishijiang.png deleted file mode 100644 index eca477e..0000000 Binary files a/miniprogram/images/home/suishijiang.png and /dev/null differ diff --git a/miniprogram/images/home/talents.png b/miniprogram/images/home/talents.png deleted file mode 100644 index c67cf41..0000000 Binary files a/miniprogram/images/home/talents.png and /dev/null differ diff --git a/miniprogram/images/home/up.png b/miniprogram/images/home/up.png deleted file mode 100644 index 8b578ee..0000000 Binary files a/miniprogram/images/home/up.png and /dev/null differ diff --git a/miniprogram/images/home/wenjuandiaocha.png b/miniprogram/images/home/wenjuandiaocha.png deleted file mode 100644 index 16475d4..0000000 Binary files a/miniprogram/images/home/wenjuandiaocha.png and /dev/null differ diff --git a/miniprogram/images/home/wodexiaoxi.png b/miniprogram/images/home/wodexiaoxi.png deleted file mode 100644 index 4e91edc..0000000 Binary files a/miniprogram/images/home/wodexiaoxi.png and /dev/null differ diff --git a/miniprogram/images/home/xingchengshangbao.png b/miniprogram/images/home/xingchengshangbao.png deleted file mode 100644 index 8663208..0000000 Binary files a/miniprogram/images/home/xingchengshangbao.png and /dev/null differ diff --git a/miniprogram/images/home/xuqiuqingdan.png b/miniprogram/images/home/xuqiuqingdan.png deleted file mode 100644 index e7dc3b9..0000000 Binary files a/miniprogram/images/home/xuqiuqingdan.png and /dev/null differ diff --git a/miniprogram/pages/formid/formid.js b/miniprogram/pages/formid/formid.js index 59a1f2f..3f3d964 100644 --- a/miniprogram/pages/formid/formid.js +++ b/miniprogram/pages/formid/formid.js @@ -1,125 +1,453 @@ var api = require('../../utils/api.js') var global = require('../../utils/config.js') -import regeneratorRuntime from '../../utils/runtime.js' +const QQMapWX = require('../../utils/qqmap-wx-jssdk') +import { + gcj02_to_wgs84 +} from "../../utils/wgs84_to_gcj02"; const app = getApp() Page({ - data: { - gridId: '', - gridName: '', - gridNameArr: [], - formid: '', - resToken: '', - resGridName: '', - inviteUserId: '', - GridNameId:"" - }, -onLoad(options) { - if (options.gid) { - this.setData({ - gridId:'1221751857028825090', - inviteUserId: options.inviteUserId - }) - } - this.getToken(options.gid) - // this.getInvitation() - }, -// getInvitation(){ -// let that = this -// api.getInvitation(this.data.gridId).then(function (res) { -// that.setData({ -// GridNameId:res.data -// }) -// that.getGridName() -// }) -// }, - getToken: function (gid) { - let that = this - wx.login({ - success(res) { - if (res.code) { - console.log('微信CODE: ' + res.code) - let wxCode = res.code - const para = { - inviteUserId: that.data.inviteUserId, - //写死四机社区第一网格 - gridId: '1224104693058306049', - wxCode: res.code - } - api.getTokenV3(para).then(function (res) { - global.Token = res.data.token - wx.removeStorageSync('token') - wx.setStorageSync('token', res.data.token) - that.setData({ - resToken: res.data.token, - resGridName: res.data.grid + data: { + gridId: '', + gridName: '', + gridNameArr: [], + formid: '', + resToken: '', + resGridName: '', + inviteUserId: '', + GridNameId: "", + qqMapWX: '', + form: { + + }, + streetList: [], + addressContent: '', + address: '', + form: { + name: '', + idCard: '', + mobile: '', + homeName: '',//居住小区名称 + workUnit: '',//工作单位 + workType: '',//单位性质 + workIndustry: '',//所属行业 + party: 1,//是否为党员 + allDeptIds: [],//社区id + shibei:'1',//是否居住在市北 + }, + selectedStatus:false, + selectOption: [ + { label: '党政机关', value: '0' }, + { label: '事业单位', value: '1' }, + { label: '国有企业', value: '2' }, + { label: '私营企业', value: '3' }, + { label: '集体企业', value: '4' }, + { label: '外资企业、合资企业', value: '5' }, + { label: '社会组织', value: '6' }, + { label: '其他', value: '7' } + ], + workTypeInput:false, + workTypeText:'',//单位类型为其他的输入框值 + newArr:[], + multiIds:[], + multiIndex: [0, 0], + changeFlag:false, + }, + onLoad(options) { + // this.data.qqMapWX = new QQMapWX({ + // key: 'CMJBZ-4DECI-JXGGN-5B4WU-QLV2H-B5BEJ' + // }) + // this.getLocation().then(() => { + // this.reverseLocation() + // }) + this.getDeptTree() + // if (options.gid) { + // this.setData({ + // gridId:'1221751857028825090', + // inviteUserId: options.inviteUserId + // }) + // } + // this.getToken(options.gid) + // this.getInvitation() + }, + // 获取经纬度 + getLocation() { + return new Promise((resolve, reject) => { + const _this = this + wx.getLocation({ + type: 'gcj02', + success(res) { + if (res.latitude && res.longitude) { + _this.setData({ + 'form.issueLatitude': res.latitude, + 'form.issueLongitude': res.longitude + }) + _this.getDeptIdByItude() + resolve(true) + } + }, + fail(err) { + reject(err) + } }) - }) + }) + }, + getDeptIdByItude() { + let transfromlnglat = gcj02_to_wgs84(this.data.form.issueLongitude, this.data.form.issueLatitude) + const para = { + longitude: transfromlnglat[0], + latitude: transfromlnglat[1] } - } - }) - }, - getGridName() { - let that = this - api.getCompleteName(this.data.GridNameId).then(function (res) { - wx.setStorage({ - key: "gridName", - data: res.data - }) - that.setData({ - gridName: res.data, - gridNameArr: res.data.split('/') - }) - }) - }, - bindGetUserInfo: function (e) { - if (e.detail.userInfo) { - // let wxHeadImg = e.detail.userInfo.avatarUrl - // let wxNickName = e.detail.userInfo.nickName - console.log(e) - let that = this - wx.login({ - success: function (response) { - let code = response.code; - wx.getUserInfo({ - success: function (res) { - console.log(res.encryptedData) - console.log(res.iv) - let encryptedData = res.encryptedData - let iv = res.iv - api.updateWxInfo(code, encryptedData, iv).then(function (res) { - // 跳转到首页 - console.log('跳转到首页') - wx.setStorageSync('isFirst', 'noFirst') - wx.reLaunch({ - url: '/pages/index/index' - }) - }) + api.getDeptIdByItude(para).then(res => { + // 返回成功以后再调用 列表 + this.setData({ + 'form.streetId': res.data && res.data.streetId ? res.data.streetId : '', + 'form.communityId': res.data && res.data.communityId ? res.data.communityId : '', + 'form.gridId': res.data && res.data.gridId ? res.data.gridId : '', + 'form.grid': res.data && res.data.gridName ? res.data.gridName : '' + }) + this.getDeptTree() + }).catch(err => { + this.getDeptTree() + console.log(err) + }) + }, + //获取街道树 + getDeptTree() { + api.getDeptTree().then(res => { + this.setData({ + streetList: res.data[0].children + }) + console.log(this.data.streetList); + let state = { + arr: [], + arr1: [], + arr2: [], + // arr3: [], + multiIds: [] + } + this.data.streetList.map((v, vk) => { + state.arr1.push(v.label); + if (this.data.multiIndex[0] === vk) { + state.multiIds[0] = v; + } + if (state.arr2.length <= 0) { + v.children.map((c, ck) => { + state.arr2.push(c.label); + if (this.data.multiIndex[1] === ck) { + state.multiIds[1] = c; + } + // if (state.arr3.length <= 0) { + // c.children.map((t, tk) => { + // state.arr3.push(t.label); + // if (this.data.multiIndex[2] === tk) { + // state.multiIds[2] = t; + // } + // }); + // } + }); + } + }); + state.arr[0] = state.arr1; + state.arr[1] = state.arr2; + this.setData({ + newArr: state.arr, + multiIds: state.multiIds, + }); + if (this.data.form.streetId && this.data.form.communityId) { + this.data.streetList.forEach(element => { + if (element.value == this.data.form.streetId) { + this.setData({ + 'form.street': element.label, + communityList: element.children.filter(item=>item.label!= '武定路社区'&&item.label!= '陵县路社区') // 社区 + }) + // 循环社区 + element.children.forEach(community => { + if (community.value == this.data.form.communityId) { + this.setData({ + 'form.community': community.label, + gridList: community.children, + // 'form.grid': community.children[0].label, // 网格默认选择第一个 + // 'form.gridId': community.children[0].value // 网格 + }) + } + }); + } + }); } - }) + }).catch(err => { + console.log(err) + }) + }, + //确定选择社区 + bindMultiPickerChange() { + this.setData({ + 'form.allDeptIds':['1175270520603930625',this.data.multiIds[0].value,this.data.multiIds[1].value,this.data.streetList.filter(item=>item.value == this.data.multiIds[0].value)[0].children.filter(item=>item.value== this.data.multiIds[1].value)[0].children[0].value], + changeFlag:true + }) + console.log(this.data.streetList); + console.log(this.data.form.allDeptIds); + }, + //滑动社区 + bindMultiPickerColumnChange(e) { + let data = { + newArr: this.data.newArr, + multiIndex: this.data.multiIndex, + multiIds: this.data.multiIds, + }; + data.multiIndex[e.detail.column] = e.detail.value; + + let searchColumn = () => { + let arr1 = []; + let arr2 = []; + this.data.streetList.map((v, vk) => { + if (data.multiIndex[0] === vk) { + data.multiIds[0] = { + ...v, + }; + v.children.map((c, ck) => { + arr1.push(c.label); + if (data.multiIndex[1] === ck) { + data.multiIds[1] = { + ...c, + }; + } + }); + } + }); + data.newArr[1] = arr1; + data.newArr[2] = arr2; + }; + switch (e.detail.column) { + case 0: + // 每次切换还原初始值 + data.multiIndex[1] = 0; + // data.multiIndex[2] = 0; + // 执行函数处理 + searchColumn(); + break; + case 1: + // data.multiIndex[2] = 0; + searchColumn(); + break; + case 2: + searchColumn(); + break; + } - }) - } else { - console.log('拒绝授权') - wx.redirectTo({ - url: '/pages/index/index' - }) - // wx.showModal({ - // title: '提示', - // content: '您点击了拒绝授权,将无法进入小程序,请授权之后再进入!', - // showCancel: false, - // confirmText: '返回授权', - // success: function (res) { - // if (res.confirm) { - // console.log('用户点击了“返回授权”') - // } - // } - // }) + this.setData(data); + this.setData({ + newArr:this.data.newArr.splice(0,2), + changeFlag:true + }) + }, + reverseLocation() { + const _this = this + this.data.qqMapWX.reverseGeocoder({ + location: { + latitude: _this.data.form.issueLatitude, + longitude: _this.data.form.issueLongitude + }, + success(res) { + _this.setData({ + addressContent: res.result.address, + address: res.result.address + // 'form.issueAddress': res.result.address, + }) + }, + fail(err) { + console.debug(err) + } + }) + }, + //姓名双向绑定 + bindRealNameInput(e) { + this.setData({ + 'form.name': e.detail.value + }) + console.log(this.data.form) + }, + //身份证双向绑定 + bindRealIdcardInput(e) { + this.setData({ + 'form.idCard': e.detail.value + }) + console.log(this.data.form) + }, + //工作单位 + bindWorkUnitInput(e) { + this.setData({ + 'form.workUnit': e.detail.value + }) + console.log(this.data.form) + }, + //所属行业 + bindWorkIndustryInput(e) { + this.setData({ + 'form.workIndustry': e.detail.value + }) + console.log(this.data.form) + }, + //手机号双向绑定 + bindRealMobileInput(e) { + this.setData({ + 'form.mobile': e.detail.value + }) + console.log(this.data.form) + }, + //居住小区名称 + bindHomeNameInput(e) { + this.setData({ + 'form.homeName': e.detail.value + }) + }, + //单选框 + bindFlagshibeiChange(e){ + this.setData({ + 'form.shibei': e.detail.value + }) + }, + handleCLickShow(e) { + this.setData({ + selectedStatus: true, + }) + }, + + pickerConfirm(e) { + console.log(e); + if(e.detail.value == '7'){ + this.setData({ + workTypeInput:true + }) + } + this.setData({ + 'form.workType': e.detail.label, + selectedStatus: false + }); + }, + //下拉框取消 + pickerCancel() { + this.setData({ + selectedStatus: false + }); + }, + bindWorkTypeTextInput(e){ + console.log(e,'cccccc'); + this.setData({ + workTypeText: e.detail.value + }) + console.log(this.data.workTypeText); + }, + //单位性质弹框确定 + confirmDlaog(e){ + console.log(e); + this.setData({ + workTypeInput:false + }) + }, + //单位性质弹框取消 + cancelDlaog(){ + this.setData({ + workTypeInput:false + }) + }, + getToken: function (gid) { + let that = this + wx.login({ + success(res) { + if (res.code) { + console.log('微信CODE: ' + res.code) + let wxCode = res.code + const para = { + inviteUserId: that.data.inviteUserId, + //写死四机社区第一网格 + gridId: '1224104693058306049', + wxCode: res.code + } + api.getTokenV3(para).then(function (res) { + global.Token = res.data.token + wx.removeStorageSync('token') + wx.setStorageSync('token', res.data.token) + that.setData({ + resToken: res.data.token, + resGridName: res.data.grid + }) + }) + } + } + }) + }, + // 单选点击事件 + + showToast (title) { + wx.showToast({ + title: title, + icon: 'none', + duration: 2000 + }) + }, + navigateToIndex() { + + if (!this.data.form.name) { + this.showToast('请输入姓名') + return false + } + if (!this.data.form.idCard) { + this.showToast('请填写身份证号') + return false + } + if(!this.data.form.workUnit){ + this.showToast('请填写工作单位') + return false + } + if (!this.data.form.mobile) { + this.showToast('请填写手机号') + return false + } + if(this.data.form.shibei == '1'){ + if (this.data.form.allDeptIds.length == 0) { + this.showToast('请选择报到常住社区名称') + return false + } + if (!this.data.form.homeName) { + this.showToast('请填写居住小区名称') + return false + } + }else if(this.data.form.shibei == '0'){ + if (this.data.form.allDeptIds.length == 0) { + this.showToast('请填写单位报到联系社区名称') + return false + } + } + + const para = { + ...this.data.form + } + if(this.data.workTypeText){ + para.workType = this.data.workTypeText + } + para.party = parseInt(para.party) + console.log(para); + // wx.showLoading({ + // title: "提交中..." + // }) + let than = this + // api.submitReportparty(para).then(res => { + // wx.hideLoading() + // if(res.code == '0'){ + // than.setData({ + // submitStatus:true + // }) + // }else{ + // than.showToast(res.msg) + // } + // }).catch(err => { + // wx.hideLoading() + // console.log(err); + // }) + wx.reLaunch({ + url: '/pages/home/home' + }) + console.log(this.data.form); } - }, - navigateToIndex () { - wx.reLaunch({ - url: '/pages/home/home' - }) - } -}) +}) \ No newline at end of file diff --git a/miniprogram/pages/formid/formid.json b/miniprogram/pages/formid/formid.json index b0bfb9d..357b305 100644 --- a/miniprogram/pages/formid/formid.json +++ b/miniprogram/pages/formid/formid.json @@ -1,4 +1,6 @@ { "navigationBarTitleText": "注册", - "usingComponents": {} + "usingComponents": { + "wux-picker": "../../dist/picker/index" + } } \ No newline at end of file diff --git a/miniprogram/pages/formid/formid.wxml b/miniprogram/pages/formid/formid.wxml index aa9379c..9ea5faf 100644 --- a/miniprogram/pages/formid/formid.wxml +++ b/miniprogram/pages/formid/formid.wxml @@ -1,17 +1,145 @@ - - - - 欢迎使用北尚先锋 - - - -   - + + + + * + 姓名 + + + + + + + + * + 身份证号 + + + + + + + + * + 手机号码 + + + + + + + + * + 工作单位 + + + + + + + + + 单位性质 + + + {{form.workType?form.workType:'请选择'}} + + + + + + 单位性质(其他) + + + + + + + + + 所属行业 + + + + + + + + + 是否居住在市北 + + + + + + + + + + + * + 报到的常住社区名称 + + + + + {{newArr[0][multiIndex[0]]}},{{newArr[1][multiIndex[1]]}} + + + 请选择 + + + + + + + + * + 居住小区名称 + + + + + + + + * + 单位报到联系社区名称 + + + + + {{newArr[0][multiIndex[0]]}},{{newArr[1][multiIndex[1]]}} + + + 请选择 + + + + + + + * + 是否为中共党员 + + + + + + + + + - \ No newline at end of file + + + + \ No newline at end of file diff --git a/miniprogram/pages/formid/formid.wxss b/miniprogram/pages/formid/formid.wxss index 0ca3459..60b89b3 100644 --- a/miniprogram/pages/formid/formid.wxss +++ b/miniprogram/pages/formid/formid.wxss @@ -1,25 +1,61 @@ -.bgimg{ - width: 710rpx; - height: 100%; - position: absolute; - } - .context2{ - padding: 80px 22px 50px 20px; - position: absolute; - z-index: 99999; - font-size: 28rpx; - color: #333333; - } -.context-title{ - font-size: 50rpx; - margin-bottom: 50rpx; + +.container{ + height: calc(100vh - 100rpx); + overflow-y: scroll ; + overflow-x: hidden; } -.context-name{ - font-size: 36rpx; +.gray{ + background-color: #fafafa; } -.context-name view{ - line-height: 60rpx; +.gray-font{ + color:#808080 ; } +.basic-info { + width: 95%; + background: #fff; + border-radius: 16rpx; + box-sizing: border-box; + padding: 0 20rpx; + margin: 20rpx auto; + + } + .basic-info .list-item { + width: 100%; + height: 100rpx; + display: flex; + align-items: center; + justify-content: space-between; + } + .basic-info .list-item .left .must { + color: #F61616; + font-size: 30rpx; + } + .basic-info .list-item .left .title { + color: #333; + font-size: 34rpx; + } + .basic-info .list-item .left { + display: flex; + align-items: center; + height: 100rpx; + } + .basic-info .list-item .right { + height: 100%; + display: flex; + align-items: center; + justify-content: flex-end; + flex: 1; + } + .basic-info .list-item .right .picker{ + width: 100%; + } + .basic-info .list-item .right input{ + text-align: right; + } + .fixed{ + position: fixed; + bottom: 20rpx; + } .buttons .btn2 { background: linear-gradient(to right, #f51212, #ff4c4c); height:84rpx; diff --git a/miniprogram/pages/my/my.wxml b/miniprogram/pages/my/my.wxml index 1944536..eefbf25 100644 --- a/miniprogram/pages/my/my.wxml +++ b/miniprogram/pages/my/my.wxml @@ -23,13 +23,13 @@ - + \ No newline at end of file diff --git a/miniprogram/project.private.config.json b/miniprogram/project.private.config.json index 34e61c1..08e0bf4 100644 --- a/miniprogram/project.private.config.json +++ b/miniprogram/project.private.config.json @@ -142,7 +142,7 @@ "scene": null }, { - "name": "", + "name": "注册", "pathName": "pages/formid/formid", "query": "", "launchMode": "default", diff --git a/miniprogram/subpages/checkIn/pages/checkIn/register/register.js b/miniprogram/subpages/checkIn/pages/checkIn/register/register.js index eddffb0..dd7689f 100644 --- a/miniprogram/subpages/checkIn/pages/checkIn/register/register.js +++ b/miniprogram/subpages/checkIn/pages/checkIn/register/register.js @@ -35,12 +35,14 @@ Page({ allDeptIds: [],//社区id shibei:'1',//是否居住在市北 }, + workTypeText:'', orgOptions: [], newArr:[], multiIds:[], multiIndex: [0, 0], submitStatus:false, - changeFlag:false + changeFlag:false, + workTypeInput:false }, /** @@ -134,12 +136,28 @@ Page({ */ onShareAppMessage() { + }, + cancelDlaog(){ + this.setData({ + workTypeInput:false + }) }, handelClickTwo(){ wx.navigateBack({ delta: 1 }) }, + bindWorkTypeTextInput(e){ + this.setData({ + workTypeText: e.detail.value + }) + }, + confirmDlaog(e){ + console.log(e); + this.setData({ + workTypeInput:false + }) + }, bindMultiPickerChange() { this.setData({ 'form.allDeptIds':['1175270520603930625',this.data.multiIds[0].value,this.data.multiIds[1].value], @@ -291,6 +309,12 @@ Page({ }) }, pickerConfirm(e) { + console.log(e); + if(e.detail.value == '7'){ + this.setData({ + workTypeInput:true + }) + } this.setData({ 'form.workType': e.detail.label, selectedStatus: false @@ -353,9 +377,13 @@ Page({ }else{ para.owners = parseInt(para.owners) } + if(this.data.workTypeText){ + para.workType = this.data.workTypeText + } para.party = parseInt(para.party) para.volunteer = parseInt(para.volunteer) para.gridStaff = parseInt(para.gridStaff) + console.log(para); wx.showLoading({ title: "提交中..." }) diff --git a/miniprogram/subpages/checkIn/pages/checkIn/register/register.wxml b/miniprogram/subpages/checkIn/pages/checkIn/register/register.wxml index 6817e32..a2b4b97 100644 --- a/miniprogram/subpages/checkIn/pages/checkIn/register/register.wxml +++ b/miniprogram/subpages/checkIn/pages/checkIn/register/register.wxml @@ -47,6 +47,15 @@ {{form.workType?form.workType:'请选择'}} + + + + 单位性质(其他) + + + + + @@ -198,4 +207,8 @@ - \ No newline at end of file + + \ No newline at end of file diff --git a/miniprogram/subpages/knight/pages/knight/knight.wxml b/miniprogram/subpages/knight/pages/knight/knight.wxml index 5a6f83a..0bbca23 100644 --- a/miniprogram/subpages/knight/pages/knight/knight.wxml +++ b/miniprogram/subpages/knight/pages/knight/knight.wxml @@ -24,7 +24,7 @@ 驿站地图 - 主要是浏览、查询附近驿站点位。 + 主要是浏览、查询附近新锋驿站点位。 @@ -48,7 +48,7 @@ 城市观察员 - 城市管理齐出力,优美环境共受益。 + 城市管理齐出力,优美环境共受益。 diff --git a/miniprogram/subpages/knight/pages/knight/observeResi/observeResi.js b/miniprogram/subpages/knight/pages/knight/observeResi/observeResi.js index aa7a23f..d62117e 100644 --- a/miniprogram/subpages/knight/pages/knight/observeResi/observeResi.js +++ b/miniprogram/subpages/knight/pages/knight/observeResi/observeResi.js @@ -309,7 +309,14 @@ Page({ this.showToast('请填写现工作单位') return false } - + if(!this.data.form.courier){ + this.showToast('请选择行业类别') + + return false + }else if(this.data.form.courier == 5 && !this.data.form.courierText){ + this.showToast('请请填写其他行业类别') + return false + } const para = { ...this.data.form } @@ -322,19 +329,25 @@ Page({ console.log(para); wx.hideLoading() let than = this - api.submitKnightpionner(para).then(res=>{ - wx.hideLoading() - if(res.code == '0'){ - than.setData({ - submitStatus:true - }) - }else{ - than.showToast(res.msg) - } - }).catch(err=>{ - wx.hideLoading() - console.log(err); - }) + // api.submitKnightpionner(para).then(res=>{ + // wx.hideLoading() + // if(res.code == '0'){ + // than.setData({ + // submitStatus:true + // }) + // }else{ + // than.showToast(res.msg) + // } + // }).catch(err=>{ + // wx.hideLoading() + // console.log(err); + // }) + }, + bindRealCourierTextInput(e){ + this.setData({ + 'form.courierText': e.detail.value + }) + console.log(this.data.courierText) }, handelClickTwo(){ wx.navigateBack({ diff --git a/miniprogram/subpages/knight/pages/knight/observeResi/observeResi.wxml b/miniprogram/subpages/knight/pages/knight/observeResi/observeResi.wxml index b6dccfa..3f84846 100644 --- a/miniprogram/subpages/knight/pages/knight/observeResi/observeResi.wxml +++ b/miniprogram/subpages/knight/pages/knight/observeResi/observeResi.wxml @@ -69,6 +69,16 @@ {{selectedValueHlabel?selectedValueHlabel:'请选择'}} + + + * + 行业类别(其他) + + + + + + * diff --git a/miniprogram/subpages/redGrider/pages/redGrider/redGrider.wxml b/miniprogram/subpages/redGrider/pages/redGrider/redGrider.wxml index f6d5f3a..c3c2913 100644 --- a/miniprogram/subpages/redGrider/pages/redGrider/redGrider.wxml +++ b/miniprogram/subpages/redGrider/pages/redGrider/redGrider.wxml @@ -12,7 +12,7 @@ 网格力量 - “网格力量”是面向全区社区下网格··· + “网格力量”是面向全区社区下网格。 diff --git a/miniprogram/utils/api.js b/miniprogram/utils/api.js index c6b406b..088da34 100644 --- a/miniprogram/utils/api.js +++ b/miniprogram/utils/api.js @@ -57,7 +57,9 @@ module.exports = { standardbearerApply: standardbearerApply, standardbearerStatus: standardbearerStatus, getByLoginUser: getByLoginUser, - saveOrder: saveOrder + saveOrder: saveOrder, + getDeptIdByItude:getDeptIdByItude, + getDeptTree:getDeptTree } function getToken(wxCode) { @@ -493,4 +495,12 @@ function getByLoginUser() { //保存招募令 function saveOrder(info) { return fly.post("app-user/redspearhead/save", info) -} \ No newline at end of file +} +//根据经纬度查询街道社区 + function getDeptIdByItude (para) { + return fly.post(`admin/dept/getGridByCoordinate`, para) + } + //街道tree + function getDeptTree () { + return fly.get(`admin/dept/getAllDeptTree`) + } \ No newline at end of file diff --git a/miniprogram/utils/qqmap-wx-jssdk.js b/miniprogram/utils/qqmap-wx-jssdk.js new file mode 100644 index 0000000..9724e31 --- /dev/null +++ b/miniprogram/utils/qqmap-wx-jssdk.js @@ -0,0 +1,1123 @@ +/** + * 微信小程序JavaScriptSDK + * + * @version 1.2 + * @date 2019-03-06 + * @author v_ylyue@tencent.com + */ + +var ERROR_CONF = { + KEY_ERR: 311, + KEY_ERR_MSG: 'key格式错误', + PARAM_ERR: 310, + PARAM_ERR_MSG: '请求参数信息有误', + SYSTEM_ERR: 600, + SYSTEM_ERR_MSG: '系统错误', + WX_ERR_CODE: 1000, + WX_OK_CODE: 200 +}; +var BASE_URL = 'https://apis.map.qq.com/ws/'; +var URL_SEARCH = BASE_URL + 'place/v1/search'; +var URL_SUGGESTION = BASE_URL + 'place/v1/suggestion'; +var URL_GET_GEOCODER = BASE_URL + 'geocoder/v1/'; +var URL_CITY_LIST = BASE_URL + 'district/v1/list'; +var URL_AREA_LIST = BASE_URL + 'district/v1/getchildren'; +var URL_DISTANCE = BASE_URL + 'distance/v1/'; +var URL_DIRECTION = BASE_URL + 'direction/v1/'; +var MODE = { + driving: 'driving', + transit: 'transit' +}; +var EARTH_RADIUS = 6378136.49; +var Utils = { + /** + * md5加密方法 + * 版权所有©2011 Sebastian Tschan,https://blueimp.net + */ + safeAdd(x, y) { + var lsw = (x & 0xffff) + (y & 0xffff); + var msw = (x >> 16) + (y >> 16) + (lsw >> 16); + return (msw << 16) | (lsw & 0xffff); + }, + bitRotateLeft(num, cnt) { + return (num << cnt) | (num >>> (32 - cnt)); + }, + md5cmn(q, a, b, x, s, t) { + return this.safeAdd(this.bitRotateLeft(this.safeAdd(this.safeAdd(a, q), this.safeAdd(x, t)), s), b); + }, + md5ff(a, b, c, d, x, s, t) { + return this.md5cmn((b & c) | (~b & d), a, b, x, s, t); + }, + md5gg(a, b, c, d, x, s, t) { + return this.md5cmn((b & d) | (c & ~d), a, b, x, s, t); + }, + md5hh(a, b, c, d, x, s, t) { + return this.md5cmn(b ^ c ^ d, a, b, x, s, t); + }, + md5ii(a, b, c, d, x, s, t) { + return this.md5cmn(c ^ (b | ~d), a, b, x, s, t); + }, + binlMD5(x, len) { + /* append padding */ + x[len >> 5] |= 0x80 << (len % 32); + x[((len + 64) >>> 9 << 4) + 14] = len; + + var i; + var olda; + var oldb; + var oldc; + var oldd; + var a = 1732584193; + var b = -271733879; + var c = -1732584194; + var d = 271733878; + + for (i = 0; i < x.length; i += 16) { + olda = a; + oldb = b; + oldc = c; + oldd = d; + + a = this.md5ff(a, b, c, d, x[i], 7, -680876936); + d = this.md5ff(d, a, b, c, x[i + 1], 12, -389564586); + c = this.md5ff(c, d, a, b, x[i + 2], 17, 606105819); + b = this.md5ff(b, c, d, a, x[i + 3], 22, -1044525330); + a = this.md5ff(a, b, c, d, x[i + 4], 7, -176418897); + d = this.md5ff(d, a, b, c, x[i + 5], 12, 1200080426); + c = this.md5ff(c, d, a, b, x[i + 6], 17, -1473231341); + b = this.md5ff(b, c, d, a, x[i + 7], 22, -45705983); + a = this.md5ff(a, b, c, d, x[i + 8], 7, 1770035416); + d = this.md5ff(d, a, b, c, x[i + 9], 12, -1958414417); + c = this.md5ff(c, d, a, b, x[i + 10], 17, -42063); + b = this.md5ff(b, c, d, a, x[i + 11], 22, -1990404162); + a = this.md5ff(a, b, c, d, x[i + 12], 7, 1804603682); + d = this.md5ff(d, a, b, c, x[i + 13], 12, -40341101); + c = this.md5ff(c, d, a, b, x[i + 14], 17, -1502002290); + b = this.md5ff(b, c, d, a, x[i + 15], 22, 1236535329); + + a = this.md5gg(a, b, c, d, x[i + 1], 5, -165796510); + d = this.md5gg(d, a, b, c, x[i + 6], 9, -1069501632); + c = this.md5gg(c, d, a, b, x[i + 11], 14, 643717713); + b = this.md5gg(b, c, d, a, x[i], 20, -373897302); + a = this.md5gg(a, b, c, d, x[i + 5], 5, -701558691); + d = this.md5gg(d, a, b, c, x[i + 10], 9, 38016083); + c = this.md5gg(c, d, a, b, x[i + 15], 14, -660478335); + b = this.md5gg(b, c, d, a, x[i + 4], 20, -405537848); + a = this.md5gg(a, b, c, d, x[i + 9], 5, 568446438); + d = this.md5gg(d, a, b, c, x[i + 14], 9, -1019803690); + c = this.md5gg(c, d, a, b, x[i + 3], 14, -187363961); + b = this.md5gg(b, c, d, a, x[i + 8], 20, 1163531501); + a = this.md5gg(a, b, c, d, x[i + 13], 5, -1444681467); + d = this.md5gg(d, a, b, c, x[i + 2], 9, -51403784); + c = this.md5gg(c, d, a, b, x[i + 7], 14, 1735328473); + b = this.md5gg(b, c, d, a, x[i + 12], 20, -1926607734); + + a = this.md5hh(a, b, c, d, x[i + 5], 4, -378558); + d = this.md5hh(d, a, b, c, x[i + 8], 11, -2022574463); + c = this.md5hh(c, d, a, b, x[i + 11], 16, 1839030562); + b = this.md5hh(b, c, d, a, x[i + 14], 23, -35309556); + a = this.md5hh(a, b, c, d, x[i + 1], 4, -1530992060); + d = this.md5hh(d, a, b, c, x[i + 4], 11, 1272893353); + c = this.md5hh(c, d, a, b, x[i + 7], 16, -155497632); + b = this.md5hh(b, c, d, a, x[i + 10], 23, -1094730640); + a = this.md5hh(a, b, c, d, x[i + 13], 4, 681279174); + d = this.md5hh(d, a, b, c, x[i], 11, -358537222); + c = this.md5hh(c, d, a, b, x[i + 3], 16, -722521979); + b = this.md5hh(b, c, d, a, x[i + 6], 23, 76029189); + a = this.md5hh(a, b, c, d, x[i + 9], 4, -640364487); + d = this.md5hh(d, a, b, c, x[i + 12], 11, -421815835); + c = this.md5hh(c, d, a, b, x[i + 15], 16, 530742520); + b = this.md5hh(b, c, d, a, x[i + 2], 23, -995338651); + + a = this.md5ii(a, b, c, d, x[i], 6, -198630844); + d = this.md5ii(d, a, b, c, x[i + 7], 10, 1126891415); + c = this.md5ii(c, d, a, b, x[i + 14], 15, -1416354905); + b = this.md5ii(b, c, d, a, x[i + 5], 21, -57434055); + a = this.md5ii(a, b, c, d, x[i + 12], 6, 1700485571); + d = this.md5ii(d, a, b, c, x[i + 3], 10, -1894986606); + c = this.md5ii(c, d, a, b, x[i + 10], 15, -1051523); + b = this.md5ii(b, c, d, a, x[i + 1], 21, -2054922799); + a = this.md5ii(a, b, c, d, x[i + 8], 6, 1873313359); + d = this.md5ii(d, a, b, c, x[i + 15], 10, -30611744); + c = this.md5ii(c, d, a, b, x[i + 6], 15, -1560198380); + b = this.md5ii(b, c, d, a, x[i + 13], 21, 1309151649); + a = this.md5ii(a, b, c, d, x[i + 4], 6, -145523070); + d = this.md5ii(d, a, b, c, x[i + 11], 10, -1120210379); + c = this.md5ii(c, d, a, b, x[i + 2], 15, 718787259); + b = this.md5ii(b, c, d, a, x[i + 9], 21, -343485551); + + a = this.safeAdd(a, olda); + b = this.safeAdd(b, oldb); + c = this.safeAdd(c, oldc); + d = this.safeAdd(d, oldd); + } + return [a, b, c, d]; + }, + binl2rstr(input) { + var i; + var output = ''; + var length32 = input.length * 32; + for (i = 0; i < length32; i += 8) { + output += String.fromCharCode((input[i >> 5] >>> (i % 32)) & 0xff); + } + return output; + }, + rstr2binl(input) { + var i; + var output = []; + output[(input.length >> 2) - 1] = undefined; + for (i = 0; i < output.length; i += 1) { + output[i] = 0; + } + var length8 = input.length * 8; + for (i = 0; i < length8; i += 8) { + output[i >> 5] |= (input.charCodeAt(i / 8) & 0xff) << (i % 32); + } + return output; + }, + rstrMD5(s) { + return this.binl2rstr(this.binlMD5(this.rstr2binl(s), s.length * 8)); + }, + rstrHMACMD5(key, data) { + var i; + var bkey = this.rstr2binl(key); + var ipad = []; + var opad = []; + var hash; + ipad[15] = opad[15] = undefined; + if (bkey.length > 16) { + bkey = this.binlMD5(bkey, key.length * 8); + } + for (i = 0; i < 16; i += 1) { + ipad[i] = bkey[i] ^ 0x36363636; + opad[i] = bkey[i] ^ 0x5c5c5c5c; + } + hash = this.binlMD5(ipad.concat(this.rstr2binl(data)), 512 + data.length * 8); + return this.binl2rstr(this.binlMD5(opad.concat(hash), 512 + 128)); + }, + rstr2hex(input) { + var hexTab = '0123456789abcdef'; + var output = ''; + var x; + var i; + for (i = 0; i < input.length; i += 1) { + x = input.charCodeAt(i); + output += hexTab.charAt((x >>> 4) & 0x0f) + hexTab.charAt(x & 0x0f); + } + return output; + }, + str2rstrUTF8(input) { + return unescape(encodeURIComponent(input)); + }, + rawMD5(s) { + return this.rstrMD5(this.str2rstrUTF8(s)); + }, + hexMD5(s) { + return this.rstr2hex(this.rawMD5(s)); + }, + rawHMACMD5(k, d) { + return this.rstrHMACMD5(this.str2rstrUTF8(k), str2rstrUTF8(d)); + }, + hexHMACMD5(k, d) { + return this.rstr2hex(this.rawHMACMD5(k, d)); + }, + + md5(string, key, raw) { + if (!key) { + if (!raw) { + return this.hexMD5(string); + } + return this.rawMD5(string); + } + if (!raw) { + return this.hexHMACMD5(key, string); + } + return this.rawHMACMD5(key, string); + }, + /** + * 得到md5加密后的sig参数 + * @param {Object} requestParam 接口参数 + * @param {String} sk签名字符串 + * @param {String} featrue 方法名 + * @return 返回加密后的sig参数 + */ + getSig(requestParam, sk, feature, mode) { + var sig = null; + var requestArr = []; + Object.keys(requestParam).sort().forEach(function(key){ + requestArr.push(key + '=' + requestParam[key]); + }); + if (feature == 'search') { + sig = '/ws/place/v1/search?' + requestArr.join('&') + sk; + } + if (feature == 'suggest') { + sig = '/ws/place/v1/suggestion?' + requestArr.join('&') + sk; + } + if (feature == 'reverseGeocoder') { + sig = '/ws/geocoder/v1/?' + requestArr.join('&') + sk; + } + if (feature == 'geocoder') { + sig = '/ws/geocoder/v1/?' + requestArr.join('&') + sk; + } + if (feature == 'getCityList') { + sig = '/ws/district/v1/list?' + requestArr.join('&') + sk; + } + if (feature == 'getDistrictByCityId') { + sig = '/ws/district/v1/getchildren?' + requestArr.join('&') + sk; + } + if (feature == 'calculateDistance') { + sig = '/ws/distance/v1/?' + requestArr.join('&') + sk; + } + if (feature == 'direction') { + sig = '/ws/direction/v1/' + mode + '?' + requestArr.join('&') + sk; + } + sig = this.md5(sig); + return sig; + }, + /** + * 得到终点query字符串 + * @param {Array|String} 检索数据 + */ + location2query(data) { + if (typeof data == 'string') { + return data; + } + var query = ''; + for (var i = 0; i < data.length; i++) { + var d = data[i]; + if (!!query) { + query += ';'; + } + if (d.location) { + query = query + d.location.lat + ',' + d.location.lng; + } + if (d.latitude && d.longitude) { + query = query + d.latitude + ',' + d.longitude; + } + } + return query; + }, + + /** + * 计算角度 + */ + rad(d) { + return d * Math.PI / 180.0; + }, + /** + * 处理终点location数组 + * @return 返回终点数组 + */ + getEndLocation(location){ + var to = location.split(';'); + var endLocation = []; + for (var i = 0; i < to.length; i++) { + endLocation.push({ + lat: parseFloat(to[i].split(',')[0]), + lng: parseFloat(to[i].split(',')[1]) + }) + } + return endLocation; + }, + + /** + * 计算两点间直线距离 + * @param a 表示纬度差 + * @param b 表示经度差 + * @return 返回的是距离,单位m + */ + getDistance(latFrom, lngFrom, latTo, lngTo) { + var radLatFrom = this.rad(latFrom); + var radLatTo = this.rad(latTo); + var a = radLatFrom - radLatTo; + var b = this.rad(lngFrom) - this.rad(lngTo); + var distance = 2 * Math.asin(Math.sqrt(Math.pow(Math.sin(a / 2), 2) + Math.cos(radLatFrom) * Math.cos(radLatTo) * Math.pow(Math.sin(b / 2), 2))); + distance = distance * EARTH_RADIUS; + distance = Math.round(distance * 10000) / 10000; + return parseFloat(distance.toFixed(0)); + }, + /** + * 使用微信接口进行定位 + */ + getWXLocation(success, fail, complete) { + wx.getLocation({ + type: 'gcj02', + success: success, + fail: fail, + complete: complete + }); + }, + + /** + * 获取location参数 + */ + getLocationParam(location) { + if (typeof location == 'string') { + var locationArr = location.split(','); + if (locationArr.length === 2) { + location = { + latitude: location.split(',')[0], + longitude: location.split(',')[1] + }; + } else { + location = {}; + } + } + return location; + }, + + /** + * 回调函数默认处理 + */ + polyfillParam(param) { + param.success = param.success || function () { }; + param.fail = param.fail || function () { }; + param.complete = param.complete || function () { }; + }, + + /** + * 验证param对应的key值是否为空 + * + * @param {Object} param 接口参数 + * @param {String} key 对应参数的key + */ + checkParamKeyEmpty(param, key) { + if (!param[key]) { + var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + key +'参数格式有误'); + param.fail(errconf); + param.complete(errconf); + return true; + } + return false; + }, + + /** + * 验证参数中是否存在检索词keyword + * + * @param {Object} param 接口参数 + */ + checkKeyword(param){ + return !this.checkParamKeyEmpty(param, 'keyword'); + }, + + /** + * 验证location值 + * + * @param {Object} param 接口参数 + */ + checkLocation(param) { + var location = this.getLocationParam(param.location); + if (!location || !location.latitude || !location.longitude) { + var errconf = this.buildErrorConfig(ERROR_CONF.PARAM_ERR, ERROR_CONF.PARAM_ERR_MSG + ' location参数格式有误'); + param.fail(errconf); + param.complete(errconf); + return false; + } + return true; + }, + + /** + * 构造错误数据结构 + * @param {Number} errCode 错误码 + * @param {Number} errMsg 错误描述 + */ + buildErrorConfig(errCode, errMsg) { + return { + status: errCode, + message: errMsg + }; + }, + + /** + * + * 数据处理函数 + * 根据传入参数不同处理不同数据 + * @param {String} feature 功能名称 + * search 地点搜索 + * suggest关键词提示 + * reverseGeocoder逆地址解析 + * geocoder地址解析 + * getCityList获取城市列表:父集 + * getDistrictByCityId获取区县列表:子集 + * calculateDistance距离计算 + * @param {Object} param 接口参数 + * @param {Object} data 数据 + */ + handleData(param,data,feature){ + if (feature == 'search') { + var searchResult = data.data; + var searchSimplify = []; + for (var i = 0; i < searchResult.length; i++) { + searchSimplify.push({ + id: searchResult[i].id || null, + title: searchResult[i].title || null, + latitude: searchResult[i].location && searchResult[i].location.lat || null, + longitude: searchResult[i].location && searchResult[i].location.lng || null, + address: searchResult[i].address || null, + category: searchResult[i].category || null, + tel: searchResult[i].tel || null, + adcode: searchResult[i].ad_info && searchResult[i].ad_info.adcode || null, + city: searchResult[i].ad_info && searchResult[i].ad_info.city || null, + district: searchResult[i].ad_info && searchResult[i].ad_info.district || null, + province: searchResult[i].ad_info && searchResult[i].ad_info.province || null + }) + } + param.success(data, { + searchResult: searchResult, + searchSimplify: searchSimplify + }) + } else if (feature == 'suggest') { + var suggestResult = data.data; + var suggestSimplify = []; + for (var i = 0; i < suggestResult.length; i++) { + suggestSimplify.push({ + adcode: suggestResult[i].adcode || null, + address: suggestResult[i].address || null, + category: suggestResult[i].category || null, + city: suggestResult[i].city || null, + district: suggestResult[i].district || null, + id: suggestResult[i].id || null, + latitude: suggestResult[i].location && suggestResult[i].location.lat || null, + longitude: suggestResult[i].location && suggestResult[i].location.lng || null, + province: suggestResult[i].province || null, + title: suggestResult[i].title || null, + type: suggestResult[i].type || null + }) + } + param.success(data, { + suggestResult: suggestResult, + suggestSimplify: suggestSimplify + }) + } else if (feature == 'reverseGeocoder') { + var reverseGeocoderResult = data.result; + var reverseGeocoderSimplify = { + address: reverseGeocoderResult.address || null, + latitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lat || null, + longitude: reverseGeocoderResult.location && reverseGeocoderResult.location.lng || null, + adcode: reverseGeocoderResult.ad_info && reverseGeocoderResult.ad_info.adcode || null, + city: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.city || null, + district: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.district || null, + nation: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.nation || null, + province: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.province || null, + street: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street || null, + street_number: reverseGeocoderResult.address_component && reverseGeocoderResult.address_component.street_number || null, + recommend: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.recommend || null, + rough: reverseGeocoderResult.formatted_addresses && reverseGeocoderResult.formatted_addresses.rough || null + }; + if (reverseGeocoderResult.pois) {//判断是否返回周边poi + var pois = reverseGeocoderResult.pois; + var poisSimplify = []; + for (var i = 0;i < pois.length;i++) { + poisSimplify.push({ + id: pois[i].id || null, + title: pois[i].title || null, + latitude: pois[i].location && pois[i].location.lat || null, + longitude: pois[i].location && pois[i].location.lng || null, + address: pois[i].address || null, + category: pois[i].category || null, + adcode: pois[i].ad_info && pois[i].ad_info.adcode || null, + city: pois[i].ad_info && pois[i].ad_info.city || null, + district: pois[i].ad_info && pois[i].ad_info.district || null, + province: pois[i].ad_info && pois[i].ad_info.province || null + }) + } + param.success(data,{ + reverseGeocoderResult: reverseGeocoderResult, + reverseGeocoderSimplify: reverseGeocoderSimplify, + pois: pois, + poisSimplify: poisSimplify + }) + } else { + param.success(data, { + reverseGeocoderResult: reverseGeocoderResult, + reverseGeocoderSimplify: reverseGeocoderSimplify + }) + } + } else if (feature == 'geocoder') { + var geocoderResult = data.result; + var geocoderSimplify = { + title: geocoderResult.title || null, + latitude: geocoderResult.location && geocoderResult.location.lat || null, + longitude: geocoderResult.location && geocoderResult.location.lng || null, + adcode: geocoderResult.ad_info && geocoderResult.ad_info.adcode || null, + province: geocoderResult.address_components && geocoderResult.address_components.province || null, + city: geocoderResult.address_components && geocoderResult.address_components.city || null, + district: geocoderResult.address_components && geocoderResult.address_components.district || null, + street: geocoderResult.address_components && geocoderResult.address_components.street || null, + street_number: geocoderResult.address_components && geocoderResult.address_components.street_number || null, + level: geocoderResult.level || null + }; + param.success(data,{ + geocoderResult: geocoderResult, + geocoderSimplify: geocoderSimplify + }); + } else if (feature == 'getCityList') { + var provinceResult = data.result[0]; + var cityResult = data.result[1]; + var districtResult = data.result[2]; + param.success(data,{ + provinceResult: provinceResult, + cityResult: cityResult, + districtResult: districtResult + }); + } else if (feature == 'getDistrictByCityId') { + var districtByCity = data.result[0]; + param.success(data, districtByCity); + } else if (feature == 'calculateDistance') { + var calculateDistanceResult = data.result.elements; + var distance = []; + for (var i = 0; i < calculateDistanceResult.length; i++){ + distance.push(calculateDistanceResult[i].distance); + } + param.success(data, { + calculateDistanceResult: calculateDistanceResult, + distance: distance + }); + } else if (feature == 'direction') { + var direction = data.result.routes; + param.success(data,direction); + } else { + param.success(data); + } + }, + + /** + * 构造微信请求参数,公共属性处理 + * + * @param {Object} param 接口参数 + * @param {Object} param 配置项 + * @param {String} feature 方法名 + */ + buildWxRequestConfig(param, options, feature) { + var that = this; + options.header = { "content-type": "application/json" }; + options.method = 'GET'; + options.success = function (res) { + var data = res.data; + if (data.status === 0) { + that.handleData(param, data, feature); + } else { + param.fail(data); + } + }; + options.fail = function (res) { + res.statusCode = ERROR_CONF.WX_ERR_CODE; + param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + }; + options.complete = function (res) { + var statusCode = +res.statusCode; + switch(statusCode) { + case ERROR_CONF.WX_ERR_CODE: { + param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + break; + } + case ERROR_CONF.WX_OK_CODE: { + var data = res.data; + if (data.status === 0) { + param.complete(data); + } else { + param.complete(that.buildErrorConfig(data.status, data.message)); + } + break; + } + default:{ + param.complete(that.buildErrorConfig(ERROR_CONF.SYSTEM_ERR, ERROR_CONF.SYSTEM_ERR_MSG)); + } + + } + }; + return options; + }, + + /** + * 处理用户参数是否传入坐标进行不同的处理 + */ + locationProcess(param, locationsuccess, locationfail, locationcomplete) { + var that = this; + locationfail = locationfail || function (res) { + res.statusCode = ERROR_CONF.WX_ERR_CODE; + param.fail(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + }; + locationcomplete = locationcomplete || function (res) { + if (res.statusCode == ERROR_CONF.WX_ERR_CODE) { + param.complete(that.buildErrorConfig(ERROR_CONF.WX_ERR_CODE, res.errMsg)); + } + }; + if (!param.location) { + that.getWXLocation(locationsuccess, locationfail, locationcomplete); + } else if (that.checkLocation(param)) { + var location = Utils.getLocationParam(param.location); + locationsuccess(location); + } + } +}; + + +class QQMapWX { + + /** + * 构造函数 + * + * @param {Object} options 接口参数,key 为必选参数 + */ + constructor(options) { + if (!options.key) { + throw Error('key值不能为空'); + } + this.key = options.key; + }; + + /** + * POI周边检索 + * + * @param {Object} options 接口参数对象 + * + * 参数对象结构可以参考 + * @see http://lbs.qq.com/webservice_v1/guide-search.html + */ + search(options) { + var that = this; + options = options || {}; + + Utils.polyfillParam(options); + + if (!Utils.checkKeyword(options)) { + return; + } + + var requestParam = { + keyword: options.keyword, + orderby: options.orderby || '_distance', + page_size: options.page_size || 10, + page_index: options.page_index || 1, + output: 'json', + key: that.key + }; + + if (options.address_format) { + requestParam.address_format = options.address_format; + } + + if (options.filter) { + requestParam.filter = options.filter; + } + + var distance = options.distance || "1000"; + var auto_extend = options.auto_extend || 1; + var region = null; + var rectangle = null; + + //判断城市限定参数 + if (options.region) { + region = options.region; + } + + //矩形限定坐标(暂时只支持字符串格式) + if (options.rectangle) { + rectangle = options.rectangle; + } + + var locationsuccess = function (result) { + if (region && !rectangle) { + //城市限定参数拼接 + requestParam.boundary = "region(" + region + "," + auto_extend + "," + result.latitude + "," + result.longitude + ")"; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'search'); + } + } else if (rectangle && !region) { + //矩形搜索 + requestParam.boundary = "rectangle(" + rectangle + ")"; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'search'); + } + } else { + requestParam.boundary = "nearby(" + result.latitude + "," + result.longitude + "," + distance + "," + auto_extend + ")"; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'search'); + } + } + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_SEARCH, + data: requestParam + }, 'search')); + }; + Utils.locationProcess(options, locationsuccess); + }; + + /** + * sug模糊检索 + * + * @param {Object} options 接口参数对象 + * + * 参数对象结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-suggestion.html + */ + getSuggestion(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (!Utils.checkKeyword(options)) { + return; + } + + var requestParam = { + keyword: options.keyword, + region: options.region || '全国', + region_fix: options.region_fix || 0, + policy: options.policy || 0, + page_size: options.page_size || 10,//控制显示条数 + page_index: options.page_index || 1,//控制页数 + get_subpois : options.get_subpois || 0,//返回子地点 + output: 'json', + key: that.key + }; + //长地址 + if (options.address_format) { + requestParam.address_format = options.address_format; + } + //过滤 + if (options.filter) { + requestParam.filter = options.filter; + } + //排序 + if (options.location) { + var locationsuccess = function (result) { + requestParam.location = result.latitude + ',' + result.longitude; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'suggest'); + } + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_SUGGESTION, + data: requestParam + }, "suggest")); + }; + Utils.locationProcess(options, locationsuccess); + } else { + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'suggest'); + } + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_SUGGESTION, + data: requestParam + }, "suggest")); + } + }; + + /** + * 逆地址解析 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-gcoder.html + */ + reverseGeocoder(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + var requestParam = { + coord_type: options.coord_type || 5, + get_poi: options.get_poi || 0, + output: 'json', + key: that.key + }; + if (options.poi_options) { + requestParam.poi_options = options.poi_options + } + + var locationsuccess = function (result) { + requestParam.location = result.latitude + ',' + result.longitude; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'reverseGeocoder'); + } + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_GET_GEOCODER, + data: requestParam + }, 'reverseGeocoder')); + }; + Utils.locationProcess(options, locationsuccess); + }; + + /** + * 地址解析 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-geocoder.html + */ + geocoder(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (Utils.checkParamKeyEmpty(options, 'address')) { + return; + } + + var requestParam = { + address: options.address, + output: 'json', + key: that.key + }; + + //城市限定 + if (options.region) { + requestParam.region = options.region; + } + + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'geocoder'); + } + + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_GET_GEOCODER, + data: requestParam + },'geocoder')); + }; + + + /** + * 获取城市列表 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-region.html + */ + getCityList(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + var requestParam = { + output: 'json', + key: that.key + }; + + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'getCityList'); + } + + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_CITY_LIST, + data: requestParam + },'getCityList')); + }; + + /** + * 获取对应城市ID的区县列表 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-region.html + */ + getDistrictByCityId(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (Utils.checkParamKeyEmpty(options, 'id')) { + return; + } + + var requestParam = { + id: options.id || '', + output: 'json', + key: that.key + }; + + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'getDistrictByCityId'); + } + + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_AREA_LIST, + data: requestParam + },'getDistrictByCityId')); + }; + + /** + * 用于单起点到多终点的路线距离(非直线距离)计算: + * 支持两种距离计算方式:步行和驾车。 + * 起点到终点最大限制直线距离10公里。 + * + * 新增直线距离计算。 + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * http://lbs.qq.com/webservice_v1/guide-distance.html + */ + calculateDistance(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (Utils.checkParamKeyEmpty(options, 'to')) { + return; + } + + var requestParam = { + mode: options.mode || 'walking', + to: Utils.location2query(options.to), + output: 'json', + key: that.key + }; + + if (options.from) { + options.location = options.from; + } + + //计算直线距离 + if(requestParam.mode == 'straight'){ + var locationsuccess = function (result) { + var locationTo = Utils.getEndLocation(requestParam.to);//处理终点坐标 + var data = { + message:"query ok", + result:{ + elements:[] + }, + status:0 + }; + for (var i = 0; i < locationTo.length; i++) { + data.result.elements.push({//将坐标存入 + distance: Utils.getDistance(result.latitude, result.longitude, locationTo[i].lat, locationTo[i].lng), + duration:0, + from:{ + lat: result.latitude, + lng:result.longitude + }, + to:{ + lat: locationTo[i].lat, + lng: locationTo[i].lng + } + }); + } + var calculateResult = data.result.elements; + var distanceResult = []; + for (var i = 0; i < calculateResult.length; i++) { + distanceResult.push(calculateResult[i].distance); + } + return options.success(data,{ + calculateResult: calculateResult, + distanceResult: distanceResult + }); + }; + + Utils.locationProcess(options, locationsuccess); + } else { + var locationsuccess = function (result) { + requestParam.from = result.latitude + ',' + result.longitude; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'calculateDistance'); + } + wx.request(Utils.buildWxRequestConfig(options, { + url: URL_DISTANCE, + data: requestParam + },'calculateDistance')); + }; + + Utils.locationProcess(options, locationsuccess); + } + }; + + /** + * 路线规划: + * + * @param {Object} options 接口参数对象 + * + * 请求参数结构可以参考 + * https://lbs.qq.com/webservice_v1/guide-road.html + */ + direction(options) { + var that = this; + options = options || {}; + Utils.polyfillParam(options); + + if (Utils.checkParamKeyEmpty(options, 'to')) { + return; + } + + var requestParam = { + output: 'json', + key: that.key + }; + + //to格式处理 + if (typeof options.to == 'string') { + requestParam.to = options.to; + } else { + requestParam.to = options.to.latitude + ',' + options.to.longitude; + } + //初始化局部请求域名 + var SET_URL_DIRECTION = null; + //设置默认mode属性 + options.mode = options.mode || MODE.driving; + + //设置请求域名 + SET_URL_DIRECTION = URL_DIRECTION + options.mode; + + if (options.from) { + options.location = options.from; + } + + if (options.mode == MODE.driving) { + if (options.from_poi) { + requestParam.from_poi = options.from_poi; + } + if (options.heading) { + requestParam.heading = options.heading; + } + if (options.speed) { + requestParam.speed = options.speed; + } + if (options.accuracy) { + requestParam.accuracy = options.accuracy; + } + if (options.road_type) { + requestParam.road_type = options.road_type; + } + if (options.to_poi) { + requestParam.to_poi = options.to_poi; + } + if (options.from_track) { + requestParam.from_track = options.from_track; + } + if (options.waypoints) { + requestParam.waypoints = options.waypoints; + } + if (options.policy) { + requestParam.policy = options.policy; + } + if (options.plate_number) { + requestParam.plate_number = options.plate_number; + } + } + + if (options.mode == MODE.transit) { + if (options.departure_time) { + requestParam.departure_time = options.departure_time; + } + if (options.policy) { + requestParam.policy = options.policy; + } + } + + var locationsuccess = function (result) { + requestParam.from = result.latitude + ',' + result.longitude; + if (options.sig) { + requestParam.sig = Utils.getSig(requestParam, options.sig, 'direction',options.mode); + } + wx.request(Utils.buildWxRequestConfig(options, { + url: SET_URL_DIRECTION, + data: requestParam + }, 'direction')); + }; + + Utils.locationProcess(options, locationsuccess); + } +}; + +module.exports = QQMapWX; \ No newline at end of file diff --git a/miniprogram/utils/wgs84_to_gcj02.js b/miniprogram/utils/wgs84_to_gcj02.js new file mode 100644 index 0000000..26831b3 --- /dev/null +++ b/miniprogram/utils/wgs84_to_gcj02.js @@ -0,0 +1,115 @@ +//wgs84_to_gcj02.js文件 + +//地标 转 国测 常量 +var x_PI = (3.14159265358979324 * 3000.0) / 180.0; +var PI = 3.1415926535897932384626; +var a = 6378245.0; //卫星椭球坐标投影到平面地图坐标系的投影因子。 +var ee = 0.00669342162296594323; //椭球的偏心率。 + + +//判断是否在国内,在中国国内的经纬度才需要做偏移 +function out_of_china(lng, lat) { + return ( + lng < 72.004 || + lng > 137.8347 || + (lat < 0.8293 || lat > 55.8271 || false) + ); +} + +//转化经度 +function transformlng(lng, lat) { + var ret = + 300.0 + + lng + + 2.0 * lat + + 0.1 * lng * lng + + 0.1 * lng * lat + + 0.1 * Math.sqrt(Math.abs(lng)); + ret += + ((20.0 * Math.sin(6.0 * lng * PI) + + 20.0 * Math.sin(2.0 * lng * PI)) * + 2.0) / + 3.0; + ret += + ((20.0 * Math.sin(lng * PI) + + 40.0 * Math.sin((lng / 3.0) * PI)) * + 2.0) / + 3.0; + ret += + ((150.0 * Math.sin((lng / 12.0) * PI) + + 300.0 * Math.sin((lng / 30.0) * PI)) * + 2.0) / + 3.0; + return ret; +} + +//转化纬度 +function transformlat(lng, lat) { + var ret = + -100.0 + + 2.0 * lng + + 3.0 * lat + + 0.2 * lat * lat + + 0.1 * lng * lat + + 0.2 * Math.sqrt(Math.abs(lng)); + ret += + ((20.0 * Math.sin(6.0 * lng * PI) + + 20.0 * Math.sin(2.0 * lng * PI)) * + 2.0) / + 3.0; + ret += + ((20.0 * Math.sin(lat * PI) + + 40.0 * Math.sin((lat / 3.0) * PI)) * + 2.0) / + 3.0; + ret += + ((160.0 * Math.sin((lat / 12.0) * PI) + + 320 * Math.sin((lat * PI) / 30.0)) * + 2.0) / + 3.0; + return ret; +} + +//wgs84 to gcj02 地球坐标系 转 火星坐标系 +export function wgs84_to_gcj02(lng, lat) { + if (out_of_china(lng, lat)) { + return [lng, lat]; + } else { + var dlat = transformlat(lng - 105.0, lat - 35.0); + var dlng = transformlng(lng - 105.0, lat - 35.0); + var radlat = (lat / 180.0) * PI; + var magic = Math.sin(radlat); + magic = 1 - ee * magic * magic; + var sqrtmagic = Math.sqrt(magic); + dlat = + (dlat * 180.0) / + (((a * (1 - ee)) / (magic * sqrtmagic)) * PI); + dlng = + (dlng * 180.0) / ((a / sqrtmagic) * Math.cos(radlat) * PI); + var mglat = lat + dlat; + var mglng = lng + dlng; + + return [mglng, mglat]; + } +} + + +//gcj02 to wgs84 火星坐标系 转 地球坐标系 +export function gcj02_to_wgs84(lng, lat) { + if (out_of_china(lng, lat)) { + return [lng, lat] + } + else { + var dlat = transformlat(lng - 105.0, lat - 35.0); + var dlng = transformlng(lng - 105.0, lat - 35.0); + var radlat = lat / 180.0 * PI; + var magic = Math.sin(radlat); + magic = 1 - ee * magic * magic; + var sqrtmagic = Math.sqrt(magic); + dlat = (dlat * 180.0) / ((a * (1 - ee)) / (magic * sqrtmagic) * PI); + dlng = (dlng * 180.0) / (a / sqrtmagic * Math.cos(radlat) * PI); + var mglat = lat + dlat; + var mglng = lng + dlng; + return [lng * 2 - mglng, lat * 2 - mglat] + } +}