pifa
fanfan 2 weeks ago
parent 050ef466d4
commit a87f96323a
  1. 2
      ext.json
  2. 2
      manifest.json
  3. 171
      pages/squareDynamic/index.vue
  4. 2
      project.config.json

@ -1,6 +1,6 @@
{
"extEnable": true,
"extAppid": "wx8dc1c2620cfd953a",
"extAppid": "wx3f1dcf2e2ac45e7c",
"ext": {
"store_id": 10048
}

@ -92,7 +92,7 @@
"quickapp" : {},
/* */
"mp-weixin" : {
"appid" : "wx8dc1c2620cfd953a",
"appid" : "wx3f1dcf2e2ac45e7c",
"libVersion" : "latest",
"setting" : {
// TLS

@ -5,27 +5,34 @@
</view>
<view class="box">
<view class="tab-list">
<view v-for="(item, index) in tabList" :key="index" class="tab-item" :class="{ 'active': activeTab === item }" @click="activeTab = item">{{ item }}</view>
<view v-for="(item, index) in tabList" :key="index" class="tab-item"
:class="{ 'active': activeTab === item }" @click="activeTab = item">{{ item }}</view>
</view>
<view class="list">
<view v-for="(item, index) in dynamicList" :key="index" class="dynamic-item" :style="{ 'visibility': !item.contH ? 'hidden' : 'visible'}">
<view v-for="(item, index) in dynamicList" :key="index" class="dynamic-item"
:style="{ 'visibility': !item.contH ? 'hidden' : 'visible'}">
<view class="user">
<image v-if="item.avatar_url && item.avatar_url[0]" :src="item.avatar_url[0].external_url" mode="aspectFill"></image>
<image v-if="item.avatar_url && item.avatar_url[0]" :src="item.avatar_url[0].external_url"
mode="aspectFill"></image>
<image v-else src="/static/touxiang.png" mode="aspectFill"></image>
<view class="user-info">
<view class="name">{{ item.real_name }}</view>
<view class="time">{{ item.update_time }}</view>
</view>
</view>
<view class="cont" :class="[`cont${index}`, { 'close': item.contH > 120 && !showFullCont.includes(index)}]">
<view class="cont"
:class="[`cont${index}`, { 'close': item.contH > 120 && !showFullCont.includes(index)}]">
{{ item.content }}
</view>
<view v-if="item.contH > 120" class="show-more" @click="toggleFullCont(index)">{{ showFullCont.includes(index) ? '收起' : '全文' }}</view>
<view v-if="item.contH > 120" class="show-more" @click="toggleFullCont(index)">
{{ showFullCont.includes(index) ? '收起' : '全文' }}</view>
<view v-if="item.imgs && item.imgs.length > 0" class="pic-list">
<image v-for="(pic, k) in item.imgs" :key="k" :src="pic.external_url" mode="aspectFill" @click="previewImages(k, item.imgs)"></image>
<image v-for="(pic, k) in item.imgs" :key="k" :src="pic.external_url" mode="aspectFill"
@click="previewImages(k, item.imgs)"></image>
</view>
<view v-if="item.files && item.files.length > 0" class="file-list">
<view v-for="(file, index) in item.files" :key="index" class="file-box" @click="previewFile(file.external_url)">
<view v-for="(file, index) in item.files" :key="index" class="file-box"
@click="previewFile(file.external_url)">
<image src="/static/xls.jpeg" mode="aspectFill"></image>
<text>{{ solveFileName(file.file_name) }}</text>
</view>
@ -51,7 +58,8 @@
<image src="/static/trash.png" mode="aspectFill"></image>
<view>删除文案</view>
</view>
<view class="btn" v-if="item.imgs && item.imgs.length > 0" @click="downloadMultipleImages(item.imgs)">
<view class="btn" v-if="item.imgs && item.imgs.length > 0"
@click="downloadMultipleImages(item.imgs)">
<image src="/static/download.png" mode="aspectFill"></image>
<view>下载图片</view>
</view>
@ -68,20 +76,15 @@
<image mode="aspectFill" src="@/static/empty.png" alt="暂无动态" />
<view>暂无动态</view>
</view>
<view
v-if="userInfo.user_type == 40"
id="publish"
class="publish"
<view v-if="userInfo.user_type == 40" id="publish" class="publish"
:style="{'left': left === 0 ? '626rpx' : left + 'px', 'top': top === 0 ? 'calc(100% - 300rpx)' : top + 'px'}"
@touchmove.stop.prevent="touchmove"
@touchend="touchend"
@click="publish"
:class="{transition: !isMove }"
>
@touchmove.stop.prevent="touchmove" @touchend="touchend" @click="publish"
:class="{transition: !isMove }">
<image src="/static/publish.png" mode="aspectFill"></image>
<text>发布</text>
</view>
</view><addShuiyin />
</view>
<addShuiyin />
</view>
</template>
@ -93,8 +96,7 @@
import * as UserApi from '@/api/user';
export default {
components: {
},
components: {},
data() {
return {
tabList: ['推荐', '精选', '晒单', '日常', '文章'],
@ -130,6 +132,25 @@
this.getDynamicList();
},
},
/**
* 分享当前页面
*/
onShareAppMessage() {
return {
}
},
/**
* 分享到朋友圈
* 本接口为 Beta 版本暂只在 Android 平台支持详见分享到朋友圈 (Beta)
* https://developers.weixin.qq.com/miniprogram/dev/framework/open-ability/share-timeline.html
*/
onShareTimeline() {
return {
}
},
onLoad() {
uni.setNavigationBarColor({
frontColor: '#000000',
@ -251,27 +272,27 @@
data: cont
});
},
downloadSingleImage(url) {
  return new Promise((resolve, reject) => {
    uni.downloadFile({
      url: url,
      success: (res) => {
        if (res.statusCode === 200) {
          resolve(res.tempFilePath)
        } else {
          reject(new Error('下载失败'))
        }
      },
      fail: (err) => {
        reject(new Error('下载失败'))
      }
    })
  })
downloadSingleImage(url) {
return new Promise((resolve, reject) => {
uni.downloadFile({
url: url,
success: (res) => {
if (res.statusCode === 200) {
resolve(res.tempFilePath)
} else {
reject(new Error('下载失败'))
}
},
downloadMultipleImages(urls) {
  let tasks = []
  urls.forEach((url, k) => {
    tasks.push(this.downloadSingleImage(url.external_url).then(e => {
fail: (err) => {
reject(new Error('下载失败'))
}
})
})
},
downloadMultipleImages(urls) {
let tasks = []
urls.forEach((url, k) => {
tasks.push(this.downloadSingleImage(url.external_url).then(e => {
uni.saveImageToPhotosAlbum({
filePath: e,
});
@ -282,32 +303,32 @@
})
}
}));
  })
  return Promise.all(tasks)
})
return Promise.all(tasks)
},
previewFile(url) {
uni.downloadFile({
      url,
      success: (res) => {
        if (res.statusCode === 200) {
url,
success: (res) => {
if (res.statusCode === 200) {
this.isPreview = true;
uni.openDocument({
filePath: res.tempFilePath,
});
        } else {
        uni.showToast({
} else {
uni.showToast({
icon: 'error',
title: '下载失败!'
})
        }
      },
      fail: (err) => {
        uni.showToast({
}
},
fail: (err) => {
uni.showToast({
icon: 'error',
title: '下载失败!'
})
      }
    })
}
})
},
solveFileName(name) {
if (name.indexOf('.xlsx')) {
@ -346,8 +367,7 @@
if (this.isShow) {
animation.rotate(135).step();
}
else{
} else {
animation.rotate(0).step();
}
this.animationData = animation.export();
@ -456,6 +476,7 @@
.container {
background: #F7F8FA;
padding-top: 292rpx;
.head {
height: 450rpx;
width: 100%;
@ -463,6 +484,7 @@
top: -88rpx;
background: linear-gradient(0deg, #F7F8FA, #E0EFFD);
z-index: 0;
>image {
position: absolute;
top: 138rpx;
@ -472,14 +494,17 @@
height: 221rpx;
}
}
.box {
position: relative;
width: 100%;
// top: 292rpx;
padding: 24rpx;
.tab-list {
display: flex;
justify-content: space-between;
.tab-item {
width: 130rpx;
height: 80rpx;
@ -490,6 +515,7 @@
color: #999999;
line-height: 80rpx;
text-align: center;
&.active {
box-shadow: 0rpx 4rpx 12rpx 0rpx rgba(32, 39, 76, 0.1);
opacity: 1;
@ -497,24 +523,30 @@
}
}
}
.list {
margin-top: 30rpx;
.dynamic-item {
width: 100%;
background: #FFFFFF;
border-radius: 20rpx;
padding: 30rpx;
margin-bottom: 20rpx;
&:last-child {
margin-bottom: 0;
}
.user {
display: flex;
>image {
width: 80rpx;
height: 80rpx;
margin-right: 24rpx;
}
.user-info {
.name {
font-size: 30rpx;
@ -522,6 +554,7 @@
line-height: 30rpx;
margin-bottom: 26rpx;
}
.time {
font-size: 24rpx;
color: #999999;
@ -529,6 +562,7 @@
}
}
}
.cont {
margin-top: 30rpx;
font-size: 28rpx;
@ -537,6 +571,7 @@
color: #222222;
word-break: break-word;
white-space: pre-line;
&.close {
max-height: 240rpx;
overflow: hidden;
@ -546,29 +581,35 @@
-webkit-box-orient: vertical;
}
}
.show-more {
font-size: 28rpx;
line-height: 40rpx;
color: #F34A40;
text-align: right;
}
.pic-list {
margin-top: 24rpx;
>image {
width: 210rpx;
height: 210rpx;
margin-right: 6rpx;
margin-bottom: 6rpx;
border-radius: 10rpx;
&:nth-child(3n) {
margin-right: 0;
}
}
}
.file-list {
display: block;
padding: 30rpx 0;
height: fit-content;
.file-box {
border-bottom: 1px solid #ddd;
display: flex;
@ -577,15 +618,18 @@
padding: 10rpx 20rpx;
height: 80rpx;
margin-bottom: 20rpx;
&:last-child {
border-bottom: none;
}
>image {
width: 60rpx;
height: 60rpx;
margin: 0 10rpx 0 0;
flex-shrink: 0;
}
>text {
width: calc(100% - 70rpx);
overflow: hidden;
@ -594,36 +638,44 @@
}
}
}
.goods {
background: #f5f5f5;
padding: 20rpx;
margin-top: 24rpx;
}
.goods-box {
display: flex;
background: #fff;
padding: 20rpx 0;
>image {
width: 100rpx;
height: 100rpx;
margin-right: 20rpx;
}
.goods-info {
width: calc(100% - 120rpx);
display: flex;
flex-direction: column;
justify-content: space-between;
.name {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.price {
display: flex;
>text {
&:first-child {
color: #F34A40;
}
&:last-child {
height: 40rpx;
line-height: 40rpx;
@ -640,10 +692,12 @@
}
}
}
.btns {
margin-top: 20rpx;
display: flex;
justify-content: flex-end;
.btn {
display: flex;
flex-direction: column;
@ -652,14 +706,17 @@
line-height: 24rpx;
color: #999999;
margin-left: 40rpx;
image {
width: 40rpx;
height: 40rpx;
margin-bottom: 10rpx;
}
::v-deep {
.delete {
margin-bottom: 10rpx;
.uni-icons {
font-size: 40rpx !important;
font-weight: bold;
@ -671,6 +728,7 @@
}
}
}
.finished,
.loading {
font-size: 28rpx;
@ -678,6 +736,7 @@
text-align: center;
color: #bbb;
}
.empty {
margin-top: 100rpx;
font-size: 28rpx;
@ -692,6 +751,7 @@
margin: 0 auto 20rpx;
pointer-events: none;
}
.publish {
position: fixed;
left: 626rpx;
@ -707,6 +767,7 @@
flex-direction: column;
align-items: center;
justify-content: center;
>image {
width: 35rpx;
height: 28rpx;

@ -1,5 +1,5 @@
{
"appid": "wx8dc1c2620cfd953a",
"appid": "wx3f1dcf2e2ac45e7c",
"compileType": "miniprogram",
"libVersion": "3.3.3",
"packOptions": {

Loading…
Cancel
Save