You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
994 lines
29 KiB
994 lines
29 KiB
<template>
|
|
|
|
<view>
|
|
|
|
<view id="find">
|
|
<view class="search-box">
|
|
<view class="search">
|
|
<view class="iconfont icon-sousuo"></view>
|
|
<input type="text" placeholder="搜索关键词" @input="changeKeywords" @confirm="jumpfind" />
|
|
</view>
|
|
|
|
</view>
|
|
<view class="banner" v-if="banner.length">
|
|
<swiper indicator-dots="true" autoplay="true" circular="true" style="height: 180px">
|
|
<swiper-item v-for="(item, index) in banner" :key="index" @tap="jumpSearch" :data-key="item.keywords">
|
|
<image :src="item.img"></image>
|
|
</swiper-item>
|
|
</swiper>
|
|
</view>
|
|
<view class="menu-box">
|
|
<view class="navbar">
|
|
<view class="item" :class="activeIndex == 0? 'active' : ''" @tap="tabClick" data-index="0" style="flex: .5">
|
|
<span>全部</span>
|
|
</view>
|
|
<view class="item" :class="activeIndex == index+1 ? 'active' : ''" @tap="tabClick" v-for="(item, index) in conditions.categories" :key="index" v-if="index < 2" :data-index="index+1" :data-id="item.id">
|
|
<span>{{item.name}}</span>
|
|
</view>
|
|
<view class="item" :class="activeIndex == 3 ? 'active' : ''" @tap="moreClick" style="flex: .8">
|
|
<span>更多
|
|
<view class="iconfont icon-jiantou"></view>
|
|
</span>
|
|
</view>
|
|
<view class="item" @tap="filterClick" style="flex: .5">
|
|
<span>筛选
|
|
<view class="iconfont icon-filter"></view>
|
|
</span>
|
|
</view>
|
|
</view>
|
|
<!-- 点击更多弹出-->
|
|
<view class="more-list" v-if="isMore && conditions.categories.length">
|
|
<view class="item" :class="item.id == category_id ? 'active' : ''" v-for="(item, index) in conditions.categories" :key="index" @tap="changeCategories" :data-index="index" :data-id="item.id">{{item.name}}</view>
|
|
</view>
|
|
</view>
|
|
<view class="content-box" v-if="init">
|
|
<view v-if="list[0].length">
|
|
<view v-for="(items, idx) in list" :key="idx" >
|
|
<view class="something__box" v-for="(item, index) in items" :key="index" >
|
|
<view class="li-item">
|
|
<view class="something__item">
|
|
<view class="item__user">
|
|
<view class="user__img">
|
|
<image :src="item.avatar"></image>
|
|
</view>
|
|
<view class="user__title">
|
|
<view class="title__box">
|
|
<view class="title__title">
|
|
<span>{{item.nick_name}}</span>
|
|
</view>
|
|
</view>
|
|
<!--<view class="title__stick">
|
|
<i class="iconfont icon--zhidingtuijian"></i>
|
|
</view>-->
|
|
</view>
|
|
</view>
|
|
<view class="item__content">
|
|
<view class="item__title" @tap="copyText" :data-txt="item.description">
|
|
{{item.description}}
|
|
</view>
|
|
<!--<view class="read__more" bindtap="more">
|
|
{{text}}
|
|
</view>-->
|
|
<view class="item__list" v-if="item.img_list.length==1">
|
|
<!--如果图片长度为1,显示一张-->
|
|
<view class="img">
|
|
<image mode="widthFix" :src="item.img_list[0]"></image>
|
|
</view>
|
|
<!-- <view class="list__li">
|
|
<view style="background: url('https://timgsa.baidu.com/timg?image&quality=80&size=b9999_10000&sec=1524827781748&di=d50541539b9b5f3850170d97854fc380&imgtype=0&src=http%3A%2F%2Fwww.pp3.cn%2Fuploads%2F201704%2F20170815006.jpg'); background-position: center;background-repeat: no-repeat;background-size: cover;">
|
|
<span></span>
|
|
</view>
|
|
</view>-->
|
|
</view>
|
|
<view class="item__list" v-else>
|
|
<view class="list__li" v-for="(i, imgkey) in item.img_list" :key="imgkey" @tap="preImage" :data-index="index" :data-idx="idx" :data-url="i">
|
|
<view :style="'background: url(' + i + '); background-position: center;background-repeat: no-repeat;background-size: cover;'">
|
|
<span></span>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="time-txet">{{item.created_at}}</view>
|
|
<view class="tags" v-if="item.tags_list">
|
|
<view class="tag-item" v-for="(tag, n) in item.tags_list" :key="n">{{tag}}</view>
|
|
</view>
|
|
<view class="goods-box" v-if="item.goods" @tap="jumpDetail" :data-id="item.goods.id">
|
|
<view class="left-box">
|
|
<image :src="item.goods.img"></image>
|
|
</view>
|
|
<view class="right-box">
|
|
<view class="name">
|
|
{{item.goods.name}}
|
|
</view>
|
|
<view class="money">¥ {{item.goods.sell_price}}</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
</view>
|
|
<view class="bottom-btn mx-1px-top">
|
|
<view class="btn" :class="item.is_favorite ? 'active' : ''" :data-islike="item.is_favorite" @tap="favoriteClick" :data-index="index" :data-idx="idx" :data-id="item.id">
|
|
<span class="iconfont icon-Group3"></span>
|
|
<block v-if="item.is_favorite">已收藏</block>
|
|
<block v-else>收藏</block>
|
|
</view>
|
|
|
|
<view class="btn" @tap="downloadImgs" :data-urls="item.img_list">
|
|
<span class="iconfont icon-Group5"></span>
|
|
下载
|
|
</view>
|
|
|
|
</view>
|
|
</view>
|
|
|
|
<!--<view class="index__end" wx:if="{{page == total_pages}}">
|
|
已经全部加载完毕
|
|
</view>-->
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view v-else class="no-data">暂无数据</view>
|
|
</view>
|
|
<view class="maks" v-if="isMore" @tap="moreClick"></view>
|
|
<!-- 筛选-->
|
|
<view class="filter-box" v-if="isFitter" @tap="filterClick">
|
|
<view class="content" @tap.stop="jumpClose">
|
|
<view class="select" v-if="conditions.brands.length">
|
|
<view class="topic">
|
|
品牌
|
|
<span>(单选)</span>
|
|
</view>
|
|
<view class="list">
|
|
<view class="item" :class="index == brandIndex ? 'active' : ''" v-for="(item, index) in conditions.brands" :key="index" @tap.stop="radioBrand" :data-id="item.id" :data-name="item.name" :data-index="index">
|
|
{{item.name}}
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="select" v-if="conditions.tags.length">
|
|
<view class="topic">
|
|
推荐标签
|
|
<span>(最多选2个)</span>
|
|
</view>
|
|
<view class="list">
|
|
<view class="item" :class="item.isChoose == true ? 'active':''" v-for="(item, index) in conditions.tags" :key="index" @tap.stop="checkboxTag" :data-index="index" :data-id="item.id" :data-name="item.name" :data-isChoose="item.isChoose">
|
|
{{item.name}}
|
|
</view>
|
|
</view>
|
|
</view>
|
|
<view class="btn-box">
|
|
<view class="btn reset" @tap.stop="reset">重置</view>
|
|
<view class="btn confirm" @tap.stop="confirm">确定</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
|
|
|
|
<view class="menu-box flex-menu-box" :hidden="isHidden">
|
|
<view class="navbar">
|
|
<view class="item" :class="activeIndex == 0? 'active' : ''" @tap="tabClick" data-index="0" style="flex: .5">
|
|
<span>全部</span>
|
|
</view>
|
|
<view class="item" :class="activeIndex == index+1 ? 'active' : ''" @tap="tabClick" v-for="(item, index) in conditions.categories" :key="index" v-if="index < 2" :data-index="index+1" :data-id="item.id">
|
|
<span>{{item.name}}</span>
|
|
</view>
|
|
<view class="item" :class="activeIndex == 3 ? 'active' : ''" @tap="moreClick" style="flex: .8">
|
|
<span>更多
|
|
<view class="iconfont icon-jiantou"></view>
|
|
</span>
|
|
</view>
|
|
<view class="item" @tap="filterClick" style="flex: .5">
|
|
<span>筛选
|
|
<view class="iconfont icon-filter"></view>
|
|
</span>
|
|
</view>
|
|
</view>
|
|
<!-- 点击更多弹出-->
|
|
<view class="more-list" v-if="isMore && conditions.categories.length">
|
|
<view class="item" :class="item.id == category_id ? 'active' : ''" v-for="(item, index) in conditions.categories" :key="index" @tap="changeCategories" :data-index="index" :data-id="item.id">{{item.name}}</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
</view>
|
|
|
|
</template>
|
|
<script>
|
|
//import { config, pageLogin, getUrl, sandBox, cookieStorage, writePhotosAlbum } from '../../../lib/myapp.js';
|
|
|
|
import {pageLogin, getUrl,writePhotosAlbum} from '@/common/js/utils.js';
|
|
import permision from "@/common/js/permission.js"
|
|
|
|
let a;
|
|
|
|
export default {
|
|
data() {
|
|
return {
|
|
banner: [],
|
|
conditions: '',
|
|
//筛选条件
|
|
list: [],
|
|
more: true,
|
|
page: '',
|
|
init: false,
|
|
isFitter: false,
|
|
brandIndex: -1,
|
|
brandItem: '',
|
|
tagItem: [],
|
|
category_id: '',
|
|
//分类id
|
|
activeIndex: 0,
|
|
isMore: false,
|
|
category_index: -1,
|
|
isFavorite: false,
|
|
tagIds: [],
|
|
isTab: true,
|
|
keywords: '',
|
|
isHidden: true
|
|
};
|
|
},
|
|
|
|
//下拉刷新
|
|
onReachBottom() {
|
|
if (this.more) {
|
|
let page = this.page + 1;
|
|
let brand_id = this.brandItem.id || '';
|
|
let tags = '';
|
|
let arr = [];
|
|
|
|
if (this.tagItem.length) {
|
|
this.tagItem.forEach(val => {
|
|
arr.push(val.id);
|
|
});
|
|
tags = arr.join(',');
|
|
}
|
|
|
|
this.getContentList(page, brand_id, this.category_id, tags);
|
|
} else {
|
|
wx.showToast({
|
|
image: '../../../static/error.png',
|
|
title: '再拉也没有啦'
|
|
});
|
|
}
|
|
},
|
|
|
|
onShow() {
|
|
if (a) {
|
|
a = false;
|
|
return;
|
|
}
|
|
|
|
this.getBanners();
|
|
this.getConditions();
|
|
this.getContentList(1, '', '', '');
|
|
},
|
|
|
|
onLoad() {},
|
|
|
|
components: {},
|
|
props: {},
|
|
methods: {
|
|
|
|
|
|
changeKeywords(e) {
|
|
this.setData({
|
|
keywords: e.detail.value
|
|
});
|
|
},
|
|
|
|
// 监听滑动
|
|
onPageScroll(e) {
|
|
let scrollTop = e.scrollTop;
|
|
|
|
if (scrollTop > 300) {
|
|
this.setData({
|
|
isHidden: false
|
|
});
|
|
} else {
|
|
this.setData({
|
|
isHidden: true
|
|
});
|
|
}
|
|
},
|
|
|
|
//点击分类
|
|
tabClick(e) {
|
|
this.setData({
|
|
init: false
|
|
});
|
|
let index = e.currentTarget.dataset.index;
|
|
let id = e.currentTarget.dataset.id || '';
|
|
this.setData({
|
|
activeIndex: index,
|
|
category_id: id
|
|
});
|
|
let brand_id = this.brandItem.id || '';
|
|
let tags = '';
|
|
let arr = [];
|
|
|
|
if (this.tagItem.length) {
|
|
this.tagItem.forEach(val => {
|
|
arr.push(val.id);
|
|
});
|
|
tags = arr.join(',');
|
|
}
|
|
|
|
this.getContentList(1, brand_id, this.category_id, tags, true);
|
|
},
|
|
|
|
//复制文案
|
|
copyText(e) {
|
|
let txt = e.currentTarget.dataset.txt;
|
|
wx.setClipboardData({
|
|
data: txt,
|
|
|
|
success() {
|
|
wx.showToast({
|
|
title: "复制成功"
|
|
});
|
|
}
|
|
|
|
});
|
|
},
|
|
|
|
//点击更多
|
|
moreClick() {
|
|
this.setData({
|
|
isMore: !this.isMore
|
|
});
|
|
},
|
|
|
|
changeCategories(e) {
|
|
this.setData({
|
|
init: false
|
|
});
|
|
let id = e.currentTarget.dataset.id;
|
|
let index = e.currentTarget.dataset.index;
|
|
|
|
if (this.conditions.categories.length >= 2) {
|
|
if (index >= 2) {
|
|
this.setData({
|
|
activeIndex: 3
|
|
});
|
|
} else {
|
|
this.setData({
|
|
activeIndex: index + 1
|
|
});
|
|
}
|
|
}
|
|
|
|
this.setData({
|
|
category_id: id,
|
|
category_index: index
|
|
});
|
|
let brand_id = this.brandItem.id || '';
|
|
let tags = '';
|
|
let arr = [];
|
|
|
|
if (this.tagItem.length) {
|
|
this.tagItem.forEach(val => {
|
|
arr.push(val.id);
|
|
});
|
|
tags = arr.join(',');
|
|
}
|
|
|
|
this.moreClick();
|
|
this.getContentList(1, brand_id, this.category_id, tags, true);
|
|
},
|
|
|
|
//获取轮播图
|
|
getBanners() {
|
|
wx.showLoading({
|
|
title: "加载中",
|
|
mask: true
|
|
});
|
|
this.$http.get({
|
|
api: 'api/discover/banners'
|
|
}).then(res => {
|
|
if (res.statusCode == 200) {
|
|
res = res.data;
|
|
|
|
if (res.status) {
|
|
// this.setData({
|
|
// banner: res.data.banners
|
|
// });
|
|
|
|
this.banner=res.data.banners;
|
|
|
|
} else {
|
|
wx.showModal({
|
|
content: res.message || '请求失败',
|
|
showCancel: false
|
|
});
|
|
}
|
|
} else {
|
|
wx.showModal({
|
|
content: res.message || '请求失败',
|
|
showCancel: false
|
|
});
|
|
}
|
|
|
|
// this.setData({
|
|
// show: false
|
|
// });
|
|
|
|
this.show=false;
|
|
|
|
wx.hideLoading();
|
|
}).catch(rej => {
|
|
wx.hideLoading();
|
|
wx.showModal({
|
|
content: res.message || '请求失败',
|
|
showCancel: false
|
|
});
|
|
});
|
|
},
|
|
|
|
jumpDetail(e) {
|
|
let id = e.currentTarget.dataset.id;
|
|
wx.navigateTo({
|
|
url: `/pages/store/detail/detail?id=${id}`
|
|
});
|
|
},
|
|
|
|
//获取筛选条件
|
|
getConditions() {
|
|
wx.showLoading({
|
|
title: "加载中",
|
|
mask: true
|
|
});
|
|
this.$http.get({
|
|
api: 'api/discover/conditions'
|
|
}).then(res => {
|
|
if (res.statusCode == 200) {
|
|
res = res.data;
|
|
|
|
if (res.status) {
|
|
if (res.data.tags && res.data.tags.length) {
|
|
res.data.tags.forEach(val => {
|
|
val.isChoose = false;
|
|
});
|
|
}
|
|
|
|
this.setData({
|
|
conditions: res.data
|
|
});
|
|
} else {
|
|
wx.showModal({
|
|
content: res.message || '请求失败',
|
|
showCancel: false
|
|
});
|
|
}
|
|
} else {
|
|
wx.showModal({
|
|
content: res.message || '请求失败',
|
|
showCancel: false
|
|
});
|
|
}
|
|
|
|
// this.setData({
|
|
// show: false
|
|
// });
|
|
this.show=false;
|
|
|
|
wx.hideLoading();
|
|
}).catch(rej => {
|
|
wx.hideLoading();
|
|
wx.showModal({
|
|
content: res.message || '请求失败',
|
|
showCancel: false
|
|
});
|
|
});
|
|
},
|
|
|
|
//获取文章列表
|
|
getContentList(page, brand_id, category_id, tags, is_tab) {
|
|
wx.showLoading({
|
|
title: "加载中",
|
|
mask: true
|
|
});
|
|
let token = this.$cookieStorage.get('user_token') || '';
|
|
let tagList = '';
|
|
|
|
if (tags) {
|
|
tagList = tags.split(',').sort(function (a, b) {
|
|
return a - b;
|
|
}).join(',');
|
|
}
|
|
|
|
this.$http.get({
|
|
api: 'api/discover/content/list',
|
|
data: {
|
|
page: page,
|
|
brand_id: brand_id,
|
|
category_id: category_id,
|
|
tags: tagList
|
|
},
|
|
header: {
|
|
Authorization: token
|
|
}
|
|
}).then(res => {
|
|
if (res.statusCode == 200) {
|
|
res = res.data;
|
|
|
|
if (res.status) {
|
|
if (is_tab) {
|
|
this.setData({
|
|
list: []
|
|
});
|
|
}
|
|
|
|
let pages = res.meta.pagination;
|
|
let current_page = pages.current_page;
|
|
let total_pages = pages.total_pages;
|
|
this.setData({
|
|
//[`list[${page - 1}]`]: res.data,
|
|
more: current_page < total_pages,
|
|
page: current_page,
|
|
init: true
|
|
});
|
|
|
|
this.list[page -1]=res.data;
|
|
|
|
} else {
|
|
wx.showModal({
|
|
content: res.message || '请求失败',
|
|
showCancel: false
|
|
});
|
|
}
|
|
} else {
|
|
wx.showModal({
|
|
content: res.message || '请求失败',
|
|
showCancel: false
|
|
});
|
|
}
|
|
|
|
// this.setData({
|
|
// show: false
|
|
// });
|
|
this.show=false;
|
|
|
|
wx.hideLoading();
|
|
}).catch(rej => {
|
|
wx.hideLoading();
|
|
wx.showModal({
|
|
content: res.message || '请求失败',
|
|
showCancel: false
|
|
});
|
|
});
|
|
},
|
|
|
|
//点击筛选
|
|
filterClick() {
|
|
this.setData({
|
|
isFitter: !this.isFitter
|
|
});
|
|
},
|
|
|
|
radioBrand(e) {
|
|
let index = e.currentTarget.dataset.index;
|
|
let id = e.currentTarget.dataset.id;
|
|
let name = e.currentTarget.dataset.name;
|
|
this.setData({
|
|
brandIndex: index,
|
|
brandItem: {
|
|
id:id,
|
|
name:name
|
|
}
|
|
});
|
|
},
|
|
|
|
checkboxTag(e) {
|
|
|
|
let tags = this.conditions.tags; //渲染的数据
|
|
|
|
let index = e.currentTarget.dataset.index;
|
|
let item = {
|
|
id:e.currentTarget.dataset.id,
|
|
name:e.currentTarget.dataset.name,
|
|
isChoose:e.currentTarget.dataset.isChoose
|
|
};
|
|
let tagItem = this.tagItem;
|
|
let tagIds = this.tagIds;
|
|
let idsIndex = tagIds.indexOf(item.id);
|
|
|
|
if (idsIndex == -1) {
|
|
if (tagItem.length < 2) {
|
|
tags[index].isChoose = true;
|
|
tagItem.push(item);
|
|
tagIds.push(item.id);
|
|
this.setData({
|
|
tagItem: tagItem,
|
|
tagIds: tagIds,
|
|
'conditions.tags': tags
|
|
});
|
|
} else {
|
|
wx.showToast({
|
|
title: '最多选择两个',
|
|
icon: 'none'
|
|
});
|
|
}
|
|
} else {
|
|
tagItem.splice(idsIndex, 1);
|
|
tagIds.splice(idsIndex, 1);
|
|
tags[index].isChoose = false;
|
|
this.setData({
|
|
tagItem: tagItem,
|
|
tagIds: tagIds,
|
|
'conditions.tags': tags
|
|
});
|
|
}
|
|
},
|
|
|
|
//重置标签
|
|
reset() {
|
|
let tags = this.conditions.tags;
|
|
tags.forEach(val => {
|
|
val.isChoose = false;
|
|
});
|
|
this.setData({
|
|
brandIndex: -1,
|
|
brandItem: '',
|
|
tagItem: [],
|
|
tagIds: [],
|
|
'conditions.tags': tags
|
|
});
|
|
},
|
|
|
|
jumpClose() {
|
|
return;
|
|
},
|
|
|
|
//确认筛选
|
|
confirm() {
|
|
this.setData({
|
|
init: false
|
|
});
|
|
let brand_id = this.brandItem.id || '';
|
|
let tags = '';
|
|
let arr = [];
|
|
|
|
if (this.tagItem.length) {
|
|
this.tagItem.forEach(val => {
|
|
arr.push(val.id);
|
|
});
|
|
tags = arr.join(',');
|
|
}
|
|
|
|
this.getContentList(1, brand_id, this.category_id, tags, true);
|
|
this.filterClick();
|
|
},
|
|
|
|
//收藏内容
|
|
addFavorite(content_id, idx, index) {
|
|
let token = this.$cookieStorage.get('user_token');
|
|
wx.showLoading({
|
|
title: "收藏中",
|
|
mask: true
|
|
});
|
|
this.$http.post({
|
|
api: 'api/content/favorite/add',
|
|
header: {
|
|
Authorization: token
|
|
},
|
|
data: {
|
|
content_id: content_id
|
|
}
|
|
}).then(res => {
|
|
if (res.statusCode == 200) {
|
|
res = res.data;
|
|
|
|
if (res.status) {
|
|
let items = this.list[idx];
|
|
let item = items[index];
|
|
item.is_favorite = 1;
|
|
this.$set(this.list, idx, items)
|
|
/*this.setData({
|
|
[`list[${idx}][${index}].is_favorite`]: 1
|
|
});*/
|
|
} else {
|
|
wx.showModal({
|
|
content: res.message || '请求失败',
|
|
showCancel: false
|
|
});
|
|
}
|
|
} else {
|
|
wx.showModal({
|
|
content: res.message || '请求失败',
|
|
showCancel: false
|
|
});
|
|
}
|
|
|
|
wx.hideLoading();
|
|
}).catch(rej => {
|
|
wx.hideLoading();
|
|
wx.showModal({
|
|
content: res.message || '请求失败',
|
|
showCancel: false
|
|
});
|
|
});
|
|
},
|
|
|
|
deleteFavorite(content_id, idx, index) {
|
|
let token = this.$cookieStorage.get('user_token');
|
|
wx.showLoading({
|
|
title: "取消中",
|
|
mask: true
|
|
});
|
|
this.$http.post({
|
|
api: 'api/content/favorite/delete',
|
|
header: {
|
|
Authorization: token
|
|
},
|
|
data: {
|
|
content_id: content_id
|
|
}
|
|
}).then(res => {
|
|
if (res.statusCode == 200) {
|
|
res = res.data;
|
|
|
|
if (res.status) {
|
|
let items = this.list[idx];
|
|
let item = items[index];
|
|
item.is_favorite = 0;
|
|
this.$set(this.list, idx, items)
|
|
} else {
|
|
wx.showModal({
|
|
content: res.message || '请求失败',
|
|
showCancel: false
|
|
});
|
|
}
|
|
} else {
|
|
wx.showModal({
|
|
content: res.message || '请求失败',
|
|
showCancel: false
|
|
});
|
|
}
|
|
|
|
wx.hideLoading();
|
|
}).catch(rej => {
|
|
wx.hideLoading();
|
|
wx.showModal({
|
|
content: res.message || '请求失败',
|
|
showCancel: false
|
|
});
|
|
});
|
|
},
|
|
|
|
favoriteClick(e) {
|
|
let token = this.$cookieStorage.get('user_token');
|
|
|
|
if (token) {
|
|
let islike = e.currentTarget.dataset.islike;
|
|
let idx = e.currentTarget.dataset.idx;
|
|
let index = e.currentTarget.dataset.index;
|
|
let id = e.currentTarget.dataset.id;
|
|
|
|
if (islike == 0) {
|
|
this.addFavorite(id, idx, index);
|
|
} else if (islike == 1) {
|
|
this.deleteFavorite(id, idx, index);
|
|
}
|
|
} else {
|
|
let url = getUrl();
|
|
wx.navigateTo({
|
|
url: "/pages/user/register/register?url=" + url
|
|
});
|
|
}
|
|
},
|
|
|
|
jumpSearch(e) {
|
|
let keywords = e.currentTarget.dataset.key || '';
|
|
wx.navigateTo({
|
|
url: "/pages/user/findSearch/findSearch?keywords=" + keywords
|
|
});
|
|
},
|
|
|
|
jumpfind() {
|
|
wx.navigateTo({
|
|
url: "/pages/user/findSearch/findSearch?keywords=" + this.keywords
|
|
});
|
|
},
|
|
|
|
writePhotosAlbum(successFun, failFun) {
|
|
// #ifdef MP-WEIXIN
|
|
wx.getSetting({
|
|
success(res) {
|
|
if (!res.authSetting['scope.writePhotosAlbum']) {
|
|
wx.authorize({
|
|
scope: 'scope.writePhotosAlbum',
|
|
success: function () {
|
|
successFun && successFun();
|
|
},
|
|
fail: function (res) {
|
|
wx.hideLoading();
|
|
wx.showModal({
|
|
title: '提示',
|
|
content: "小程序需要您的微信授权保存图片,是否重新授权?",
|
|
showCancel: true,
|
|
cancelText: "否",
|
|
confirmText: "是",
|
|
success: function (res2) {
|
|
if (res2.confirm) {
|
|
//用户点击确定'
|
|
wx.openSetting({
|
|
success: res3 => {
|
|
if (res3.authSetting['scope.writePhotosAlbum']) {
|
|
//已授权
|
|
successFun && successFun();
|
|
} else {
|
|
failFun && failFun();
|
|
}
|
|
}
|
|
});
|
|
} else {
|
|
failFun && failFun();
|
|
}
|
|
}
|
|
});
|
|
}
|
|
});
|
|
} else {
|
|
successFun && successFun();
|
|
}
|
|
}
|
|
|
|
});
|
|
// #endif
|
|
|
|
// #ifdef APP-PLUS
|
|
var that = this;
|
|
uni.getSystemInfo({
|
|
success(result) {
|
|
if(result.platform == 'android'){
|
|
that.requestAndroidPermission(successFun);
|
|
} else if(result.platform == 'ios'){
|
|
that.requestIosPermission(successFun)
|
|
}
|
|
|
|
}
|
|
})
|
|
// #endif
|
|
},
|
|
//ios 获取权限
|
|
requestIosPermission(successFun){
|
|
var result = permision.judgeIosPermission('photoLibrary');
|
|
if(result){
|
|
successFun && successFun();
|
|
}else{
|
|
//打开授权,iOS上如果没有调用过的权限,不会出现在权限设置界面。
|
|
permision.gotoAppPermissionSetting()
|
|
}
|
|
},
|
|
//安卓 app 获取权限
|
|
async requestAndroidPermission(successFun) {
|
|
var result = await permision.requestAndroidPermission("android.permission.WRITE_EXTERNAL_STORAGE")
|
|
var strStatus
|
|
if (result == 1) {
|
|
strStatus = "已获得授权";
|
|
successFun && successFun();
|
|
} else if (result == 0) {
|
|
strStatus = "未获得授权";
|
|
void permision.gotoAppPermissionSetting()
|
|
} else {
|
|
strStatus = "被永久拒绝权限"
|
|
void permision.gotoAppPermissionSetting()
|
|
}
|
|
},
|
|
|
|
//下载多张图片
|
|
downloadImgs(e) {
|
|
// #ifdef APP-PLUS || MP-WEIXIN
|
|
let urlsList = e.currentTarget.dataset.urls;
|
|
|
|
if (urlsList && urlsList.length) {
|
|
|
|
var _this = this; // 获取权限
|
|
|
|
|
|
this.writePhotosAlbum(function success() {
|
|
wx.showLoading({
|
|
title: '加载中',
|
|
mask: true
|
|
});
|
|
|
|
_this.queue(urlsList).then(res => {
|
|
wx.hideLoading();
|
|
wx.showToast({
|
|
title: '下载完成'
|
|
});
|
|
}).catch(err => {
|
|
wx.hideLoading();
|
|
});
|
|
}, function fail() {
|
|
wx.showToast({
|
|
title: '您拒绝了保存到相册',
|
|
icon: 'none'
|
|
});
|
|
});
|
|
} else {
|
|
return;
|
|
}
|
|
// #endif
|
|
// #ifdef H5
|
|
wx.showModal({
|
|
content:"请长按图片进行保存",
|
|
showCancel:false
|
|
})
|
|
// #endif
|
|
},
|
|
|
|
// 队列
|
|
queue(urls) {
|
|
let promise = Promise.resolve();
|
|
urls.forEach((url, index) => {
|
|
promise = promise.then(() => {
|
|
return this.download(url);
|
|
});
|
|
});
|
|
return promise;
|
|
},
|
|
|
|
// 下载
|
|
download(url) {
|
|
return new Promise((resolve, reject) => {
|
|
wx.downloadFile({
|
|
url: url,
|
|
success: function (res) {
|
|
var temp = res.tempFilePath;
|
|
wx.saveImageToPhotosAlbum({
|
|
filePath: temp,
|
|
success: function (res) {
|
|
resolve(res);
|
|
},
|
|
fail: function (err) {
|
|
reject(res);
|
|
}
|
|
});
|
|
},
|
|
fail: function (err) {
|
|
reject(err);
|
|
}
|
|
});
|
|
});
|
|
},
|
|
|
|
//预览图片
|
|
preImage(e) {
|
|
a = true;
|
|
var url = e.currentTarget.dataset.url;
|
|
var findex = e.currentTarget.dataset.idx;
|
|
var index = e.currentTarget.dataset.index;
|
|
wx.previewImage({
|
|
current: url,
|
|
// 当前显示图片的http链接
|
|
urls: this.list[findex][index].img_list // 需要预览的图片http链接列表
|
|
|
|
});
|
|
},
|
|
|
|
setData: function (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];
|
|
});
|
|
});
|
|
}
|
|
}
|
|
};
|
|
</script>
|
|
<style rel="stylesheet/less" lang="less">
|
|
@import "find";
|
|
</style>
|