<template> <view class="full-width"> <!-- 登录弹框 --> <Signin ref="Signin"></Signin> <!-- 自定义头部 --> <view class='flex commonHead' style="height: 100upx;" :style="{height: titleHeight +'px'}"> <view class='commonHead-wrap flex'> <view class='commonHead_left' @click="tomine()"> <view class='commonHead_left_back'> <view class="commonHead_left_back_img"> <image src="../../static/icon_mall_zuoshang.png" style="width: 50upx; height: 50upx; margin-top: 10upx; " mode="aspectFill"></image> </view> </view> </view> <view class='commonHead_right flex'> <view class='commonHead_right_text line1'>色彩小商品</view> </view> </view> </view> <view v-if="long && LoupanList.length == 0" > <view style="display: flex; justify-content: center; height: 100%;"> <view style="margin-top: 231upx;"> <image src="../../static/icon_diy.png" mode="" style="width: 500upx; height: 245upx;"></image> <view class="start_title" style="margin-top: 60upx; color: #FFFFFF; width: 100%; text-align: center;">定制站必须扫码才能使用</view> </view> </view> <view @click="scan1" style="width: 460upx; position: fixed; bottom: 100upx; margin: auto; height: 164upx; background: #47E5E5; left: 0; right: 0; z-index: 99; border-radius: 20upx; display: flex; align-items: center;"> <view style="width: 120upx; height: 120upx;border-radius: 50%; margin: 22upx 30upx;text-align: center;"> <image style="height: 61upx; width: 61upx;margin:32upx auto;" src="../../static/icon_saoyisao.png" mode=""></image> </view> <view style="color: #000; font-size: 36upx;">开始扫码定制</view> </view> </view> <!-- 有设备 --> <view v-if="LoupanList.length > 0"> <view style="margin-top: 25upx;"> <view style="width: 690upx; margin:0upx auto 30upx; display: flex;"> <view> <view style="position: relative; width: 320upx; height: 160upx;" @click="order()"> <image src="../../static/mine/dingdan@3x.png" mode="" style="width: 320upx; height: 160upx; position: absolute;z-index: -1;"></image> <view style="margin-left:26upx; padding-top: 27upx; font-size: 36upx; color: #FFFFFF;font-weight: bold;"> 订单</view> <view style="margin-top: 15upx;margin-left:26upx;font-size: 24upx; font-weight: 400; color: #FFFFFF;">我的定制</view> </view> <view style="margin-top: 16upx; position: relative;width: 320upx; height: 160upx;" @click="coupons()"> <image src="../../static/mine/huayihua@3x.png" mode="" style="width: 320upx; height: 160upx; position: absolute;z-index: -1;"></image> <view style="margin-left:26upx; padding-top: 27upx; font-size: 36upx; color: #FFFFFF;font-weight: bold;"> 滑一滑</view> </view> </view> <view style="margin-left: 15upx;width: 350upx; height: 340upx;" @click="tomine()"> <image src="../../static/mine/wo@3x.png" mode="" style="width: 350upx; height: 340upx; position: absolute;z-index: -1;"></image> <view style="margin-left:30upx; padding-top: 39upx; font-size: 36upx; color: #FFFFFF;font-weight: bold;">个人中心</view> <view style="margin-top: 15upx;margin-left:30upx;font-size: 24upx; font-weight: 400; color: #FFFFFF;">更多作品更多精彩</view> </view> </view> <!-- 附近定制站 --> <view style="font-size: 36upx; margin-top: 40upx; margin-left: 40upx; font-weight: bold; color: #FFFFFF;">在线定制站</view> <view style="width: 690upx; margin: 30upx auto 0; background: #131319; border-radius: 10upx;"> <view v-for="(item, index) in LoupanList" :key="index" @click="goMachineDetail(item)"> <view v-if="index != 0" style="width: 689upx; height: 1upx; background: #CCCCCC; opacity: 0.1;"> </view> <view style="height: 160upx; display: flex; align-items: center; padding: 29upx 20upx 30upx 19upx;"> <image style="width: 150upx; height: 143upx; margin: 0upx 21upx 0upx 0upx; border-radius: 10upx;" mode="aspectFill" :src="item.image + '?x-oss-process=image/resize,lfit,w_164'"></image> <view style="width: calc(100% - 281upx);"> <view style="font-size: 36upx; font-weight: 500; color: #FFFFFF; opacity: 0.4;"> {{item.id}} </view> <view style="margin: 5upx 0 7upx; font-size: 32upx; font-weight: 500; color: #FFFFFF; width: 80%; white-space: nowrap; text-overflow: ellipsis; overflow: hidden; word-break: break-all;" :style="{opacity:item.status.value == 1 || item.status.value == 2 ? '0.4' : '0.4'}"> {{item.short_name || ''}} </view> <view style="font-size: 24upx; font-weight: 500; color: #FFFFFF; opacity: 0.4;"> 营业时间:{{item.start_time || ''}}-{{item.end_time || ''}} </view> </view> <view style="width: 170upx;"> <text class="statuslist" style="background:#5FE4B6;">体验中</text> </view> </view> </view> </view> </view> </view> </view> </template> <script> import Env from '@/util/Env.js'; import userService from '@/service/UserService'; import homeservice from '@/service/homeservice.js'; import Signin from './Signin.vue'; import FrImage from '@/components/fr-image/fr-image.vue'; var pixelRationum = null; export default { components: { Signin, FrImage }, computed: {}, data() { return { titleHeight: null, long: false, LoupanList: [], newOrderlist: null, isShow: true, //是否已经弹出 animMaind: {}, //旋转动画 animMain: {}, //旋转动画 animAdd: {}, //item位移,透明度 animDelLots: {}, //item位移,透明度 animstart: false, bganimstart: false, touchStartTime: null, touchEndTime: null, lastTapTime: null, currentSwiper: 0, imgheights: [], imageLoadstate: false, system_config: null, portraitUrl: null //头像地址 }; }, methods: { scan1() { let that = this; uni.scanCode({ success: function(res) { console.log(res) if (res.scanType == 'QR_CODE') { if (that.getQueryString(res.result, 'machine_id') && that.getQueryString(res.result, 'machine_id') != "") { uni.navigateTo({ url: '../index/machineDetail?machine_id=' + that.getQueryString(res.result, 'machine_id') }); } else { uni.showToast({ title: '扫码未能识别色彩站,请检查二维码', icon: 'none', duration: 2000 }); } } else { if (res.path) { if (that.getQueryString(res.path, 'machine_id') && that.getQueryString(res .path, 'machine_id') != "") { uni.navigateTo({ url: '../index/machineDetail?machine_id=' + that .getQueryString(res.path, 'machine_id') }); } else { uni.showToast({ title: '扫码未能识别色彩站,请检查二维码', icon: 'none', duration: 2000 }); } } else { uni.showToast({ title: '扫码未能识别色彩站,请检查二维码', icon: 'none', duration: 2000 }); } } }, fail: function(err) { //console.log(err) }, }); }, //调转色彩公园优惠券 toCoupon(item) { }, imageLoad(e) { //获取图片真实宽度 var imgwidth = e.detail.width, imgheight = e.detail.height, //宽高比 ratio = imgwidth / imgheight; //计算的高度值 var viewHeight = 750 / ratio; var imgheight = viewHeight var imgheights = this.imgheights //把每一张图片的高度记录到数组里 imgheights[e.target.dataset['index']] = imgheight; // 改了这里 赋值给当前 index this.imgheights = imgheights this.setData({ imgheights: imgheights }) this.imageLoadstate = true }, //轮播图 toJump(item) { if (item.appid && item.go_url) { var url = this.$Env.getBaseURL(); var envVersionName = "trial"; if (url.indexOf("colorpark") != -1) { envVersionName = "release"; } wx.navigateToMiniProgram({ appId: item.appid, path: item.go_url || '/pages/index/mall', extraData: { foo: 'bar' }, envVersion: envVersionName, success(res) { // 打开成功 } }) } else if (item.go_url) { uni.navigateTo({ url: './start-up?machine_id=' + item.go_url.split('=')[1] }) } }, swiperChange(e) { this.currentSwiper = e.detail.current }, experience() { uni.navigateTo({ url: '../mall/experience' }) }, tomyorder() { //订单列表 uni.navigateTo({ url: '../mine/myorder' }) }, toLocation(item) { uni.navigateTo({ url: '../mall/start-up?machine_id=' + item.id }); }, getQueryString(url, name) { var reg = new RegExp('(^|&|/?)' + name + '=([^&|/?]*)(&|/?|$)', 'i') var r = url.substr(1).match(reg) if (r != null) { return r[2] } return null; }, setData(obj) { let that = this; let keys = []; let val, data; Object.keys(obj).forEach(function(key) { keys = key.split('.'); val = obj[key]; data = that.$data; keys.forEach(function(key2, index) { if (index + 1 == keys.length) { that.$set(data, key2, val); } else { if (!data[key2]) { that.$set(data, key2, {}); } } data = data[key2]; }) }); }, order() { var url = this.$Env.getBaseURL(); var envVersionName = "trial"; if (url.indexOf("colorpark") != -1) { envVersionName = "release"; } wx.navigateToMiniProgram({ appId: this.$Env.getappId(), path: '/pages/mine/myorder', extraData: { foo: 'bar' }, envVersion: envVersionName, success(res) { // 打开成功 } }) }, coupons() { var url = this.$Env.getBaseURL(); var envVersionName = "trial"; if (url.indexOf("colorpark") != -1) { envVersionName = "release"; } //console.log("envVersionName="+envVersionName); wx.navigateToMiniProgram({ appId: Env.getappId(), path: '/pages/index/recommend?selectTitleType=2', extraData: { foo: 'bar' }, envVersion: envVersionName, success(res) { // 打开成功 } }) }, tomine() { wx.navigateToMiniProgram({ appId: this.$Env.getappId(), path: '/pages/index/mine', extraData: { foo: 'bar' }, envVersion: Env.getenvVersion(), success(res) { // 打开成功 } }) }, // 防止重复点击 touchStart(e) { this.touchStartTime = e.timeStamp; }, touchEnd(e) { this.touchEndTime = e.timeStamp; }, doubleTap(e) { // 控制点击事件在350ms内触发,加这层判断是为了防止长按时会触发点击事件 if (this.touchEndTime - this.touchStartTime < 350) { // 当前点击的时间 const currentTime = e.timeStamp; const lastTapTime = this.lastTapTime; // 更新最后一次点击时间 this.lastTapTime = currentTime; // 如果两次点击时间在300毫秒内,则认为是双击事件 if (currentTime - lastTapTime > 300) { // console.log('防止重复点击') if (!this.$AppContext.checkLogin()) { this.tologo('navigateTo') } else { //this.showOrHide() //uni.navigateTo({url: '/pages/index/index?goods_id=21'}) uni.navigateTo({ url: '../index/machineDetail?machine_id=' + this.$Env.getmachineId() + '&worksid=0' }); } } } }, //加载数据 loadGoodsList() { uni.showLoading({ title: '正在加载中...' }) homeservice.queryList({ s: 'Machine.shopList', longitude: this.$base.longitude || 0, latitude: this.$base.latitude || 0, distance: 5, }).then(result => { this.long = true result.data.forEach(item => { item.distance = Number(item.distance).toFixed(2) }); this.LoupanList = result.data uni.hideLoading(); uni.stopPullDownRefresh(); }).catch(err => { uni.hideLoading(); uni.stopPullDownRefresh(); }); }, getSetting() { this.loadGoodsList() }, // 获取用户的地理位置, getAuthorize() { this.loadGoodsList() }, // 用户授权 getAuthorize() { const that = this uni.authorize({ scope: 'scope.userLocation', success(res) { that.getLocation() }, // 授权失败 fail(err) { uni.showModal({ title: '提示', content: '请授权位置获取附近的商家!', showCancel: false, confirmText: '确认授权', success() { uni.openSetting({ success(res) { //console.log(res) that.getAuthorize() }, fail(err) { //console.log(err) } }) } }) } }) }, // 设备详情 goMachineDetail(item) { uni.navigateTo({ url: '../index/machineDetail?machine_id=' + item.id + '&worksid=0' }); }, tologo(e) { // 先登陆 let that = this; uni.login({ provider: 'weixin', success: (res) => { userService.login({ s: 'Init.init', code: res.code }).then(r => { if (e == 'navigateTo') { uni.navigateTo({ url: '../index/machineDetail?machine_id=' + that.$Env.getmachineId() + '&worksid=0' /* url: './start-up?machine_id=' + that.$Env.getmachineId() + '&worksid=0' */ }); } }).catch(err => { that.$refs.Signin.init() //uni.showToast({title: err.msg,icon: 'none'}) }); }, fail: (res) => { // uni.showToast({ // title: res.msg, // icon: 'none' // }) } }); }, systemConfig() { var _this = this wx.request({ url: _this.$Env.getDevBaseURL() + '/api/system_config/detail', method: 'GET', data: {}, header: { //设置参数内容类型为x-www-form-urlencoded 'content-type': 'application/x-www-form-urlencoded', 'Accept': 'application/json' }, success: function(res) { _this.system_config = res.data.data uni.stopPullDownRefresh(); uni.hideLoading(); }, fail: function(err) { uni.stopPullDownRefresh(); uni.hideLoading(); }, complete: function(end) { uni.stopPullDownRefresh(); uni.hideLoading(); } }) } }, //下拉加载 onPullDownRefresh() { this.loadGoodsList(); }, //上拉加载 onReachBottom() {}, //滑动 onPageScroll(t) {}, //分享好友 onShareAppMessage() { return { title: '', imageUrl: '', path: '', success: (res) => {}, } }, // 分享朋友圈 onShareTimeline() { return { title: '', imageUrl: '', path: '', query: 'kjbfrom=pyq' } }, onLoad(options) { this.getSetting() // 获取附近店铺 let app = uni.getSystemInfoSync(); //胶囊信息 let menuButtonInfo = uni.getMenuButtonBoundingClientRect(); this.titleHeight = app.statusBarHeight + menuButtonInfo.height + (menuButtonInfo.top - app.statusBarHeight) * 2 if (options.q) { // 分销系统 获取二维码的携带的链接信息 let qrUrl = decodeURIComponent(options.q) let promoter_id = qrUrl.replace(/[^0-9]/ig, "") this.$base.promoter_id = promoter_id } var appUser = userService.getCacheUserInfo(); if (appUser != null) { this.portraitUrl = appUser.portrait } }, onShow() { let app = uni.getSystemInfoSync(); //胶囊信息 let menuButtonInfo = uni.getMenuButtonBoundingClientRect(); this.titleHeight = app.statusBarHeight + menuButtonInfo.height + (menuButtonInfo.top - app.statusBarHeight) * 2 //this.phone_mall() } }; </script> <style lang="scss"> @import "./css/main.css"; ec-canvas { width: 100%; height: 100%; } page { background: #282932 !important; width: 100%; margin: 0; padding: 0; } .qiun-columns { display: flex; flex-direction: column !important; } .qiun-charts { width: 750upx; height: 500upx; background-color: #FFFFFF; } .charts { width: 750upx; height: 500upx; background-color: #FFFFFF; } .imgSrcstate { position: absolute; width: 100%; right: -900px; top: -600px; display: none; } .imgSrcdisplay { z-index: 0 !important; } .statuslist { font-size: 23upx; padding: 8upx 20upx 8upx 20upx; border-radius: 20upx; font-weight: 500; color: #FFFFFF; } .start { .start_img { width: 513upx; height: 251upx; display: block; margin: 0upx auto 102upx; } .start_title { font-size: 30upx; text-align: center; color: #FFFFFF; } .start_text { width: 70%; text-align: center; font-size: 28upx; font-family: Source Han Sans CN; font-weight: 400; color: #888888; margin: 22upx auto 0; line-height: 28upx; } } //悬浮按钮 .buttom { position: fixed; bottom: 30upx; margin: auto; left: 0; right: 0; z-index: 99; width: 120upx; height: 120upx; border-radius: 50%; font-size: 36upx; text-align: center; line-height: 120upx; font-weight: 800; color: #FFFFFF; background: linear-gradient(to right, #834DC4, #1983D7); } .canbutton { color: #23b7cb; font-size: 15px; padding: 5px 15px; border: 1px transparent solid; border-radius: 30px; position: relative; width: 140upx; margin: 40upx auto 0; background: #282932; text-align: center; } .canbutton:after { content: ''; position: absolute; top: -3px; bottom: -3px; left: -3px; right: -3px; background: linear-gradient(to right, #834DC4, #1983D7); border-radius: 30px; content: ''; z-index: -1; } </style>