123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383 |
- const uploadJS = require('../../mixin/upload.js')
- const { userApplyShop } = require('./api/index')
- const { isMobile } = require('../../utils/validate')
- const { getShopDetail } = require('../../api/common')
- const app = getApp()
- Page({
- /**
- * 页面的初始数据
- */
- data: {
- form: {
- 'user_name': '', // 用户姓名
- 'shop_name': '', // 店铺名称
- 'user_card': '', // 身份证
- 'shop_phone': '', // 手机号码
- 'country_msg': '', // 乡村信息
- 'user_code_url': [], // 微信二维码
- 'user_wechat_code': '', // 微信号
- 'shop_img_url': [], // 店铺图片地址
- 'shop_address': {
- 'longitude': 0, // 经度
- 'latitude': 0, // 纬度
- 'address_name': '', // 起点位置名称
- 'name': ''
- }, // 店铺地址
- 'shop_remark': '' // 备注
- },
- booLock: false,
- userInfo: {},
- booCountryMsg: false,
- countryMsgList: [],
- countryMsgInDefaultIndex: 0
- },
- tempFormKey: '',
- tempPostData: {},
- /**
- * 生命周期函数--监听页面加载
- */
- onLoad(options) {
- this.bindCallBack()
- app.fetchUserDataCallback = () => {
- this.bindCallBack()
- }
- app.fetchSystemConfigCallback = () => {
- this.setCountryMsgList()
- }
- },
- /**
- * 生命周期函数--监听页面初次渲染完成
- */
- onReady() {
- },
- /**
- * 生命周期函数--监听页面显示
- */
- onShow() {
- this.setCountryMsgList()
- },
- /**
- * 生命周期函数--监听页面隐藏
- */
- onHide() {
- },
- /**
- * 生命周期函数--监听页面卸载
- */
- onUnload() {
- },
- bindCallBack() {
- this.setData({
- userInfo: app.globalData.userInfo
- }, () => {
- this.fetchShopDetail()
- })
- },
- async fetchShopDetail() {
- const { user_shop_id } = this.data.userInfo
- let temp = {}
- if (!user_shop_id) {
- return
- }
- try {
- const { status, data, msg } = await getShopDetail(user_shop_id)
- if (status) {
- for (let key in data) {
- let value = data[key]
- if ((Array.isArray(value) && value.length >= 1) || (Object.prototype.toString.call(value) === '[object Object]') || (typeof value === 'string' && value) || typeof value === 'number') {
- if (key === 'user_code_url' || key === 'shop_img_url') {
- value = [
- {
- 'formkey': key,
- 'url': value
- }
- ]
- }
- if (key === 'shop_address') {
- value = JSON.parse(value)
- }
- if (this.data.form.hasOwnProperty(key)) {
- temp[`form.${key}`] = value
- }
- }
- }
- this.setData(temp)
- } else {
- wx.showToast({
- title: msg,
- icon: 'none'
- })
- }
- } catch (err) {}
- },
- ...uploadJS,
- uploadCallBack(res) {
- const temp = res.map(item => {
- return {
- 'url': item.url,
- 'formkey': item.formkey
- }
- })
- let tempForm = {}
- let formkey = ''
- if (temp.length > 0) {
- formkey = temp[0].formkey
- }
- switch (formkey) {
- case 'user_code_url':
- case 'shop_img_url':
- tempForm[`form.${formkey}[0]`] = temp[0]
- break
- default:
- }
- if (Object.keys(tempForm).length > 0) {
- this.setData(tempForm)
- }
- },
- setFormValue(event) {
- const { value } = event.detail
- const { formkey } = event.target.dataset
- let tempForm = {}
- switch (formkey) {
- case 'user_name':
- case 'shop_name':
- case 'user_card':
- case 'country_msg':
- case 'user_wechat_code':
- case 'shop_remark':
- tempForm[`form.${formkey}`] = value
- break
- case 'shop_phone':
- tempForm[`form.${formkey}`] = value.replace(/[^\d]$/, '').replace(/^0/, '').replace(/(\d{11}(.*))/, '$1')
- break
- default:
- }
- this.setData(tempForm)
- },
- // 获取定位权限、定位权限授权
- async handleGetSetting() {
- const that = this
- try {
- const { errMsg, authSetting } = await wx.getSetting()
- if (errMsg === 'getSetting:ok') {
- // 有定位授权
- if (authSetting['scope.userLocation']) {
- if (that.tempFormKey === '') {
- } else {
- await that.chooseLocationBridge()
- }
- return
- }
- }
- } catch (err) {}
- try {
- await wx.authorize({ scope: 'scope.userLocation' })
- if (that.tempFormKey === '') {
- } else {
- await that.chooseLocationBridge()
- }
- } catch (err) {
- wx.showModal({
- title: '提示',
- content: '未开启获取地理位置权限,去设置中打开',
- success(res) {
- if (res.confirm) {
- that.openSetting()
- }
- }
- })
- }
- },
- // 去小程序自带设置页:返回
- async openSetting() {
- try {
- const openSettingData = await wx.openSetting()
- // 开启了定位权限
- if (openSettingData.authSetting['scope.userLocation']) {
- if (this.tempFormKey === '') {
- } else {
- await this.chooseLocationBridge()
- }
- }
- } catch (err) {}
- },
- async handleChooseLocation(e) {
- const { lat, lon, formkey } = e.currentTarget.dataset
- this.tempPostData = lat && lon ? {
- latitude: lat,
- longitude: lon
- } : {}
- this.tempFormKey = 'form.' + formkey
- await this.handleGetSetting()
- },
- async chooseLocationBridge() {
- if (!this.tempFormKey) {
- return
- }
- try {
- const { errMsg, address, latitude, longitude, name } = await wx.chooseLocation(this.tempPostData)
- if (errMsg === 'chooseLocation:ok' && address && name) {
- const pointInfo = {
- address_name: address,
- name,
- latitude,
- longitude
- }
- this.setData({
- [this.tempFormKey]: pointInfo
- })
- }
- } catch (err) {
- // 点击了取消按钮
- if (err.errMsg === 'chooseLocation:fail cancel') {
- }
- // 未开启授权
- if (err.errMsg === 'chooseLocation:fail auth deny') {
- }
- }
- },
- getForm() {
- const {
- user_name,
- shop_name,
- user_card,
- shop_phone,
- country_msg,
- user_code_url,
- user_wechat_code,
- shop_img_url,
- shop_address,
- shop_remark
- } = this.data.form
- return {
- user_name,
- shop_name,
- user_card,
- shop_phone,
- country_msg,
- user_code_url: user_code_url.map(item => item.url).join(''),
- user_wechat_code,
- shop_img_url: shop_img_url.map(item => item.url).join(''),
- shop_address,
- shop_remark
- }
- },
- verify() {
- let errorList = []
- const {
- user_name,
- user_card,
- shop_phone,
- country_msg,
- shop_address
- } = this.getForm()
- if (!user_name) {
- errorList.push('请输入姓名')
- }
- if (!user_card) {
- errorList.push('请输入身份证号码')
- }
- if (!isMobile(shop_phone)) {
- errorList.push('请输入手机号')
- }
- if (!country_msg) {
- errorList.push('请输入村信息')
- }
- if (!shop_address.address_name) {
- errorList.push('请选择详细地址')
- }
- return errorList
- },
- async onSubmit() {
- const temp = this.getForm()
- const verifyList = this.verify()
- if (verifyList.length) {
- wx.showToast({
- title: verifyList[0],
- icon: 'none'
- })
- return
- }
- this.setData({
- booLock: true
- })
- try {
- const { status, data, msg } = await userApplyShop(temp)
- if (status) {
- wx.switchTab({
- url: '/pages/mine/mine'
- })
- } else {
- wx.showToast({
- title: msg,
- icon: 'none'
- })
- }
- } catch (err) {}
- this.setData({
- booLock: false
- })
- },
- setCountryMsgList() {
- const { country_msg_list } = app.globalData.objSystemConfig
- this.setData({
- countryMsgList: Array.isArray(country_msg_list) && country_msg_list.length > 0 ? country_msg_list : []
- })
- },
- showCountryMsg() {
- this.setData({
- booCountryMsg: true
- })
- },
- hideCountryMsg() {
- if (this.data.countryMsgList.length > 0) {
- this.selectComponent('#picker-country-msg').setIndexes([this.data.countryMsgInDefaultIndex])
- }
- this.setData({
- booCountryMsg: false
- })
- },
- confirmCountryMsg(event) {
- const { value, index } = event.detail
- this.setData({
- 'form.country_msg': value,
- countryMsgInDefaultIndex: index
- })
- this.hideCountryMsg()
- }
- })
|