|
|
- <template>
- <view class="page">
-
- <navbar title="分享记录" />
-
- <view class="content">
-
- <view class="card" style="padding-left: 0; padding-right: 10rpx;">
- <uv-tabs
- :list="tabs"
- @click="clickTabs"
- :inactiveStyle="{
- color: '#999999',
- fontSize: '30rpx',
- fontWeight: 500,
- whiteSpace: 'nowrap',
- }"
- :activeStyle="{
- color: '#1B1B1B',
- fontSize: '38rpx',
- fontWeight: 900,
- whiteSpace: 'nowrap',
- }"
- lineHeight="13rpx"
- lineWidth="77rpx"
- :lineColor="`url(${sliderBgUrl}) 100% 100%`"
- :scrollable="false"
- >
- <template v-slot:right>
- <suspendDropdown
- v-model="status"
- :options="auditStatusOptions"
- @change="onAuditStatusChange"
- ></suspendDropdown>
- </template>
- </uv-tabs>
- </view>
-
- <view v-if="list.length" class="card list">
- <view class="list-item"
- v-for="item in list"
- @click="toSharingDetail(item.id)"
- :key="item.id"
- >
- <!-- todo: video? -->
- <image class="left" :src="item.indexImage || item.headImage"></image>
- <view class="right">
- <view class="title">{{ item.headTitle || '' }}</view>
- <view class="desc">{{ item.textDetails || '' }}</view>
- <view class="bottom">
- <text class="desc">{{ item.createTime || '' }}</text>
- <button plain class="btn-simple btn-delete flex" @click.stop="onDelete(item.id)">
- <image src="../../static/image/record/delete.png" style="width: 24rpx; height: 24rpx;"></image>
- <text style="margin-left: 10rpx;">删除</text>
- </button>
- </view>
-
- <view class="mark">
- <image
- :src="auditStatusImgMapping[item.status]"
- style="width: 100rpx; height: 100rpx;"
- ></image>
- </view>
- </view>
- </view>
- </view>
-
- <!-- todo: empty -->
- </view>
-
- <popupActivate ref="popupActivate"></popupActivate>
-
- <tabber select="record"/>
- </view>
- </template>
-
- <script>
- import { mapGetters } from 'vuex'
- import mixinsList from '@/mixins/list.js'
-
- import tabber from '@/components/base/tabbar.vue'
- import suspendDropdown from '@/components/base/suspendDropdown.vue'
- import popupActivate from '@/components/center/popupActivate.vue'
-
- const URL_MAPPING = { // state -> url
- '0': '/pages_order/record/personalSharing',
- '1': '/pages_order/record/videoSharing',
- '2': '/pages_order/record/groupSharing',
- '3': '/pages_order/record/articleSharing',
- }
-
- export default {
- mixins : [mixinsList],
- components : {
- tabber,
- suspendDropdown,
- popupActivate,
- },
- computed : {
- ...mapGetters(['userShop']),
- },
- data() {
- return {
- tabs: [{
- name: '个人分享'
- },
- {
- name: '视频分享'
- },
- {
- name: '群分享'
- },
- {
- name: '文章分享'
- },
- ],
- auditStatusOptions: [
- {
- label: '审核中',
- value: 0,
- },
- {
- label: '已通过',
- value: 1,
- },
- {
- label: '未通过',
- value: 2,
- },
- ],
- queryParams: {
- pageNo: 1,
- pageSize: 10,
- state: 0,
- },
- status: null,
- recordList : { // 列表数据
- records : [],
- total : 0,
- },
- auditStatusImgMapping: {
- 0: '../../static/image/record/audit.png', // 审核中
- 1: '../../static/image/record/pass.png', // 已通过
- 2: '../../static/image/record/fail.png', // 未通过
- },
- // todo
- sliderBgUrl: '',
- mixinsListApi : 'getSharePage',
- }
- },
- methods: {
- //点击tab栏
- clickTabs(e) {
- this.queryParams.state = e.index
- this.queryParams.pageNo = 1
- this.queryParams.pageSize = 10
- this.getData()
- },
- onAuditStatusChange(status) {
- this.status = status
- this.queryParams.pageNo = 1
- this.queryParams.pageSize = 10
-
- if (status === null) {
- delete this.queryParams.status
- } else {
- this.queryParams.status = status
- }
-
- this.getData()
- },
- //跳转分享详情页面
- toSharingDetail(id) {
- if (!this.userInfo.isPay) {
- this.$refs.popupActivate.open()
- return
- }
- uni.navigateTo({
- url: `${URL_MAPPING[this.queryParams.state]}?id=${id}`
- })
- },
- onDelete(id) {
- uni.showModal({
- title: '确认删除该分享吗',
- success: async (r) => {
- if(r.confirm){
- await this.$fetch('deleteLog', { id, state: this.queryParams.state })
- this.getData()
- }
- }
- })
- },
- }
- }
- </script>
-
- <style scoped lang="scss">
- .page{
- }
-
- .content {
- padding: 20rpx;
- }
-
- .list {
- margin-top: 20rpx;
- padding: 40rpx 59rpx 40rpx 43rpx;
-
- &-item {
- font-size: 0;
- display: flex;
-
- & + & {
- margin-top: 40rpx;
- }
-
- .left {
- width: 220rpx;
- height: 148rpx;
- }
- .right {
- flex: 1;
- width: calc(100% - 220rpx);
- padding-left: 20rpx;
- box-sizing: border-box;
- position: relative;
- }
- }
-
- .title {
- color: #1B1B1B;
- font-size: 28rpx;
- }
-
- .desc {
- color: #999999;
- font-size: 24rpx;
- white-space: nowrap;
- overflow: hidden;
- text-overflow: ellipsis;
- text-align: left;
- }
-
- .title + .desc {
- margin-top: 18rpx;
- }
-
- .bottom {
- position: absolute;
- bottom: 0;
- width: calc(100% - 20rpx);
- }
-
- .btn-delete {
- float: right;
- color: #05D9A2;
- font-size: 20rpx;
- }
-
- .mark {
- position: absolute;
- top: 10rpx;
- right: 5rpx;
- }
- }
-
- .popup {
- &-options {
- box-shadow: 0 2px 12px 0 rgba(0,0,0,.1);
- padding: 16rpx 40rpx;
- }
-
- &-option {
- color: #999999;
- font-size: 28rpx;
-
- &.is-active {
- color: #1B1B1B;
- font-weight: 700;
- }
-
- & + & {
- margin-top: 16rpx;
- }
- }
- }
- </style>
|