|
@@ -2,18 +2,33 @@
|
|
|
<view class="index">
|
|
|
<view v-if="login">
|
|
|
<block v-for="item in list" :key="item._id">
|
|
|
- <view class="card" @click="goDetail(item)">
|
|
|
- <image
|
|
|
- class="card-img"
|
|
|
- :src="item.thumbnail"
|
|
|
- mode="aspectFill"
|
|
|
- ></image>
|
|
|
- <text class="card-num-view">{{ item.views }} 次浏览</text>
|
|
|
- <view class="card-bottm row">
|
|
|
- <view class="car-title-view row">
|
|
|
- <text class="card-title">{{ item.title }}</text>
|
|
|
+ <view class="card">
|
|
|
+ <view @click="goDetail(item)">
|
|
|
+ <image
|
|
|
+ class="card-img"
|
|
|
+ :src="item.thumbnail"
|
|
|
+ mode="aspectFill"
|
|
|
+ ></image>
|
|
|
+ <view class="card_suffix" @click.stop="">
|
|
|
+ <view class="card-num-view">
|
|
|
+ <image class="icon_view" src="/static/browse.svg"></image>
|
|
|
+ <text>{{ item.views }} </text>
|
|
|
+ </view>
|
|
|
</view>
|
|
|
</view>
|
|
|
+
|
|
|
+ <view class="card-bottm flex items-center">
|
|
|
+ <view class="card-bottm-main">
|
|
|
+ <view class="flex-1">
|
|
|
+ <text class="card-title">{{ item.title }}</text>
|
|
|
+ </view>
|
|
|
+ <text class="card_time">{{ formatTime(item.updateTime) }}</text>
|
|
|
+ </view>
|
|
|
+ <view class="card_data_text" @click="goDataPage(item)">
|
|
|
+ <image class="icon_data" src="/static/data-view.svg"></image>
|
|
|
+ </view>
|
|
|
+ <view @click.stop="share(item)" class="card-share-view"></view>
|
|
|
+ </view>
|
|
|
</view>
|
|
|
</block>
|
|
|
<view class="loadMore">
|
|
@@ -37,6 +52,7 @@ export default {
|
|
|
refreshing: false,
|
|
|
list: [],
|
|
|
fetchPageNum: 1,
|
|
|
+ providerList: [],
|
|
|
};
|
|
|
},
|
|
|
onLoad() {
|
|
@@ -45,6 +61,7 @@ export default {
|
|
|
this.login = true;
|
|
|
this.getData();
|
|
|
}
|
|
|
+ this.getProvider();
|
|
|
},
|
|
|
onReachBottom() {
|
|
|
// console.log("滑动到页面底部");
|
|
@@ -58,6 +75,47 @@ export default {
|
|
|
this.getData();
|
|
|
},
|
|
|
methods: {
|
|
|
+ getProvider() {
|
|
|
+ uni.getProvider({
|
|
|
+ service: "share",
|
|
|
+ success: (e) => {
|
|
|
+ let data = [];
|
|
|
+ for (let i = 0; i < e.provider.length; i++) {
|
|
|
+ switch (e.provider[i]) {
|
|
|
+ case "weixin":
|
|
|
+ data.push({
|
|
|
+ name: "分享到微信好友",
|
|
|
+ id: "weixin",
|
|
|
+ });
|
|
|
+ data.push({
|
|
|
+ name: "分享到微信朋友圈",
|
|
|
+ id: "weixin",
|
|
|
+ type: "WXSenceTimeline",
|
|
|
+ });
|
|
|
+ data.push({
|
|
|
+ name: "复制链接",
|
|
|
+ id: "weixin",
|
|
|
+ type: "copyLink",
|
|
|
+ });
|
|
|
+ break;
|
|
|
+ default:
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ this.providerList = data;
|
|
|
+ },
|
|
|
+ fail: (e) => {
|
|
|
+ console.log("获取分享通道失败", e);
|
|
|
+ },
|
|
|
+ });
|
|
|
+ },
|
|
|
+ formatTime(value) {
|
|
|
+ const date = new Date(value);
|
|
|
+ const y = date.getFullYear();
|
|
|
+ const m = date.getMonth() + 1;
|
|
|
+ const d = date.getDate();
|
|
|
+ return `${y}.${m}.${d}`;
|
|
|
+ },
|
|
|
async getData() {
|
|
|
const data = await getDesignList({
|
|
|
page: this.fetchPageNum,
|
|
@@ -83,7 +141,52 @@ export default {
|
|
|
},
|
|
|
goDetail(data) {
|
|
|
uni.navigateTo({
|
|
|
- url: "../detail/detail?id=" + data._id,
|
|
|
+ url: "/pages/detail/detail?id=" + data._id,
|
|
|
+ });
|
|
|
+ },
|
|
|
+ goDataPage(data) {
|
|
|
+ uni.navigateTo({
|
|
|
+ url: "/pages/index/data?id=" + data._id,
|
|
|
+ });
|
|
|
+ },
|
|
|
+ share(record) {
|
|
|
+ const itemList = this.providerList.map(function (value) {
|
|
|
+ return value.name;
|
|
|
+ });
|
|
|
+ uni.showActionSheet({
|
|
|
+ itemList: itemList,
|
|
|
+ success: (res) => {
|
|
|
+ if (this.providerList[res.tapIndex].type == "copyLink") {
|
|
|
+ const url = `https://show.3dqueen.cloud/share.html?id=${record._id}`;
|
|
|
+ console.log("url: ", url);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ this.setShare(record, res);
|
|
|
+ },
|
|
|
+ });
|
|
|
+ },
|
|
|
+ setShare(record, res) {
|
|
|
+ uni.share({
|
|
|
+ provider: this.providerList[res.tapIndex].id,
|
|
|
+ scene:
|
|
|
+ this.providerList[res.tapIndex].type &&
|
|
|
+ this.providerList[res.tapIndex].type === "WXSenceTimeline"
|
|
|
+ ? "WXSenceTimeline"
|
|
|
+ : "WXSceneSession",
|
|
|
+ type: 0,
|
|
|
+ title: record.title,
|
|
|
+ summary: record.desc,
|
|
|
+ imageUrl: record.title,
|
|
|
+ href: "/pages/detail/detail?id=" + record._id,
|
|
|
+ success: (res) => {
|
|
|
+ console.log("success:" + JSON.stringify(res));
|
|
|
+ },
|
|
|
+ fail: (e) => {
|
|
|
+ uni.showModal({
|
|
|
+ content: e.errMsg,
|
|
|
+ showCancel: false,
|
|
|
+ });
|
|
|
+ },
|
|
|
});
|
|
|
},
|
|
|
},
|
|
@@ -92,7 +195,6 @@ export default {
|
|
|
|
|
|
<style>
|
|
|
.card {
|
|
|
- flex-direction: column;
|
|
|
position: relative;
|
|
|
margin: 20rpx;
|
|
|
border-radius: 10rpx;
|
|
@@ -111,59 +213,80 @@ export default {
|
|
|
text-align: center;
|
|
|
}
|
|
|
|
|
|
-.card-num-view {
|
|
|
+.card_suffix {
|
|
|
position: absolute;
|
|
|
top: 20rpx;
|
|
|
right: 20rpx;
|
|
|
- line-height: 1;
|
|
|
+ display: flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
+}
|
|
|
+.card_data_text {
|
|
|
display: inline-block;
|
|
|
+ margin-right: 30rpx;
|
|
|
+ border-radius: 4rpx;
|
|
|
+ padding: 2rpx 10rpx;
|
|
|
+}
|
|
|
+.icon_data {
|
|
|
+ width: 36rpx;
|
|
|
+ height: 36rpx;
|
|
|
+ line-height: 1;
|
|
|
+}
|
|
|
+.card-num-view {
|
|
|
+ line-height: 1;
|
|
|
+ display: inline-flex;
|
|
|
+ align-items: center;
|
|
|
+ justify-content: center;
|
|
|
padding: 3px 6px;
|
|
|
color: #ffffff;
|
|
|
font-size: 12px;
|
|
|
text-align: center;
|
|
|
justify-content: center;
|
|
|
align-items: center;
|
|
|
- border-radius: 15px;
|
|
|
+ border-radius: 4rpx;
|
|
|
background-color: #41969c;
|
|
|
}
|
|
|
-
|
|
|
+.icon_view {
|
|
|
+ width: 30rpx;
|
|
|
+ height: 30rpx;
|
|
|
+ line-height: 1;
|
|
|
+ color: #fff;
|
|
|
+ margin-right: 6rpx;
|
|
|
+}
|
|
|
.card-bottm {
|
|
|
- justify-content: center;
|
|
|
- align-items: center;
|
|
|
+ padding: 14rpx 20rpx;
|
|
|
+}
|
|
|
+.card-bottm-main {
|
|
|
+ flex: 1;
|
|
|
+ overflow: hidden;
|
|
|
+ margin-right: 50rpx;
|
|
|
}
|
|
|
|
|
|
+.card-title {
|
|
|
+ display: -webkit-box;
|
|
|
+ overflow: hidden; /*隐藏溢出的文本 */
|
|
|
+ text-overflow: ellipsis;
|
|
|
+ word-break: break-all; /*自动换行*/
|
|
|
+ -moz-box-orient: vertical; /*从上到下自动排列子元素*/
|
|
|
+ -webkit-box-orient: vertical;
|
|
|
+ -webkit-line-clamp: 1; /*显示的行数*/
|
|
|
+ font-size: 30rpx;
|
|
|
+ color: #555555;
|
|
|
+}
|
|
|
+.card_time {
|
|
|
+ font-size: 24rpx;
|
|
|
+ color: #999;
|
|
|
+}
|
|
|
.card-share-view {
|
|
|
- justify-content: center;
|
|
|
- align-items: center;
|
|
|
- padding: 14rpx 0;
|
|
|
+ margin-right: 20rpx;
|
|
|
color: #41969c;
|
|
|
- margin: 20rpx 20rpx 20rpx;
|
|
|
- font-size: 30rpx;
|
|
|
+ font-size: 30upx;
|
|
|
+ font-family: texticons;
|
|
|
}
|
|
|
|
|
|
.card-share-view:before {
|
|
|
content: "\e62d";
|
|
|
}
|
|
|
-
|
|
|
-.car-title-view {
|
|
|
- flex: 1;
|
|
|
- padding: 14rpx 0rpx 14rpx 20rpx;
|
|
|
-}
|
|
|
-
|
|
|
-.card-title {
|
|
|
- flex: 1;
|
|
|
- font-size: 30rpx;
|
|
|
- text-align: left;
|
|
|
- color: #555555;
|
|
|
- text-overflow: ellipsis;
|
|
|
- /* lines: 2; */
|
|
|
- display: -webkit-box;
|
|
|
- white-space: normal;
|
|
|
- display: -webkit-box;
|
|
|
- -webkit-box-orient: vertical;
|
|
|
- -webkit-line-clamp: 2;
|
|
|
- overflow: hidden;
|
|
|
-}
|
|
|
.auth_card {
|
|
|
height: 100vh;
|
|
|
display: flex;
|