Commit 216e41df authored by 潘永坪's avatar 潘永坪

Merge branch 'develop' of http://git.tbd.yanzuoguang.com/panyongping/uni-pdtravel into develop

parents 7d237041 93f7c9ce
<template>
<view class="big-box" :style="{'padding-top': statusBarHeight + 'px'}" v-show="show">
<view class="big-box" :style="{'padding-top': statusBarHeight + 'px'}" v-if="show">
<view class="nav-bar" :style="{'top': statusBarHeight + 'px', 'height': navHeight + 'px','line-height': navHeight + 'px'}">
<view class="nav-bar"
:style="{'top': statusBarHeight + 'px', 'height': navHeight + 'px','line-height': navHeight + 'px'}">
<u-icon name="arrow-left" v-if="options.index" @click="returnClick"></u-icon>
摄影/旅拍
</view>
<view class="body">
<view class="scroll-view" >
<view class="scroll-view">
<view class="item" @click="jumpToScanFaceClick">
<image class="img" src="./static/album/myAlbum.png"></image>
<text class="title">我的相片</text>
......@@ -30,7 +31,8 @@
<view class="title">私人定制</view>
<u-waterfall v-model="list" ref="uWaterfall">
<template v-slot:left="{leftList}">
<view class="left demo-water" v-for="(item, index) in leftList" :key="index" @click="jumpToClick(item.title)">
<view class="left demo-water" v-for="(item, index) in leftList" :key="index"
@click="jumpToClick(item.title)">
<image :src="item.image" mode="aspectFill"></image>
<!-- <u-lazy-load threshold="-450" border-radius="10" :image="item.image" :index="index"></u-lazy-load> -->
<view class="info-box" :style="{'background-color': item.color}">
......@@ -47,7 +49,8 @@
</view>
</template>
<template v-slot:right="{rightList}">
<view class="demo-water" v-for="(item, index) in rightList" :key="index" @click="jumpToClick(item.title)">
<view class="demo-water" v-for="(item, index) in rightList" :key="index"
@click="jumpToClick(item.title)">
<image :src="item.image" mode="aspectFill"></image>
<!-- <u-lazy-load threshold="-450" border-radius="10" :image="item.image" :index="index"></u-lazy-load> -->
<view class="info-box" :style="{'background-color': item.color}">
......@@ -67,21 +70,36 @@
</view>
</view>
<image class="coupon" src="@/static/img/my/coupon.png" mode="aspectFit" @click="showUseRule = true"></image>
<view class="coupon" @click="couponTip = true">
<image class="coupon-img" src="@/static/img/my/coupon.png" mode="aspectFit" v-if="isHaveCoupon">
</image>
<text class="coupon-price">
<text class="r-symbol"></text>
{{couponPrice}}
</text>
</view>
<u-mask :show="showtip || showUseRule">
<u-mask :show="postCartTip || couponTip || showUseRule">
<view class="mask">
<view class="img-box">
<image class="bg" src="@/static/img/my/backgroundIcon01.png" mode="aspectFit"></image>
<view class="post-card" v-if="showtip">
<view class="post-card" v-if="postCartTip">
<view class="thank">- 感谢您的参与 -</view>
<view class="tip-content">
<text>免费领取</text>
<text>纪念小照片1张</text>
</view>
<image class="my-card" src="./static/album/myCard.png" mode="aspectFit"></image>
<view class="address">(领取地址:南站观景台旁)</view>
</view>
<view class="coupon-box" v-if="couponTip">
<view class="congra">恭喜您!</view>
<view class="get-price-tip">
<view class="get-coupon">
获得摄影抵用券
<text class="price">20</text>
<text class="price">{{couponPrice}}</text>
</view>
<image class="my-card" src="./static/album/myCard.png" mode="aspectFit"></image>
<view class="use-rule" @click="useRuleClick">
<view class="use-rule" @click="showUseRuleClick">
使用规则
<u-icon name="arrow-right"></u-icon>
</view>
......@@ -121,14 +139,15 @@ export default {
},
data() {
return {
showtip: false,//领取提示
showUseRule: false,//使用规则提示
postCartTip: false, //明信片领取提示
couponTip: false, //券领取提示
showUseRule: false, //使用规则提示
statusBarHeight: 0,
capsule: 0,
navHeight: 0,
show: false,//是否显示首页
list: [
{
show: false, //是否显示首页
isHaveCoupon: false, //是否有劵
list: [{
title: '精彩瞬间',
count: '10W+',
image: './static/album/wonderfulMoment.png',
......@@ -165,55 +184,46 @@ export default {
color: '#D48D46'
}
],
rules: [
{
ruleName: '规则说明',
contents: [
{value: '任意金额皆可抵扣,最高抵扣20'},
{value: '指定地点可用,提交订单时可自动抵扣'},
{value: '优惠券只可使用一次,不找零不折现'},
{value: '仅支持下载电子照片至手机'},
{value: '如需打印,需额外支付打印费用'}
]
},
{
ruleName: '补充说明',
contents: [
{value: '使用地址:重庆市渝中区新华路151号闯将索道南站观景台旁'},
{value: '咨询电话:023-68567748'}
]
}
],
options: {}//路由参数
rules: [], //使用规则
options: {}, //路由参数
couponPrice: '', //优惠券金额
openid: '',
userId: '',
}
},
methods: {
returnClick() {
uni.navigateBack({delta: 1})
uni.navigateBack({
delta: 1
})
},
closeMask() {//---关闭遮罩
this.showtip = false
closeMask() { //---关闭遮罩
this.postCartTip = false
this.couponTip = false
this.showUseRule = false
},
useRuleClick() {//---查看使用规则
this.showtip = false
showUseRuleClick() {
this.couponTip = false
this.showUseRule = true
},
jumpToScanFaceClick() {//---跳转扫脸页面
const openid = uni.getStorageSync('openid')
this.$request('wechatUser/pdFace/checkScanFace',{openid}).then(res => {
jumpToScanFaceClick() { //---跳转扫脸页面
this.$request('wechatUser/pdFace/checkScanFace', {
openid: this.openid
}).then(res => {
if (res.code === '00') {
if(res.data.isScanFace === 0) {//未扫脸
const merchantId = this.options.merchantId || 'z0015605022691a5945bbe463141668c' // 默认长江索道
if (res.data.isScanFace === 0) { //未扫脸
uni.navigateTo({
url: './getPortrait'
url: `./getPortrait?merchantId${merchantId}`
})
}else if(res.data.isScanFace === 1) {//已扫脸
} else if (res.data.isScanFace === 1) { //已扫脸
const faceIds = JSON.stringify(res.data.faceIds)
const companyId = this.options.companyId
uni.navigateTo({
url: `./myPhotoAlbum/myPhotoAlbum?faceIds=${JSON.stringify(res.data.faceIds)}&companyId=${this.options.companyId}`
url: `./myPhotoAlbum/myPhotoAlbum?faceIds=${faceIds}&companyId=${companyId}&merchantId${merchantId}`
})
}
}else{
} else {
uni.showToast({
title: res.message,
icon: 'none'
......@@ -226,22 +236,22 @@ export default {
})
})
},
jumptoVlog() {//---跳转到vlog页面
jumptoVlog() { //---跳转到vlog页面
uni.redirectTo({
url: '/pages/vlog/vlogIndex/vlogIndex'
})
},
jumpToClick(title) {
if(title === '精彩瞬间' || title === '网红旅拍') {
if (title === '精彩瞬间' || title === '网红旅拍') {
this.jumpToScanFaceClick()
}
},
judgeWhether(url, data) {//---判断是否成功的封装函数
judgeWhether(url, data) { //---判断是否成功的封装函数
return new Promise((resolve, reject) => {
this.$request(url, data).then(res => {
if (res.code === '00') {
resolve(res.data)
}else{
} else {
reject(false)
}
}).catch(() => {
......@@ -249,11 +259,11 @@ export default {
})
})
},
async handleWhetherToVotePage() {//---判断是否跳转投票页面
async handleWhetherToVotePage() { //---判断是否跳转投票页面
// 1.获取调查列表
const surveyQueryData = {
pageCode: 'albumIndex',//默认前端写死
channelId: this.options.channelId//游客扫码携带的channelId或者是胖丁登录时的公司id
pageCode: 'albumIndex', //默认前端写死
channelId: this.options.channelId //游客扫码携带的channelId或者是胖丁登录时的公司id
}
const surveyList = await this.judgeWhether('scenic/market/findPageMarket', surveyQueryData)
......@@ -262,17 +272,19 @@ export default {
let surveyIds
let surveyResult = []
if(surveyList.length) {
if (surveyList.length) {
surveyIds = surveyList.map(item => item.surveyId)
surveyResult = await this.judgeWhether('scenic/albumConfig/getSurveyConfig', { surveyIds })
surveyResult = await this.judgeWhether('scenic/albumConfig/getSurveyConfig', {
surveyIds
})
}
// 3.判断用户是否已经投过票
let voteObj = {}// 用户投票信息
let voteObj = {} // 用户投票信息
if(surveyResult.length) {
// 默认保存第一个商店id到缓存
uni.setStorageSync('merchantId', surveyResult[0].merchantId)
if (surveyResult.length) {
// 默认保存第一个商店id
// this.options.merchantId = surveyResult[0].merchantId
const votedQueryData = {
merchantId: surveyResult[0].merchantId,
......@@ -282,15 +294,81 @@ export default {
}
// 4.判断是否跳转投票页面
if(voteObj.alreadySurvey === 1) {// 未投过票
if (voteObj.alreadySurvey === 0) { // 未投过票
uni.navigateTo({
url: `./chooseFavorite?surveyConfig=${JSON.stringify(surveyResult)}`
})
}else if(voteObj.alreadySurvey === 0) {// 已投票
} else if (voteObj.alreadySurvey === 1) { // 已投票
this.show = true
}
},
recordDeviceInfo() {//---记录设备信息
findPageMarketFun() { //---获取优惠券
var data = {
pageCode: 'albumIndex',
marketingStatus: 1,
openid: this.openid,
userId: this.userId
}
this.$request('scenic/market/findPageMarket', data).then((res) => {
if (res.code === '00') {
this.couponIsUse()
} else {
uni.showToast({
title: res.message,
icon: 'none'
})
}
})
},
couponIsUse() { //---判断是否有劵
this.$request('wechatUser/myPage/getUserCouponList', {
openid: this.openid
}).then(res => {
if (res.code === '00') {
res.data.forEach(item => {
if (item.useRange === 11 && item.couponStatus === 1) {
this.isHaveCoupon = true
this.couponPrice = item.deductPrice
// 处理使用规则数据结构
let ruleContents = item.couponRule ? item.couponRule.split(';') : []
ruleContents = ruleContents.map(value => {
return {
value
}
})
this.rules.push({
ruleName: '规则说明',
contents: ruleContents
})
let elseContents = item.couponRuleRemind ? item.couponRuleRemind.split(
';') : []
elseContents = elseContents.map(value => {
return {
value
}
})
this.rules.push({
ruleName: '补充说明',
contents: elseContents
})
}
})
} else {
uni.showToast({
title: res.message,
icon: 'none'
})
}
}).catch(err => {
uni.showToast({
title: err,
icon: 'none'
})
})
},
recordDeviceInfo() { //---记录设备信息
this.statusBarHeight = uni.getSystemInfoSync().statusBarHeight // 状态栏高度
this.capsule = uni.getMenuButtonBoundingClientRect() // 胶囊大小、位置数据
this.navHeight = (this.capsule.top - this.statusBarHeight) * 2 + this.capsule.height // 导航栏高度
......@@ -298,20 +376,23 @@ export default {
},
onLoad(options) {
this.$commonjs.getCompanyId(options)
this.openid = uni.getStorageSync('openid')
this.userId = uni.getStorageSync('userId')
this.findPageMarketFun()
this.recordDeviceInfo()
this.options = options
if(this.options.tip === 'true') {// 从模板选择页进入
if (this.options.tip === 'true') { // 从模板选择页进入
this.show = true
this.showtip = true
}else if(this.options.index == 1) {// 从vlog首页进入
this.postCartTip = true
} else if (this.options.index == 1) { // 从vlog首页进入
this.show = true
}else {// 扫码进入本页
} else { // 扫码进入本页
this.handleWhetherToVotePage()
}
if(uni.getStorageSync('location')) return
if (uni.getStorageSync('location')) return
uni.getLocation({//获取定位
uni.getLocation({ //获取定位
type: 'wgs84',
success: res => {
uni.setStorageSync('location', JSON.stringify(res))
......@@ -333,6 +414,7 @@ export default {
padding: 0 24rpx;
background: linear-gradient(to right bottom, #c778f350, #66ddad50, #68d6de50);
z-index: 0;
&::after {
content: '';
width: 100%;
......@@ -343,25 +425,48 @@ export default {
z-index: -1;
background: linear-gradient(to top, #f7f7f7, #f7f7f7 80%, transparent 100%);
}
/deep/.u-mask {
display: flex;
justify-content: center;
align-items: center;
transform: scale(1);
}
.coupon {
position: fixed;
right: -30rpx;
bottom: 200rpx;
width: 180rpx;
height: 180rpx;
.coupon-img {
width: 100%;
height: 100%;
}
.coupon-price {
position: absolute;
bottom: 64rpx;
left: 50%;
transform: translateX(-50%);
font-size: 40rpx;
font-weight: 700;
color: #fff;
}
.r-symbol {
font-size: 10rpx;
}
}
}
.nav-bar {
font-size: 36rpx;
font-weight: 700;
z-index: 9;
}
.scroll-view {
display: flex;
width: calc(100% + 48rpx);
......@@ -371,34 +476,40 @@ export default {
overflow-x: auto;
padding: 46rpx 0 0 24rpx;
margin-bottom: 48rpx;
&::-webkit-scrollbar {
display: none;
}
.item {
display: flex;
flex-direction: column;
align-items: center;
margin-right: 24rpx;
}
.img {
width: 200rpx;
height: 136rpx;
border-radius: 16rpx;
margin-bottom: 16rpx;
box-shadow: 0px 0px 8px 2px rgba(0,0,0,0.12);
box-shadow: 0px 0px 8px 2px rgba(0, 0, 0, 0.12);
overflow: hidden;
}
.title {
font-size: 28rpx;
font-weight: 700;
}
}
.private-custom {
.title {
position: relative;
margin-bottom: 24rpx;
font-size: 32rpx;
font-weight: 700;
&::after {
content: '';
width: 128rpx;
......@@ -409,23 +520,28 @@ export default {
background: url('@/pages/album/static/album/private-custom.png') no-repeat;
}
}
.demo-water {
image {
border-radius: 16rpx 16rpx 0 0;
height: 458rpx;
width: 100%;
}
/deep/.u-wrap,
/deep/.u-lazy-item {
broder-radius: 16rpx 16rpx 0 0 !important;
}
}
.left.demo-water {
margin-right: 14rpx;
image {
height: 400rpx;
}
}
.info-box {
display: flex;
flex-direction: column;
......@@ -437,13 +553,16 @@ export default {
box-sizing: border-box;
border-radius: 0 0 16rpx 16rpx;
color: #fff;
.item-title {
font-size: 28rpx;
font-weight: 700;
}
.slogan {
font-size: 24rpx;
}
.img-btn {
display: flex;
justify-content: center;
......@@ -455,9 +574,11 @@ export default {
color: #333;
font-size: 22rpx;
}
.bottom {
display: flex;
justify-content: space-between;
.count {
font-size: 28rpx;
color: #ececec;
......@@ -465,20 +586,24 @@ export default {
}
}
}
.mask {
width: 504rpx;
height: 720rpx;
.img-box {
position: relative;
margin-bottom: 32rpx;
width: 100%;
height: 100%;
.close {
position: absolute;
top: -64rpx;
right: 24rpx;
color: #fff;
font-size: 40rpx;
&::after {
position: absolute;
content: '';
......@@ -490,6 +615,7 @@ export default {
border-left: 1px dotted #fff;
}
}
.bg {
position: absolute;
left: 0;
......@@ -498,51 +624,83 @@ export default {
height: 100%;
z-index: -1;
}
.my-card {
width: 85%;
height: 340rpx;
}
}
.post-card,
.coupon-box,
.rules {
display: flex;
flex-direction: column;
align-items: center;
padding: 66rpx 0 24rpx 0;
height: 100%;
overflow-y: auto;
}
.post-card {
justify-content: space-between;
font-size: 36rpx;
.thank {
font-size: 28rpx;
color: #999;
}
.tip-content {
display: flex;
flex-direction: column;
align-items: center;
}
.address {
font-size: 24rpx;
font-weight: 700;
}
}
.coupon-box {
justify-content: space-between;
font-size: 36rpx;
.congra {
font-weight: 700;
}
.price {
margin: 0 6rpx;
font-size: 64rpx;
font-weight: 700;
color: #EE520E;
margin: 0 16rpx;
}
.use-rule {
.use-rule,
.address {
font-size: 24rpx;
color: #333;
}
.address {
font-size: 24rpx;
font-weight: 700;
}
}
.rules {
padding: 50rpx 32rpx 24rpx;
.title {
font-size: 36rpx;
font-weight: 700;
margin-bottom: 48rpx;
}
.block {
font-size: 32rpx;
align-self: flex-start;
.name {
display: inline-block;
padding: 4rpx 16rpx;
......@@ -552,26 +710,28 @@ export default {
background-color: #000;
color: #fff;
}
.small-font {
display: flex;
font-size: 20rpx;
}
.small-font:not(:last-child) {
margin-bottom: 16rpx;
}
.dot {
margin-right: 10rpx;
}
}
.block:not(:last-child) {
margin-bottom: 32rpx;
}
}
/deep/.u-btn {
width: 304rpx;
}
}
.rules {
}
</style>
......@@ -60,7 +60,6 @@ export default {
openid: uni.getStorageSync('openid'), //openid
templateIds//模板Id
}
uni.setStorageSync('merchantId', data.merchantId)
this.$request('wechatUser/pdAlbum/saveVisitorSurvey', data).then(res => {
if (res.code === '00') {
uni.showToast({
......@@ -68,7 +67,7 @@ export default {
icon: 'success'
})
uni.navigateTo({
url: './albumIndex?tip=true'
url: `./albumIndex?tip=true&merchantId=${data.merchantId}`
})
}else{
uni.showToast({
......
<template>
<view class="big-box" :style="{'padding-top': statusBarHeight + 'px'}">
<view class="big-box" :style="{'padding-top': statusBarHeight + 'px'}" v-if="statusBarHeight">
<view class="nav-bar" :style="{'height': navHeight + 'px'}"></view>
<text class="title">扫脸获取您的照片</text>
<view class="scan">
......@@ -57,6 +57,7 @@ export default {
maskCount: 3,//弹窗倒计时
queryData: {},//查询参数
defaultBrightness: 0.5,//屏幕亮度
options: {},//路由传参
}
},
methods: {
......@@ -135,7 +136,7 @@ export default {
})
},
getQueryField() {//---获取查询参数
const merchantId = uni.getStorageSync('merchantId')
const merchantId = this.options.merchantId
this.$request('scenic/albumConfig/getAlbumConfig',{merchantId}).then(res => {//创建任务
if (res.code === '00') {
......@@ -228,7 +229,8 @@ export default {
})
},
},
onLoad() {
onLoad(options) {
this.options = options
this.recordDeviceInfo()
uni.getScreenBrightness({//获取屏幕亮度
success(res) {
......
......@@ -9,10 +9,12 @@
<image src="../static/album/myPhoto01.png"></image>
</view>
<u-picker mode="selector" v-model="orderShow" :default-selector="[orderType]" :range="option" range-key="areaName" @confirm="industrysTypeConfirm($event)" @cancel="cancel"></u-picker>
<view v-for="(item,index) in merchantList" :key="index" class="left-project" :class="[projectCheck==0?'left-projectDe':'']" @click="projectClick(index,item.id)">
<template v-for="(item,index) in merchantList">
<view :key="index" v-if="index<2" class="left-project" :class="[projectCheck==0?'left-projectDe':'']" @click="projectClick(index,item.id)">
{{item.name}}
<i>{{previewData.length}}</i>
</view>
</template>
</view>
<view class="address-right" @click="projectMoreFun()" v-if="merchantList.length>2">
<u-icon name="more-dot-fill"></u-icon>
......@@ -175,7 +177,7 @@ export default {
this.openid = uni.getStorageSync('openid') //获取openid
this.faceIds = JSON.parse(option.faceIds)
this.location = JSON.parse(uni.getStorageSync('location'))
this.merchantId = uni.getStorageSync('merchantId')// 'z0015605022691a5945bbe463141668c'
this.merchantId = option.merchantId||''// 'z0015605022691a5945bbe463141668c'
this.obtainProvince()//获取省市区
this.inquireMerchant()//查询所有商户
this.getPhotos()//照片列表
......@@ -330,10 +332,11 @@ export default {
tickets:1,
productId:this.merchantMessage[0].merchantExtendProjectId,
orderSource:11,//指定为相册优惠券
merchantType:11,//指定为相册
}
this.$request('wechatUser/myPage/usableCouponList',data).then((res)=>{
if(res.code=='00'){
if(res.data.masterSlaveCouponList!=undefined){
if(res.data.masterSlaveCouponList.length>0){
res.data.masterSlaveCouponList.forEach(item=>{
item['couponPrice']=item.deductPrice
})
......@@ -463,6 +466,7 @@ export default {
overflow-x: auto;
.left-name {
flex-shrink: 0;
font-size: 32rpx;
color: #999999;
line-height: 76rpx;
......@@ -470,6 +474,7 @@ export default {
}
.left-picker {
flex-shrink:0;
display: flex;
font-size: 32rpx;
color: #333333;
......
......@@ -3,7 +3,8 @@
<view class="bg">
<image src="../static/vlog/icon/camera.png"></image>
</view>
<camera class="camera" device-position="front" flash="off" @error="error" @initdone="initdone"></camera>
<camera class="camera" device-position="front" flash="off" @error="error"></camera>
<!-- <camera class="camera" device-position="front" flash="off" @error="error" @initdone="initdone"></camera> -->
<view class="surface" v-show="show">
<view>请正对镜头</view>
<text>{{text}}</text>
......@@ -47,6 +48,7 @@ export default {
}
},
onLoad() { //代替 vue 里面的 created
this.initdone()
},
onReady() { //代替 vue 里面的 mounted
},
......
static/img/my/coupon.png

11.2 KB | W: | H:

static/img/my/coupon.png

9.02 KB | W: | H:

static/img/my/coupon.png
static/img/my/coupon.png
static/img/my/coupon.png
static/img/my/coupon.png
  • 2-up
  • Swipe
  • Onion skin
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment