diff --git a/app.json b/app.json index 138671d..146f98e 100644 --- a/app.json +++ b/app.json @@ -1,6 +1,10 @@ { "pages": [ "pages/index/index", + "index/index", + "index/searchbar", + "index/passCar", + "index/user", "pages/integralmall/integraHistory/index", "pages/integralmall/payIntegcouponStatus/index", "pages/integralmall/payIntegcoupondetail/index", @@ -13,8 +17,6 @@ "pages/complete/index", "pages/topicDetail/index", "pages/acSignIn/index", - "pages/main/index", - "pages/index/searchbar/index", "pages/index/merchantList/index", "pages/index/searchbar/detail/index", "pages/bargain/bargainDatail/bargainDatail", @@ -27,7 +29,6 @@ "pages/bannerdetail/index", "pages/getuserinfo/index", "pages/phoneinput/phoneinput", - "pages/user/index", "pages/user/myactivity/index", "pages/coupon/detail/index", "pages/rushToBuy/index", @@ -38,7 +39,6 @@ "pages/order/detail/index", "pages/order/index/index", "pages/ques/ques", - "pages/passCar/passCar", "pages/getphoneInfo/index", "pages/addPark/addPark", "pages/orderquanma/index", @@ -72,33 +72,35 @@ "tabBar": { "color": "#abb1be", "selectedColor": "#FD782D", + "custom": true, "list": [ { - "pagePath": "pages/main/index", + "pagePath": "index/index", "iconPath": "assets/images/home.png", "selectedIconPath": "assets/images/home-a.png", "text": "首页" }, { - "pagePath": "pages/index/searchbar/index", + "pagePath": "index/searchbar", "iconPath": "assets/images/mendian.png", "selectedIconPath": "assets/images/mendian-a.png", "text": "门店" }, { - "pagePath": "pages/passCar/passCar", + "pagePath": "index/passCar", "iconPath": "assets/images/park.png", "selectedIconPath": "assets/images/park-a.png", "text": "停车" }, { - "pagePath": "pages/user/index", + "pagePath": "index/user", "iconPath": "assets/images/user.png", "selectedIconPath": "assets/images/user-a.png", "text": "我的" } ] }, + "usingComponents": {}, "window": { "backgroundTextStyle": "dark", "navigationBarBackgroundColor": "#FFFFFF", diff --git a/custom-tab-bar/index.js b/custom-tab-bar/index.js new file mode 100644 index 0000000..a685d1b --- /dev/null +++ b/custom-tab-bar/index.js @@ -0,0 +1,45 @@ +Component({ + data: { + selected: 0, + "color": "#abb1be", + "selectedColor": "#FD782D", + "list": [ + { + "pagePath": "/index/index", + "iconPath": "../assets/images/home.png", + "selectedIconPath": "../assets/images/home-a.png", + "text": "首页" + }, + { + "pagePath": "/index/searchbar", + "iconPath": "../assets/images/mendian.png", + "selectedIconPath": "../assets/images/mendian-a.png", + "text": "门店" + }, + { + "pagePath": "/index/passCar", + "iconPath": "../assets/images/park.png", + "selectedIconPath": "../assets/images/park-a.png", + "text": "停车" + }, + { + "pagePath": "/index/user", + "iconPath": "../assets/images/user.png", + "selectedIconPath": "../assets/images/user-a.png", + "text": "我的" + } + ] + }, + attached() { + }, + methods: { + switchTab(e) { + const data = e.currentTarget.dataset + const url = data.path + wx.switchTab({url}) + this.setData({ + selected: data.index + }) + } + } +}) \ No newline at end of file diff --git a/custom-tab-bar/index.json b/custom-tab-bar/index.json new file mode 100644 index 0000000..32640e0 --- /dev/null +++ b/custom-tab-bar/index.json @@ -0,0 +1,3 @@ +{ + "component": true +} \ No newline at end of file diff --git a/custom-tab-bar/index.wxml b/custom-tab-bar/index.wxml new file mode 100644 index 0000000..29d1b9e --- /dev/null +++ b/custom-tab-bar/index.wxml @@ -0,0 +1,8 @@ + + + + + + {{item.text}} + + diff --git a/custom-tab-bar/index.wxss b/custom-tab-bar/index.wxss new file mode 100644 index 0000000..0cd91e7 --- /dev/null +++ b/custom-tab-bar/index.wxss @@ -0,0 +1,38 @@ +.tab-bar { + position: fixed; + bottom: 0; + left: 0; + right: 0; + height: 48px; + background: white; + display: flex; + padding-bottom: env(safe-area-inset-bottom); +} + +.tab-bar-border { + background-color: rgba(0, 0, 0, 0.33); + position: absolute; + left: 0; + top: 0; + width: 100%; + height: 1px; + transform: scaleY(0.5); +} + +.tab-bar-item { + flex: 1; + text-align: center; + display: flex; + justify-content: center; + align-items: center; + flex-direction: column; +} + +.tab-bar-item cover-image { + width: 27px; + height: 27px; +} + +.tab-bar-item cover-view { + font-size: 10px; +} diff --git a/ext.json b/ext.json index 0001af2..0715a81 100644 --- a/ext.json +++ b/ext.json @@ -21,6 +21,7 @@ "etcpVersion": "release", "etcpCallbackUrl": "https://ciformall.youlane.cn/api/carCallback/etcpPaidCallback", "ifHaveWebSocket": "0", + "ifStoreApp": "1", "ifHaveCarModular": "1" }, "name": "富茂客官开发", diff --git a/index/index.js b/index/index.js new file mode 100644 index 0000000..35a883d --- /dev/null +++ b/index/index.js @@ -0,0 +1,12 @@ +Component({ + pageLifetimes: { + show() { + if (typeof this.getTabBar === 'function' && + this.getTabBar()) { + this.getTabBar().setData({ + selected: 0 + }) + } + } + } +}) diff --git a/index/index.json b/index/index.json new file mode 100644 index 0000000..8835af0 --- /dev/null +++ b/index/index.json @@ -0,0 +1,3 @@ +{ + "usingComponents": {} +} \ No newline at end of file diff --git a/index/index.wxml b/index/index.wxml new file mode 100644 index 0000000..12d31bc --- /dev/null +++ b/index/index.wxml @@ -0,0 +1 @@ +组件 \ No newline at end of file diff --git a/index/index.wxss b/index/index.wxss new file mode 100644 index 0000000..c009246 --- /dev/null +++ b/index/index.wxss @@ -0,0 +1,4 @@ +.intro { + margin: 30px; + text-align: center; +} \ No newline at end of file diff --git a/index/passCar.js b/index/passCar.js new file mode 100644 index 0000000..7d60a41 --- /dev/null +++ b/index/passCar.js @@ -0,0 +1,768 @@ +const navigationBarHeight = (getApp().statusBarHeight + 50) + 'px' +const extConfig = wx.getExtConfigSync ? wx.getExtConfigSync() : {} +let app = getApp(); +const format = require("../../utils/util.js"); +let config = require("../../config/config.js"); +let Http = require("../../utils/HttpBasics"); +let Util = require("../../utils/util"); +const imgurl = require("../../utils/imgurl"); +Page({ + data: { + navigationBarHeight, + jianUrl: imgurl.jian.url, + jiaofeiwm: imgurl.jiaofeiwm.url, + parkUrl: imgurl.park.url, + guanliHr: imgurl.guanliHr.url, + qidaiUrl: imgurl.qidai.url, + addUrl: imgurl.add.url, + tingcheHr: imgurl.tingcheHr.url, + cheUrl: imgurl.che.url, + jiaofei: imgurl.jiaofei.url, + wentiHr: imgurl.wentiHr.url, + park: null, + carList: [], + payList: [], + addCar: null, + tcq: 2, + flag: "", + extraData: {}, + desc: '', + title: '', + indicatorDots: true, + autoplay: false, + interval: 5000, + duration: 1000, + current: 0, + stopFees: {}, + scroll: true, + ifHaveCarModular: "", + canIUse: wx.canIUse("navigator"), + showTicketModal: false, + ticketList: [], + noCoupon:imgurl.noCoupon.url, + loadingUrl: imgurl.loading.url, + allow_load: true, + curPageNum: 1, + curPageSize: 15, + curTotalpageNum: 0, + quantitle: '', + quanid: '', + gouHr: imgurl.gouHr.url, + totalTicketNum: 0, + + }, + getMoreList(e) { + let totalNum = this.data.ticketList.length; + if (this.data.curPageNum < this.data.curTotalpageNum) { + this.setData({ + curPageNum: this.data.curPageNum+1 + }) + this.getTicketList(0 ,this.data.curPageNum); + } + + }, + /** + * 选择使用的优惠券 + */ + choicecoupon: function(e) { + /* wx.navigateBack(); + var pages = getCurrentPages(); + var prevPage = pages[pages.length - 2] //上一个页面 */ + var that = this; + var quantitle = e.currentTarget.dataset.title; + var quanid = e.currentTarget.dataset.id; + this.setData({ + quantitle: quantitle, + quanid: quanid, + showTicketModal: false, + }); + + that.bindCoupon(that.data.quanid); + /* wx.setStorage({ + key: 'chosed', + data: 'chosed', + }) */ + }, + /* + */ + getTicketList(key, pageNum) { + var that = this; + if (that.data.allow_load) { + wx.showLoading({ + title: "加载中" + }); + Http.get({ + url: config.api.couponOrderCarList, + data: { + pageNum: pageNum, + pageSize: 15, + couponOrderStatus: key + } + }).then(res => { + that.setData({ + curTotalpageNum: res.data.pages, + curPageNum: res.data.pageNum, + totalTicketNum: res.data.total + }) + res.data.list.map(file => { + file.expiredTime = format.formatTime( + file.expiredTime, + "yyyy-MM-dd hh:mm:ss" + ); + }); + setTimeout(function () { + wx.hideLoading(); + }, 1200); + if (pageNum >= res.data.pages) { + that.setData({ + allow_load: false + }); + } + /** + * 先赋值后渲染页面 + * concat 不会改变原数组值 + * push 会改变原数组值,但不会一条一条插入,而是整个数组插入 + */ + if (pageNum == 1) { + that.setData({ + ticketList: res.data.list, + curPageNum: pageNum + }); + } else { + that.setData({ + ticketList: that.data.ticketList.concat(res.data.list) + }); + } + // that.data.ticketList = that.data.ticketList.concat(res.data.list); + + this.hideLoading(); + }) + .catch(err => { + setTimeout(function () { + wx.hideLoading(); + }, 1200); + wx.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + mask: false + }); + }) + } else { + } + }, + //点击跳转到券详情页面 + gotouse: function (e) { + wx.navigateTo({ + url: `/pages/passCar/couponDetail/couponDetail?quancode=${ + e.currentTarget.dataset.quancode + }`, + success: function (res) { + // success + }, + fail: function () { + // fail + }, + complete: function () { + // complete + } + }); + }, + /** + * 车牌轮播滑动 + */ + onSlideChangeEnd: function (e) { + var that = this; + /** + * 获得当前的车牌号码 + */ + var listCardNum = (that.data.carList)[e.detail.current].carNumber; + that.setData({ + listCardNum: listCardNum + }); + /** + * 获得停车费用 + */ + if (that.data.scroll) { + that.getStopFee(listCardNum); + } + }, + + //停车费用为0 + paySuccess: function () { + wx.showModal({ + title: '支付成功', + content: '请尽快离场', + showCancel: false + }) + }, + + gotomange: function () { + wx.navigateTo({ + url: '/pages/managelicenseplate/managelicenseplate', + }) + }, + bindfail: function (res) { + console.log(res) + }, + gotoetcp: function () { + wx.navigateToMiniProgram({ + appId: that.data.etcpAppId, + extraData: this.data.extraData, + envVersion: 'release', + path: "pages/main/main", + }) + }, + showquan: function () { + wx.navigateTo({ + url: '/pages/passCar/couponList/couponList', + }) + }, + gotodetail: function (e) { + wx.showModal({ + title: '缴费规则', + content: e.target.dataset.rule, + showCancel: false, + }) + }, + onShow: function (options) { + console.log(123) + var that = this; + that.setData({ + etcpAppId: extConfig.attr.etcpAppId, + etcpVersion: extConfig.attr.etcpVersion, + etcpCallbackUrl: extConfig.attr.etcpCallbackUrl, + ifHaveCarModular: extConfig.attr.ifHaveCarModular + }) + if (app.globalData.token) { + that.getList(); + that.init(); + } else { + that.init(); + } + /** + * 只有用户选择了优惠券 + * 才会进行券和车牌的绑定 + */ + /* if (wx.getStorageSync("chosed") && that.data.quanid) { + that.getStopFee(that.data.listCardNum); + that.bindCoupon(that.data.quanid); + wx.setStorage({ + key: 'chosed', + data: '', + }) + }; */ + if (app.globalData.token) { + // that.initUsrCarList(); + that.initUsrCarList("flags"); + that.setData({ + current: 0 + }) + } + + if (that.data.addCar) { + // 绑车牌 + if (app.globalData.carLogin) { + that.bindCar(that.data.addCar); + } else { + that.bindCar(that.data.addCar); + } + that.setData({ + addCar: null + }); + } + + this.getTicketList(0, 1); + + + + }, + cancelMove: function() { + console.log(111) + return false; + }, + onHide: function () { + this.setData({ + allow_load: true, + showTicketModal: false, + curPageNum: 1, + ticketList: [] + }) + }, + onLoad: function (options) { + var that = this; + /** + * 获得分享小程序的 + * title + * desc + */ + Http.get({ + url: config.api.getWeapNote, + data: { + appId: config.weapp.AppId, + } + }) + .then(res => { + let weapNote = JSON.parse(res.data.weapNote); + that.setData({ + desc: weapNote.carpage.desc, + title: weapNote.carpage.title + }) + }) + .catch(err => { + console.log(err); + }) + // 登录 + var scene = decodeURIComponent(options.scene); + that.setData({ + scene: scene + }); + if (app.globalData.token) { } else { + // app.getLocation(); + that.userLogin() + } + + }, + /** + * 用户登录 + */ + userLogin: function () { + var that = this; + // 登录 + wx.login({ + success: ({ + code + }) => { + wx.getSystemInfo({ + success: function (res) { + that.setData({ + systemInfo: JSON.stringify(res) + }) + } + }) + var usrdata = { + appId: config.weapp.AppId, + code: code, + sceneAddress: app.globalData.sceneAddress, + scene: that.data.scene, + systemInfo: that.data.systemInfo + }; + if (app.globalData.locationInfo) { + usrdata = { + appId: config.weapp.AppId, + code: code, + sceneAddress: app.globalData.sceneAddress, + latitude: "" + app.globalData.locationInfo.latitude, + longitude: "" + app.globalData.locationInfo.longitude, + scene: that.data.scene, + systemInfo: that.data.systemInfo + }; + } + Http.post({ + url: config.api.login, + data: usrdata + }) + .then(res => { + app.globalData.token = res.data.token; + Http.setToken(res.data.token); + that.checkUserCarStatus(); + that.getList(); + that.init(); + that.initUsrCarList(); + return Http.get({ + url: config.api.checkUserStatus, + data: {} + }); + }) + .then(res => { }) + .catch(err => { + if (err.code == 11004) { + // 用户昵称未授权 + wx.redirectTo({ + url: "/pages/getuserinfo/index" + }); + } else { + wx.showModal({ + title: '提示', + content: err.errMsg, + showCancel: false + }) + } + }); + } + }); + }, + /** + * 检查用户是否有车 + */ + checkUserCarStatus: function () { + var that = this; + Http.get({ + url: config.api.userCarCount, + data: {} + }).then(res => { + if (res.data > 0) { + // 用户名下有车 + app.globalData.phone = res.data.phone; + app.globalData.supportCar = true; + // 共同登录 + that.userCarLogin(); + } + }) + .catch(err => { }) + }, + jumpToAdd: function () { + wx.navigateTo({ + url: `/pages/addPark/addPark?flags=managepalte` + }); + }, + passc: function () { + wx.navigateTo({ + url: '/pages/ques/ques', + }) + }, + + + /** + * 券绑定车牌 + */ + bindCoupon: function (quanid) { + var that = this; + /** + * etcp + */ + var etcpData = { + etcpToken: app.globalData.etcpToken, + carNumber: that.data.listCardNum, + couponOrderId: quanid + }; + /** + * 停简单 + */ + var tjdData = { + carNumber: that.data.listCardNum + }; + var postCouponData = app.globalData.parkVendor == 1 ? etcpData : tjdData; + Http.post({ + url: config.api.getCarCoupon, + data: postCouponData + }) + .then(res => { + that.getStopFee(that.data.listCardNum); + that.initUsrCarList(); + }) + .catch(err => { + if (err.message!=undefined) { + wx.showToast({ + title: err.message, + icon: 'none', + duration: 2000, + mask: false + }); + } + + }) + }, + /** + * 选择优惠券 + */ + // gotoquan: function () { + // let that = this; + // if (that.data.quanid) { + // wx.navigateTo({ + // url: `/pages/passCar/choicecoupon/choicecoupon?quanid=${that.data.quanid}`, + // }) + // } else { + // wx.navigateTo({ + // url: '/pages/passCar/choicecoupon/choicecoupon', + // }) + // } + + // }, + closeTicketModal: function () { + this.setData({ + showTicketModal: false + }) + }, + /** + * 停车券 弹框 + */ + openTicketModal: function () { + this.setData({ + showTicketModal: true, + allow_load: true, + ticketList: [], + curPageNum: 1, + + }) + this.getTicketList(0, 1); + /* if (!this.data.ticketList.length){ + this.getTicketList(0, 1); + } */ + + }, + + //获取名下停车券列表 + getList() { + var that = this; + Http.get({ + url: config.api.couponOrderCarList + "?type=5&couponOrderStatus=0", + data: { + pageNum: 1, + pageSize: 15, + couponOrderStatus: 0 + } + }).then(res => { + that.setData({ + couponList: res.data.list + }); + }) + .catch(err => { + console.log(err) + }) + }, + + + /** + * 共同登录 + */ + init: function (carNumber) { + var that = this; + app.parkInitCallback = token => { + that.initPark(); + that.getParkStatus(); + if (!app.globalData.carLogin) { + /** + * 判断是否授权手机号 + */ + Http.get({ + url: config.api.checkPhoneStatus, + data: {} + }) + .then(res => { + Http.post({ + url: config.api.carInit, + data: { + phone: app.globalData.phone + } + }).then(res => { + app.globalData.carLogin = true; + app.globalData.parkVendor = res.data.vendor; + if (res.data.token) { + app.globalData.etcpToken = res.data.token; + } + /** + * 获得停车费用 + */ + that.initUsrCarList("flags"); + }); + }) + .catch(err => { + if (err.code == 11005) { + // 用户手机未授权 + /** + * 将值传到用户手机号授权的页面 + * + */ + wx.redirectTo({ + url: "/pages/getphoneInfo/index" + }); + } else if (err.code == 11006) { + // 用户手机已加密 + wx.redirectTo({ + url: "/pages/phoneinput/phoneinput" + }); + } else { + wx.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + mask: false + }); + } + }) + } + }; + if (app.globalData.token && app.globalData.token != null) { + app.parkInitCallback(app.globalData.token); + } + }, + + bindCar: function (carNum) { + var that = this; + // ETCP + var etcpData = { + etcpToken: app.globalData.etcpToken, + carNumber: carNum + }; + var tjdData = { + carNumber: carNum + }; + var postData = app.globalData.parkVendor == 1 ? etcpData : tjdData; + Http.post({ + url: config.api.bindCar, + data: postData + }) + .then(res => { + that.setData({ + addCar: null + }); + that.initUsrCarList(); + wx.showModal({ + title: "提示", + showCancel: false, + content: "绑车牌成功!", + success: function () { } + }); + }) + .catch(error => { + wx.showModal({ + title: "提示", + showCancel: false, + content: error.data.message, + success: function () { } + }); + }); + }, + /** + * 车场信息获取 + */ + initPark: function () { + var that = this; + Http.get({ + url: config.api.getParkInfo, + data: {} + }) + .then(res => { + that.setData({ + park: res.data + }) + }) + .catch(err => { + console.log(err); + // wx.showToast({ + // title: err.message, + // icon: 'none', + // duration: 2000, + // mask: false + // }); + }) + }, + + /** + * 车场状态获取 + */ + getParkStatus: function () { + var that = this; + Http.get({ + url: config.api.getParkStatus, + }) + .then(res => { + console.log(res) + }) + .catch(err => { + console.log(err) + // wx.showToast({ + // title: err.message, + // icon:"none" + // }) + }) + }, + + + /** + * 绑定车获取 + */ + initUsrCarList: function (flag) { + var that = this; + Http.get({ + url: config.api.getUserCarList, + data: {} + }).then(res => { + that.setData({ + carList: res.data + }); + /** + * flag ==flags + * 表示从首页onShow进来的 + */ + if (flag == "flags" && res.data.length > 0) { + var listCardNum = res.data[0].carNumber; + that.setData({ + listCardNum: listCardNum + }) + /** + * 获得停车费用 + */ + that.getStopFee(listCardNum); + } + }) + .catch(err => { + wx.showToast({ + title: err.message, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }, + + /** + * 获得停车费用修改 + */ + getStopFee: function (carNumber) { + let that = this; + let postData = + app.globalData.parkVendor == 1 ? { + etcpToken: app.globalData.etcpToken, + carNumber: carNumber + } : { + carNumber: carNumber, + outCarId: outCarId + }; + Http.post({ + url: config.api.getCarStopFee, + data: postData + }) + .then(res => { + console.log(res) + var extraDataStr = { + params: { + token: app.globalData.etcpToken, + syncId: res.data.orderId, + payType: 6, // 小程序支付 + CarNumber: carNumber, + returnUrl: that.data.etcpCallbackUrl, + source: "FUMAO-001", + actionId: "1" //操作ID,1:小程序支付 + } + }; + that.setData({ + extraData: extraDataStr, + stopFees: res.data, + timecha: Util.timecha(res.data.exitTime, res.data.entranceTime) + }); + that.setData({ + scroll: true + }) + }) + .catch(error => { + that.setData({ + stopFees: {}, + scroll: true + }) + }); + }, + + /** + * 下拉刷新 + */ + onPullDownRefresh: function (e) { + let that = this; + that.initUsrCarList("flags"); + that.setData({ + current:0 + }) + wx.stopPullDownRefresh(); + } +}); \ No newline at end of file diff --git a/index/passCar.json b/index/passCar.json new file mode 100644 index 0000000..23e8fd5 --- /dev/null +++ b/index/passCar.json @@ -0,0 +1,8 @@ +{ + "component": true, + "usingComponents": { + "navbar": "../../../components/navbar/navbar" + }, + "navigationBarTitleText": "智能停车", + "enablePullDownRefresh": true +} \ No newline at end of file diff --git a/index/passCar.wxml b/index/passCar.wxml new file mode 100644 index 0000000..2a549d1 --- /dev/null +++ b/index/passCar.wxml @@ -0,0 +1,157 @@ + + + + + {{park.addr}} + ({{park.number}}车位) + + + + + + + + + + + {{item.carNumber}} + + + + + + + + + + + 入场时间: + {{stopFees.entranceTime}} + + + 停车时长: + {{timecha}} + + + + + 优惠券: + + {{quantitle}} + {{totalTicketNum}}张可用 + + + + + + 待缴费用: + {{stopFees.remainingFee}}元 + + + + + 立即支付 + + 立即支付 + + + + 立即支付 + + + + + + + + 添加车牌 + + 车辆入场后,才能绑车牌 + + + + + 我的停车券 + + + + + + + + 车辆管理 + + + + + + + + 缴费规则 + + + + + + + + 常见问题 + + + + + + + + + 智慧停车即将上线 + 敬请期待 + + + + + + + + 请您敬请期待 + 我们正在筹备一大波优惠活动 + + + + + + 停车券 + + + + + + + + + + + {{item.title}} + + + {{item.subTitle}} + + + 售价:{{item.salePrice/100}}元{{item.price/100}}元 + {{item.price/100}}小时 + + + + + + 有效期至: + {{item.expiredTime}} + + + + + + {{content}} + + + \ No newline at end of file diff --git a/index/passCar.wxss b/index/passCar.wxss new file mode 100644 index 0000000..2946ad2 --- /dev/null +++ b/index/passCar.wxss @@ -0,0 +1,881 @@ +@import "../app.wxss"; + +page { + background-color: #fff; +} +.container{ + padding-bottom: 60rpx; +} +.con text{ + display: block; + text-align: center; + font-size: 30rpx; +} +.header{ + width: 690rpx; + height: 80rpx; + font-size: 32rpx; + margin: 0 auto; + border-radius:16rpx; + line-height: 80rpx; + letter-spacing: 3rpx; +} +.header image{ + width: 60rpx; + vertical-align: middle; + margin-top:-5rpx; + margin-right:6rpx; +} +.top{ + border-bottom:2rpx solid #f8f8f8; +} +.headBox { + width: 690rpx; + margin: 30rpx auto 0; + box-sizing: border-box; + display: flex; + background-color: white; +} + +.headBox image { + width: 150rpx; + height: 150rpx; + margin: 10rpx 30rpx 0 0; + border-radius: 16rpx; +} + +.titleName { + width: 100%; + line-height: 35rpx; + height: 35rpx; + color: #666; + font-size: 32rpx; + word-break: break-all; + text-align: justify; + font-weight: bold; +} + +::-webkit-scrollbar { + width: 0; + height: 0; + color: transparent; +} + +.carLocation, .locationNumber { + display: inline-block; + height: 40rpx; + color: #999; + font-size: 24rpx; + line-height: 30rpx; +} + +.carLocation { + width: 206rpx; + font-size: 28rpx; +} + + + +.price { + width: 690rpx; + font-size: 28rpx; + color: #999; + margin: 10rpx auto 0; +} + +.time { + color: #999 !important; +} + +.price .fl { + width: 15%; + color: #333; +} + +.price .fr { + width: 85%; + color: #999; + line-height: 40rpx; + font-size: 26rpx; +} + +.titleName .fr { + color: #999; + font-size: 27rpx; +} + +.borderBox { + width: 750rpx; + margin-top:30rpx; +} + +.borderUp { + width: 680rpx; + margin: 0 auto; + font-size: 36rpx; + border: 2rpx dashed #FD832D; + border-radius: 16rpx; + padding-bottom: 40rpx; + height: 202rpx; + margin-top: 47rpx; +} + +.addicense_active { + width: 690rpx; + /* box-shadow: 0 4rpx 20rpx 0 rgba(153, 153, 153, 0.35); */ + border-radius: 12rpx; + /* background: #02c0ff; *//* padding-bottom: 40rpx; */ +} + +.myCar { + display: block; + text-align: center; + font-size: 34rpx; + color: #02c0ff; + letter-spacing: 0; +} + +.carNumber { + display: block; + height: 50rpx; + line-height: 50rpx; + text-align: center; + font-size: 26rpx; + color: #999; + letter-spacing: 0; + margin-top: 10rpx; +} + +.addBox { + width: 750rpx; + position: relative; + background-color: white; +} + +.add { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + font-size: 34rpx; + color: #666; + border: 2px dashed #eee; + padding: 30rpx 50rpx; + border-radius: 16rpx; +} + +.add text { + font-size: 40rpx; +} + +.bottonBox { + width: 750rpx; + margin-top: 34rpx; + margin-bottom: 80rpx; + border-top: 16rpx #f8f8f8 solid; +} +.bottonBox view:nth-of-type(1) image{ + height: 45rpx; +} + +.textStyle { + background-color: white; + height: 88rpx; + line-height: 88rpx; + padding-left: 82rpx; + border-bottom: 1px #f8f8f8 solid; + position: relative; + font-size: 30rpx; + color: #333; + letter-spacing: 1.16rpx; +} + +.textStyle image { + width: 40rpx; + height: 40rpx; + top: 24rpx; + left: 27rpx; + position: absolute; +} + +.swiper { + position: relative; + margin: 0 auto; + height: 262rpx; +} + +.swiper-item { + width: 365rpx; + font-size: 75rpx; + font-weight: 400; + text-align: center; + color: rgba(255, 255, 255, 1); +} + +.swiper-item .clearfix1 { + background: linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%); + border-radius: 12rpx; + padding: 6rpx; +} + +.tche { + width: 685rpx; + height: 88rpx; + line-height: 88rpx; + margin: 0 auto; + background: #00c0ff; + border-radius: 60rpx; + position: relative; + margin-top: 30rpx; +} + +.txt01 { + width: 667rpx; + height: 180rpx; + line-height: 180rpx; + float: left; + background: linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%); + border-radius: 12rpx; + border: 3px solid #fff; + text-align: center; + font-size: 60rpx; +} + +.passNumberBox { + width: 690rpx; + margin: 32rpx auto 0; + position: relative; + background-color: white; +} + +.numberBox { + width: 100%; +} + +.passNumber { + width: 400rpx; + height: 100rpx; + font-size: 32rpx; + font-weight: 600; + line-height: 100rpx; + left: 55rpx; + position: absolute; +} + +.nopay { + height: 80rpx; + line-height: 80rpx; + font-weight: 400; +} + +.number { + font-size: 48rpx; + color: #1f2d3d; + letter-spacing: 0; + line-height: 52rpx; + font-weight: 400; +} + +.manage_plate { + width: 65%; + border-radius: 80rpx; + margin: 40rpx auto 0; + background: #02c0ff; + color: #fff; + text-align: center; + font-size: 30rpx; +} + +.button_active { + opacity: 0.6; +} + +.btn001 { + height: 88rpx; + line-height: 88rpx; + margin: 0 auto; + font-size: 30rpx; + font-weight: 400; + color: #fff; + background: none; +} + +.parkPrice { + font-size: 30rpx; + font-weight: 500; +} + +.deleteButton { + font-size: 28rpx; + line-height: 50rpx; + height: 50rpx; + top: 50%; + right: 30rpx; + position: absolute; + transform: translate(0, -50%); + color: white; + background-color: #00c0ff !important; +} + +.deleteButton button { + background-color: #00c0ff !important; +} + +.detail { + width: 32rpx; + height: 32rpx; + right: 34rpx; + top: 32rpx; + position: absolute; +} + +.detail image { + width: 44rpx; + height: 44rpx; + position: absolute; + left: 0; + top: 0; +} + +.voucher { + width: 90%; + padding: 0 5%; + background-color: #fff; + /* background-color: #cbcbcb; */ + height: 80rpx; + position: relative; + margin: 0 0 12rpx 0; + border-bottom: 2rpx #fff solid; + display: flex; + justify-content: space-between;; +} + +.textV1, .textV2 { + height: 58rpx; + width: 100rpx; + padding-top: 26rpx; + text-align: center; + line-height: 80rxp; + font-size: 24rpx; + color: #333; +} + +.textV2 { + margin-top: 0rpx; + padding: 0; + /* background-color: rgb(0, 192, 255); */ + border-radius: 10rpx; + width: 300rpx; + height: 80rpx; + line-height: 80rpx; + font-size: 20rpx; + border: 4rpx #fff solid; + margin-bottom: 20rpx; +} + +.textV3 { + width: 225rpx; +} +.choice { + width: 80rpx; + height: 80rpx; + position: relative; +} + +.choice image { + position: absolute; + left: 50%; + top: 50%; + transform: translate(-50%, -50%); + width: 30rpx; + height: 30rpx; +} + +.buy-view { + background: #fff; + position: relative; + height: 88rpx; + margin-top: 30rpx; +} + +.buy { + background: linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%); + height: 88rpx; + width: 73%; + margin: 0 auto; + color: #fff; + font-size: 36rpx; + line-height: 88rpx; + border-radius: 60rpx; + position: relative; + z-index: 100; + text-align: center; +} + +.buyBox { + height: 88rpx; + line-height: 88rpx; + width: 98%; + position: absolute; + left: 0; + right: 0; + bottom: 0; + top: 0; + z-index: 100000000; + border-radius: 60rpx; +} + +.active { + opacity: 0.6; +} + +.borderBox { + width: 750rpx; +} + +.carmanage { + position: relative; + width: 690rpx; + margin: 15rpx auto 0; + height: 60rpx; + line-height: 60rpx; + /* border-bottom: 1rpx solid #eee; */ +} + +.carmanage .fr { + font-size: 28rpx; + color: #888; + letter-spacing: 1.16rpx; + text-align: right; +} + +.fl { + float: left; +} + +.fr { + float: right; +} + +.carmanage .fl { + width: 400rpx; +} + +.carmanage .fr image { + position: absolute; + top: 0; + right: 0; + bottom: 0; + margin: auto; + width: 44rpx; + height: 44rpx; +} + +.carmanage image { + width: 40rpx; + vertical-align: middle; +} + +.mycar { + display: inline-block; + font-size: 33rpx; + color: #666; + line-height: 35rpx; + letter-spacing: 1.16rpx; +} + +.num { + display: inline-block; + font-size: 26rpx; + color: #999; + letter-spacing: 0; + margin-left: 20rpx; +} + +.orderBox { + padding: 0 45rpx; + position: relative; +} + +.priceBox { + display: inline-block; + width: 355rpx; +} + +.priceBox text { + color: #333; + font-size: 28rpx; + display: block; + text-align: left; +} + +.payBox { + width: 250rpxpx; +} + +.payBox button { + width: 230rpx; + border: 0; + font-size: 32rpx; + margin-top: 13rpx; + margin-right: 20rpx; + background-color: lightgreen; + color: white; +} + +input { + outline: none; + border: none; + list-style: none; +} + +button::after { + border: none; +} + +.right { + display: inline-block; + width: 328rpx; +} + +.textRight { + margin-left: 0; + margin-right: 25rpx; + text-align: left; + font-size: 30rpx !important; + color: #333 !important; +} + +.myCars image { + width: 44rpx; + height: 44rpx; + vertical-align: middle; + margin-right: 14rpx; +} + +.myCars { + font-size: 34rpx; + color: #02c0ff; + letter-spacing: 0; + text-align: center; + padding-top: 58rpx; +} + +.dots { + position: absolute; + left: 0; + right: 0; + bottom: 19rpx; + display: flex; + justify-content: center; + height: 19rpx; + background: #fff; +} + +.dots .dot { + margin: 0 8rpx; + width: 32rpx; + height: 14rpx; + background: #ccc; + border-radius: 8rpx; + transition: all 0.6s; +} + +.dots .dot.active { + width: 49rpx; + height: 4rpx; + background: rgba(86, 189, 248, 1); + border-radius: 6rpx; +} + +.coupon { + font-size: 28rpx; + color: #666; +} + +.orderBox .fl { + line-height: 70rpx; + font-size: 28rpx; + color: #333; +} + +.orderBox .fr { + line-height: 70rpx; + font-size: 28rpx; + color: #FD832D; +} + +.jians { + font-size: 22rpx; + display: inline-block; + width: 34rpx; + height: 34rpx; + text-align: center; + background: #ff4949; + line-height: 34rpx; + color: #fff; + border-radius: 6rpx; + margin-right: 6rpx; +} +.jiant{ + display: inline-block; + width: 44rpx; + height: 44rpx; + vertical-align: middle; + margin-top: -6rpx; + margin-right: -10rpx; +} + +.img { + display: block; + width: 211rpx; + margin: 168rpx auto 40rpx; +} + +.txt1 { + font-size: 22rpx; + color: #A6A6A6; + letter-spacing: 0; +} + +.txt2 { + display: block; + font-size: 28rpx; + color: #999; + letter-spacing: 0; + text-align: center; + line-height: 40rpx; + margin-top: 10rpx; +} + +.gray-bg { + position: fixed; + left: 0; + top: 0; + width: 100%; + height: 100%; + z-index: 1000; + background: rgba(0,0,0,.2); + +} + +.ticket-modal { + position: fixed; + left: 50%; + top: 50%; + width: 80%; + height: 880rpx; + z-index: 10000; + transform: translate(-50%, -50%); + background: #fff; +} + +.nocoupon image { + width: 300rpx; + display: block; + margin: 3% auto 0; +} + +.txt001 { + display: block; + line-height: 48rpx; + font-size: 34rpx; + color: #333; + letter-spacing: 0; + text-align: center; +} + +.txt002 { + display: block; + margin-top: 1%; + font-size: 28rpx; + color: #999; + letter-spacing: 0; + line-height: 40rpx; + text-align: center; +} + +.nocoupon button { + background: linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%); + color: #fff; + font-size: 30rpx; + width: 74%; + border-radius: 60rpx; + height: 78rpx; + line-height: 78rpx; + margin-top: 100rpx; +} + +.loading { + text-align: center; + height: 80rpx; + line-height: 80rpx; + font-size: 26rpx; + color: #999; +} + +.loading image { + width: 60rpx; + height: 60rpx; + vertical-align: middle; + margin-right: 10rpx; +} + +.section { + position: relative; + width: 90%; + margin-left: 5%; +} + +.mms { + width: 100%; + height: 180rpx !important; + background: #fff; + /* padding: 30rpx 0 0; */ + margin: 0 auto 40rpx; + /* border-radius: 16rpx; */ + /* border-top: 8rpx solid #02b7ff; */ + box-shadow: 0 6px 20px 0 rgba(0, 0, 0, 0.10); +} + +.detail_msg { + display: flex; + padding-top: 16rpx; + padding-bottom: 16rpx; + background: linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%); +} + +.logo { + width: 60rpx; + height: 60rpx; + /* border: 1px solid #f8f8f8; */ + border-radius: 50rpx; + display: block; + margin: 15rpx 20rpx 0 20rpx; +} + +.logo image { + width: 60rpx; + height: 60rpx; + border-radius: 50%; +} + +.info view:nth-child(1) { + display: flex; + justify-content: space-between; + padding: 0 4%; + margin-top: 15rpx; +} + +.info { + width: 100%; + border-left: 1rpx #FFF dashed; +} + +.info view:nth-child(1) text { + font-size: 32rpx; + line-height: 32rpx; + height: 32rpx; + color: #FFFFFF; + letter-spacing: 0; + width: 400rpx; + display: inline-block; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} + +.info view:nth-child(2) { + padding-left: 4%; + font-size: 22rpx; + color: #FFFFFF; + letter-spacing: 0; + margin-top: 6rpx; + display: inline-block; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; + width: 400rpx; +} + +.info view:nth-child(3) { + margin-left: 20rpx; +} + +.active { + color: #fff; + opacity: 0.6; + /* background: #02c0ff; */ +} + + +.expiretime { + display: block; + width: 100%; + text-align: left; + text-indent: 1em; + height: 50rpx; + line-height: 50rpx; + font-size: 22rpx; + color: #A6A6A6; + letter-spacing: 0; +} + +.ticket-title-tip { + position: relative; + width: 100%; + height: 76rpx; + line-height: 76rpx; + text-align: center; + color: #353535; + font-size: 34rpx; +} + +.close-icon { + position: absolute; + right: 10rpx; + transform: translateY(16rpx); +} + +.btns { + position: absolute; + right: 120rpx; + top: 50rpx; + height: 48rpx; + line-height: 48rpx; + text-align: right; + color: #FFF; + font-size: 40rpx; +} + +.yuan { + color: #FFF; + font-size: 26rpx; +} + +.gou { + position: absolute; + top:45rpx; + right: 30rpx; + width: 60rpx; +} + +.swiper-box .wx-swiper-dots.wx-swiper-dots-horizontal{ +margin-bottom: 2rpx; +} +.swiper-box .wx-swiper-dot{ +width:40rpx; +display: inline-flex; +height: 6rpx; +margin-left: 10rpx; +border-radius:6rpx; +justify-content:space-between; +} +.swiper-box .wx-swiper-dot::before{ +content: ''; +flex-grow: 1; +background: #ccc8c8; +} +.swiper-box .wx-swiper-dot-active::before{ +background:#f6792b; +} \ No newline at end of file diff --git a/index/searchbar.js b/index/searchbar.js new file mode 100644 index 0000000..108f13e --- /dev/null +++ b/index/searchbar.js @@ -0,0 +1,156 @@ +const navigationBarHeight = (getApp().statusBarHeight + 44) + 'px' +const Http = require("../../../utils/HttpBasics"); +const imgurl = require("../../../utils/imgurl"); +const config = require("../../../config/config"); +let app = getApp(); +Page({ + + /** + * 页面的初始数据 + */ + data: { + navigationBarHeight, + lists: [], + merchantVoList:[], + indexId: 0, + businessId:0, + windowHeight:"", + page:1, + isFirstPage:false, + isLastPage:false, + teljpgUrl: imgurl.teljpg.url, + }, + // 左侧点击事件 + jumpIndex(e) { + let that = this; + let index = e.currentTarget.dataset.menuindex; + that.setData({ + indexId: index, + businessId: index + }); + that.setData({ + page:1 + }) + that.getList(1, that.data.businessId); + }, + /** + * 跳转到门店列表的详情页面 + */ + gotoDetail(e){ + wx.navigateTo({ + url: `/pages/index/searchbar/detail/index?id=${e.currentTarget.dataset.id}` + }) + }, + /** + * 生命周期函数--监听页面加载 + */ + onLoad: function (options) { + let that = this; + that.getBussiness(); + that.getList(1, 0); + wx.showLoading({ + title: '加载中...', + }) + }, + onShow(){ + let that = this; + wx.getSystemInfo({ + success: function (res) { + console.log(res.windowHeight, navigationBarHeight); + that.setData({ + windowHeight: res.windowHeight + parseInt(navigationBarHeight) + }) + }, + }) + }, + getBussiness:function(){ + let that = this; + Http.get({ + url: config.api.businessList, + data:{ + filter:1 + } + }).then(res => { + that.setData({ + lists: [{ id: 0, title: "全部", type: 1 }].concat(res.data) + }); + }) + .catch(err => { + wx.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }, + getList: function (page, businessId) { + let that = this; + let data; + if(businessId == 0){ + data = { + pageNum: page, + pageSize: 8 + } + }else{ + data = { + pageNum: page, + pageSize: 8, + businessId: businessId + } + } + Http.get({ + url: config.api.merchantList, + data: data + }).then(res => { + wx.hideLoading(); + if (page == 1) { + that.setData({ + merchantVoList: [], + }) + } + var tmpArr = that.data.merchantVoList; + tmpArr.push.apply(tmpArr, res.data.list); + // console.log(tmpArr) + that.setData({ + merchantVoList: tmpArr, + isFirstPage: res.data.isFirstPage, + isLastPage: res.data.isLastPage + }) + // console.log(that.data.merchantVoList) + }) + .catch(err => { + wx.hideLoading(); + wx.showToast({ + title: err.errMsg, + icon: 'none', + duration: 2000, + mask: false + }); + }) + }, + phone: function (e) { + let that = this; + if (e.currentTarget.dataset.merchantlinkphone) { + wx.makePhoneCall({ + phoneNumber: e.currentTarget.dataset.merchantlinkphone + }) + } + }, + /** + * 页面上拉触底事件的处理函数 + */ + onReachBottom: function () { + let that = this; + that.data.page++; + that.setData({ + page: that.data.page + }); + console.log(that.data.page); + // 如果是最后一页 + //就不发送请求 + if (!that.data.isLastPage || that.data.isFirstPage && that.data.isLastPage){ + that.getList(that.data.page, that.data.businessId); + } + } +}) diff --git a/index/searchbar.json b/index/searchbar.json new file mode 100644 index 0000000..8283b91 --- /dev/null +++ b/index/searchbar.json @@ -0,0 +1,8 @@ +{ + "navigationBarTitleText": "门店", + "navigationBarBackgroundColor": "#F4F5F9", + "navigationBarTextStyle": "black", + "usingComponents": { + "navbar": "../../../components/navbar/navbar" + } +} \ No newline at end of file diff --git a/index/searchbar.wxml b/index/searchbar.wxml new file mode 100644 index 0000000..b7956c2 --- /dev/null +++ b/index/searchbar.wxml @@ -0,0 +1,43 @@ + + + + + + + + + + + {{item.title}} + + + + + + + + + + + + + + 暂无数据 + + + \ No newline at end of file diff --git a/index/searchbar.wxss b/index/searchbar.wxss new file mode 100644 index 0000000..eb3ec13 --- /dev/null +++ b/index/searchbar.wxss @@ -0,0 +1,158 @@ +.under_line{ + width: 100%; +} +.scrollY { + width: 134rpx; + position: fixed; + left: 0; + background:#F4F5F9; +} + +.text-style { + position: relative; + width: 139rpx; + height: 100rpx; + line-height: 100rpx; + text-align: center; + font-size: 30rpx; + font-family: PingFangSC-Semibold; + color: #3C3C3C; + background: #FFFFFF; + font-weight:500; +} +.text-styleHover{ + position: relative; + width: 139rpx; + height: 100rpx; + line-height: 100rpx; + text-align: center; + font-size: 26rpx; + font-family: PingFangSC-Semibold; + color: #A6A6A6; +} +.text-style text{ + font-size: 26rpx; +} +.active1 { + font-size: 26rpx!important; +} +.active { + position: absolute; + left: 4rpx; + bottom: 0rpx; + top:0; + margin: auto; + width:12rpx; + height:24rpx; + background:linear-gradient(127deg,rgba(252,177,74,1) 0%,rgba(254,70,20,1) 100%); + border-radius:7rpx; +} + +.posi { + position: relative; + width: 616rpx; + float: right; +} + +.posi>view:nth-child(2) { + width: 100%; + display: flex; + justify-content: space-between; + box-sizing: border-box; +} + +.posi>view:nth-child(2) text:nth-child(1) { + font-size: 30rpx; + color: #a9a9a9; +} + +.posi>view:nth-child(2) text:nth-child(2) { + font-size: 30rpx; + color: #a9a9a9; +} + +.posi_logo { + position: relative; + width:576rpx!important; + height:176rpx; + background:rgba(255,255,255,1); + box-shadow:0px 4rpx 8rpx 0px rgba(0,0,0,0.04); + border-radius:16rpx; + margin: 20rpx; + overflow: hidden; +} +.tel { + position: absolute; + right: 3%; + top: 0; + bottom: 0; + margin: auto; + width: 50rpx; + height: 50rpx; +} +.merchants{ + width: 90%; + display: flex; + background: #fff; + padding-right:5%; + overflow: hidden; +} +.position{ + text-align: center; + margin-top: 100rpx; + color: #999; +} +.leftBox{ + padding: 20rpx 0; +} +.merchants view:nth-child(1) image { + display: block; + width: 120rpx; + height: 120rpx; + border-radius: 16rpx; +} +.shopVo{ + margin-left: 20rpx; +} + +.merchantName{ + color: #3C3C3C; + font-size: 32rpx; + margin-left: 20rpx; + width: 60%; + overflow: hidden; + text-overflow:ellipsis; + white-space: nowrap; + margin-top: 10rpx; +} +.shopVo text{ + float: left; +} +page { + padding: 0 0 30rpx; +} + +.text{ + display: block; + width: 25%; + text-align: center; +} + +.view view:nth-of-type(1) { + font-size: 28rpx; + color: #888; +} + +.shopVoList{ + padding-left: 0!important; + display: inline-block!important; + width: 345rpx; + white-space: nowrap; + text-overflow: ellipsis; + overflow: hidden; +} +.shopVoList text{ + font-size: 20rpx!important; + color: #b8b8b8!important; + margin-right: 10rpx; +} \ No newline at end of file diff --git a/index/user.js b/index/user.js new file mode 100644 index 0000000..4b8fc4a --- /dev/null +++ b/index/user.js @@ -0,0 +1,288 @@ +const navigationBarHeight = (getApp().statusBarHeight + 44) + 'px' +const extConfig = wx.getExtConfigSync ? wx.getExtConfigSync() : {} +var config = require("../../config/config.js"); +var app = getApp(); +const Http = require("../../utils/HttpBasics"); +const QR = require("../../utils/memberqrcode.js"); +const imgurl = require("../../utils/imgurl"); +const bgColor = require("../../utils/bgColor.js") +Page({ + /** + * 页面的初始数据 + */ + data: { + navigationBarHeight, + banneColor: bgColor.colorFirst.user.banneColor, + levelBg: bgColor.colorFirst.user.levelBg, + view: bgColor.colorFirst.user.view, + redirectUrl: imgurl.redirect.url, + qrcodeUrl: imgurl.qrcode.url, + editUrl: imgurl.edit.url, + activeUrl: imgurl.active.url, + dingUrl: imgurl.ding.url, + quansUrl: imgurl.quans.url, + wmintegral: imgurl.wmintegral.url, + cardiconUrl: imgurl.cardicon.url, + myactivitygift: imgurl.myactivitygift.url, + myactivity: imgurl.myactivity.url, + cheUrl: imgurl.che.url, + giftUrl: imgurl.gift.url, + wmbarginicon: imgurl.wmbarginicon.url, + wmspellgroup: imgurl.wmspellgroup.url, + canIUse: wx.canIUse('official-account'), + mineFlag:"", + flag: 'hidden', + score: '0', + name: "", + birthdate: "", + sex: "", + showEdit: false, + ismember: false, + showQrcode: false, + canvasHidden: false, + maskHidden: true, + imagePath: '', + appVersion: "", + showmemberqrcode: false, + placeholder: '' + }, + checkUserStatus() { + let that = this; + Http.get({ + url: config.api.checkPhoneStatus, + data: {} + }).then(res => { + }).catch(err => { + wx.navigateTo({ + url: `/pages/getphoneInfo/index?mineFlag=mine`, + }) + }) + }, + /** + * 跳转到成长值的页面 + */ + gotograde: function() { + wx.navigateTo({ + url: '/pages/czdetail/czdetail', + }) + }, + navigateTo() { + wx.navigateTo({ + url: `/pages/main/index` + }); + }, + showVersion: function() { + /** + * 长按显示版本号 + */ + let that = this; + if (that.data.flag == 'hidden') { + that.setData({ + flag: 'show' + }); + } + }, + gotoedit: function() { + wx.navigateTo({ + url: '/pages/edit/edit', + }) + }, + onLoad() { + this.getLocation(); + this.updateScene(); + }, + /** + * 获得经纬度 + */ + getLocation() { + let that = this; + wx.getLocation({ + type: "wgs84", + success: function(res) { + console.log(res) + if (res && res.longitude && res.latitude) { + Http.post({ + url: config.api.updateLBS, + data: { + latitude: res.latitude, + longitude: res.longitude + } + }).then(res => { + console.log(res) + }) + } + }, + fail: error => { + console.log(error); + } + }) + }, + + /** + * 用户更新scene + */ + updateScene(){ + Http.post({ + url: config.api.updateScene, + data: { + scene: app.globalData.scene + } + }).then(res => { + console.log(res) + }) + }, + /** + * 生命周期函数--监听页面显示 + */ + onShow: function() { + let that = this; + that.checkUserStatus(); + that.setData({ + appVersion: extConfig.appVersion, + }) + /** + * couponNum + * couponNum2 + */ + let num = wx.getStorageSync('couponNum'); + let num1 = wx.getStorageSync('couponNum2'); + wx.hideTabBarRedDot({ + index: 3 + }); + wx.hideTabBarRedDot({ + index: 3 + }); + if (num == 'couponNum1') { + wx.setStorage({ + key: 'couponNum', + data: "couponNum1", + }) + that.setData({ + couponNum: "couponNum1" + }) + } else if (num == 'couponNum') { + that.setData({ + couponNum: "couponNum" + }) + }; + if (num1 == 'couponNum3') { + wx.setStorage({ + key: 'couponNum2', + data: "couponNum3", + }) + that.setData({ + couponNum2: "couponNum3" + }) + } else if (num1 == 'couponNum2') { + that.setData({ + couponNum2: "couponNum2" + }); + }; + + Http.get({ + url: config.api.getScore, + data: {} + }).then(res => { + if (res.data.address && res.data.name && res.data.sex && res.data.birthdate) { + that.setData({ + showEdit: true + }) + } + that.setData({ + score: res.data.score, + levelName: res.data.levelName, + }) + if (res.data.nickName) { + that.setData({ + ismember: true, + memberId: res.data.id + }) + var size = this.setCanvasSize(); + var initUrl = JSON.stringify({ + flagid: res.data.id + }); + that.createQrCode(initUrl, "mycanvas1", size.w, size.h); + } + }) + .catch(err => { + wx.showModal({ + title: '提示', + content: err.errMsg, + showCancel: false + }) + }) + //暂时注释 + // that.getrun(); + }, + hideQrcode: function() { + let that = this; + that.setData({ + showQrcode: false + }) + }, + //适配不同屏幕大小的canvas + setCanvasSize: function() { + var size = {}; + try { + var res = wx.getSystemInfoSync(); + var scale = 750 / 500; + //不同屏幕下canvas的适配比例;设计稿是750宽 + var width = res.windowWidth / scale; + var height = width; + //canvas画布为正方形 + size.w = width; + size.h = height; + } catch (e) { + // Do something when catch error + console.log("获取设备信息失败" + e); + } + return size; + }, + createQrCode: function(url, canvasId, cavW, cavH) { + //调用插件中的draw方法,绘制二维码图片 + QR.api.draw(url, canvasId, cavW, cavH); + }, + qrcode: function(e) { + var that = this; + that.setData({ + showQrcode: true + }) + wx.showToast({ + title: '生成中...', + icon: 'loading', + duration: 2000 + }); + var st = setTimeout(function() { + wx.hideToast() + var size = that.setCanvasSize(); + var url = JSON.stringify({ + END: "C", + TYPE: "memberCode", + ID: that.data.memberId, + }) + that.createQrCode(url, "mycanvas1", size.w, size.h); + that.setData({ + maskHidden: true + }); + clearTimeout(st); + }, 1000) + + }, + close: function() { + this.setData({ + showmemberqrcode: false, + }) + } +}); +Component({ + pageLifetimes: { + show() { + if (typeof this.getTabBar === 'function' && + this.getTabBar()) { + this.getTabBar().setData({ + selected: 0 + }) + } + } + } +}) diff --git a/index/user.json b/index/user.json new file mode 100644 index 0000000..e2f3c9d --- /dev/null +++ b/index/user.json @@ -0,0 +1,9 @@ +{ + "usingComponents": { + "i-button": "../../dist/button/index", + "navbar": "../../components/navbar/navbar" + }, + "navigationBarBackgroundColor": "#FD832D", + "navigationBarTextStyle": "white", + "disableScroll": true + } \ No newline at end of file diff --git a/index/user.wxml b/index/user.wxml new file mode 100644 index 0000000..61e8e21 --- /dev/null +++ b/index/user.wxml @@ -0,0 +1,104 @@ + + + + + + + + + + + + {{levelName}} + + + + 我的 + 成长值{{score}} + | + + 更多成长值 + + + + + + + 我的订单 + + + + + + + 我的券包 + + + + + + + + + 我的卡包 + + + + + + + + + + + + + + + 我的砍价 + + + + + + + 我的拼团 + + + + + + + 积分商城 + + + + + + + 特享礼遇 + + + + + + 我的活动 + + + + + + + 版本号:{{appVersion}} + + + + + + + + + + \ No newline at end of file diff --git a/index/user.wxss b/index/user.wxss new file mode 100644 index 0000000..5e9a166 --- /dev/null +++ b/index/user.wxss @@ -0,0 +1,392 @@ +page{ + overflow-y:visible!important; + height: 100%!important; + background: #f6f6f6; +} +.icons { + display: block; + width: 50rpx; + margin: 0 auto 10rpx; +} + +.navigator-hover { + opacity: 1 !important; + background: #fff; +} + +.version { + position: absolute; + right: 0; + width: 307rpx; + height: 50rpx; + bottom: 0; + text-align: center; + font-size: 15rpx; + color: #999; +} + +.couponnum { + display: inline-block; + position: absolute; + top: 39rpx; + bottom: 0; + right: 20px; + width: 16rpx; + height: 16rpx; + border-radius: 50%; + background: red; + font-size: 22rpx; +} + +.user-avatar open-data { + display: block; + width: 100%; + height: 100%; +} +.user-name{ + font-family: PingFangSC-Medium; + height: 42rpx; + margin-top:66rpx; + letter-spacing: 0.64rpx; + line-height: 44rpx; + font-size: 30rpx; + color: #3C3C3C; + font-weight:600; + display: flex; /*设置显示样式**/ + align-items: center; /**子view垂直居中*/ + vertical-align: center; /**垂直居中*/ + justify-content: center; /**内容居中*/ + flex-direction: row; +} +.user-phone { + font-family: PingFangSC-Regular; + letter-spacing: 0.64rpx; + line-height: 44rpx; + font-size: 36rpx; + color: #000; + padding:20rpx; + text-align: center; +} +.user-avatar { + position: absolute; + width: 128rpx; + height: 128rpx; + border-radius: 50%; + overflow: hidden; + top:-64rpx; + left: 300rpx; +} + +.chengzhang { + font-size: 24rpx; + font-weight: 400; + color: #FFFFFF; + padding: 0 8rpx; +} + +.view { + font-size: 24rpx; +} + +.view image { + width: 12rpx; + vertical-align: middle; + margin-top: -6rpx; +} + +.bannerbg { + width: 100%; +} + +.bannerbg image { + display: block; + width: 100%; +} + +.open01 { + display: block; + width: 120rpx; + height: 120rpx; +} +.user-btns{ + background: #fff; + display: flex; + text-align: center; + flex-wrap: wrap; +} + .user-btns navigator{ + width: 33.3%; + height: 160rpx; + } + +.user-btns:nth-of-type(3){ + margin-bottom: 0; +} +.user-btns .user-btn { + font-size: 30rpx; + letter-spacing: 1.16rpx; +} +.top-content{ + width: 100%; + height: auto; +} +.user_title{ + position: relative; + width: 94%; + background: #fff; + border-radius: 16rpx; + margin: -100rpx auto 0; + padding: 10rpx 0; + box-shadow: 0 6px 20px 0 rgba(0, 0, 0, 0.10); +} +.btns_bg{ + width: 94%; + background: #fff; + border-radius: 16rpx; + margin: 30rpx auto 0; + padding: 20rpx 0; + box-shadow: 0 6px 20px 0 rgba(0, 0, 0, 0.10); +} +.user-btns .user-btn > view { + padding: 20rpx 10px ; + font-size: 28rpx; + color: #888; + letter-spacing: 1.16rpx; + text-align: center; +} + +.iconfont { + position: absolute; + right: 0; + top: 0; + bottom: 0; + width: 30rpx; + height: 30rpx; + line-height: 44rpx; + color: #c7c7cc; + font-size: 44rpx; + margin: auto; +} + +.look { + display: inline-block; + padding-right: 25rpx; +} + +.user-out-btn { + background-color: #fff; + height: 100rpx; + line-height: 100rpx; + font-family: PingFangSC-Semibold; + font-size: 30rpx; + color: #000; + text-align: center; + border-radius: 0; + border: none; +} + +.user-out-btn.button-hover { + background-color: rgba(237, 237, 237, 1); +} + +.user-out-btn::after { + opacity: 0; +} +.gzh button::after { + border: none!important; +} +.gzh { + width: 100%; + height: 170rpx; + z-index: 10; + background: #fff; + border-radius: 16rpx; + overflow: hidden; + box-shadow: 0 6px 20px 0 rgba(0, 0, 0, 0.15); +} + +.act { + display: none; +} + +.of { + width: 90%; + margin: 30rpx auto; + height: auto; + background: #fff; + border-radius: 16rpx; + overflow: hidden; + box-shadow: 0 6px 20px 0 rgba(0, 0, 0, 0.15); +} + +.activeimg { + width: 200rpx !important; + position: absolute; + bottom: 0; + right: 0; + z-index: 10000; +} + +.edit { + width: 26rpx; + vertical-align: middle; +} +.qrcode{ + display: none; +} +.qrcode image { + width: 70rpx; + margin-right: 20rpx; +} + +.edits { + margin-top: 44rpx; +} + +.showQrcode { + position: fixed; + top: 0; + left: 0; + right: 0; + bottom: 0; + z-index: 1000; + background: rgba(0, 0, 0, 0.6); +} + +.qrcodes { + position: absolute; + width: 400rpx; + height: 440rpx; + top: 0; + left: 0; + right: 0; + bottom: 0; + border-radius: 15rpx; + margin: auto; + background: #fff; + text-align: center; +} + +.qrcodes text { + text-align: center; + font-size: 26rpx; + display: inline-block; + line-height: 40rpx; +} + +.container-box { + width: 100%; + height: 100%; + background: 0 0 0 0.6; + position: relative; +} + +.img-box { + width: 500rpx; + margin: 200rpx auto 0; + background-color: #fff; + border-radius: 16rpx; +} + +.img-box text { + display: block; + text-align: center; + font-size: 28rpx; +} + + + +.img-box image { + display: block; + width: 500rpx; +} + +.input-row { + border-bottom: 1rpx solid #e5e5e5; + border-top: 1rpx solid #e5e5e5; + display: flex; + align-items: center; + height: 100rpx; + padding: 0 32rpx; + background-color: #fff; + font-size: 34rpx; + color: #000; +} + +.input-row input { + margin-left: 100rpx; + flex: 1; +} + +.mybtn { + width: 686rpx; + margin: 60rpx auto; +} + +.mask { + position: fixed; + top: 0; + left: 0; + z-index: 3; + width: 100%; + height: 100%; + opacity: 0; +} + +.canvas-box { + position: fixed; + width: 500rpx; + height: 587rpx; + overflow: hidden; + left: 0; + top: 0; + bottom: 0; + right: 0; + margin: auto; + background: #fff; + border-radius: 16rpx; +} +.showQrcode text{ + display: block; + text-align: center; + font-size: 28rpx; +} +.membercode { + margin-top: 20rpx; +} + +.top{ + width: 100%; + height: 234rpx; +} +.usre_level{ + height:32rpx; + border-radius:9px 9px 9px 0px; + font-family:PingFangSC-Regular; + font-weight:400; + color:rgba(255,255,255,1); + line-height:32rpx; + float: left; + margin-top: 8rpx; +} +.my{ + font-size:24rpx; + font-family:PingFangSC-Regular; + font-weight:400; + color:rgba(166,166,166,1); + line-height:34rpx; +} +.chengzhang_h{ + color: #3C3C3C; + font-size:24rpx; + font-weight: 600; +} +.my_line{ + margin: 0 10rpx; +} +.usre_level{ + font-size:20rpx; +} +.name{ + float: left; +}