// pages/edit/edit.js const chooseLocation = requirePlugin('chooseLocation'); var app = getApp() var config = {}; var id = 0; var timer = null; var miucms = require('../../utils/miucms.js'); var WxParse = require('../../wxParse/wxParse.js'); var tempFilePaths = [], tempFilePathVideo = []; var tempFilePath = ''; var submit = false; let mapKey = 'IGSBZ-4B7KX-MOG4O-TN3JQ-KA6M5-32FGO' let time = new Date() let todayDate = '', lastYearDate = ''; Page({ /** * 页面的初始数据 */ data: { uploadData: "", // 上传图片需要的 数据 loding: true, intermediaryObj: { 1: "中介", 2: "非中介", 3: "房东", 4: "有房招室友", 5: "其他", 6: "求房源", }, // address:'', isrefusedAuthLocation: 0, //是否拒绝授权地址 edit: false, city: {}, latitude: '', longitude: '', info: { intermediary: { name: '发布者身份', value: '', data: [], title: "intermediary", need: true }, 'type': { name: '出租方式', title: 'type', data: {}, value: '', need: true }, location: { data: {}, value: '', title: "location", name: '所在区域', need: true }, gender: { name: '租客性别要求', title: 'gender', data: [], value: '', need: true }, property: { title: 'property', value: 'null', name: '房屋类型', data: [], list: {}, need: true }, rentalduration: { title: 'rentalduration', value: '', name: '出租时长', placeholder: '请填写数字,0为租期不限', unit: '月', need: true, numberType: true }, rent: { title: 'rent', value: '', name: '', placeholder: '请填写数字', unit: '', need: true, numberType: true }, floor: { title: 'floor', value: '', name: '所在楼层', placeholder: '请填写数字', unit: '楼', need: true, numberType: true }, acreage: { title: 'acreage', value: '', name: '面积', placeholder: '请填写数字', unit: '', numberType: true }, subject: { title: 'subject', value: '', name: '标题', placeholder: '请填写标题', need: true }, village: { title: 'village', value: '', name: '所在小区', placeholder: '请填写小区名称' }, school: { title: 'school', value: '', name: '附近学校', placeholder: '可输入附近的学校,最多可输入3个' }, distanceschool: { title: 'distanceschool', value: '', name: '距离学校', placeholder: '可输入与学校的距离' }, wechat: { title: 'wechat', value: '', name: '个人微信号', placeholder: '请正确填写', unit: '', }, whatsapp: { title: 'whatsapp', value: '', name: 'WhatsApp', placeholder: '请正确填写', unit: '', }, tel: { title: 'tel', value: '', name: '电话号码', placeholder: '请正确填写', unit: '', numberType: true }, address: { title: 'address', value: '', name: '地址', placeholder: '可填写地段、路名、社区、地址等' }, introduction: { title: 'introduction', value: '', name: '个人情况介绍', placeholder: '介绍一下房东/合租人/室友的情况。可以写下作息习惯、性格、是否有养宠物等' }, message: { title: 'message', value: '', name: '其他描述', placeholder: '可以填写如需签约至多久,和谁签约,如何交房租,房子是否断隔房、房租以外的费用项支付规则、户型家具、生活配套、地理位置(距离学校多远)等' }, leasetime: { value: 0, name: '起租日期' } }, imgs: [], types: '', token: '', uniqid: '', step: 1, url: '', status: 0, user: {}, q: '', write_long_textarea: false, questions: [], videos: [], options: {}, leasetime: '', //起租日期 startDate: '', isInput: false, //当前是否为输入附近学校或小区的状态 timestamp: "", // 发布时间 updatetime: "", // 更新时间 aroundSchoolList: [], unfoldState: false, // 发布须知的状态 triggerRules: 0, // 触发规则状态 0 是未触发 1 是触发规则 1 2 是触发规则2 current: 2019, leaseTimeValue: [11], floorValue: [12], nearSchoolList: [], // 附近学校的数据 contactInformationData: [{ title: '微信', value: '' }], // 联系方式的数据 contactInformationState: 0, // 联系方式中微信的状态 0 是 初始状态 1 是 填写微信号 2 是上传二维码 ofDate: [], // 起租日期数据 dayList: {}, finalizedDate: [], week: ['日', '一', '二', '三', '四', '五', '六'], calculateOfDateList: [], // 起租日期的日历 calculateOfDateTime: {}, fieldinfo: [], inputList: ['acreage'], contactInformation: 'contactInformation', popUpIs: '', // 弹窗的 is popUpdate: [], // 目标数据 popUpSubtitle: '', popUpStepState: '', // 0是啥都没有 1 是 保存 2 是保存加下一步 fieldinfoNew: [], step: 0, // 步数 newcity: {}, aa: [{ name: '出租方式', popUpIs: 'AListOF', popUpStepState: 0, it: 'basic', field: "type" }, { name: '找人合租', popUpIs: 'AListOF', popUpStepState: 1, it: 'basic', }, { name: '整套出租', popUpIs: 'twoLines', popUpStepState: 1, it: 'basic' }, { name: '出租时长', popUpIs: 'AListOF', popUpStepState: 1, it: 'basic', field: "rentalduration" }, { name: '选择租期', popUpIs: 'leaseTime', popUpStepState: 2, it: 'basic' }, { name: '起租日期', popUpIs: 'AListOF', popUpStepState: 1, it: 'basic', field: "leasetime" }, { name: '选择日期', popUpIs: 'ofDate', popUpStepState: 1, it: 'basic' }, { name: '年租', popUpIs: 'unilineInput', popUpStepState: 2, it: 'basic', field: "rent" }, { name: '月租', popUpIs: 'unilineInput', popUpStepState: 2, it: 'basic', field: "rent" }, { name: '周租', popUpIs: 'unilineInput', popUpStepState: 2, it: 'basic', field: "rent" }, { name: '房屋类型', popUpIs: 'twoLines', popUpStepState: 1, it: 'basic', field: "property" }, { name: '所在楼层', popUpIs: 'floor', popUpStepState: 2, it: 'basic', field: "floor" }, { name: '面积', popUpIs: 'unilineInput', popUpStepState: 2, it: 'basic', field: "acreage" }, { name: '所在区域', popUpIs: 'area', popUpStepState: 1, field: "location" }, { name: '地址', popUpIs: 'multilineInput', popUpStepState: 2, field: "address" }, { name: '附近学校', popUpIs: 'nearSchool', popUpStepState: 2, field: "school" }, { name: '租客性别要求', popUpIs: 'AListOF', popUpStepState: 1, field: "gender" }, { name: '发布者身份', popUpIs: 'AListOF', popUpStepState: 0, field: "intermediary" }, { name: '房屋视频', popUpIs: 'pop-up-HomeVideo', popUpStepState: 2, field: "video" }, { name: '房屋照片', popUpIs: 'pop-up-homePhoto', popUpStepState: 2, field: "images" }, { name: '更多介绍', popUpIs: 'multilineInput', popUpStepState: 2, field: "introduction" }, { name: '其他描述', popUpIs: 'multilineInput1', popUpStepState: 2, field: "message" }, { name: '微信', popUpIs: 'contactInformation', popUpStepState: 2, field: "wechat" }, { name: '标题', popUpIs: 'multilineInput', popUpStepState: 3, field: "subject" }, { name: '电梯', popUpIs: 'AListOF', popUpStepState: 1, field: "elevator" }, { name: '晾晒区', popUpIs: 'AListOF', popUpStepState: 1, field: "sunshinearea" }], popUpit: "", popUpOrder: ['status', 'basic', 'address', 'identity', 'upload', 'introduce', 'contact', 'info'], newinfo: {}, areaRegionIndex: 0, newToken: "", // 新的token QRCodeUrl: '', // 上传二维码的解析url publishingrules: [], focustitle: "", // 选中起租提前的年月日 pitchyear: null, pitchmonth: null, pitchday: null, isPC: false, // 判断是否是PC端 focusState: false, isAuthorization: 0, intermediaryVlaue: 0, // 作者的身份 aboutRulesList: {}, // 关于发布的数据 getWechatQRCodeState: false, verified: 0, // 是否是认证房源 countDown: 2, // 倒计时 placeAroundData: [], // 所属小区 residentialPopSelectState: false, residentialPopFillState: false, housingEstate: { field: "communityname", popupwindow: 1, required: 0, title: "所属小区", type: "communityname", }, longitudeLatitude: { 1: { n: 22.2795, e: 114.1692 }, 2: { n: 22.3171, e: 114.1794 }, 3: { n: 22.3926, e: 114.1332 } }, isNewVersions: true, }, /** * 生命周期函数--监听页面加载 */ onLoad: function (options) { let intermediaryObj = this.data.intermediaryObj wx.showLoading({ title: intermediaryObj[options['intermediary'] || 3], }) this.calculateOfDate() wx.showLoading({ title: '加载中', }) let nowDate = new Date() let that = this; this.setData({ verified: options.verified || 0, uniqid: options.uniqid || '', token: options.token || '', types: options.types || 'plus', info: this.data.info, intermediaryVlaue: options.intermediary || 3, startDate: [nowDate.getFullYear(), nowDate.getMonth() + 1, nowDate.getDate()].join('-') }) if (options.types == 'edit') { wx.setNavigationBarTitle({ title: '编辑信息', }) } else { wx.setNavigationBarTitle({ title: '发布', }) } this.get_config() wx.getSystemInfo({ success: function (res) { let platform = res.platform if (platform == 'windows' || platform == 'mac') { that.setData({ isPC: true }) } } }) }, choosel() { let newinfo = this.data.newinfo let latitude = newinfo['latitude'] let longitude = newinfo['longitude'] if (newinfo.location && !latitude) { this.data.fieldinfoNew["location"].choices.forEach(el => { el.choices.forEach(e => { if (newinfo.location && newinfo.location.indexOf(e.value) >= 0) { let longitudeLatitude = this.data.longitudeLatitude latitude = longitudeLatitude[(e.key >>> 0) || 1]['n'] longitude = longitudeLatitude[(e.key >>> 0) || 1]['e'] } }) }) } if (!latitude) latitude = 22.297759 if (!longitude) longitude = 114.179495 const key = 'MVNBZ-PEFWI-O4OGT-5ADVJ-7QAYJ-NBFY4'; //使用在腾讯位置服务申请的key const referer = 'hao'; //调用插件的app的名称 const location = JSON.stringify({ latitude, longitude, }); wx.navigateTo({ url: `plugin://chooseLocation/index?key=${key}&referer=${referer}&location=${location}` }); }, // 如果用户已经同意授权。则开始获取数据 islogin() { wx.showLoading({ title: '加载中', }) this.get_config() }, get_config() { var that = this; if (app.globalData.config.lists) { config = app.globalData.config; that.setData({ info: that.data.info, status: app.globalData.status, user: app.globalData.user, userIntermediary: app.globalData.user['intermediary'] || 0 }) app.globalData.notice = false; this.newPublish() } else { setTimeout(function () { that.get_config() }, 200) } }, // 获取关于发布 getAbout() { if (app.globalData['aboutRulesList']) { this.setData({ aboutRulesList: app.globalData['aboutRulesList'], popUpIs: "about" }) return } miucms.request(`${app.globalData.baseURL}/tenement/v2.Publish/about`).then(res => { app.globalData['aboutRulesList'] = res.data this.setData({ aboutRulesList: res.data, popUpIs: "about" }) }) }, // 新的获取发布数据 typetouList: [], newPublish() { wx.showLoading({ title: '加载中', }) let requestData = {} let intermediary = this.data.intermediaryVlaue if (this.data.types == 'edit' || this.data.types == 'edit1') { requestData = { uniqid: this.data.uniqid, token: this.options.token, intermediary, } } else { requestData = { uniqid: this.data.uniqid, intermediary, } } miucms.request(`${app.globalData.baseURL}/tenement/v2/api/publish`, requestData).then(res => { wx.hideLoading() this.setData({ loding: false }) if (res.code == 401) { this.setData({ isAuthorization: 1, }) } if (res.code != 200) { wx.showModal({ title: '提示', content: res.message }) return } let data = res.data let fieldinfoNew = [] let locationhead = "" let locationtail = "" for (const key in data.fieldinfo) { let choices = null data.fieldinfo[key].forEach(element => { if (!element) return if (element.field == 'type') { let choices = element.choices let choicesnew = [] let newfield = element.field choices.forEach(el => { if (!el) return if ((this.data.types == 'edit' || this.data.types == 'edit1') && el.key == data.info.type) { choices.forEach(e => { if (e.key == [Math.trunc(el.key)]) data.info.type = e.value + '>>' + el.value }) } if (el.key % 1 == 0) { choicesnew[el.key - 1] = { value: el.value, key: el.key, field: newfield, choices: [] } this.typetouList.push(el.value) } else { choicesnew[Math.trunc(el.key) - 1]['choices'].push({ value: el.value, key: el.key, field: newfield }) } }); fieldinfoNew[element.field] = ({ choices: choicesnew, field: element.field, title: element.title, type: element.type, popupwindow: element.popupwindow, required: element.required, }) return } if (element.field == 'rentalduration') { if (this.data.types == 'edit' || this.data.types == 'edit1') { element.choices.forEach((el, i) => { if (el.key == data.info.rentalduration) { this.data.leaseTimeValue = [i] data.info.rentalduration = el.value } }) } fieldinfoNew[element.field] = ({ choices: [{ field: element.field, value: "不限租期", }, { field: element.field, value: "选择租期", choices: element.choices, }], field: element.field, title: element.title, type: element.type, popupwindow: element.popupwindow, required: element.required, }) return } if (element.field == "intermediary" && data.type == 'edit') { element.choices.forEach(el => { if (el.key == 6) el['disabled'] = 1 }) } if (element.field == 'leasetime') { fieldinfoNew[element.field] = ({ choices: [{ field: "leasetime", value: "随时", }, { field: "leasetime", value: "选择日期", choices: element.choices, }], field: element.field, title: element.title, type: element.type, popupwindow: element.popupwindow, required: element.required, }) return } if (element.field == 'property' || element.field == 'gender' || element.field == 'intermediary' || element.field == 'elevator' || element.field == 'sunshinearea') { choices = [] if (element.choices.length >= 0) { if (this.data.types == 'edit' || this.data.types == 'edit1') { element.choices.forEach(el => { if (el.key == data.info[element.field]) { data.info[element.field] = el.value } }) } element.choices.forEach(ele => { ele['field'] = element.field }); } else { let elementnew = element.choices element.choices = [] for (const key in elementnew) { element.choices.push({ 'field': element.field, 'value': elementnew[key], 'key': key }) } } fieldinfoNew[element.field] = ({ choices: element.choices, field: element.field, title: element.title, type: element.type, popupwindow: element.popupwindow, required: element.required, }) return } if (element.field == 'location') { let field = element.field let choices = element.choices let choicesnew = [] choices.forEach((el, i) => { if (!el) return if (this.data.types == 'edit' || this.data.types == 'edit1') { if (el.key == data.info[field]) { locationtail = el.value } if (el.key == [Math.trunc(data.info[field])]) { locationhead = el.value this.data.areaRegionIndex = el.key - 1 } } if (el.key % 1 == 0) { choicesnew[el.key - 1] = { value: el.value, key: el.key, choices: [] } } else { choicesnew[Math.trunc(el.key) - 1]['choices'].push({ value: el.value, key: el.key, field: element.field }) } }); fieldinfoNew[element.field] = ({ choices: choicesnew, field: element.field, title: element.title, type: element.type, popupwindow: element.popupwindow, required: element.required, }) return } fieldinfoNew[element.field] = ({ choices, field: element.field, title: element.title, unit: element.unit, type: element.type, placeholder: element.placeholder, popupwindow: element.popupwindow, required: element.required, }) }); } if (data.info.floor != null) data.info.floor = data.info.floor != 0 ? data.info.floor + '楼' : null if (data.type == "edit") this.data.contactInformationState = data.info.iswechattype else data.info.iswechattype = 0 if (data.info.leasetime == 0) data.info.leasetime = '随时' else if (data.info.leasetime && data.info.leasetime.length > 2) { let leasetimeTime = new Date(data.info.leasetime) this.data.pitchyear = leasetimeTime.getFullYear() this.data.pitchmonth = leasetimeTime.getMonth() + 1 this.data.pitchday = leasetimeTime.getDate() } if (data.info.rentalduration == 0) data.info.rentalduration = '不限租期' if (data.info.rent == 0) data.info.rent = data.info.rent.toString() if (data.info.floor != null) this.data.floorValue = [parseInt(data.info.floor) < 0 ? parseInt(data.info.floor) + 3 : parseInt(data.info.floor) + 2] if (data.info.school != null) this.data.nearSchoolList = data.info.school if (locationhead != "") data.info.location = `${locationhead}>>${locationtail}` // 将发布者身份 放到最前面 data.fieldinfo['status'] = [data.fieldinfo['identity'][1]] || [] data.fieldinfo['identity'].splice(1, 1) this.setData({ id: data.id, fieldinfo: data.fieldinfo, offshelftime: data.offshelftime, updatetime: data.updatetime, timestamp: data.timestamp, fieldinfoNew, newcity: data.city, newinfo: data.info, newToken: data.token, imgs: data.info.images, videos: data.info.video, publishingrules: data.publishingrules, floorValue: this.data.floorValue, nearSchoolList: this.data.nearSchoolList, newtype: data.type, newStatus: data.status, contactInformationState: this.data.contactInformationState, leaseTimeValue: this.data.leaseTimeValue, areaRegionIndex: this.data.areaRegionIndex, unfoldState: data.isrules == 1 ? true : false, pitchyear: this.data.pitchyear, pitchmonth: this.data.pitchmonth, pitchday: this.data.pitchday, allowpublishednum: data.allowpublishednum, intermediaryVlaue: data.intermediary, uploadData: data.uploadData, }) wx.hideLoading() if (this.data.types == 'plus') this.firstStepPopover() }).catch(() => { this.setData({ loding: false }) }) }, // 初始化弹出的窗口 firstStepPopover() { // return let field = 'type' let step = 0 let it = 'basic' // let field = 'intermediary' // let step = 0 // let it = 'status' let popUpIs = "" let popUpStepState = "" this.data.aa.forEach(element => { if (this.data.fieldinfo['status'][0]['field'] == element['field']) { popUpIs = element.popUpIs popUpStepState = element.popUpStepState } }); this.setData({ step, popUpIs, popUpdate: this.data.fieldinfoNew[field], popUpit: it, popUpStepState }) }, /** * 生命周期函数--监听页面显示 */ aaaaa: 0, onShow: function () { // 在Mac 是获取 地图插件用户选择的地址信息 const location = chooseLocation.getLocation() // this.setData({ // locationTatx: location // }) let that = this if (location) { that.data.newinfo.latitude = location.latitude that.data.newinfo.longitude = location.longitude that.data.newinfo.address = location.name that.setData({ newinfo: that.data.newinfo, popUpIs: "" }) that.getPlaceAround() // if (that.data.popUpIs == "") { // that.popUpNextStep() // } } var title = that.data.write_long_textarea; if (title) { wx.getStorage({ key: title, success: function (res) { if (title == 'aroundSchool') { that.data.aroundSchoolList[res.data.index].distance = res.data.distance; that.setData({ aroundSchoolList: that.data.aroundSchoolList }) } else { that.data.info[title].value = res.data; that.setData({ info: that.data.info }) } wx.removeStorage({ key: title, success: function (res) { that.setData({ write_long_textarea: false }) }, }) }, }) } }, onReady: function () { this.picker = this.selectComponent("#custom-picker") }, // 输入。。 input: function (e) { let title = e.currentTarget.dataset.title; this.data.info[title].value = e.detail.value; this.setData({ info: this.data.info }) }, issubmit: false, // 选择图片 get_img: function () { var that = this; let limitSuffix = ['svg'] // 需要限制的后缀数组 wx.chooseImage({ count: 9 - that.data.imgs.length, sizeType: ['compressed'], success: (res) => { let isLt10M = true; let isSvg = true var imgList = []; for (var i = 0; i < res.tempFiles.length; i++) { var size = res.tempFiles[i].size / 1024 / 1024; let suffixIndex = res.tempFiles[i].path.lastIndexOf('.') let suffix = res.tempFiles[i].path.slice(suffixIndex + 1, res.tempFiles[i].path.length) if (size < 5 && !limitSuffix.includes(suffix.toLowerCase())) { // 小于3M且照片数量<6的时候才触发上传 // that.data.imgs.push({ // url: data.url, // aid: data.aid // }) // that.setData({ // imgs: that.data.imgs // }) let imgs = this.data.imgs || [] imgs.push({ isImgLoad: true, path: res.tempFiles[i].path, progress: 0, }) this.setData({ imgs, }) that.upload_picnew(res.tempFiles[i].path, this.data.imgs.length) } else if (size >= 5) isLt10M = false; else if (limitSuffix.includes(suffix.toLowerCase())) isSvg = false } if (!isLt10M) { // 存在大于3M的,只提示一次 wx.showModal({ title: '提示', content: '图片大小不能超过5M', }) } else if (!isSvg) { wx.showModal({ title: '提示', content: '上传文件后缀不允许', }) } }, fail(err) { wx.showModal({ title: 'chooseImageErr', content: err, }) } }) }, // 上传图片 upload_picnew: function (imgUrl, index) { var that = this; const uploadTask = wx.uploadFile({ url: `https://oss.gter.net/upload`, filePath: imgUrl, name: 'files', formData: { uniqid: that.data.uniqid, session: app.globalData.session, type: "image", data: this.data.uploadData, }, header: app.globalData.header, success: function (res) { try { var data = JSON.parse(res.data); if (data.code == 200) { data = data.data if (data.aid > 0) { // 长度<6个的时候再push let imgs = that.data.imgs imgs.forEach((element, index) => { if (element.path == imgUrl) { element['isImgLoad'] = false element['url'] = data.url element['aid'] = data.aid } }) that.setData({ imgs, }) } else { wx.showModal({ title: data.state, icon: 'none' }) } } else { wx.showModal({ title: '提示', content: data.message }) } } catch (e) { wx.showToast({ title: 'uploadCatch' + e, icon: 'none' }) } }, fail: function (err) { wx.showModal({ title: 'uploadFileErr', content: err, }) } }) uploadTask.onProgressUpdate(res => { let imgs = this.data.imgs // imgs[index - 1]['progress'] = res.progress imgs.forEach((element, index) => { if (element.path == imgUrl) element['progress'] = res.progress }) this.setData({ imgs }) }) }, // 选择mp4 get_video: function () { let that = this; wx.chooseMedia({ count: 3 - that.data.videos.length, mediaType: ['video'], success: function (res) { let isSize5M = false let tempFiles = res.tempFiles tempFiles.forEach(element => { var size = element.size / 1024 / 1024; if (size > 5) isSize5M = true else that.upload_videonew(element.tempFilePath) }) if (isSize5M) { wx.showModal({ title: '提示', content: '视频大小不能超过5M', }) } } }) }, // 上传mp4 upload_videonew: function (videoUrl) { var that = this; wx.showLoading({ title: '视频上传中', }) const uploadTask = wx.uploadFile({ url: `https://oss.gter.net/upload`, filePath: videoUrl, name: 'files', formData: { uniqid: that.data.uniqid, session: app.globalData.session, type: 'video', data: this.data.uploadData, }, header: app.globalData.header, success: function (res) { try { let re = JSON.parse(res.data) if (re.code == 200) { let data = re.data that.data.videos.push({ url: data.url, aid: data.aid }) that.setData({ videos: that.data.videos }) } else { wx.showModal({ title: '提示', content: re.message }) } } catch (e) { wx.showToast({ title: 'uploadVideoCatch' + e, icon: 'none' }) } }, fail: function (err) { wx.showModal({ title: 'uploadVideoErr', content: err, }) }, complete(res) { wx.hideLoading() } }) }, // 删除图片 和 视频 del_pic: function (e) { let { index, box } = e.currentTarget.dataset; if (box == 'img') { let aid = this.data.imgs[index]['aid'] if (aid == this.data.newinfo['aid']) this.data.newinfo['aid'] = "" this.data.imgs.splice(index, 1) this.setData({ imgs: this.data.imgs }) } else { this.data.videos.splice(index, 1) this.setData({ videos: this.data.videos }) } }, wxParseTagATap: function (e) { var url = e.currentTarget.dataset.src; wx.navigateTo({ url: url, }) }, changeInputSelect() {}, // 切换发布须知的状态 cutUnfoldState() { this.setData({ unfoldState: !this.data.unfoldState }) }, // 跳转我要申述 goAppeal() { wx.redirectTo({ url: '/pages/appeal/appeal?appealtoken=' + this.data.appealtoken, }) }, // 跳转我的-发布 goUser() { wx.redirectTo({ url: '/pages/user/user?tab=publish', }) }, // 点击关闭 triggerRulesClose() { wx.redirectTo({ url: '/pages/user/user?tab=publish', }) }, // 微信号有wxid_ 时弹窗的关闭 WechatIDClose() { this.setData({ triggerRules: 0 }) }, // 点击规则4中的图片预览 methodPreview() { wx.previewImage({ urls: ["https://oss.gter.net/attachment/Zvt57TuJSUvkyhw-xG7Y2l-T_pIqc3nqqsgFptxhXa6RWi26P-BuTQdCF7eV7tkb8MVYZjQ0Mjk~"], current: "https://oss.gter.net/attachment/Zvt57TuJSUvkyhw-xG7Y2l-T_pIqc3nqqsgFptxhXa6RWi26P-BuTQdCF7eV7tkb8MVYZjQ0Mjk~" }) }, bindChange: function (e) { const val = e.detail.value this.setData({ leaseTimeValue: val, ['newinfo.rentalduration']: this.data.fieldinfoNew['rentalduration'].choices[1].choices[val].value }) }, bindChange1: function (e) { const val = e.detail.value this.setData({ floorValue: val, ['newinfo.floor']: this.data.floorValue - 2 + '楼' }) }, // 点击附近学校的添加学校 nearSchoolAdd() { this.data.nearSchoolList.push({ name: '', distance: "" }) this.setData({ nearSchoolList: this.data.nearSchoolList }) }, // 点击附近学校的删除学校 del_nearSchool(e) { let index = e.currentTarget.dataset.index this.data.nearSchoolList.splice(index, 1) this.setData({ nearSchoolList: this.data.nearSchoolList }) }, // 附近学校的输入绑定数据 nearSchoolInput(e) { let value = e.detail.value let { index, name } = e.target.dataset this.data.nearSchoolList[index][name] = value this.setData({ nearSchoolList: this.data.nearSchoolList }) }, // 联系方式中微信的切换状态 contactInformationwechatcut(e) { let state = e.currentTarget.dataset.state if (state == 1) { // 选择填写微信号 this.data.newinfo['wechatdata'] = { aid: 0, url: null } this.data.newinfo.iswechattype = 1 } else if (state == 0) { // 回复默认 this.data.newinfo['wechatdata'] = { aid: 0, url: null } this.data.newinfo['wechat'] = null this.data.newinfo['iswechattype'] = 0 } this.setData({ contactInformationState: state }) }, // 计算起租日期 calculateOfDate() { let newyear = time.getFullYear() let newmonth = time.getMonth() + 1 // 现在的月份 let list = [] for (let i = 0; i < 24; i++) { let week = (new Date(newyear, newmonth - 1, 1).getDay()) newmonth = newmonth.toString().padStart(2, 0) let monthDayCount = this.getCountDays(`${newyear}-${newmonth}`) newmonth++ list.push({ week, monthDayCount, name: newmonth - 1 == 0 ? `${newyear - 1}年${12}月` : `${newyear}年${newmonth - 1}月`, year: newyear, month: newmonth - 1, }) if (newmonth == 13) { newyear++ newmonth = 1 } } this.setData({ calculateOfDateList: list, calculateOfDateTime: { year: new Date().getFullYear(), month: new Date().getMonth() + 1, day: new Date().getDate() } }) }, // 返回当前月份的天数 getCountDays(time) { var curDate = new Date(time); var curMonth = curDate.getMonth() + 1; curDate.setMonth(curMonth); curDate.setDate(0); return curDate.getDate(); }, // 点击选择日期 selectOfDate(e) { let { year, month, day } = e.target.dataset this.data.newinfo.leasetime = `${year}-${month.toString().padStart(2, 0)}-${day.toString().padStart(2, 0)}` this.setData({ pitchyear: year, pitchmonth: month, pitchday: day, newinfo: this.data.newinfo }) this.data.step = this.data.step - 1 setTimeout(() => { this.popUpNextStep() }, 500); }, // 点击操作弹出弹窗 clickOption(e) { let { field, step, it } = e.currentTarget.dataset let popUpIs = "" let popUpStepState = "" if (this.data.fieldinfo[it][step].popupwindow == 0) return this.data.aa.forEach(element => { if (this.data.fieldinfo[it][step]['field'] == element['field']) { popUpIs = element.popUpIs popUpStepState = element.popUpStepState } }); if (popUpIs == 'nearSchool') { this.data.nearSchoolList.push({ name: '', distance: "" }) this.setData({ nearSchoolList: this.data.nearSchoolList }) } if (field == 'address') { if (this.data.fieldinfoNew.address.type == 'map') popUpIs = "AddressHongKong" } if (popUpIs == 'unilineInput' || popUpIs == 'multilineInput' || popUpIs == 'multilineInput1') this.data.focustitle = field this.setData({ step, popUpIs, popUpdate: this.data.fieldinfoNew[field], popUpit: it, popUpStepState, focustitle: this.data.focustitle }) }, // 选择弹窗选项 selectOption(e) { let { choices, key, value, field } = "" if (e.currentTarget) { choices = e.currentTarget.dataset.choices key = e.currentTarget.dataset.key value = e.currentTarget.dataset.value field = e.currentTarget.dataset.field } else field = e if (field == "intermediary" && value == "求房源" && this.data.types == 'plus') { wx.navigateTo({ url: `/pages/askHousing/askHousing?uniqid=${this.data.uniqid}`, }) return } let popUpSubtitle1 = this.data.popUpSubtitle let popUpIs = "" let popUpTitle = "" let popUpStepState = "" let popUpSubtitle = "" if (choices) { popUpSubtitle = value this.setData({ popUpdate: { choices }, }) } else { // 选择出租方式后需要 >> 显示 if (this.data.fieldinfo[this.data.popUpit][this.data.step].field == 'type') { this.setData({ step: this.data.step + 1, popUpdate: this.data.fieldinfo[this.data.popUpit][this.data.step + 1], [`newinfo.${this.data.fieldinfo[this.data.popUpit][this.data.step].field}`]: popUpSubtitle1 + '>>' + value }) } else if (this.data.fieldinfo[this.data.popUpit][this.data.step].field == 'leasetime' && value != '随时') { this.setData({ step: this.data.step + 1, }) } else { this.setData({ step: this.data.step + 1, popUpdate: this.data.fieldinfo[this.data.popUpit][this.data.step + 1], [`newinfo.${this.data.fieldinfo[this.data.popUpit][this.data.step].field}`]: value }) } } if (field == "type" && this.typetouList.includes(value)) { popUpTitle = this.data.info['type']['name'] if (this.data.popUpdate['choices'].length >= 5) popUpIs = "twoLines" else popUpIs = "AListOF" popUpStepState = 1 } if (field == 'rentalduration' && value == this.data.fieldinfo[this.data.popUpit][this.data.step]['placeholder']) { popUpTitle = this.data.info['rentalduration']['name'] popUpIs = "leaseTime" popUpStepState = 2 } if (field == 'leasetime' && value != "随时") { popUpTitle = this.data.info['leasetime']['name'] popUpIs = "ofDate" popUpStepState = 1 } if (popUpIs == "") { if (this.data.fieldinfo[this.data.popUpit].length == this.data.step && this.data.popUpOrder.indexOf(this.data.popUpit) != -1) { this.data.popUpit = this.data.popUpOrder[this.data.popUpOrder.indexOf(this.data.popUpit) + 1] this.data.step = 0 } this.data.aa.forEach(element => { if (this.data.fieldinfo[this.data.popUpit][this.data.step]['field'] == element['field']) { let field = this.data.fieldinfo[this.data.popUpit][this.data.step].field if (field == 'video') { if (this.data.videos.length > 0) { this.setData({ popUpIs: "" }) return } } else if (this.data.newinfo[field] != null && this.data.newinfo[field] != "") { this.setData({ popUpIs: "" }) return } this.optionScroll(field) popUpIs = element.popUpIs popUpTitle = this.data.fieldinfo[this.data.popUpit][this.data.step].title popUpStepState = element.popUpStepState if (popUpIs == 'unilineInput' || popUpIs == 'multilineInput' || popUpIs == 'multilineInput1') { this.data.focustitle = this.data.fieldinfo[this.data.popUpit][this.data.step].field } this.setData({ popUpdate: this.data.fieldinfoNew[this.data.fieldinfo[this.data.popUpit][this.data.step].field], focustitle: this.data.focustitle }) } }); } if (popUpIs == 'nearSchool') { this.data.nearSchoolList.push({ name: '', distance: "" }) this.setData({ nearSchoolList: this.data.nearSchoolList }) } if (popUpIs == 'ofDate' && this.data.newinfo.leasetime == null) { let calculateOfDateList = this.data.calculateOfDateList[0] this.data.newinfo.leasetime = calculateOfDateList.year + '-' + calculateOfDateList.month + '-' + new Date().getDate() } this.setData({ popUpSubtitle, popUpTitle, popUpIs, popUpStepState }) }, // 弹出上角的关闭弹窗 closePopUp() { try { let currentField = this.data.fieldinfo[this.data.popUpit][this.data.step].field if (currentField == 'school') { this.data.nearSchoolList.forEach((element, index) => { if (element.name == "") this.data.nearSchoolList.splice(index, 1) }) this.setData({ nearSchoolList: this.data.nearSchoolList }) } if (this.data.newinfo.leasetime == "选择日期") this.data.newinfo.leasetime = "" if (this.data.popUpIs == 'leaseTime' && currentField == 'rentalduration') { this.setData({ ['newinfo.rentalduration']: this.data.fieldinfoNew['rentalduration'].choices[1].choices[this.data.leaseTimeValue].value }) } if (currentField == 'floor') { this.setData({ ['newinfo.floor']: this.data.floorValue - 2 > 0 ? this.data.floorValue - 2 + '楼' : this.data.floorValue - 3 + '楼' }) } this.setData({ popUpIs: "", popUpit: "", popUpSubtitle: "", newinfo: this.data.newinfo, residentialPopSelectState: false, residentialPopFillState: false, }) } catch (error) { this.setData({ popUpIs: "", popUpit: "", popUpSubtitle: "", newinfo: this.data.newinfo, residentialPopSelectState: false, residentialPopFillState: false, }) } }, // 填好了 fillThe() { let currentField = 'subject' if (this.data.fieldinfoNew[currentField].required == 1 && (this.data.newinfo[currentField] == null || this.data.newinfo[currentField] == "")) { wx.showToast({ title: `请填写${this.data.fieldinfoNew[currentField].title}`, icon: 'none' }) return } this.setData({ popUpIs: "", popUpit: "", popUpSubtitle: "", }) }, // 弹窗右上角的跳过 popUpSkip(e) { let currentFieldinfo = this.data.fieldinfo[this.data.popUpit][this.data.step] // 当前步数的 fieldinfo 数据 // 在 学校弹窗 跳过时需要 验证是否有填学校名称,没有填则删除数据 if (currentFieldinfo.field == 'school') { for (var i = 0; i < this.data.nearSchoolList.length; i++) { if (this.data.nearSchoolList[i].name == '') { this.data.nearSchoolList.splice(i, 1) i-- } } this.setData({ nearSchoolList: this.data.nearSchoolList }) } this.data.step = this.data.step + 1 if (this.data.fieldinfo[this.data.popUpit].length == this.data.step && this.data.popUpOrder.indexOf(this.data.popUpit) != -1) { this.data.popUpit = this.data.popUpOrder[this.data.popUpOrder.indexOf(this.data.popUpit) + 1] this.data.step = 0 } let nextfield = this.data.fieldinfo[this.data.popUpit][this.data.step].field if (this.data.newinfo[nextfield] != null && this.data.newinfo[nextfield] != "") { this.setData({ popUpIs: "", residentialPopSelectState: false, residentialPopFillState: false, }) return } this.data.aa.forEach(element => { if (this.data.fieldinfo[this.data.popUpit][this.data.step]['field'] == element['field']) { if (element.popUpIs == 'nearSchool') { this.data.nearSchoolList.push({ name: '', distance: "" }) this.setData({ nearSchoolList: this.data.nearSchoolList }) } this.optionScroll(this.data.fieldinfo[this.data.popUpit][this.data.step].field) this.setData({ popUpIs: element.popUpIs, popUpTitle: this.data.fieldinfo[this.data.popUpit][this.data.step].title, popUpdate: this.data.fieldinfoNew[this.data.fieldinfo[this.data.popUpit][this.data.step].field], popUpStepState: element.popUpStepState, residentialPopSelectState: false, residentialPopFillState: false, }) } }); }, // 下一步 popUpNextStep(e) { let currentField = this.data.fieldinfo[this.data.popUpit][this.data.step].field let popUpIs = "" if (currentField == 'images' && !this.data.newinfo['aid'] && this.data.newinfo['images'] && this.data.newinfo['images'].length > 1) { wx.showToast({ icon: "none", title: '请选择封面', }) return } // 下一步是附近学校时 判断学校名是否为空 空则删除对应学校数据 if (currentField == 'school') { for (var i = 0; i < this.data.nearSchoolList.length; i++) { if (this.data.nearSchoolList[i].name == '') { this.data.nearSchoolList.splice(i, 1) i-- } } this.setData({ nearSchoolList: this.data.nearSchoolList }) } // 出租时长 if (currentField == 'rentalduration') { this.setData({ ['newinfo.rentalduration']: this.data.fieldinfoNew['rentalduration'].choices[1].choices[this.data.leaseTimeValue].value }) } // 楼层 if (currentField == 'floor') { this.setData({ ['newinfo.floor']: this.data.floorValue - 2 > 0 ? this.data.floorValue - 2 + '楼' : this.data.floorValue - 3 + '楼' }) } // 判断当前弹窗是否是必填项 再判断是否有填写数据,有执行下一步 if (this.data.fieldinfoNew[currentField].required == 1 && (this.data.newinfo[currentField] == null || this.data.newinfo[currentField] == "" || this.data.newinfo[currentField] == undefined)) { wx.showToast({ title: `${currentField == 'scholl' ? '请设置' : currentField =='message' ? '请填写' : currentField =='introduction' ?'请填写' :currentField =='rent'?'请填写' :'请选择' }${this.data.fieldinfoNew[currentField].title}`, icon: 'none' }) return } // 判断联系方式选填其中一项 都没有则弹出提示 if (currentField == 'wechat') { let newinfo = this.data.newinfo if ((newinfo.tel == null || newinfo.tel == "") && (newinfo.wechat == null || newinfo.wechat == "") && (newinfo['wechatdata']['aid'] == 0) && (newinfo.whatsapp == null || newinfo.whatsapp == "")) { wx.showToast({ title: `请填写联系方式`, icon: 'none' }) return } } if (this.data.fieldinfo[this.data.popUpit][this.data.step].title == '微信' || this.data.fieldinfo[this.data.popUpit][this.data.step].title == 'WhatsApp' || this.data.fieldinfo[this.data.popUpit][this.data.step].title == '电话号码') { this.data.popUpit = this.data.popUpOrder[this.data.popUpOrder.indexOf(this.data.popUpit) + 1] this.data.step = -1 } // 步数加一 this.setData({ step: this.data.step + 1 }) if (this.data.fieldinfo[this.data.popUpit].length == this.data.step && this.data.popUpOrder.indexOf(this.data.popUpit) != -1) { this.data.popUpit = this.data.popUpOrder[this.data.popUpOrder.indexOf(this.data.popUpit) + 1] this.data.step = 0 } // 判断下一步是否有值,有则隐藏弹窗 let nextfield = this.data.fieldinfo[this.data.popUpit][this.data.step].field // 判断下一步学校是否有值,原因是school值没有直接放在 nextfield 里,需要特殊处理 if (nextfield == 'school' && this.data.nearSchoolList.length != 0) { this.setData({ popUpIs: "", popUpSubtitle: "", }) return } // 判断下一步联系方式是否有值,原因联系方式弹窗不只一个,需要特殊处理 if (nextfield == 'wechat' && ((this.data.newinfo['tel'] != null && this.data.newinfo['tel'] != '') || (this.data.newinfo['whatsapp'] != null && this.data.newinfo['whatsapp'] != '') || (this.data.newinfo['wechatdata'] && this.data.newinfo['wechatdata'].aid != 0))) { this.setData({ popUpIs: "", popUpSubtitle: "" }) return } // 这是判断下一步是否有值的总处理 if (this.data.newinfo[nextfield] != null && this.data.newinfo[nextfield] != "") { this.setData({ popUpIs: "", popUpSubtitle: "", residentialPopSelectState: false, residentialPopFillState: false, }) return } this.data.aa.forEach(element => { if (this.data.fieldinfo[this.data.popUpit][this.data.step]['field'] == element['field']) { // 附近学校没有数据时加一个默认数据 if (element.popUpIs == 'nearSchool' && this.data.nearSchoolList.length == 0) { this.data.nearSchoolList.push({ name: '', distance: "" }) } // 因为 field == 'address' 分香港和非香港地区 这个是香港地区的 地址,调用地图API if (this.data.fieldinfoNew[this.data.fieldinfo[this.data.popUpit][this.data.step].field].field == 'address') { if (this.data.fieldinfoNew.address.type == 'map') { element.popUpIs = "AddressHongKong" } } if (this.data.types.indexOf('edit') > -1 && this.data.fieldinfo[this.data.popUpit][this.data.step].popupwindow == 0) { this.setData({ popUpIs: "" }) return } this.optionScroll(this.data.fieldinfoNew[this.data.fieldinfo[this.data.popUpit][this.data.step].field].field) if (element.popUpIs == 'unilineInput' || element.popUpIs == 'multilineInput' || element.popUpIs == 'multilineInput1') { this.data.focustitle = this.data.fieldinfo[this.data.popUpit][this.data.step].field } this.setData({ popUpdate: this.data.fieldinfoNew[this.data.fieldinfo[this.data.popUpit][this.data.step].field], popUpIs: element.popUpIs, popUpStepState: element.popUpStepState, popUpTitle: this.data.fieldinfo[this.data.popUpit][this.data.step].title, popUpSubtitle: "", nearSchoolList: this.data.nearSchoolList, focustitle: this.data.focustitle, residentialPopSelectState: false, residentialPopFillState: false, }) } }); }, // 单行输入框的输入 popUpInput(e) { let value = e.detail.value let field = e.currentTarget.dataset['field'] if (field == 'introduction') value = value.substr(0, 500) else if (field == 'address') value = value.substr(0, 100) else if (field == 'subject') value = value.substr(0, 80) this.setData({ [`newinfo.${e.currentTarget.dataset.field}`]: value }) }, popUpInput1(e) { let value = e.detail.value value = value.substr(0, 500) this.setData({ [`newinfo.message`]: value }) }, // 点击 弹窗-单行输入框 里的完成, 获取数据并下一步 popUpconfirm(e) { let value = e.detail.value let { field, popupit } = e.currentTarget.dataset this.setData({ [`newinfo.${field}`]: value }) this.popUpNextStep() }, modification(e) { this.setData({ popUpIs: 'nearSchool', popUpdate: this.data.fieldinfoNew['school'], popUpit: 'address', step: e.currentTarget.dataset.step, popUpStepState: 2 }) }, // 新的发布 NewRelease(e) { // 判断微信号里有没有wxid_ if (this.data.newinfo.wechat && this.data.newinfo.wechat.indexOf('wxid_') == 0) { this.setData({ triggerRules: 4 }) return } if (this.issubmit) { wx.showToast({ title: '请勿重复提交~', icon: 'none' }) return false } this.issubmit = true wx.showLoading({ title: '提交中...' }) let status = e.currentTarget.dataset.status let fieldinfoNew = this.data.fieldinfoNew let fieldinfo = this.data.fieldinfo // 所在楼层 if (status == 0 && this.data.popUpIs == 'floor') { this.data.newinfo.floor = this.data.floorValue[0] - 2 > 0 ? this.data.floorValue[0] - 2 + '楼' : this.data.floorValue[0] - 3 + '楼' } if (this.data.newinfo && this.data.newinfo.subject) { this.data.newinfo.subject = this.data.newinfo.subject.trim() } // 下面验证需要提交的数据,...解决浅拷贝问题 let newinfo = { ...this.data.newinfo } newinfo.images = this.data.imgs newinfo.video = this.data.videos newinfo.floor = parseInt(newinfo.floor) // floor数据加了‘楼’子需要转正整数 if (newinfo.acreage != null && newinfo.acreage != "") newinfo.acreage = Number(newinfo.acreage) if (newinfo.latitude) newinfo['point'] = [newinfo.latitude, newinfo.longitude] // 判断附近学校是否为空 if (this.data.nearSchoolList.length > 0) { for (var i = 0; i < this.data.nearSchoolList.length; i++) { if (this.data.nearSchoolList[i].name == '') { this.data.nearSchoolList.splice(i, 1) i-- } } this.setData({ nearSchoolList: this.data.nearSchoolList }) } newinfo.school = this.data.nearSchoolList if (newinfo.rentalduration == '不限租期') newinfo.rentalduration = 0 if (newinfo.leasetime == '随时') newinfo.leasetime = 0 for (const key in fieldinfo) { fieldinfo[key].forEach(element => { if (!element) return // 出租方式 if (element.field == "type") { this.data.fieldinfoNew[element.field].choices.forEach(el => { el.choices.forEach(e => { if (newinfo.type && newinfo.type.indexOf(e.value) >= 0) newinfo.type = e.key }) }) } // 出租时长 if (element.field == "rentalduration") { element.choices.forEach(res => { if (res.value == newinfo.rentalduration) newinfo.rentalduration = res.key }) } // 电梯 晾晒区 if (element.field == "elevator" || element.field == 'sunshinearea') { element.choices.forEach(res => { if (res.value == newinfo[element.field]) newinfo[element.field] = res.key }) } // 房屋类型 if (element.field == "property") { element.choices.forEach(res => { if (res.value == newinfo.property) newinfo.property = res.key }) } // 性别 if (element.field == "gender") { element.choices.forEach((el, index) => { if (el.value == newinfo.gender) newinfo.gender = index + 1 }) } // 发布者身份 if (element.field == 'intermediary') { element.choices.forEach((el, index) => { if (el.value == newinfo.intermediary) newinfo.intermediary = el.key }) } // 所在区域 if (element.field == 'location') { this.data.fieldinfoNew[element.field].choices.forEach(el => { el.choices.forEach(e => { if (newinfo.location && newinfo.location.indexOf(e.value) >= 0) newinfo.location = e.key }) }) } }) } let intermediaryVlaue = this.data.intermediaryVlaue newinfo['intermediary'] = intermediaryVlaue miucms.request(app.globalData.baseURL + '/tenement/v2/api/publish/submit', { info: newinfo, token: this.data.newToken, status }).then(res => { this.issubmit = false if (res.code == 200) { if (status == 0) { wx.redirectTo({ url: '/pages/user/user?tab=publish', }) } else { if (res.data['uniqid']) this.data.uniqid = res.data['uniqid'] let uniqid = this.data.uniqid // 计算弹出哪个 提示认证框的 let intermediary = app.globalData.user.intermediary let popUpIs = "" if ((intermediaryVlaue == 1 && intermediary == 1) || this.data.verified == 1) { popUpIs = "intermediary-voluntarily-succeed-pop" setInterval(() => { this.setData({ countDown: this.data.countDown - 1 }) }, 1000); setTimeout(() => { wx.redirectTo({ url: '/pages/show/show?uniqid=' + uniqid, }) }, 2000); } else popUpIs = "intermediary-succeed-pop" this.setData({ popUpIs }) } } if (res.code == 201) { if (res.data && (res.data.rule == 1 || res.data.rule == 2 || res.data.rule == 3 || res.data.rule == 4)) { this.setData({ triggerRules: res.data.rule, appealtoken: res.data.appealtoken }) wx.hideLoading() return } wx.showModal({ title: '提示', content: res.message }) if (res.data.type == 'field') { if (res.data && res.data.field != 'rent') { for (const key in this.data.fieldinfo) { this.data.fieldinfo[key].forEach(el => { if (el.field == res.data.field) { wx.pageScrollTo({ selector: `.clickInput${res.data.field}`, offsetTop: -200 }) } }) } } this.calculateTargetPopup(res.data.field) } } wx.hideLoading() }).catch(err => { this.issubmit = false wx.hideLoading() }) }, // 点击所在区域的左边 clickAreaRegion(e) { let index = e.currentTarget.dataset.index this.setData({ areaRegionIndex: index }) }, // 点击所在区域的右边 clickAreaDistrict(e) { let { value, key, field } = e.currentTarget.dataset this.data.newinfo[field] = this.data.fieldinfoNew[field].choices[this.data.areaRegionIndex].value + '>>' + value this.setData({ newinfo: this.data.newinfo }) this.popUpNextStep() }, chooseLocation: function (e) { let that = this // 因为 PC端 不能使用 wx.chooseLocation 组件,需要判断打开地图插件还是组件 if (this.data.isPC) this.choosel() else { let newinfo = this.data.newinfo let latitude = newinfo['latitude'] let longitude = newinfo['longitude'] if (newinfo.location && !latitude) { this.data.fieldinfoNew["location"].choices.forEach(el => { el.choices.forEach(e => { if (newinfo.location && newinfo.location.indexOf(e.value) >= 0) { let longitudeLatitude = this.data.longitudeLatitude latitude = longitudeLatitude[(e.key >>> 0) || 1]['n'] longitude = longitudeLatitude[(e.key >>> 0) || 1]['e'] } }) }) } if (!latitude) latitude = 22.297759 if (!longitude) longitude = 114.179495 wx.chooseLocation({ latitude: latitude || 22.297759, longitude: longitude || 114.179495, success: function (e) { that.data.newinfo.latitude = e.latitude that.data.newinfo.longitude = e.longitude that.data.newinfo.address = e.name that.setData({ newinfo: that.data.newinfo, popUpIs: "" }) that.getPlaceAround() // if (that.data.popUpIs == "") that.popUpNextStep() }, fail: () => { //未打开定位 wx.getSetting({ success: (res) => { // 打开设置界面 if (!res.authSetting['scope.userLocation']) wx.openSetting({}) } }) } }) } }, // 上传二维码 UploadQRCode() { let that = this wx.chooseImage({ count: 1, sizeType: ['compressed'], sourceType: ['album'], success: function (res) { let size = res.tempFiles[0].size / 1024 / 1024 if (size > 10) return let path = res.tempFiles[0].path wx.showLoading({ title: '上传中...' }) // 开始上传二维码 that.UploadQRCodeSend(path) } }) }, // 上传二维码 UploadQRCodeSend(imgUrl) { let that = this const uploadTask = wx.uploadFile({ // url: `${app.globalData.baseURL}/tenement/v2/api/publish/uploadweixinqrcode`, url: `https://oss.gter.net/upload/qrcode`, filePath: imgUrl, name: 'files', formData: { // uniqid: that.data.uniqid, // session: app.globalData.session, // type, data: this.data.uploadData, }, header: app.globalData.header, success: function (res) { var res = JSON.parse(res.data); if (res.code == 200) { that.setData({ ['newinfo.wechatdata.url']: res.data.url, ['newinfo.wechatdata.aid']: res.data.aid, ['newinfo.wechatdata.image']: res.data.image, ['newinfo.iswechattype']: 2, contactInformationState: 2 }) wx.showToast({ title: '上传成功', }) } else { wx.showModal({ title: '提示', content: res.message }) } wx.hideLoading() }, fail: err => { wx.hideLoading() } }) }, // 用户提交后返回没有填写字段需要弹出字段窗 calculateTargetPopup(field) { let fieldinfo = this.data.fieldinfo for (const key in fieldinfo) { fieldinfo[key].forEach((element, index) => { if (element.field == field) { this.data.aa.forEach(el => { if (el['field'] == element['field']) { this.setData({ popUpIs: el.popUpIs, popUpTitle: this.data.fieldinfo[key][index].title, popUpdate: this.data.fieldinfoNew[this.data.fieldinfo[key][index].field], step: index, popUpit: key, popUpStepState: el.popUpStepState }) } }) } }) } }, // 检查输入的微信号是否是 wxid_开头的 microSignalCheck() { if (this.data.newinfo.wechat && this.data.newinfo.wechat.indexOf('wxid_') == 0) { this.setData({ triggerRules: 4, popUpIs: "" }) } }, // 选项滚动 optionScroll(field) { // 月租和面积不滚动,原因是当用户弹出月租弹窗图层是同时获取焦点的,这样会把焦点一起滚动 if (field == "rent" || field == "acreage") return for (const key in this.data.fieldinfo) { this.data.fieldinfo[key].forEach(el => { if (el.field == field) { wx.pageScrollTo({ selector: `.clickInput${field}`, offsetTop: -200 }) } }) } }, bindfocusfocus() { if (!this.data.isPC) { this.setData({ focusState: true }) } }, bindblurblur() { this.setData({ focusState: false }) }, setValue(e) { let key = e.currentTarget.dataset['key'] || (e.detail.currentTarget && e.detail.currentTarget.dataset['key']) let value = e.currentTarget.dataset['value'] || (e.detail.currentTarget && e.detail.currentTarget.dataset['value']) let status = e.currentTarget.dataset['status'] || (e.detail.currentTarget && e.detail.currentTarget.dataset['status']) if (status == 'boolean' && value == "false") value = false else if (status == 'boolean' && value == "true") value = true this.setData({ [key]: value }) }, // 禁止用户滚动,原因是有可能输入框会被用户滚走 handScroll() { return }, // 公共跳转 publicJumps(e) { let url = e.currentTarget.dataset.url wx.navigateTo({ url, }) }, // 跳转详情页面 goShowPage() { wx.redirectTo({ url: `/pages/show/show?uniqid=${ this.data.uniqid }`, }) }, popUpIsQRCodeState: false, handleWechatQRCodeState() { this.setData({ getWechatQRCodeState: !this.data.getWechatQRCodeState }) if (this.data.popUpIs) { this.popUpIsQRCodeState = true this.setData({ popUpIs: "" }) } if (!this.data.getWechatQRCodeState && this.popUpIsQRCodeState) { this.popUpIsQRCodeState = false this.setData({ popUpIs: "contactInformation" }) } }, // 获取附近小区数据 getPlaceAround() { if (this.data.placeAroundData.length != 0) { this.setData({ residentialPopSelectState: true, step: 1, popUpit: "address" }) return } miucms.request(`${app.globalData.baseURL}/tenement/v2/api/publish/placeAround`, { location: `${this.data.newinfo.latitude},${this.data.newinfo.longitude}` }).then(res => { if (res.code != 200) { this.setData({ residentialPopFillState: true }) return } let data = res.data this.setData({ placeAroundData: data }) if (data.length > 0) { this.setData({ residentialPopSelectState: true, step: 1, popUpit: "address" }) } }) }, // 选择所属小区 selectCommunity(e) { let id = e.currentTarget.dataset.id let name = e.currentTarget.dataset.name this.data.newinfo['communityid'] = id this.data.newinfo['communityname'] = name this.data.popUpIs = 'AddressHongKong' this.setData({ residentialPopSelectState: false, newinfo: this.data.newinfo }) this.popUpNextStep() }, // 打开所属小区的填写 openResidentialPopFill() { this.setData({ residentialPopSelectState: false, residentialPopFillState: true }) }, // 所属小区的填写输入 residentialinput(e) { let name = e.detail.value this.data.newinfo['communityname'] = name this.data.newinfo['communityid'] = "" this.setData({ newinfo: this.data.newinfo }) }, })