let util = require('../../utils/util') let apiArr = require('../../api/water_filter') let PayJs = require('../../api/pay') // pages/deposit/deposit.js Page({ /** * 页面的初始数据 */ data: { deposit: {}, agreed: false, show: false,//押金缴纳 show2: false, //预约时间 show3: false,//省市区 show4: false,//选择押金类型 customerName: '', // 客户姓名 customerPhone: '', // 客户手机号 time: '', // 预约时间 cityList: [], areaList: [], businessList: [], newAreaList: [], // 默认展示 市区 newBusiness: [], // 默认展示 县/区 confirmCity: '', confirmArea: '', confirmBusiness: '', name: "", phone: "", address: '', // 详细地址 GoodsMsg: "", depositName: "", depositList: [], selectedDeposit: "", minDate: new Date().getTime(), formatter(type, value) { if (type === 'year') { return `${value}年`; } if (type === 'month') { return `${value}月`; } if (type === 'day') { return `${value}日`; } return value; }, swiperList:[], swiperActive:"0", options: [], selectedId: 1,// 已选中值,需回显时传 showSelect: false, // [暂未发现]处理滚动选项区域时背景页面滚动问题 }, swiperChange(e){ let that = this that.setData({ swiperActive: e.detail.current }) }, handleChange(e) { console.log(e.detail); // {value: 3, label: "测试数据三"} let that = this let depositList = that.data.depositList depositList.forEach(item => { if (item.id == e.detail.id) { that.setData({ deposit: item, selectedDeposit: item, swiperList: item.imgList }) } }) }, handleShow(e) { }, changeDeposit() { let that = this that.setData({ show4: true }) }, ipt1(e) { let that = this that.setData({ name: e.detail.value }) }, ipt2(e) { let that = this that.setData({ phone: e.detail.value }) }, ipt3(e) { let that = this that.setData({ address: e.detail.value }) }, onDepositConfirm(event) { const { value } = event.detail; console.log(event); this.setData({ selectedDeposit: value, show4: false, depositName: value.text }); }, onDepositCancel() { this.setData({ show4: false }); }, extractImagesFromRichText(richText) { const imageArray = []; const regex = /]+src=["']([^"']+)["'][^>]*>/g; let match; while ((match = regex.exec(richText)) !== null) { imageArray.push({ src: match[1], fullTag: match[0] }); } return imageArray; }, addImageStyles(richText) { return richText.replace(/]*)>/g, (match, attributes) => { // 检查是否已有style属性 if (/style\s*=\s*["'][^"']*["']/.test(attributes)) { return ``; } else { return ``; } }); }, getDepositList() { let that = this util.postUrl(apiArr.getDepositList, { dealer_id: wx.getStorageSync('dealer_id') }, res => { const depositList = res.rows.map(item => ({ id:item.id, text: item.title, value: item.id, price: item.price, desc: that.addImageStyles(item.desc), imgList: that.extractImagesFromRichText(item.desc) })); console.log(depositList,'223'); that.setData({ depositList }); }) }, getDeposit() { let that = this util.postUrl(apiArr.getDeposit, { dealer_id: wx.getStorageSync('dealer_id') }, res => { console.log(res); that.setData({ deposit: res }) }) }, handleAgreeChange() { this.setData({ agreed: !this.data.agreed }); }, yajin() { let that = this that.setData({ show: !that.data.show }) }, inputCustomerName(e) { this.setData({ customerName: e.detail.value }); }, // 输入客户手机号 inputCustomerPhone(e) { this.setData({ customerPhone: e.detail.value }); }, // 选择预约时间 changeShow() { let that = this that.setData({ show2: true }) }, headerAreaClick() { this.setData({ show3: true }) }, // 省市区选择器 bindChange(e) { const { value } = e.detail; const { cityList, areaList, businessList } = this.data; // 每次切换时,根据当前点击的省过滤出所属市区,并且试试变化县/区 let newArea = areaList.filter((item) => item.city_id === cityList[value[0]].city_id); let newbus = businessList.filter((item) => item.area_id === newArea[value[1]].area_id); this.setData({ newAreaList: newArea, newBusiness: newbus, confirmCity: cityList[value[0]], confirmArea: newArea[value[1]], confirmBusiness: newbus[value[2]], }) }, onOk() { const { confirmCity, confirmArea, confirmBusiness } = this.data; console.log(confirmCity, confirmArea, confirmBusiness); this.setData({ show3: false, area: `${confirmCity.name}${confirmArea.area_name}${confirmBusiness.business_name}`, }) }, onClose3() { this.setData({ show3: false, }) }, getSSQ() { let that = this util.postUrl2(apiArr.city, {}, res => { util.postUrl2(apiArr.area, {}, res1 => { util.postUrl2(apiArr.business, {}, res2 => { wx.hideLoading(); // 省列表来自 res let cityList = res.data.data.rows; // 市列表来自 res1 let areaList = res1.data.data.rows; // 区列表来自 res2 let businessList = res2.data.data.rows; // 处理市列表,将衡水市放到最后 let hengshuiIndex = areaList.findIndex(item => item.name === '衡水市'); console.log(hengshuiIndex, 'hengshuiIndex'); if (hengshuiIndex !== -1) { const hengshui = areaList.splice(hengshuiIndex, 1)[0]; areaList.push(hengshui); } console.log(businessList); // 处理区列表,将衡水市的桃城区放到最后一个 let taochengIndex = businessList.findIndex(item => item.business_name === '桃城区'); if (taochengIndex !== -1) { const taocheng = businessList.splice(taochengIndex, 1)[0]; businessList.unshift(taocheng); } // 默认展示第一条数据的省、市和区 let newArea = res1.data.data.rows.filter((item) => { return item.city_id === res.data.data.rows[0].city_id }); let newbus = res2.data.data.rows.filter((item) => { return item.area_id === res1.data.data.rows[0].area_id }); // 正确存储数据 wx.setStorageSync('cityList', cityList) wx.setStorageSync('areaList', areaList) wx.setStorageSync('businessList', businessList) this.setData({ cityList: cityList, areaList: areaList, businessList: businessList, newAreaList: newArea, // 默认展示市 newBusiness: newbus, // 默认展示区 confirmCity: cityList[0], confirmArea: newArea[0], confirmBusiness: newbus[0], }) }) }) }) }, onClose() { let that = this that.setData({ show2: false }) }, onInput(event) { let that = this const date = new Date(event.detail); // 获取选中的 Date 对象 const year = date.getFullYear(); // 获取年份 const month = String(date.getMonth() + 1).padStart(2, '0'); // 月份从0开始,所以需要+1 const day = String(date.getDate()).padStart(2, '0'); const hours = String(date.getHours()).padStart(2, '0'); // 小时补零 const minutes = String(date.getMinutes()).padStart(2, '0'); // 分钟补零 const time = `${year}-${month}-${day} ${hours}:${minutes}`; that.setData({ time, show2: false }) }, checkboxChange() { let that = this that.setData({ agreed: !that.data.agreed }) }, handlePay() { let that = this if (!that.data.name) { wx.showToast({ title: '请输入客户姓名', icon: "none" }) return } if (!that.data.phone) { wx.showToast({ title: '请输入客户电话', icon: "none" }) return } if (!util.isPhone(that.data.phone)) { wx.showToast({ title: '请输入正确的客户电话', icon: "none" }) return } if (!that.data.time) { wx.showToast({ title: '请选择预约时间', icon: "none" }) return } if (!that.data.area) { wx.showToast({ title: '请选择所在区域', icon: "none" }) return } if (!that.data.address) { wx.showToast({ title: '请填写详细地址', icon: "none" }) return } if(!that.data.deposit.text){ wx.showToast({ title: '请选择产品套餐', icon: "none" }) return } util.postUrl(apiArr.createPosit, { deal_deposit_id: that.data.selectedDeposit.value, price: String(that.data.selectedDeposit.price), customer_name: that.data.name, customer_phone: that.data.phone, address: that.data.address, appointment_time: that.data.time + ':00', city_id: that.data.confirmCity.city_id, area_id: that.data.confirmArea.area_id, business_id: that.data.confirmBusiness.business_id }, res => { that.setData({ GoodsMsg: res }) that.pay() }) }, pay() { let that = this util.postUrl2(PayJs.HsqueryPay, { total_amount: String(that.data.selectedDeposit.price * 100), // total_amount: String(1), subject: that.data.depositName, out_trade_no: that.data.GoodsMsg.order_no, remark: '', user_id: wx.getStorageSync('openId'), goods_id: that.data.GoodsMsg.id, quantity: "1", address: that.data.area + that.data.address, user: String(wx.getStorageSync('userId')) }, res => { const { resp_data, msg } = res.data.data console.log(msg); console.log(resp_data); if (msg == '成功') { wx.requestPayment({ timeStamp: String(resp_data.acc_resp_fields.time_stamp), nonceStr: String(resp_data.acc_resp_fields.nonce_str), package: String(resp_data.acc_resp_fields.package), signType: String(resp_data.acc_resp_fields.sign_type), paySign: String(resp_data.acc_resp_fields.pay_sign), success(res) { that.queryPay() }, fail(fal) { if (fal.errMsg == 'requestPayment:fail cancel') { that.payFail(2) } else { that.payFail(1) } } }) } }) }, payFail(e) { let that = this util.postUrl(PayJs.payFail, { order_id: that.data.GoodsMsg.id, type: "1", state: e, }, res => { console.log(res); }) }, queryPay() { let that = this util.postUrl2(PayJs.HsqueryPayByWechat, { out_trade_no: that.data.GoodsMsg.order_no }, res => { if (res.statusCode == '200') { wx.showToast({ title: '支付成功!', }) wx.getSetting({ withSubscriptions: true, success: (res) => { if (res.subscriptionsSetting && res.subscriptionsSetting.mainSwitch) { const itemSettings = res.subscriptionsSetting.itemSettings || {}; const tmplMap = { '_s7GcsGNqapbnlLAJ5lUFexCEAx-dl4RD-DwwL9QqC4': '工单状态通知', 'VXRbeTG6gPPOrxTSwF_da8jzqH0UVHxQykYAH0XH51s': '设备故障通知', 'T87KsBIrVrjgO4VETEOpIn4c4-bsxOTpzM6lR0ghduo': '设备告警通知' }; const unsubscribedTmplIds = []; Object.keys(tmplMap).forEach(tmplId => { if (itemSettings[tmplId] !== 'accept') { unsubscribedTmplIds.push(tmplId); } }); if (unsubscribedTmplIds.length > 0) { wx.requestSubscribeMessage({ tmplIds: unsubscribedTmplIds, success: (res) => { console.log('订阅成功', res); that.getUserInfo(); // wx.reLaunch({ // url: '/pages/water_filter/water_filter', // }) }, fail: (err) => { console.error('订阅失败', err); that.getUserInfo(); // wx.reLaunch({ // url: '/pages/water_filter/water_filter', // }) } }); } else { that.getUserInfo(); // wx.reLaunch({ // url: '/pages/water_filter/water_filter', // }) } } }, fail: () => { that.getUserInfo(); // wx.reLaunch({ // url: '/pages/water_filter/water_filter', // }) } }); } else { wx.showToast({ title: res.msg, }) } }) }, getUserInfo() { let that = this util.postUrl(apiArr.loginInfo, {}, ress => { if (ress.error) return; wx.setStorageSync('userId', ress.user_id); wx.setStorageSync('openId', ress.open_id); wx.setStorageSync('shopId', ress.wshop_id); wx.setStorageSync('mshopId', ress.mshop_id); wx.setStorageSync('dealer_id', ress.dealer_id); wx.setStorageSync('is_dev', ress.is_dev); wx.reLaunch({ url: '/pages/water_filter/water_filter', }) // if (ress.is_dev == 2) { // } else if (ress.is_dev == 3) { // wx.navigateTo({ // url: '/pages/water_filter/water_filter', // }) // } }) }, /** * 生命周期函数--监听页面加载 */ onLoad(options) { let that = this that.setData({ phone: wx.getStorageSync('phone') }) // that.getDeposit() if (wx.getStorageSync('cityList') && wx.getStorageSync('areaList') && wx.getStorageSync('businessList')) { let res = wx.getStorageSync('cityList') let res1 = wx.getStorageSync('areaList') let res2 = wx.getStorageSync('businessList') console.log(res1); // 默认展示第一条数据 的市区 和 城区 let newArea = res1.filter((item) => { return item.city_id === res[0].city_id }); let newbus = res2.filter((item) => { return item.area_id === res1[0].area_id }); this.setData({ cityList: res, areaList: res1, businessList: res2, newAreaList: newArea, // 默认展示 市区 newBusiness: newbus, // 默认展示 县/区 confirmCity: res1[0], confirmArea: newArea[0], confirmBusiness: newbus[0], }) } else { that.getSSQ() } that.getDepositList() setTimeout(() => { that.setData({ deposit: that.data.depositList[0], selectedDeposit: that.data.depositList[0], depositName: that.data.depositList[0].text, swiperList: that.data.depositList[0].imgList, }) }, 1500) }, /** * 生命周期函数--监听页面初次渲染完成 */ onReady() { }, /** * 生命周期函数--监听页面显示 */ onShow() { }, /** * 生命周期函数--监听页面隐藏 */ onHide() { }, /** * 生命周期函数--监听页面卸载 */ onUnload() { }, /** * 页面相关事件处理函数--监听用户下拉动作 */ onPullDownRefresh() { }, /** * 页面上拉触底事件的处理函数 */ onReachBottom() { }, /** * 用户点击右上角分享 */ onShareAppMessage() { } })