| @ -0,0 +1,85 @@ | |||
| <template> | |||
| <uv-popup | |||
| round="40rpx" | |||
| :safeAreaInsetBottom="false" | |||
| :closeOnClickOverlay="false" | |||
| ref="popup"> | |||
| <view class="toast"> | |||
| <view class="title"> | |||
| 提示 | |||
| </view> | |||
| <view class="content"> | |||
| 本小程序需要登录之后才可以正常使用 | |||
| </view> | |||
| <view class="btnstwo"> | |||
| <view class="btn c" | |||
| @click="cancel"> | |||
| 取消 | |||
| </view> | |||
| <view class="btn" | |||
| @click="login"> | |||
| 登录 | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </uv-popup> | |||
| </template> | |||
| <script> | |||
| export default { | |||
| name : 'toast', | |||
| methods : { | |||
| checkLogin(){ | |||
| if(!uni.getStorageSync('token')){ | |||
| this.$refs.popup.open(); | |||
| } | |||
| }, | |||
| cancel(){ | |||
| this.$refs.popup.close(); | |||
| uni.redirectTo({ | |||
| url: '/pages/index/index' | |||
| }) | |||
| }, | |||
| login(){ | |||
| this.$store.commit('login') | |||
| this.$refs.popup.close() | |||
| }, | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .toast{ | |||
| width: 500rpx; | |||
| .title{ | |||
| min-height: 70rpx; | |||
| display: flex; | |||
| justify-content: center; | |||
| align-items: center; | |||
| font-size: 32rpx; | |||
| } | |||
| .content{ | |||
| font-size: 28rpx; | |||
| min-height: 200rpx; | |||
| display: flex; | |||
| flex-direction: column; | |||
| justify-content: center; | |||
| align-items: center; | |||
| } | |||
| .btnstwo{ | |||
| display: flex; | |||
| .btn{ | |||
| flex: 1; | |||
| background: $uni-linear-gradient-btn-color; | |||
| color: #fff; | |||
| padding: 20rpx 0; | |||
| text-align: center; | |||
| } | |||
| .c{ | |||
| background: #fff; | |||
| border-top: 1px solid #999; | |||
| color: #333; | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,118 @@ | |||
| <template> | |||
| <uv-popup ref="privacyPopup"> | |||
| <view class="privacyPopup"> | |||
| <view class="title"> | |||
| <view class="title_circle"></view> | |||
| <view>{{ title }}</view> | |||
| </view> | |||
| <view class="content_pri"> | |||
| <text>在你使用【{{ title }}】服务之前,请仔细阅读</text> | |||
| <text style="color: #1793ee;" @click="goToPrivacy">《{{ title }}小程序隐私保护指引》</text>。 | |||
| <text>如你同意{{ title }}小程序隐私保护指引,请点击“同意”开始使用【{{ title }}】。</text> | |||
| </view> | |||
| <view class="pri_btn"> | |||
| <button class="confuse_btn" @click="confusePrivacy">拒绝</button> | |||
| <button class="confirm_btn" id="agree-btn" open-type="agreePrivacyAuthorization" | |||
| @agreeprivacyauthorization="handleAgreePrivacyAuthorization">同意</button> | |||
| </view> | |||
| </view> | |||
| </uv-popup> | |||
| </template> | |||
| <script> | |||
| export default { | |||
| data(){ | |||
| return{ | |||
| title : '帧视界', | |||
| } | |||
| }, | |||
| methods:{ | |||
| init(resolve){ | |||
| this.$refs.privacyPopup.open() | |||
| this.resolvePrivacyAuthorization = resolve | |||
| }, | |||
| // 打开隐私协议 | |||
| goToPrivacy(){ | |||
| wx.openPrivacyContract({ | |||
| success: () => { | |||
| console.log('打开成功'); | |||
| }, // 打开成功 | |||
| fail: () => { | |||
| uni.showToast({ | |||
| title:'打开失败,稍后重试', | |||
| icon: 'none' | |||
| }) | |||
| } // 打开失败 | |||
| }) | |||
| }, | |||
| // 拒绝 | |||
| confusePrivacy(){ | |||
| this.$refs.privacyPopup.close() | |||
| this.resolvePrivacyAuthorization({ event:'disagree' }) | |||
| }, | |||
| // 同意 | |||
| handleAgreePrivacyAuthorization(){ | |||
| // 告知平台用户已经同意,参数传同意按钮的id | |||
| this.resolvePrivacyAuthorization({ buttonId: 'agree-btn', event: 'agree' }) | |||
| this.$refs.privacyPopup.close() | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style scoped lang="scss"> | |||
| *{ | |||
| box-sizing: border-box; | |||
| } | |||
| .privacyPopup{ | |||
| width: 520rpx; | |||
| /* height: 500rpx; */ | |||
| background-color: #fff; | |||
| border-radius: 50rpx; | |||
| padding: 20rpx 40rpx; | |||
| } | |||
| .title{ | |||
| display: flex; | |||
| align-items: center; | |||
| justify-content: start; | |||
| margin: 20rpx 0; | |||
| font-size: 38rpx; | |||
| font-weight: 600; | |||
| } | |||
| .title .title_circle{ | |||
| width: 60rpx; | |||
| height: 60rpx; | |||
| background-color: #efefef; | |||
| border-radius: 50%; | |||
| margin-right: 20rpx; | |||
| } | |||
| .content_pri{ | |||
| width: 480rpx; | |||
| margin: 0 auto; | |||
| font-size: 34rpx; | |||
| line-height: 1.5; | |||
| } | |||
| .pri_btn{ | |||
| width: 100%; | |||
| height: 158rpx; | |||
| display: flex; | |||
| align-items: center; | |||
| justify-content: space-evenly; | |||
| } | |||
| .pri_btn .confuse_btn,.pri_btn .confirm_btn{ | |||
| width: 200rpx; | |||
| height: 90rpx; | |||
| border-radius: 20rpx; | |||
| font-size: 34rpx; | |||
| } | |||
| .pri_btn .confuse_btn{ | |||
| background-color: #eee; | |||
| color: #52bf6b; | |||
| } | |||
| .pri_btn .confirm_btn{ | |||
| background-color: #52bf6b; | |||
| color: #fff; | |||
| } | |||
| </style> | |||
| @ -0,0 +1,94 @@ | |||
| <template> | |||
| <uv-popup | |||
| :safeAreaInsetBottom="false" | |||
| round="40rpx" | |||
| ref="popup"> | |||
| <view class="toast"> | |||
| <view class="title"> | |||
| {{ title }} | |||
| </view> | |||
| <view class="content"> | |||
| <slot></slot> | |||
| </view> | |||
| <view class="btns" v-if="!cancel"> | |||
| <view class="btn" | |||
| @click="$emit('confirm')"> | |||
| {{ confirmText }} | |||
| </view> | |||
| </view> | |||
| <view class="btnstwo" v-else> | |||
| <view class="btn c"> | |||
| 取消 | |||
| </view> | |||
| <view class="btn"> | |||
| {{ confirmText }} | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </uv-popup> | |||
| </template> | |||
| <script> | |||
| export default { | |||
| name : 'toast', | |||
| props : { | |||
| title : { | |||
| default : '' | |||
| }, | |||
| confirmText : { | |||
| default : '确认' | |||
| }, | |||
| cancel : { | |||
| default : false | |||
| } | |||
| }, | |||
| methods : { | |||
| open(){ | |||
| this.$refs.popup.open(); | |||
| }, | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .toast{ | |||
| width: 500rpx; | |||
| .title{ | |||
| min-height: 70rpx; | |||
| display: flex; | |||
| justify-content: center; | |||
| align-items: center; | |||
| font-size: 32rpx; | |||
| } | |||
| .content{ | |||
| // min-height: 300rpx; | |||
| } | |||
| .btns{ | |||
| display: flex; | |||
| padding: 30rpx; | |||
| .btn{ | |||
| flex: 1; | |||
| background: $uni-linear-gradient-btn-color; | |||
| border-radius: 20rpx; | |||
| color: #fff; | |||
| padding: 20rpx 0; | |||
| text-align: center; | |||
| } | |||
| } | |||
| .btnstwo{ | |||
| display: flex; | |||
| .btn{ | |||
| flex: 1; | |||
| background: $uni-linear-gradient-btn-color; | |||
| color: #fff; | |||
| padding: 20rpx 0; | |||
| text-align: center; | |||
| } | |||
| .c{ | |||
| background: #fff; | |||
| border-top: 1px solid #999; | |||
| color: #333; | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @ -1,19 +0,0 @@ | |||
| <template> | |||
| <view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default { | |||
| data() { | |||
| return { | |||
| }; | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss"> | |||
| </style> | |||
| @ -0,0 +1,141 @@ | |||
| <template> | |||
| <view class="login"> | |||
| <view class="title"> | |||
| 帧视界 | |||
| </view> | |||
| <view class="title"> | |||
| 申请获取你的头像、昵称 | |||
| </view> | |||
| <button | |||
| class="chooseAvatar" | |||
| open-type="chooseAvatar" | |||
| @chooseavatar="onChooseAvatar"> | |||
| <view class="line"> | |||
| <view class=""> | |||
| 头像 | |||
| </view> | |||
| <view class=""> | |||
| <image :src="userInfo.headImage" | |||
| v-if="userInfo.headImage" | |||
| style="width: 60rpx;height: 60rpx;" | |||
| mode=""></image> | |||
| <image src="/static/image/tabbar/6.png" | |||
| v-else | |||
| style="width: 50rpx;height: 50rpx;" | |||
| mode=""></image> | |||
| </view> | |||
| </view> | |||
| </button> | |||
| <view class="line"> | |||
| <view class=""> | |||
| 昵称 | |||
| </view> | |||
| <view class=""> | |||
| <input type="nickname" placeholder="请输入昵称" | |||
| style="text-align: right;" | |||
| id="nickName" | |||
| v-model="userInfo.nickName" | |||
| /> | |||
| </view> | |||
| </view> | |||
| <view class="btn" | |||
| @click="submit"> | |||
| 确认 | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| export default { | |||
| data() { | |||
| return { | |||
| userInfo : { | |||
| headImage : '', | |||
| nickName : '', | |||
| } | |||
| }; | |||
| }, | |||
| onShow(){ | |||
| }, | |||
| computed : { | |||
| }, | |||
| methods : { | |||
| onChooseAvatar(res){ | |||
| let self = this | |||
| self.$Oss.ossUpload(res.target.avatarUrl) | |||
| .then(url => { | |||
| self.userInfo.headImage = url | |||
| }) | |||
| }, | |||
| submit(){ | |||
| let self = this | |||
| uni.createSelectorQuery().in(this) | |||
| .select("#nickName") | |||
| .fields({ | |||
| properties: ["value"], | |||
| }) | |||
| .exec((res) => { | |||
| const nickName = res?.[0]?.value | |||
| self.userInfo.nickName = nickName | |||
| }) | |||
| if(this.$utils.verificationAll(this.userInfo, { | |||
| headImage : '请选择头像', | |||
| nickName : '请填写昵称', | |||
| })){ | |||
| return | |||
| } | |||
| this.$api('infoUpdateInfo', this.userInfo, res => { | |||
| if(res.code == 200){ | |||
| uni.navigateBack(-1) | |||
| } | |||
| }) | |||
| }, | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .login{ | |||
| display: flex; | |||
| flex-direction: column; | |||
| justify-content: center; | |||
| align-items: center; | |||
| height: 80vh; | |||
| .title{ | |||
| line-height: 45rpx; | |||
| font-weight: 900; | |||
| } | |||
| .line{ | |||
| display: flex; | |||
| justify-content: space-between; | |||
| align-items: center; | |||
| width: 80%; | |||
| border-bottom: 1px solid #00000023; | |||
| padding: 30rpx 0; | |||
| margin: 0 auto; | |||
| } | |||
| .chooseAvatar{ | |||
| width: 100%; | |||
| padding: 0; | |||
| margin: 0; | |||
| margin-top: 10vh; | |||
| border: none; | |||
| } | |||
| .btn{ | |||
| background: $uni-linear-gradient-btn-color; | |||
| color: #fff; | |||
| width: 80%; | |||
| padding: 20rpx 0; | |||
| text-align: center; | |||
| border-radius: 15rpx; | |||
| margin-top: 10vh; | |||
| } | |||
| } | |||
| </style> | |||
| @ -1,145 +1,166 @@ | |||
| <template> | |||
| <view style="display: flex;flex-direction: column; width: 100vw;height: 100vh;"> | |||
| <tabber :select="2"/> | |||
| <!-- 顶部 --> | |||
| <view style="width: 100%;height: 30%;"> | |||
| <image src="/static/image/center/1.png" style="width: 100%;height: 100%;"></image> | |||
| </view> | |||
| <view style="display: flex;flex-direction: column; width: 100vw;height: 100vh;"> | |||
| <tabber :select="2" /> | |||
| <!-- 顶部 --> | |||
| <view style="width: 100%;height: 30%;"> | |||
| <image src="/static/image/center/1.png" style="width: 100%;height: 100%;"></image> | |||
| </view> | |||
| <!--中部 用户信息--> | |||
| <view | |||
| style="border-radius: 20rpx;position: absolute;top: 20%;left: 10%; width:80%;height: 12%;z-index: 1;background: white;"> | |||
| <!--头像--> | |||
| <view | |||
| style="position: absolute;z-index:2;width:33%;height:100%;border-radius: 50%;overflow: hidden;top: -32%;left: 0%;"> | |||
| <image src="/static/image/center/tyx.png" style="width: 100%;height: 100%;"></image> | |||
| </view> | |||
| <!--福利中心--> | |||
| <view style="position: absolute;z-index:2;width:33%;height:30%;top: 13%;right: 2%;"> | |||
| <image src="/static/image/center/flzx.png" style="width: 100%;height: 100%;"></image> | |||
| </view> | |||
| <!-- 未认证--> | |||
| <view style="position: absolute;z-index:2;width:15%;height:20%;top: 33%;left: 28%;"> | |||
| <image src="/static/image/center/wrz.png" style="width: 100%;height: 100%;"></image> | |||
| </view> | |||
| <!-- 去认证 --> | |||
| <view style="position: absolute;z-index:2;width:55%;height:20%;top: 32%;left: 44%;"> | |||
| <span style="font-size: 26rpx;" class="textColor" @click="$utils.navigateTo('/mine/authOption')">去认证</span> | |||
| </view> | |||
| <!-- 用户信息 --> | |||
| <view style="position: absolute;z-index:2;width:55%;height:20%;top: 60%;left: 7%;"> | |||
| <view> | |||
| <span style="font-size: 35rpx;margin-right: 5rpx">海绵宝贝</span> | |||
| <span style="font-size: 18rpx">15012142563</span> | |||
| </view> | |||
| </view> | |||
| <!-- 点赞量 --> | |||
| <view | |||
| style="display: flex;flex-direction: column;gap:2rpx ;position: absolute;z-index:2;width:15%;height:40%;top: 55%;right: 3%;"> | |||
| <view style="display: flex;justify-content: center;align-items: center;width: 100%;height: 100%;"> | |||
| <image src="/static/image/center/dianZan.svg" style="width: 40%;height: 84%;"></image> | |||
| </view> | |||
| <view style="display: flex;justify-content: center ;font-size: 20rpx;color:#777777">点赞量</view> | |||
| </view> | |||
| </view> | |||
| <!--中部 用户信息--> | |||
| <view | |||
| style="border-radius: 20rpx;position: absolute;top: 20%;left: 10%; width:80%;height: 12%;z-index: 1;background: white;"> | |||
| <!--头像--> | |||
| <view | |||
| style="position: absolute;z-index:2;width:33%;height:100%;border-radius: 50%;overflow: hidden;top: -32%;left: 0%;"> | |||
| <image :src="userInfo.headImage" style="width: 100%;height: 100%;"></image> | |||
| </view> | |||
| <!--福利中心--> | |||
| <view style="position: absolute;z-index:2;width:33%;height:30%;top: 13%;right: 2%;"> | |||
| <image src="/static/image/center/flzx.png" style="width: 100%;height: 100%;"></image> | |||
| </view> | |||
| <!-- 未认证--> | |||
| <view style="position: absolute;z-index:2;width:15%;height:20%;top: 33%;left: 28%;"> | |||
| <image src="/static/image/center/wrz.png" style="width: 100%;height: 100%;"></image> | |||
| </view> | |||
| <!-- 去认证 --> | |||
| <view style="position: absolute;z-index:2;width:55%;height:20%;top: 32%;left: 44%;"> | |||
| <span style="font-size: 26rpx;" class="textColor" | |||
| @click="$utils.navigateTo('/mine/authOption')">去认证</span> | |||
| </view> | |||
| <!-- 用户信息 --> | |||
| <view style="position: absolute;z-index:2;width:55%;height:20%;top: 60%;left: 7%;"> | |||
| <view> | |||
| <span style="font-size: 35rpx;margin-right: 5rpx">{{ userInfo.nickName }}</span> | |||
| <span style="font-size: 18rpx">{{ userInfo.phone }}</span> | |||
| </view> | |||
| </view> | |||
| <!-- 点赞量 --> | |||
| <view | |||
| style="display: flex;flex-direction: column;gap:2rpx ;position: absolute;z-index:2;width:15%;height:40%;top: 55%;right: 3%;"> | |||
| <view style="display: flex;justify-content: center;align-items: center;width: 100%;height: 100%;"> | |||
| <image src="/static/image/center/dianZan.svg" style="width: 40%;height: 84%;"></image> | |||
| </view> | |||
| <view style="display: flex;justify-content: center ;font-size: 20rpx;color:#777777">点赞量</view> | |||
| </view> | |||
| </view> | |||
| <!-- 下部 --> | |||
| <view style="width: 100%;height: 70%;padding-top:150rpx"> | |||
| <view> | |||
| <!--上GridView--> | |||
| <view> | |||
| <uv-grid :col="4"> | |||
| <uv-grid-item v-for="(item,index) in baseList" :key="index" @click="goToPage(item)"> | |||
| <img :src="item.imageUrl" :alt="item.title" | |||
| :style="{ width: '80rpx', height: '80rpx',marginBottom: '10rpx'}"/> | |||
| <text style="font-size: 30rpx;color: #333333;">{{ item.title }} | |||
| </text> | |||
| </uv-grid-item> | |||
| </uv-grid> | |||
| </view> | |||
| <!-- 下部 --> | |||
| <view style="width: 100%;height: 70%;padding-top:150rpx"> | |||
| <view> | |||
| <!--上GridView--> | |||
| <view> | |||
| <uv-grid :col="4"> | |||
| <uv-grid-item v-for="(item,index) in baseList" :key="index" @click="goToPage(item)"> | |||
| <img :src="item.imageUrl" :alt="item.title" | |||
| :style="{ width: '80rpx', height: '80rpx',marginBottom: '10rpx'}" /> | |||
| <text style="font-size: 30rpx;color: #333333;">{{ item.title }} | |||
| </text> | |||
| </uv-grid-item> | |||
| </uv-grid> | |||
| </view> | |||
| <!--其他--> | |||
| <view style="margin:50rpx 0 0 50rpx;font-size: 40rpx;color: #333333;">其他</view> | |||
| <!--其他--> | |||
| <view style="margin:50rpx 0 0 50rpx;font-size: 40rpx;color: #333333;">其他</view> | |||
| <!--下GridView--> | |||
| <view style="margin-top: 50rpx;"> | |||
| <uv-grid :col="4"> | |||
| <uv-grid-item v-for="(item,index) in otherList" :key="index" @click="goToPage(item)"> | |||
| <img :src="item.imageUrl" :alt="item.title" | |||
| :style="{ width: '80rpx', height: '80rpx',marginBottom: '10rpx'}"/> | |||
| <text style="font-size: 30rpx;color: #333333;">{{ item.title }} | |||
| </text> | |||
| </uv-grid-item> | |||
| </uv-grid> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| <!--下GridView--> | |||
| <view style="margin-top: 50rpx;"> | |||
| <uv-grid :col="4"> | |||
| <uv-grid-item v-for="(item,index) in otherList" :key="index" @click="goToPage(item)"> | |||
| <img :src="item.imageUrl" :alt="item.title" | |||
| :style="{ width: '80rpx', height: '80rpx',marginBottom: '10rpx'}" /> | |||
| <text style="font-size: 30rpx;color: #333333;">{{ item.title }} | |||
| </text> | |||
| </uv-grid-item> | |||
| </uv-grid> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| import tabber from '@/components/base/tabbar.vue' | |||
| import {mapState} from 'vuex' | |||
| import tabber from '@/components/base/tabbar.vue' | |||
| import { | |||
| mapState | |||
| } from 'vuex' | |||
| export default { | |||
| components: { | |||
| tabber | |||
| }, | |||
| computed: { | |||
| ...mapState(['count']), | |||
| }, | |||
| data() { | |||
| return { | |||
| // 基础列表 | |||
| baseList: [ | |||
| { | |||
| name: 'photo', | |||
| imageUrl: '/static/image/center/1.png', | |||
| title: '我的发布', | |||
| gotoPageUrl: '/mine/releaseRecord' | |||
| }, | |||
| { | |||
| name: 'lock', imageUrl: '/static/image/center/1.png', title: '我的推广', | |||
| gotoPageUrl: '/mine/promotionRecord' | |||
| }, | |||
| {name: 'star', imageUrl: '/static/image/center/1.png', title: '我的银行卡', | |||
| gotoPageUrl: '/mine/addBankCard' | |||
| }, | |||
| {name: 'star', imageUrl: '/static/image/center/1.png', title: '我的钱包', | |||
| gotoPageUrl: '/mine/purse'}, | |||
| ], | |||
| // 其他列表 | |||
| otherList: [ | |||
| {name: 'photo', imageUrl: '/static/image/center/1.png', title: '实名信息'}, | |||
| {name: 'lock', imageUrl: '/static/image/center/1.png', title: '帮助反馈'}, | |||
| ], | |||
| } | |||
| }, | |||
| methods: { | |||
| export default { | |||
| components: { | |||
| tabber | |||
| }, | |||
| computed: { | |||
| ...mapState(['userInfo']), | |||
| }, | |||
| data() { | |||
| return { | |||
| // 基础列表 | |||
| baseList: [{ | |||
| name: 'photo', | |||
| imageUrl: '/static/image/center/1.png', | |||
| title: '我的发布', | |||
| gotoPageUrl: '/mine/releaseRecord' | |||
| }, | |||
| { | |||
| name: 'lock', | |||
| imageUrl: '/static/image/center/1.png', | |||
| title: '我的推广', | |||
| gotoPageUrl: '/mine/promotionRecord' | |||
| }, | |||
| { | |||
| name: 'star', | |||
| imageUrl: '/static/image/center/1.png', | |||
| title: '我的银行卡', | |||
| gotoPageUrl: '/mine/addBankCard' | |||
| }, | |||
| { | |||
| name: 'star', | |||
| imageUrl: '/static/image/center/1.png', | |||
| title: '我的钱包', | |||
| gotoPageUrl: '/mine/purse' | |||
| }, | |||
| ], | |||
| // 其他列表 | |||
| otherList: [{ | |||
| name: 'photo', | |||
| imageUrl: '/static/image/center/1.png', | |||
| title: '实名信息' | |||
| }, | |||
| { | |||
| name: 'lock', | |||
| imageUrl: '/static/image/center/1.png', | |||
| title: '帮助反馈' | |||
| }, | |||
| ], | |||
| } | |||
| }, | |||
| onShow() { | |||
| // 获取用户个人信息 | |||
| this.$store.commit('getUserInfo') | |||
| }, | |||
| methods: { | |||
| // 点击列表跳转页面 | |||
| goToPage(item) { | |||
| this.$utils.navigateTo(item.gotoPageUrl) | |||
| }, | |||
| // 点击列表跳转页面 | |||
| goToPage(item) { | |||
| this.$utils.navigateTo(item.gotoPageUrl) | |||
| }, | |||
| } | |||
| } | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| * { | |||
| box-sizing: border-box; | |||
| margin: 0; | |||
| padding: 0; | |||
| } | |||
| .textColor { | |||
| background: $uni-linear-gradient-color; | |||
| -webkit-background-clip: text; /*将设置的背景颜色限制在文字中*/ | |||
| -webkit-text-fill-color: transparent; /*给文字设置成透明*/ | |||
| } | |||
| </style> | |||
| * { | |||
| box-sizing: border-box; | |||
| margin: 0; | |||
| padding: 0; | |||
| } | |||
| .textColor { | |||
| background: $uni-linear-gradient-color; | |||
| -webkit-background-clip: text; | |||
| /*将设置的背景颜色限制在文字中*/ | |||
| -webkit-text-fill-color: transparent; | |||
| /*给文字设置成透明*/ | |||
| } | |||
| </style> | |||
| @ -0,0 +1,92 @@ | |||
| <template> | |||
| <view class="payOrder"> | |||
| <navbar | |||
| leftClick | |||
| @leftClick="$utils.navigateBack" | |||
| title="订单支付"/> | |||
| <view class="pay"> | |||
| <view class=""> | |||
| 金额 | |||
| </view> | |||
| <view class=""> | |||
| ¥100 | |||
| </view> | |||
| </view> | |||
| <view class="submit" | |||
| @click="submit"> | |||
| 支付 | |||
| </view> | |||
| <confirmationPopup | |||
| ref="confirmationPopup" | |||
| title="提示" | |||
| confirmText="确认"> | |||
| <view class="confirmationPopup"> | |||
| <!-- <image src="/static/image/publish/upload.png" | |||
| style="width: 150rpx;height: 150rpx;" | |||
| mode=""></image> --> | |||
| <view> | |||
| 支付成功 | |||
| </view> | |||
| </view> | |||
| </confirmationPopup> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| import confirmationPopup from '@/components/toast/confirmationPopup.vue' | |||
| export default { | |||
| components : { | |||
| confirmationPopup, | |||
| }, | |||
| data() { | |||
| return { | |||
| } | |||
| }, | |||
| methods: { | |||
| submit(){ | |||
| this.$refs.confirmationPopup.open() | |||
| }, | |||
| } | |||
| } | |||
| </script> | |||
| <style scoped lang="scss"> | |||
| .payOrder{ | |||
| padding: 30rpx; | |||
| .pay{ | |||
| display: flex; | |||
| color: #999; | |||
| justify-content: space-between; | |||
| padding: 20rpx 0; | |||
| border-bottom: 1px solid #999; | |||
| } | |||
| .submit{ | |||
| background: $uni-linear-gradient-btn-color; | |||
| color: #fff; | |||
| padding: 20rpx 0; | |||
| text-align: center; | |||
| margin-top: 100rpx; | |||
| } | |||
| .confirmationPopup{ | |||
| display: flex; | |||
| flex-direction: column; | |||
| align-items: center; | |||
| justify-content: center; | |||
| width: 100%; | |||
| height: 200rpx; | |||
| image{ | |||
| margin-top: 40rpx; | |||
| } | |||
| .info{ | |||
| margin-top: 40rpx; | |||
| font-size: 26rpx; | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @ -0,0 +1,152 @@ | |||
| <template> | |||
| <view class="postDetail"> | |||
| <navbar leftClick @leftClick="$utils.navigateBack" /> | |||
| <view class="swipe"> | |||
| <uv-swiper | |||
| :list="item.image && | |||
| item.image.split(',')" | |||
| indicator | |||
| height="320rpx"></uv-swiper> | |||
| </view> | |||
| <view class="box"> | |||
| <view class="topInfo"> | |||
| <view class="title"> | |||
| {{ item.title }} | |||
| </view> | |||
| </view> | |||
| <view class="createBy"> | |||
| <view class=""> | |||
| 发布人:{{ item.userId }} | |||
| </view> | |||
| <view class=""> | |||
| 发布时间:{{ item.createTime }} | |||
| </view> | |||
| </view> | |||
| <view class="controls"> | |||
| <contentControls/> | |||
| </view> | |||
| <view class="content"> | |||
| <uv-parse :content="item.content"></uv-parse> | |||
| </view> | |||
| <view class="works"> | |||
| <view class="item" | |||
| v-for="(item, index) in 10" | |||
| :key="index"> | |||
| <view class="item-title"> | |||
| 代表作品夏 | |||
| </view> | |||
| <view class="item-image"> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </view> | |||
| </template> | |||
| <script> | |||
| import contentControls from '@/components/content/contentControls.vue' | |||
| export default { | |||
| components : { | |||
| contentControls | |||
| }, | |||
| data() { | |||
| return { | |||
| item: { | |||
| title: "这是一条动态", | |||
| createTime: '2024-08-22 09:00:00', | |||
| createBy: "小飞", | |||
| content: '这是一条动态这是一条动态这是一条动态这是一条动态这是一条动态这是一条动态这是一条动态这是一条动态这是一条动态这是一条动态这是一条动态', | |||
| }, | |||
| } | |||
| }, | |||
| onLoad(options) { | |||
| // this.$route.query的参数 | |||
| console.log(options) | |||
| // this.getData(options.id) | |||
| }, | |||
| methods: { | |||
| getData(id){ | |||
| this.$api('indexGetTrendsDetail', { | |||
| id | |||
| }, res => { | |||
| if(res.code == 200){ | |||
| this.item = res.result | |||
| } | |||
| }) | |||
| }, | |||
| } | |||
| } | |||
| </script> | |||
| <style lang="scss" scoped> | |||
| .postDetail { | |||
| .box { | |||
| padding: 20rpx; | |||
| .title { | |||
| font-size: 30rpx; | |||
| font-weight: 600; | |||
| color: #000; | |||
| } | |||
| .createBy { | |||
| display: flex; | |||
| margin-top: auto; | |||
| margin-bottom: 10rpx; | |||
| font-size: 24rpx; | |||
| margin-top: 20rpx; | |||
| color: #555; | |||
| &>view { | |||
| display: flex; | |||
| align-items: center; | |||
| justify-content: center; | |||
| padding-right: 20rpx; | |||
| } | |||
| } | |||
| .controls { | |||
| margin-top: 30rpx; | |||
| } | |||
| .content { | |||
| margin-top: 30rpx; | |||
| color: #777; | |||
| } | |||
| .works{ | |||
| display: flex; | |||
| flex-wrap: wrap; | |||
| margin-top: 20rpx; | |||
| .item{ | |||
| width: 320rpx; | |||
| margin: 15rpx; | |||
| .item-title{ | |||
| padding-bottom: 10rpx; | |||
| color: #000; | |||
| } | |||
| .item-image{ | |||
| background-color: #999; | |||
| width: 100%; | |||
| height: 250rpx; | |||
| image{ | |||
| width: 100%; | |||
| height: 100%; | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| } | |||
| </style> | |||
| @ -1,39 +0,0 @@ | |||
| import OSS from "ali-oss" | |||
| import utils from './utils.js' | |||
| import config from '../config.js' | |||
| function uploadFileToOSS(file) { | |||
| uni.showLoading({ | |||
| title: '上传中...' | |||
| }); | |||
| return new Promise((resolve,reject) => { | |||
| // 创建OSS实例 | |||
| const client = new OSS(config.aliOss.config); | |||
| // 设置文件名和文件目录 | |||
| const suffix = '.' + file.name.split('.').pop(); | |||
| const fileName = utils.generateUUID() + suffix; // 注意:文件名需要是唯一的 | |||
| // 使用put接口上传文件 | |||
| client.multipartUpload(fileName, file, { | |||
| headers: { | |||
| 'Content-Disposition': 'inline', | |||
| 'Content-Type': file.type | |||
| } | |||
| }).then(res => { | |||
| uni.hideLoading(); | |||
| resolve(config.aliOss.url + res.name); | |||
| }).catch(err => { | |||
| uni.hideLoading(); | |||
| reject(err) | |||
| }) | |||
| }) | |||
| } | |||
| export default uploadFileToOSS | |||