This commit is contained in:
Vinjor 2025-04-10 14:41:14 +08:00
parent 1009faf3b3
commit 74123ea7db
9 changed files with 979 additions and 19 deletions

View File

@ -8,7 +8,8 @@
"mine-index": "view", "mine-index": "view",
"notice-index": "view", "notice-index": "view",
"subscribe": "view", "subscribe": "view",
"my-notice": "view" "my-notice": "view",
"my-notice-tg": "view"
} }
} }
}, { }, {
@ -55,6 +56,18 @@
"navigationBarTitleText": "报名", "navigationBarTitleText": "报名",
"navigationStyle": "custom" "navigationStyle": "custom"
} }
},
{
"path": "report-list",
"style": {
"navigationBarTitleText": ""
}
},
{
"path": "card-item",
"style": {
"navigationBarTitleText": ""
}
} }
] ]
}, { }, {
@ -81,11 +94,23 @@
"navigationBarTitleText": "我的通告" "navigationBarTitleText": "我的通告"
} }
}, },
{
"path": "my-notice-tg",
"style": {
"navigationBarTitleText": "我的通告"
}
},
{ {
"path": "my-notice-item", "path": "my-notice-item",
"style": { "style": {
"navigationBarTitleText": "我的通告组件" "navigationBarTitleText": "我的通告组件"
} }
},
{
"path": "my-notice-item-tg",
"style": {
"navigationBarTitleText": "我的通告组件"
}
} }
] ]
}, { }, {

View File

@ -0,0 +1,170 @@
<template>
<view class="my-notice-item-box-tg">
<view class="notice-status">报名中</view>
<!-- 通告信息 -->
<view class="notice-main-box">
<notice-item :dataObj="item"></notice-item>
</view>
<!-- 操作按钮 -->
<view class="opt-button-box">
<!-- 状态为待审核和已审核的可以关闭 -->
<view class="opt-item" v-if="item.approvalStatus=='0' || item.approvalStatus=='1'">关闭</view>
<!-- 状态为已关闭的可以重启 -->
<view class="opt-item" v-if="item.approvalStatus=='2'">重启</view>
<view class="opt-item" @click="goDetail(item.id)">查看详情</view>
<view class="opt-item">发类似</view>
</view>
</view>
</template>
<script>
import noticeItem from '@/pages/components/notice-item.vue'
export default {
components: {
noticeItem
},
data() {
return {
item: {
"creator": "1",
"createTime": "2025-03-28 15:41:18",
"updater": "1",
"updateTime": "2025-03-28 15:41:18",
"delFlag": "0",
"params": {},
"id": "4797bd2c87bd5c2a480e412f6adb2459",
"userId": 103,
"title": "找小红书达人种草【蓝月亮】洗衣液",
"platformCode": "xiaohongshu",
"province": "河北省",
"city": "唐山市",
"feeDown": 100.00,
"feeUp": null,
"isSelfPrice": 0,
"giftDetail": null,
"giftPrice": null,
"endDate": "2025-03-31",
"brand": "蓝月亮",
"isShowBrand": 1,
"needNum": 100,
"fansDown": 100,
"fansUp": 100000,
"isEligible": 0,
"pic": null,
"collect": null,
"detail": "<p>找小红书达人种草【蓝月亮】洗衣液找小红书达人种草【蓝月亮】洗衣液找小红书达人种草【蓝月亮】洗衣液找小红书达人种草【蓝月亮】洗衣液找小红书达人种草【蓝月亮】洗衣液找小红书达人种草【蓝月亮】洗衣液找小红书达人种草【蓝月亮】洗衣液找小红书达人种草【蓝月亮】洗衣液找小红书达人种草【蓝月亮】洗衣液找小红书达人种草【蓝月亮】洗衣液找小红书达人种草【蓝月亮】洗衣液找小红书达人种草【蓝月亮】洗衣液找小红书达人种草【蓝月亮】洗衣液找小红书达人种草【蓝月亮】洗衣液找小红书达人种草【蓝月亮】洗衣液找小红书达人种草【蓝月亮】洗衣液找小红书达人种草【蓝月亮】洗衣液找小红书达人种草【蓝月亮】洗衣液找小红书达人种草【蓝月亮】洗衣液找小红书达人种草【蓝月亮】洗衣液</p>",
"images": "/profile/upload/2025/03/28/0306359214743be86f4d8f6dea4e5d0_20250328154103A008.png,/profile/upload/2025/03/28/1_20250328154109A009.png,/profile/upload/2025/03/28/2_20250328154109A010.png,/profile/upload/2025/03/28/3_20250328154109A011.png,/profile/upload/2025/03/28/4_20250328154109A012.png,/profile/upload/2025/03/28/5_20250328154109A013.png",
"bloggerTypes": "洗护,美妆,食品",
"isShowTel": 1,
"wechat": null,
"tel": null,
"groupImage": "/profile/upload/2025/03/28/0306359214743be86f4d8f6dea4e5d0_20250328154059A007.png",
"isUseCoupon": 0,
"approvalStatus": "1",
"approvalUserId": null,
"approvalTime": null,
"approvalRemark": null,
"similarityIds": null,
"userNickName": "微信用户",
"avatar": "",
"platformName": null,
"isSuper": null,
"signStatus": null,
"mainImage": "/profile/upload/2025/03/28/0306359214743be86f4d8f6dea4e5d0_20250328154103A008.png",
"viewNum": 31,
"reportNum": 0,
"bloggerTypesText": "洗护 美妆 食品",
"approvalUserName": null
}
}
},
methods: {
/**
* 查看详情
* @param {Object} id
*/
goDetail(id) {
this.$emit("goDetail", id)
}
}
}
</script>
<style lang="scss">
.my-notice-item-box:first-child {
margin-top: 20rpx;
}
.my-notice-item-box-tg {
width: 100%;
border-radius: 20rpx;
padding: 30rpx 20rpx;
background-color: white;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
margin-bottom: 20rpx;
position: relative;
.notice-status {
position: absolute;
right: 0;
top: 0;
font-size: 20rpx;
background-color: #FC1F3E;
color: white;
border-radius: 0 20rpx 0 20rpx;
padding: 7rpx 14rpx;
}
.report-title {
width: 100%;
display: flex;
align-items: flex-end;
justify-content: start;
.time-text {
flex: 1;
display: flex;
justify-content: flex-end;
align-items: center;
font-size: 20rpx;
color: #929292;
}
.status-text {
width: 200rpx;
font-size: 32rpx;
font-weight: bold;
padding: 5rpx;
}
}
.notice-main-box {
font-size: 29rpx;
width: 100%;
border-radius: 20rpx;
margin-bottom: 20rpx;
border-bottom: 1px solid #F4F4F4;
}
.opt-button-box {
width: 100%;
font-size: 30rpx;
padding-top: 10rpx;
display: flex;
justify-content: flex-end;
align-items: center;
.opt-item {
padding: 10rpx 25rpx;
margin-left: 20rpx;
color: #626464;
background-color: white;
border: 1rpx solid #C8C8C8;
border-radius: 40rpx;
}
}
}
</style>

View File

@ -0,0 +1,158 @@
<template>
<view class="my-notice-box">
<!-- 标题 -->
<view class="dl-title">
我的通告
</view>
<!-- 菜单 -->
<view class="dl-menu-box">
<view v-for="(item,index) in menus" @click="itemClick(index,item)" class="dl-menu"
:class="index==menuIndex?'dl-menu click':'dl-menu'">{{item}}</view>
</view>
<!-- 通告列表 -->
<view class="dl-body">
<view class="dl-item-box">
<scroll-view style="height: 100%;" scroll-y="true" @scrolltolower="onReachBottomCus" refresher-enabled
@refresherrefresh="onRefresherrefresh" :refresher-triggered="isTriggered">
<my-notice-item-tg v-if="dataList.length>0" :dataList="dataList"
@goDetail="goDetail()"></my-notice-item-tg>
<view style="text-align: center" v-if="dataList.length==0">
<image class="" src="@/static/images/nothing.png"></image>
</view>
</scroll-view>
</view>
</view>
</view>
</template>
<script>
import {
toast,
hasRights
} from '@/utils/common.js'
import myNoticeItemTg from '@/pages/components/my-notice-item-tg.vue'
export default {
components: {
myNoticeItemTg
},
data() {
return {
menus: ['进行中', '已关闭'],
menuIndex: 0,
dataList: ['', ''],
queryParams: {
pageNum: 1,
pageSize: 10,
},
total: 0,
//
isTriggered: false
}
},
methods: {
/**
* 菜单点击
* @param {Object} index
* @param {Object} item
*/
itemClick(index, item) {
this.menuIndex = index
//
this.onRefresherrefresh()
},
/**
* 上滑加载数据
*/
onReachBottomCus() {
// *
if (this.queryParams.pageNum * this.queryParams.pageSize >= this.total) {
toast("没有更多数据了")
return
}
//+1,
this.queryParams.pageNum++
},
/**
* 下拉刷新数据
*/
onRefresherrefresh() {
this.isTriggered = true
this.queryParams.pageNum = 1
this.total = 0
},
/**
/**
* 查看详情
* @param {Object} id
*/
goDetail(id) {
this.$tab.navigateTo('/pages/notice/detail?viewMy=true&id=' + id)
}
}
}
</script>
<style lang="scss">
.my-notice-box {
padding-top: var(--status-bar-height);
width: 100%;
color: #363636;
background-color: white;
font-size: 38rpx;
height: 100%;
display: flex;
flex-direction: column;
align-items: center;
justify-content: start;
position: relative;
.dl-title {
font-size: 32rpx;
width: 100%;
position: relative;
text-align: center;
font-weight: bold;
z-index: 10;
padding: 62rpx 0 15rpx 15rpx;
border-bottom: 1px solid #F4F4F4;
}
.dl-menu-box {
border-bottom: 1rpx solid #EEEEEE;
display: flex;
align-items: center;
justify-content: center;
width: 100%;
padding-top: 20rpx;
.dl-menu {
flex-grow: 1;
font-size: 30rpx;
margin: 0 20rpx;
padding-bottom: 12rpx;
text-align: center;
}
.click {
color: #FF434E;
font-weight: bold;
border-bottom: 3px solid #FF434E;
}
}
.dl-body {
flex: 1;
width: 100%;
height: 100%;
background-color: #EEEEEE;
padding: 0 20rpx 0 20rpx;
.dl-item-box {
height: calc(100vh - var(--status-bar-height) - var(--window-bottom) - 337rpx);
padding-top: 20rpx;
isplay: flex;
flex-direction: column;
}
}
}
</style>

View File

@ -3,11 +3,11 @@
<!-- 主体区域 --> <!-- 主体区域 -->
<view class="content-body"> <view class="content-body">
<!-- 通告列表页 --> <!-- 通告列表页 -->
<notice-index v-show="'home'==menuCode"></notice-index> <notice-index v-if="'home'==menuCode"></notice-index>
<mine-index :nowUserType.sync="nowUserType" @update:params="updateParams" <mine-index :key="nowUserType" :nowUserType="nowUserType" v-if="'my'==menuCode"></mine-index>
v-show="'my'==menuCode"></mine-index> <subscribe v-if="'dingyue'==menuCode"></subscribe>
<subscribe v-show="'dingyue'==menuCode"></subscribe> <my-notice v-if="'myNotice'==menuCode && '02'==nowUserType"></my-notice>
<my-notice v-show="'myNotice'==menuCode"></my-notice> <my-notice-tg v-if="'myNotice'==menuCode && '01'==nowUserType"></my-notice-tg>
</view> </view>
<tabBarVue :menuCode="menuCode" ref="tarBar" @changeMenu="changeMenu"></tabBarVue> <tabBarVue :menuCode="menuCode" ref="tarBar" @changeMenu="changeMenu"></tabBarVue>
</view> </view>
@ -25,6 +25,7 @@
import subscribe from '@/pages/components/subscribe.vue' import subscribe from '@/pages/components/subscribe.vue'
import mineIndex from '@/pages/mine/mine-index.vue' import mineIndex from '@/pages/mine/mine-index.vue'
import myNotice from '@/pages/components/my-notice.vue' import myNotice from '@/pages/components/my-notice.vue'
import myNoticeTg from '@/pages/components/my-notice-tg.vue'
import { import {
getSiteConfig getSiteConfig
} from '@/api/system/config.js' } from '@/api/system/config.js'
@ -38,7 +39,8 @@
noticeIndex, noticeIndex,
subscribe, subscribe,
mineIndex, mineIndex,
myNotice myNotice,
myNoticeTg
}, },
data() { data() {
return { return {
@ -57,6 +59,19 @@
menuCode: "home", menuCode: "home",
} }
}, },
watch: {
nowUserType(newVal, oldVal) {
console.log(newVal, "newVal")
console.log(oldVal, "oldVal")
this.nowUserType = newVal;
},
},
mounted() {
this.nowUserType = getUserType()
},
onShow() {
this.nowUserType = getUserType()
},
onLoad: function() { onLoad: function() {
this.nowUserType = getUserType() this.nowUserType = getUserType()
this.selectSiteConfig("platform_tel") this.selectSiteConfig("platform_tel")
@ -74,6 +89,7 @@
* @param {Object} code * @param {Object} code
*/ */
changeMenu(code) { changeMenu(code) {
this.nowUserType = getUserType()
this.menuCode = code this.menuCode = code
}, },
/** /**

View File

@ -42,9 +42,6 @@
<view class="fans-dom"> <view class="fans-dom">
粉丝{{ formatNumberWithUnits(item.fansNum) }} 粉丝{{ formatNumberWithUnits(item.fansNum) }}
</view> </view>
<!-- <view class="nickname-dom">-->
<!-- 昵称{{ item.accountName }}-->
<!-- </view>-->
</view> </view>
</view> </view>
</view> </view>

View File

@ -215,12 +215,8 @@
popupImgUrl: "", popupImgUrl: "",
} }
}, },
onShow() { onShow() {},
onLoad() {},
},
onLoad() {
},
mounted() { mounted() {
if (null != getJSONData(constant.userInfo)) { if (null != getJSONData(constant.userInfo)) {
this.userInfo = getJSONData(constant.userInfo) this.userInfo = getJSONData(constant.userInfo)
@ -256,7 +252,6 @@
changeUserType(type) { changeUserType(type) {
changeUserType(type) changeUserType(type)
this.localUserType = type this.localUserType = type
this.$emit('update:nowUserType', this.localUserType)
this.getDetail() this.getDetail()
this.$forceUpdate() this.$forceUpdate()
}, },

233
pages/notice/card-item.vue Normal file
View File

@ -0,0 +1,233 @@
<template>
<view class="dl-components">
<view class="card-dom " v-for="(item,index) in dataList">
<!-- 多选框--管理状态或者选择名片时使用 -->
<view class="choose-dom" v-if="ifChoose">
<uni-data-checkbox v-model="item.choosed" :disabled="item.canUse=='0'" multiple
:localdata="checkboxArray" />
</view>
<view :class="['right-content',item.choosed.length>0?'click':'']">
<view class="card-title">
<!-- 需要根据平台code取对应的图片 TODO -->
<image :src="'/static/platform/'+item.platformCode+'.png'" mode="aspectFit"></image>
<text>{{item.platformName}}博主</text>
<!-- <view class="edit-text" @click="edit()">
<text v-if="1==item.approvalStatus" style="color:#5986F2;">已审核</text>
<text v-else-if="0==item.approvalStatus" style="color:#FC1F3E ;">审核中</text>
<text v-else>未通过</text>
</view> -->
<view class="edit-text">
<text v-if="!item.ifChecked" style="color:#F97A35;">待定</text>
<text v-else style="color:#5986F2 ;">合适</text>
</view>
</view>
<view class="card-content">
<view class="card-person-info">
<view class="card-name">
<view>{{ item.accountName }}</view>
</view>
<view class="detail-text">
<view class="fans-dom">
粉丝{{ formatNumberWithUnits(item.fansNum) }}
</view>
</view>
</view>
</view>
<!-- <view v-if="ifEdit" @click="remove(item.id)" :class="['edit-dom',item.choosed.length>0?'':'no-choose']">
删除
</view>
<view v-else :class="['edit-dom',item.choosed.length>0?'':'no-choose']" @click="edit(item.id)">编辑
</view> -->
<view :class="['edit-dom','edit-dom-2']" @click="goIndex(item)">主页
</view>
<view :class="['edit-dom']" @click="chooseCardVal(!item.ifChecked)">{{item.ifChecked?"待定":"合适"}}
</view>
</view>
</view>
</view>
</template>
<script>
import {
formatNumberWithUnits
} from '@/utils/common.js'
import config from '@/config'
export default {
props: {
dataList: {
type: Array,
default: []
},
ifChoose: {
type: Boolean,
default: false
}
},
data() {
return {
checkboxArray: [{
text: '',
value: true
}],
}
},
methods: {
formatNumberWithUnits(num) {
return formatNumberWithUnits(num)
},
/**
* 去名片所有者主页
*/
goIndex(item) {
this.$emit("goIndex", item)
},
/**
* 将名片置为合适或不合适
*/
chooseCardVal(value) {
this.$emit("chooseCardVal", value)
}
}
}
</script>
<style lang="scss">
.dl-components {
.card-dom:first-child {
margin-top: 20rpx;
}
.card-dom {
width: 100%;
font-size: 30rpx;
display: flex;
align-items: center;
justify-content: start;
position: relative;
.choose-dom {
width: 60rpx;
display: flex;
align-items: center;
justify-content: start;
}
.edit-dom {
right: 0;
bottom: 0;
position: absolute;
padding: 10rpx 30rpx;
font-size: 25rpx;
color: white;
background-color: #FC1F3E;
border-radius: 15rpx 0 15rpx 0;
}
.edit-dom-2 {
right: 130rpx;
}
.no-choose {
right: -3rpx !important;
bottom: -3rpx !important;
padding: 10rpx 33rpx 13rpx 30rpx !important;
border-radius: 15rpx 0 20rpx 0 !important;
}
.right-content {
flex: 1;
width: 100%;
border: 3rpx solid white;
padding: 20rpx;
border-radius: 20rpx;
background-color: white;
position: relative;
z-index: 10;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
margin-bottom: 20rpx;
.card-title {
width: 100%;
display: flex;
align-items: center;
justify-content: center;
image {
width: 40rpx;
height: 40rpx;
}
text {
padding-left: 10rpx;
flex: 1;
}
.edit-text {
display: flex;
align-items: center;
justify-content: flex-end;
text-align: right;
width: 150rpx;
}
}
.card-content {
margin-top: 20rpx;
width: 100%;
display: flex;
align-items: center;
justify-content: flex-start;
image {
width: 120rpx;
height: 120rpx;
border-radius: 15rpx;
}
.card-person-info {
padding-left: 20rpx;
flex: 1;
display: flex;
align-items: self-start;
justify-content: center;
flex-direction: column;
.card-name {
font-weight: bold;
font-size: 32rpx;
}
image {
margin-left: 10rpx;
width: 20rpx;
height: 20rpx;
}
.detail-text {
width: 100%;
display: flex;
color: #363636;
align-items: center;
justify-content: start;
font-size: 24rpx;
padding: 5rpx 0;
.fans-dom {
width: 30%;
}
.nickname-dom {
flex: 1;
}
}
}
}
}
}
}
</style>

View File

@ -1,8 +1,23 @@
<template> <template>
<view class="dl-detail-box"> <view class="dl-detail-box">
<navigation-bar-vue title="会员中心" style="width: 100%;" background-color="#ffffff" <navigation-bar-vue title="通告详情" style="width: 100%;" background-color="#ffffff"
title-color="#000000"></navigation-bar-vue> title-color="#000000"></navigation-bar-vue>
<view class="notice-detail-last-box"> <view class="notice-detail-last-box">
<!-- 报名列表 -->
<view class="info-box notice-detail" v-if="viewMy">
<view class="detail-title">已报名{{imageArray.length||0}}</view>
<view class="image-box" v-if="imageArray.length>0"
:style="{height:(imageArray.length*(imageWidth+10)+20)+'rpx'}">
<view class="image-row" v-for="(row,rowIndex) in imageArray">
<image v-for="(item,i) in row"
:style="{ top:(imageWidth+10)*rowIndex+'rpx',left:imageWidth*i+'rpx'}"
src="@/static/images/profile.jpg" mode="aspectFit">
</image>
</view>
</view>
<!-- <view class="view-report-button" v-if="imageArray.length>0" @click="goReportList()">查看报名</view> -->
<view class="view-report-button" @click="goReportList()">查看报名</view>
</view>
<!-- 博主信息 --> <!-- 博主信息 -->
<view class="info-box"> <view class="info-box">
<image class="image" :src="userDetail.avatar?imageUrl+userDetail.avatar :'/static/images/profile.jpg'" <image class="image" :src="userDetail.avatar?imageUrl+userDetail.avatar :'/static/images/profile.jpg'"
@ -118,7 +133,7 @@
</view> </view>
</view> </view>
<!-- 报名列表 --> <!-- 报名列表 -->
<view class="info-box notice-detail"> <view class="info-box notice-detail" v-if="!viewMy">
<view class="detail-title">已报名{{imageArray.length||0}}</view> <view class="detail-title">已报名{{imageArray.length||0}}</view>
<view class="image-box" v-if="imageArray.length>0" <view class="image-box" v-if="imageArray.length>0"
:style="{height:(imageArray.length*(imageWidth+10)+20)+'rpx'}"> :style="{height:(imageArray.length*(imageWidth+10)+20)+'rpx'}">
@ -206,6 +221,8 @@
}, },
data() { data() {
return { return {
//-
viewMy: false,
//ID //ID
noticeId: null, noticeId: null,
imageUrl: config.baseUrl, imageUrl: config.baseUrl,
@ -273,6 +290,9 @@
// this.$refs.alertDialog.open() // this.$refs.alertDialog.open()
}, },
onLoad(params) { onLoad(params) {
if (params.viewMy) {
this.viewMy = true
}
this.noticeId = params.id this.noticeId = params.id
if (null != getJSONData(constant.userInfo)) { if (null != getJSONData(constant.userInfo)) {
this.userInfo = getJSONData(constant.userInfo) this.userInfo = getJSONData(constant.userInfo)
@ -354,6 +374,12 @@
}); });
}) })
}, },
/**
* 去报名列表
*/
goReportList() {
this.$tab.navigateTo('/pages/notice/report-list')
},
/** /**
* 查通告详情 * 查通告详情
*/ */
@ -785,6 +811,16 @@
} }
} }
} }
.view-report-button {
text-align: center;
margin: auto;
border-radius: 40rpx;
width: 75%;
background-color: #FC1F3E;
color: white;
padding: 15rpx 0;
}
} }
.dl-bottom-box { .dl-bottom-box {

View File

@ -0,0 +1,330 @@
<template>
<view class="container-box">
<navigation-bar-vue title="查看报名" style="width: 100%;" background-color="#ffffff"
title-color="#000000"></navigation-bar-vue>
<view class="content">
<!-- 操作按钮 -->
<view class="dl-opt-box">
<view class="dl-menu-box" v-for="(item,index) in menus">
<view @click="itemClick(index,item)" class="dl-menu"
:class="index==menuIndex?'dl-menu click':'dl-menu'">
{{item}}({{0==menuIndex?waitingTotal:checkedTotal}})
</view>
</view>
</view>
<!-- 待定的列表 -->
<view class="data-list-box" v-if="0==menuIndex">
<scroll-view style="height: 100%;" scroll-y="true" @scrolltolower="onReachBottomCus" refresher-enabled
@refresherrefresh="onRefresherrefresh" :refresher-triggered="isTriggered">
<card-item :dataList="waitingList" ifChoose="true" @goIndex="goIndex()"
@chooseCardVal="chooseCardVal()"></card-item>
<view style="text-align: center" v-if="waitingList.length==0">
<image class="" src="@/static/images/nothing.png"></image>
</view>
</scroll-view>
</view>
<!-- 合适的列表 -->
<view class="data-list-box" v-if="1==menuIndex">
<scroll-view style="height: 100%;" scroll-y="true" @scrolltolower="onReachBottomCus" refresher-enabled
@refresherrefresh="onRefresherrefresh" :refresher-triggered="isTriggered">
<card-item :dataList="checkedList" ifChoose="true" @goIndex="goIndex()"
@chooseCardVal="chooseCardVal()"></card-item>
<view style="text-align: center" v-if="checkedList.length==0">
<image class="" src="@/static/images/nothing.png"></image>
</view>
</scroll-view>
</view>
</view>
<view class="footer-box">
<view class="left-radio">
<uni-data-checkbox v-if="0==menuIndex" @change="chooseAllFun()" multiple :localdata="chooseAll" />
<uni-data-checkbox v-else @change="chooseAllFun()" multiple :localdata="chooseAll" />
</view>
<view class="right-button">
<text v-if="0==menuIndex" style="color: #929292;">可在合适列表导出名单</text>
<text v-if="1==menuIndex">已选择{{getChooseNum}}</text>
<view v-if="0==menuIndex" class="button-dom" @click="chooseOk">划为合适</view>
<view v-if="1==menuIndex" class="button-dom" @click="exportList">导出名单</view>
</view>
</view>
</view>
</template>
<script>
import navigationBarVue from '@/components/navigation/navigationBar.vue';
import cardItem from '@/pages/notice/card-item.vue';
import {
toast,
hasRights
} from '@/utils/common.js'
export default {
components: {
navigationBarVue,
cardItem
},
data() {
return {
chooseAll: [{
text: '全选',
value: true
}],
globalConfig: getApp().globalData.config,
menus: ['待定', '合适'],
menuIndex: 0,
queryParams: {
pageNum: 1,
pageSize: 10
},
//
waitingList: [{
id: "",
//
choosed: [],
//
ifChecked: false,
platformCode: "xiaohongshu",
platformName: "小红书",
accountName: "mark",
fansNum: 1000
}, {
id: "",
//
choosed: [],
//
ifChecked: false,
platformCode: "xiaohongshu",
platformName: "小红书",
accountName: "mark",
fansNum: 1000
}],
//
checkedList: [{
id: "",
//
choosed: [],
//
ifChecked: true,
platformCode: "xiaohongshu",
platformName: "小红书",
accountName: "mark",
fansNum: 1000
}, {
id: "",
//
choosed: [],
//
ifChecked: true,
platformCode: "xiaohongshu",
platformName: "小红书",
accountName: "mark",
fansNum: 1000
}],
//
waitingTotal: 0,
//
checkedTotal: 0,
//
isTriggered: false,
}
},
computed: {
getChooseNum() {
return this.checkedList.filter((item) => item.choosed.length > 0).length
}
},
methods: {
/**
* 菜单点击
* @param {Object} index
* @param {Object} item
*/
itemClick(index, item) {
this.menuIndex = index
},
/**
* 上滑加载数据
*/
onReachBottomCus() {
// *
let total = (0 == this.menuIndex ? this.waitingTotal : this.checkedTotal)
if (this.queryParams.pageNum * this.queryParams.pageSize >= total) {
toast("没有更多数据了")
return
}
//+1,
this.queryParams.pageNum++
},
/**
* 下拉刷新数据
*/
onRefresherrefresh() {
this.isTriggered = true
this.queryParams.pageNum = 1
if (0 == this.menuIndex) {
this.waitingTotal = 0
} else {
this.checkedTotal = 0
}
},
/**
* 全选
* @param {Object} e
*/
chooseAllFun(e) {
if (e.detail.value.length > 0) {
if (0 == this.menuIndex) {
this.waitingList.map((item) => {
item.choosed = [true]
})
} else {
this.checkedList.map((item) => {
item.choosed = [true]
})
}
} else {
if (0 == this.menuIndex) {
this.waitingList.map((item) => {
item.choosed = []
})
} else {
this.checkedList.map((item) => {
item.choosed = []
})
}
}
},
/**
* 批量划为合适
*/
chooseOk() {},
/**
* 导出名单
*/
exportList() {},
/**
* 去名片所有者主页
*/
goIndex(item) {},
/**
* 将名片置为合适或不合适
*/
chooseCardVal(value) {}
}
}
</script>
<style lang="scss">
.container-box {
padding-top: calc(90rpx + var(--status-bar-height));
border-top: 1rpx solid #F4F4F4;
background-color: white;
width: 100%;
color: #363636;
font-size: 30rpx;
height: 100%;
display: flex;
flex-direction: column;
align-items: self-start;
justify-content: center;
position: relative;
.content {
border-top: 1rpx solid #F4F4F4;
height: calc(100vh - var(--status-bar-height) - var(--window-bottom) - 195rpx);
overflow-y: scroll;
width: 100%;
background-color: #F2F2F2;
border-radius: 20rpx;
display: flex;
flex-direction: column;
align-items: self-start;
justify-content: start;
position: relative;
.dl-opt-box {
background-color: white;
width: 100%;
display: flex;
align-items: center;
justify-content: center;
.dl-menu-box {
color: #929292;
display: flex;
flex: 1;
align-items: center;
justify-content: center;
width: 100%;
padding-top: 20rpx;
.dl-menu {
width: auto;
font-size: 30rpx;
margin: 0 20rpx;
padding-bottom: 15rpx;
text-align: center;
}
.click {
color: #FF434E;
font-weight: bold;
border-bottom: 2px solid #FF434E;
}
}
}
.data-list-box {
flex: 1;
padding: 20rpx 30rpx;
display: flex;
flex-direction: column;
align-items: self-start;
justify-content: start;
width: 100%;
}
}
.footer-box {
z-index: 999;
padding: 20rpx 30rpx;
background-color: white;
width: 100%;
display: flex;
align-items: center;
justify-content: start;
position: fixed;
bottom: var(--window-bottom);
.left-radio {
text-align: left;
width: 30%;
}
.right-button {
flex: 1;
display: flex;
align-items: center;
justify-content: flex-end;
text {
margin-right: 15rpx;
font-size: 24rpx;
}
.button-dom {
display: flex;
align-items: center;
justify-content: center;
padding: 10rpx 40rpx;
background-color: #FC1F3E;
border-radius: 15rpx;
color: white;
}
}
}
}
</style>