Commit f108024e authored by qipeng's avatar qipeng

我的相册

parent 6da98198
......@@ -6,62 +6,32 @@
<view class="left-name">照片来源</view>
<view class="left-picker" @click="orderShow=true">
<i>{{cityName}}</i>
<image src="../../../static/img/album/myPhoto01.png"></image>
<image src="../static/album/myPhoto01.png"></image>
</view>
<u-picker mode="selector" v-model="orderShow" :default-selector="[orderType]" :range="option" range-key="cateName" @confirm="industrysTypeConfirm($event)" @cancel="cancel"></u-picker>
<view class="left-project" :class="[projectCheck==0?'left-projectDe':'']" @click="projectClick(0)" >
长江索道
<i>6</i>
<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)">
{{item.name}}
<i>{{previewData.length}}</i>
</view>
<view class="left-project" :class="[projectCheck==1?'left-projectDe':'']" @click="projectClick(1)" >
定制旅拍
<i>8</i>
</view>
</view>
<view class="address-right" @click="projectMoreFun()">
<view class="address-right" @click="projectMoreFun()" v-if="merchantList.length>2">
<u-icon name="more-dot-fill"></u-icon>
</view>
</view>
<!--头部更多-->
<view class="album-addressMore" v-if="projectMoreType==true">
<view class="addressMore-name">长江索道(6)</view>
<view class="addressMore-name">定制旅拍(8)</view>
<view class="addressMore-name" v-for="(item,index) in merchantList" :key="index" >{{item.name}}({{previewData.length}})</view>
</view>
<!--全选按钮-->
<view class="album-checkAll">
<u-checkbox v-model="checkProjectAll" >全选</u-checkbox>
<u-checkbox v-model="checkProjectAll" @change="checkProjectAllFun()">全选</u-checkbox>
<view class="checkAll-tips">未下载影像保留15天</view>
</view>
<!--主体循环-->
<view class="album-subject">
<view class="subject-List">
<image class="list-image" src="../../../static/img/hghg/dialog.png"></image>
<u-checkbox v-model="checkProjectAll" shape="circle" class="list-uCheck" ></u-checkbox>
<view class="list-mask">预览</view>
</view>
<view class="subject-List">
<image class="list-image" src="../../../static/img/hghg/dialog.png"></image>
<u-checkbox v-model="checkProjectAll" shape="circle" class="list-uCheck" ></u-checkbox>
<view class="list-mask">预览</view>
</view>
<view class="subject-List">
<image class="list-image" src="../../../static/img/hghg/dialog.png"></image>
<u-checkbox v-model="checkProjectAll" shape="circle" class="list-uCheck" ></u-checkbox>
<view class="list-mask">预览</view>
</view>
<view class="subject-List">
<image class="list-image" src="../../../static/img/hghg/dialog.png"></image>
<u-checkbox v-model="checkProjectAll" shape="circle" class="list-uCheck" ></u-checkbox>
<view class="list-mask">预览</view>
</view>
<view class="subject-List">
<image class="list-image" src="../../../static/img/hghg/dialog.png"></image>
<u-checkbox v-model="checkProjectAll" shape="circle" class="list-uCheck" ></u-checkbox>
<view class="list-mask">预览</view>
</view>
<view class="subject-List">
<image class="list-image" src="../../../static/img/hghg/dialog.png"></image>
<u-checkbox v-model="checkProjectAll" shape="circle" class="list-uCheck" ></u-checkbox>
<view class="subject-List" v-for="(item,index) in previewData" :key="index" @click="projectCheckPhoto(index)" >
<image class="list-image" :src="item.faceSourceUrl" ></image>
<u-checkbox v-model="item.checkType" v-if="checkTypeFun==true" @click.stop.native="()=>{}" @change="stopPhoto($event)" shape="circle" class="list-uCheck"></u-checkbox>
<view class="list-mask">预览</view>
</view>
</view>
......@@ -88,24 +58,24 @@
<view class="bootom-btn">去下载</view>
</view>
<!--预览-->
<view class="album-maskPreview">
<view class="album-maskPreview" v-if="maskPreviewType==true" @click="maskPreviewType=false">
<view class="maskPreview-Num">{{previewNum+1}}/{{previewData.length}}</view>
<view class="maskPreview-img" @touchstart="start" @touchend="end" @touchmove="move">
<template v-if="previewData.length==1">
<image class="img-center" :src="previewData[previewNum].src"></image>
<image class="img-center" :src="previewData[previewNum].faceSourceUrl"></image>
</template>
<template v-else>
<image class="img-left" v-if="previewNum==0" :src="previewData[previewData.length-1].src"></image>
<image class="img-left" v-else :src="previewData[previewNum-1].src"></image>
<image class="img-left" v-if="previewNum==0" :src="previewData[previewData.length-1].faceSourceUrl"></image>
<image class="img-left" v-else :src="previewData[previewNum-1].faceSourceUrl"></image>
<image class="img-center" :style="{'right':touchRight,'left':touchLeft}" :src="previewData[previewNum].src"></image>
<image class="img-center" :style="{right:touchRight +'rpx',left:touchLeft +'rpx'}" :src="previewData[previewNum].faceSourceUrl"></image>
<image class="img-right" v-if="previewNum==previewData.length-1" :src="previewData[0].src"></image>
<image class="img-right" v-else :src="previewData[previewNum+1].src"></image>
<image class="img-right" v-if="previewNum==previewData.length-1" :src="previewData[0].faceSourceUrl"></image>
<image class="img-right" v-else :src="previewData[previewNum+1].faceSourceUrl"></image>
</template>
</view>
<view class="maskPreview-check">
<u-checkbox v-model="previewData[previewNum].type" shape="circle" class="maskPreview-Check" ></u-checkbox>
<view class="maskPreview-check" v-if="checkTypeFun==true">
<u-checkbox v-model="previewData[previewNum].checkType" @click.stop.native="()=>{}" @change="stopPhoto($event)" shape="circle" class="maskPreview-Check"></u-checkbox>
</view>
</view>
<!--明细-->
......@@ -113,7 +83,7 @@
<view class="maskDetail-content">
<view class="content-title">
明细
<u-icon class="title-close" name="close-circle" @click="maskDetail=false" ></u-icon>
<u-icon class="title-close" name="close-circle" @click="maskDetail=false"></u-icon>
</view>
<view class="content-label">我的相片</view>
<view class="content-money">
......@@ -141,99 +111,203 @@ export default {
},
data() {
return {
orderShow:false,//头部城市选择
option: [
{ cateName: '全部', id: 0 },
{ cateName: '景区', id: 1 },
{ cateName: '酒店', id: 2 },
{ cateName: '餐饮', id: 3 },
{ cateName: '特产', id: 4 },
// { cateName: '运营车', id: 5 },
// { cateName: '组合订单', id: 10 },
],
cityName:'重庆',
projectCheck:0,//当前选择的产品
projectMoreType:false,//是否显示更多产品
checkProjectAll:false,//所有产品全选
maskDetail:false,
previewData:[//图片预览
{
type:false,
src:'../../../static/img/hghg/dialog.png'
},
{
type:false,
src:'../../../static/img/coupon/coupon.jpg'
},
{
type:false,
src:'../../../static/img/common/getTicketBg.jpg'
},
faceIds: [], //查询照片ID
openid:'',
orderShow: false, //头部城市选择
option: [],//城市
cityName: '重庆',
areaId:'100500000',//城市ID
merchantId:'',//商户ID
location: {},//位置信息
projectCheck: 0, //当前选择的产品
merchantList:[],//头部列表
projectMoreType: false, //是否显示更多产品
checkProjectAll: false, //所有产品全选
maskDetail: false,
maskPreviewType:false,//遮罩预览
previewData: [ //图片预览
// {
// type: false,
// src: '../static/album/customPic.png'
// },
],
previewNum:0,//当前是第几张图片
previewNum: 0, //当前是第几张图片
checkTypeFun:true,//刷新选项
//左右滑动监听开始
startData: {
clientX: '',
clientY: '',
},
transition:'',
transition: '',
touch: {},
touchLeft:0,
touchRight:0,
touchLeft: 0,
touchRight: 0,
touchType: 0, //向左0++ 向右1--
//左右滑动 监听结束
}
},
onLoad(option) {
this.openid = uni.getStorageSync('openid') //获取openid
this.faceIds = JSON.parse(option.faceIds)
this.location = JSON.parse(uni.getStorageSync('location'))
this.merchantId = uni.getStorageSync('merchantId')
this.obtainProvince()//获取省市区
this.inquireMerchant()//查询所有商户
this.getPhotos()//照片列表
},
methods: {
industrysTypeConfirm(e) {//单列----分类 点击确定 城市
this.cityName = this.option[e].cateName
obtainProvince(){//获取省列表
this.$request('scenic/search/loadAreaByCity',{
areaLevel:1,
inChina:0
}).then((res)=>{
if(res.code=='00'){
this.option = res.data
}else{
this.$refs.uToast.show({
title: ret.message,
type: 'error',
})
}
})
},
inquireMerchant(){//查询所有商户
var data = {
id:this.merchantId,//商户ID
province:this.areaId,//省市ID
areaCode:this.areaId,//省市ID
userlatitude:this.location.latitude,//纬度
userlongitude:this.location.longitude,//经度
merchantType:1,//
}
this.$request('scenic/newMerchant/findAllMerchant',data).then((res)=>{
if(res.code=='00'){
this.merchantList = res.data
}else{
this.$refs.uToast.show({
title: ret.message,
type: 'error',
})
}
})
},
cancel() {//单列 点击取消
getPhotos(){//照片
var data = {
faceIds:this.faceIds,//照片ID
openid:this.openid,
merchantId:this.merchantId,//商户ID
}
this.$request('wechatUser/pdFace/list',data).then((res)=>{
if(res.code=='00'){
this.previewData = res.data
this.previewData.forEach((item,index)=>{
item['checkType'] = false
})
}else{
this.$refs.uToast.show({
title: ret.message,
type: 'error',
})
}
})
},
industrysTypeConfirm(e) { //单列----分类 点击确定 城市
this.cityName = this.option[e].areaName
this.areaId = this.option[e].areaId
this.inquireMerchant()
},
cancel() { //单列 点击取消
this.orderShow = false
},
projectClick(num){//产品选择
projectClick(num,id) { //商户选择
this.projectCheck = num
this.merchantId = id
this.inquireMerchant()
},
projectMoreFun(){//更多产品显示
if(this.projectMoreType==false){
this.projectMoreType = true
projectCheckPhoto(index){//点击预览
this.previewNum = index
this.maskPreviewType = true
},
stopPhoto(){//刷新显示
this.checkTypeFun = false
this.checkTypeFun = true
if(this.checkProjectAll==true){
this.checkProjectAll=false
}
},
checkProjectAllFun(){//是否全选
if(this.checkProjectAll==true){
this.checkProjectAll = false
this.previewData.forEach((item,index)=>{
item.checkType = false
})
}else{
this.checkProjectAll = true
this.previewData.forEach((item,index)=>{
item.checkType = true
})
}
},
projectMoreFun() { //更多产品显示
if (this.projectMoreType == false) {
this.projectMoreType = true
} else {
this.projectMoreType = false
}
},
// 触摸touch事件
start(e){ //@touchstart 触摸开始
start(e) { //@touchstart 触摸开始
this.transition = '.1s'
this.startData.clientX = e.changedTouches[0].clientX //手指按下时的X坐标
this.startData.clientY = e.changedTouches[0].clientY //手指按下时的Y坐标
},
end(e){ //@touchend触摸结束
end(e) { //@touchend触摸结束
this.transition = '.5s'
if(Math.abs(this.touch.clientX-this.startData.clientX) > 100) { //在事件结束时,判断滑动的距离是否达到出发需要执行事件的要求
if (Math.abs(this.touch.clientX - this.startData.clientX) > 100) { //在事件结束时,判断滑动的距离是否达到出发需要执行事件的要求
console.log('执行查看跳转事件')
// this.touch = {};
//动画结束后回到原位 切换图片
this.touchRight = 0
this.touchLeft = 0
//判断当前应该显示哪张照片
if (this.touchType == 1) {
if (this.previewNum == 0) {
this.previewNum = this.previewData.length - 1
} else {
this.previewNum--
}
} else {
if (this.previewNum == this.previewData.length - 1) {
this.previewNum = 0
} else {
this.previewNum++
}
}
} else {
console.log('滑动距离不够,不执行跳转')
// this.touch = {};
//动画结束后回到原位
this.touchRight = 0
this.touchLeft = 0
}
},
move(event) { //@touchmove触摸移动
let touch = event.touches[0] //滑动过程中,手指滑动的坐标信息 返回的是Objcet对象
this.touch = touch
let data = touch.clientX - this.startData.clientX
if(touch.clientX < this.startData.clientX) { //向左移动
if (touch.clientX < this.startData.clientX) { //向左移动
console.log('左滑动')
console.log(touch.clientX)
console.log(this.startData.clientX)
this.touchRight = touch.clientX-this.startData.clientX
//方向RPX值
this.touchRight = this.startData.clientX - touch.clientX
this.touchType = 0
}
if(touch.clientX > this.startData.clientX) { //向右移动
if (touch.clientX > this.startData.clientX) { //向右移动
console.log('右滑动')
console.log(touch.clientX)
console.log(this.startData.clientX)
this.touchLeft = touch.clientX-this.startData.clientX
//方向RPX值
this.touchLeft = touch.clientX - this.startData.clientX
this.touchType = 1
}
},
}
......@@ -241,10 +315,12 @@ export default {
</script>
<style scoped lang="scss">
page{
page {
background-color: #F7F7F7;
}
.albumBox{ // 76=16 - 44 - 16 98 =34 - 32 - 32
}
.albumBox {
// 76=16 - 44 - 16 98 =34 - 32 - 32
display: flex;
flex-direction: column;
height: 100%;
......@@ -252,8 +328,9 @@ page{
padding-bottom: 98rpx;
padding-top: 174rpx;
overflow: auto;
}
.album-address{
}
.album-address {
display: flex;
justify-content: space-between;
width: 100%;
......@@ -266,37 +343,43 @@ page{
top: 0;
left: 0;
z-index: 20;
.address-left{
.address-left {
display: flex;
flex: 1;
box-shadow: inset -16px 0px 8px 0px rgba(255, 255, 255, 0.2);
overflow-x: auto;
.left-name{
.left-name {
font-size: 32rpx;
color: #999999;
line-height: 76rpx;
margin-right: 48rpx
}
.left-picker{
.left-picker {
display: flex;
font-size: 32rpx;
color: #333333;
line-height: 76rpx;
margin-right: 24rpx;
image{
image {
width: 26rpx;
height: 26rpx;
margin-top: 25rpx;
margin-left: 8rpx;
}
}
.left-project{
.left-project {
font-size: 32rpx;
color: #333333;
line-height: 76rpx;
margin-right: 48rpx;
position: relative;
i{
i {
display: block;
width: 24rpx;
height: 24rpx;
......@@ -311,20 +394,24 @@ page{
right: -24rpx;
}
}
.left-projectDe{
.left-projectDe {
color: #3688FF;
font-weight: bold;
}
}
.address-right{
.address-right {
display: flex;
}
}
.album-address::-webkit-scrollbar{
}
.album-address::-webkit-scrollbar {
display: none;
}
.album-addressMore{
}
.album-addressMore {
width: 232rpx;
padding: 24rpx 24rpx 0 24rpx;
box-shadow: 0 0 16px 0 rgba(0, 0, 0, 0.1);
......@@ -332,14 +419,16 @@ page{
top: 76rpx;
right: 0;
z-index: 20;
.addressMore-name{
.addressMore-name {
font-size: 32rpx;
color: #333333;
line-height: 44rpx;
margin-bottom: 24rpx;
}
}
.album-checkAll{
}
.album-checkAll {
display: flex;
width: 100%;
height: 98rpx;
......@@ -349,39 +438,46 @@ page{
top: 76rpx;
left: 0;
z-index: 20;
/deep/ .u-checkbox{
/deep/ .u-checkbox {
line-height: 34rpx !important;
}
/deep/ .u-checkbox__label{
/deep/ .u-checkbox__label {
font-size: 24rpx !important;
}
.checkAll-tips{
.checkAll-tips {
font-size: 24rpx;
color: #999999;
line-height: 46rpx;
margin-left: 24rpx;
}
}
.album-subject{
}
.album-subject {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
flex: 1;
padding: 0 24rpx 0 24rpx;
overflow: auto;
.subject-List{
.subject-List {
width: 344rpx;
height: 460rpx;
margin-bottom: 24rpx;
border-radius: 16rpx;
overflow: hidden;
position: relative;
.list-image{
.list-image {
display: block;
width: 344rpx;
height: 460rpx;
}
.list-mask{
.list-mask {
width: 344rpx;
height: 64rpx;
background-color: rgba(0, 0, 0, 0.2);
......@@ -393,52 +489,60 @@ page{
left: 0;
bottom: 0;
}
.list-uCheck{
.list-uCheck {
position: absolute;
right: 0;
top: 24rpx;
}
}
}
.album-bottom{
}
.album-bottom {
display: flex;
justify-content: space-between;
width: 100%;
height: 98rpx;
padding: 0 0 0 24rpx;
box-shadow: 0rpx -2rpx 8rpx 2rpx rgba(0,0,0,0.08);
box-shadow: 0rpx -2rpx 8rpx 2rpx rgba(0, 0, 0, 0.08);
position: fixed;
bottom: 0;
left: 0;
z-index: 22;
.bottom-left{
z-index: 25;
.bottom-left {
flex: 1;
display: flex;
line-height: 98rpx;
.left-oldMoney{
.left-oldMoney {
font-size: 24rpx;
color: #999999;
text-decoration: line-through;
line-height: 110rpx;
margin-right: 8rpx;
}
.left-newMoney{
.left-newMoney {
font-size: 40rpx;
color: #EE520E;
font-weight: bold;
margin-right: 68rpx;
}
.left-detail{
.left-detail {
display: flex;
color: #333333;
margin-right: 20rpx;
text{
text {
font-size: 28rpx;
line-height: 98rpx;
margin-right: 10rpx;
}
}
.left-num{
.left-num {
width: 32rpx;
height: 32rpx;
border-radius: 50%;
......@@ -450,7 +554,8 @@ page{
color: #fff;
margin-top: 34rpx;
}
.left-mask{
.left-mask {
width: 128rpx;
height: 48rpx;
font-size: 24rpx;
......@@ -463,11 +568,14 @@ page{
position: absolute;
left: 350rpx;
top: -24rpx;
.mask-transparent{
width:0px;
height:0px;
border:10rpx solid transparent;/*以下四个样式对应四种三角形,任选其一即可实现*/
border-top-color:#EE520E;
z-index: 23;
.mask-transparent {
width: 0px;
height: 0px;
border: 10rpx solid transparent;
/*以下四个样式对应四种三角形,任选其一即可实现*/
border-top-color: #EE520E;
/* border-left-color:lightseagreen; */
/* border-right-color:lightseagreen; */
// border-bottom-color:lightseagreen;
......@@ -477,24 +585,28 @@ page{
}
}
}
.bottom-Detail{
.bottom-Detail {
flex: 1;
display: flex;
flex-direction: column;
.detail-total{
.detail-total {
font-size: 28rpx;
line-height: 40rpx;
color: 191919;
margin-bottom: 4rpx;
margin-top: 16rpx;
}
.detail-favorable{
.detail-favorable {
font-size: 16rpx;
color: #FF4308;
line-height: 22rpx;
}
}
.bootom-btn{
.bootom-btn {
width: 240rpx;
height: 98rpx;
background-color: #3688FF;
......@@ -504,16 +616,18 @@ page{
text-align: center;
line-height: 98rpx;
}
}
.album-maskDetail{
}
.album-maskDetail {
position: fixed;
top: 0;
right: 0;
bottom: 98rpx;
left: 0;
z-index: 19;
background-color: rgba(0,0,0,.3);
.maskDetail-content{
z-index: 24;
background-color: rgba(0, 0, 0, .3);
.maskDetail-content {
width: 100%;
padding: 32rpx;
background-color: #fff;
......@@ -521,7 +635,8 @@ page{
position: fixed;
left: 0;
bottom: 98rpx;
.content-title{
.content-title {
width: 100%;
font-size: 36rpx;
color: #333333;
......@@ -530,60 +645,70 @@ page{
text-align: center;
font-weight: bold;
position: relative;
.title-close{
.title-close {
position: absolute;
top: 8rpx;
right: 0;
}
}
.content-label{
.content-label {
font-size: 36rpx;
color: #191919;
font-weight: bold;
line-height: 50rpx;
margin-bottom: 32rpx;
}
.content-money{
.content-money {
display: flex;
justify-content: space-between;
margin-bottom: 8rpx;
.money-name{
.money-name {
font-size: 32rpx;
color: #191919;
line-height: 44rpx;
}
.money-text{
.money-text {
font-size: 32rpx;
color: #333333;
line-height: 44rpx;
font-weight: bold;
}
}
.content-favorable{
.content-favorable {
display: flex;
justify-content: space-between;
.favorable-name{
.favorable-name {
font-size: 28rpx;
color: #FC771D;
line-height: 40rpx;
}
.favorable-text{
.favorable-text {
font-size: 28rpx;
color: #FC771D;
line-height: 40rpx;
}
}
}
}
.album-maskPreview{
}
.album-maskPreview {
position: fixed;
top: 0;
right: 0;
bottom: 98rpx;
left: 0;
z-index: 22;
background-color: rgba(0,0,0,.3);
.maskPreview-Num{
background-color: rgba(0, 0, 0, .3);
.maskPreview-Num {
font-size: 28rpx;
color: #FFFFFF;
line-height: 40rpx;
......@@ -591,14 +716,16 @@ page{
top: 72rpx;
right: 32rpx;
}
.maskPreview-img{
.maskPreview-img {
display: flex;
width: 100%;
height: 794rpx;
position: fixed;
top: 152rpx;
left: 0;
.img-left{
.img-left {
width: 520rpx;
height: 692rpx;
border-radius: 16rpx 16rpx 16rpx 16rpx;
......@@ -608,7 +735,8 @@ page{
top: 0;
bottom: 0;
}
.img-right{
.img-right {
width: 520rpx;
height: 692rpx;
border-radius: 16rpx 16rpx 16rpx 16rpx;
......@@ -618,7 +746,8 @@ page{
top: 0;
bottom: 0;
}
.img-center{
.img-center {
width: 596rpx;
height: 794rpx;
border-radius: 16rpx 16rpx 16rpx 16rpx;
......@@ -630,7 +759,8 @@ page{
left: 0;
}
}
.maskPreview-check{
.maskPreview-check {
width: 48rpx;
height: 48rpx;
margin: auto;
......@@ -638,12 +768,13 @@ page{
top: 968rpx;
left: 0;
right: 0;
/deep/ .u-checkbox__icon-wrap{
/deep/ .u-checkbox__icon-wrap {
width: 50rpx !important;
height: 50rpx !important;
color: #fff !important;
border:solid 2px #fff;
border: solid 2px #fff;
}
}
}
}
</style>
\ No newline at end of file
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