This commit is contained in:
Vinjor 2025-04-07 15:40:11 +08:00
commit b1e17aea7f
5 changed files with 314 additions and 150 deletions

View File

@ -10,6 +10,24 @@ export function getNoticeList(params) {
})
}
// 订阅查询通告列表
export function getSubscribeList(params) {
return request({
url: '/busi/notice/subscribeList',
method: 'get',
params: params
})
}
// 关注查询通告列表
export function getLoveList(params) {
return request({
url: '/busi/notice/loveList',
method: 'get',
params: params
})
}
// 查通告详情
export function getNoticeDetail(params) {
return request({
@ -35,4 +53,4 @@ export function closeNotice(params) {
method: 'post',
params: params
})
}
}

View File

@ -70,10 +70,6 @@
<scroll-view style="height: 100%;" scroll-y="true" @scrolltolower="onReachBottomCus" refresher-enabled
@refresherrefresh="onRefresherrefresh" :refresher-triggered="isTriggered">
<notice-item v-if="dataList.length>0" :dataList="dataList" @goDetail="goDetail()"></notice-item>
<notice-item v-if="dataList.length>0" :dataList="dataList" @goDetail="goDetail()"></notice-item>
<notice-item v-if="dataList.length>0" :dataList="dataList" @goDetail="goDetail()"></notice-item>
<notice-item v-if="dataList.length>0" :dataList="dataList" @goDetail="goDetail()"></notice-item>
<notice-item v-if="dataList.length>0" :dataList="dataList" @goDetail="goDetail()"></notice-item>
<view style="text-align: center" v-if="dataList.length==0">
<image class="" src="@/static/images/nothing.png"></image>
</view>
@ -189,7 +185,7 @@
pageSize: 10,
//:new-money-
sortBy: "",
//--
//--
gift: "",
platformCode: "",
platformName: "平台",
@ -427,6 +423,7 @@
} else {
this.dataList = this.dataList.concat(res.data.records)
}
this.total = res.data.total
}
}).catch((e) => {
this.isTriggered = false
@ -712,4 +709,4 @@
margin: 10rpx;
}
}
</style>
</style>

View File

@ -32,6 +32,18 @@
<script>
import noticeItem from '@/pages/components/notice-item.vue'
import rightsCode from '@/utils/rightsCode'
import {
getCatgByCode
} from '@/api/system/config.js'
import {
toast,
hasRights
} from '@/utils/common.js'
import {
getSubscribeList,
getLoveList
} from '@/api/business/notice.js'
export default {
components: {
noticeItem
@ -40,14 +52,104 @@
return {
menus: ['订阅', '关注'],
menuIndex: 0,
dataList: ['', '', '', ''],
dataList: [],
isTriggered: false,
queryParams: {
pageNum: 1,
pageSize: 10,
}
},
//
showSearch: false,
//
chooseCondition: 9,
total: 0,
//
isTriggered: false,
//
platformList: [],
//
bloggerTypeList: [],
}
},
mounted() {
this.initData("dl_platform", "platformList")
this.initData("dl_blogger_type", "bloggerTypeList")
this.selectDataList()
},
methods: {
/**
* 查看通告详情
* @param {Object} item
*/
goDetail(item) {
this.$tab.navigateTo(`/pages/notice/detail?id=${item.id}`)
},
/**
* 初始化数据
* @param {Object} code
* @param {Object} dataObj
*/
initData(code, dataObj) {
let that = this
getCatgByCode({
code: code
}).then(res => {
if (res.code == 200) {
this[dataObj] = res.data
}
}).catch((e) => {
uni.showToast({
icon: 'error',
duration: 2000,
title: e
});
})
},
/**
* 查询数据
*/
selectDataList() {
if (this.menuIndex == 0) {
getSubscribeList(this.queryParams).then(res => {
this.isTriggered = false
if (res.code == 200) {
if (this.queryParams.pageNum == 1) {
this.dataList = res.data.records
} else {
this.dataList = this.dataList.concat(res.data.records)
}
this.total = res.data.total
}
}).catch((e) => {
this.isTriggered = false
uni.showToast({
icon: 'error',
duration: 2000,
title: e
});
})
} else {
getLoveList(this.queryParams).then(res => {
this.isTriggered = false
if (res.code == 200) {
if (this.queryParams.pageNum == 1) {
this.dataList = res.data.records
} else {
this.dataList = this.dataList.concat(res.data.records)
}
this.total = res.data.total
}
}).catch((e) => {
this.isTriggered = false
uni.showToast({
icon: 'error',
duration: 2000,
title: e
});
})
}
},
/**
* 菜单点击
* @param {Object} index
@ -59,8 +161,15 @@
} else if ('关注' == item) {
//
}
this.queryParams = {
pageNum: 1,
pageSize: 10,
}
this.menuIndex = index
this.selectDataList()
},
/**
* 上滑加载数据
*/
@ -72,6 +181,7 @@
}
//+1,
this.queryParams.pageNum++
this.selectDataList()
},
/**
* 下拉刷新数据
@ -80,6 +190,8 @@
this.isTriggered = true
this.queryParams.pageNum = 1
this.total = 0
this.selectDataList()
},
/**
* 去订阅设置页面
@ -175,4 +287,4 @@
}
}
}
</style>
</style>

View File

@ -8,8 +8,8 @@
<image class="image" :src="userDetail.avatar?imageUrl+userDetail.avatar :'/static/images/profile.jpg'"
mode="aspectFit"></image>
<view class="name-info">
<view class="name">{{userDetail.nickName}}</view>
<view class="text">{{userDetail.identityType}}</view>
<view class="name">{{userDetail.nickName||''}}</view>
<view class="text">{{userDetail.identityType||''}}</view>
</view>
<view class="fork-info">
<view class="up-box">
@ -25,9 +25,9 @@
<view class="dl-notice-title">
<image class="dl-image" :src="'/static/platform/'+noticeDetail.platformCode+'.png'"
mode="aspectFit"></image>
<view class="dl-text">{{noticeDetail.title}}</view>
<view class="dl-text">{{noticeDetail.title||''}}</view>
</view>
<view class="end-time">截止日期{{noticeDetail.endDate}}</view>
<view class="end-time">截止日期{{noticeDetail.endDate||''}}</view>
<view class="field-box">
<view class="dl-item">
<view class="dl-label">
@ -35,45 +35,45 @@
</view>
<view class="dl-value">
<text v-if="null==noticeDetail.feeUp">无稿费</text>
<text v-else>¥{{noticeDetail.feeDown}}-{{noticeDetail.feeUp}}</text>
<text v-else>¥{{noticeDetail.feeDown||''}}-{{noticeDetail.feeUp||''}}</text>
</view>
</view>
<view class="dl-item">
<view class="dl-label">
招募名额
</view>
<view class="dl-value">{{noticeDetail.needNum}} </view>
<view class="dl-value">{{noticeDetail.needNum||''}} </view>
</view>
<view class="dl-item">
<view class="dl-label">
产品品牌
</view>
<view class="dl-value">{{noticeDetail.brand}} </view>
<view class="dl-value">{{noticeDetail.brand||''}} </view>
</view>
<view class="dl-item">
<view class="dl-label">
粉丝要求
</view>
<view class="dl-value">
{{formatNumberWithUnits(noticeDetail.fansDown)}}-{{formatNumberWithUnits(noticeDetail.fansUp)}}
{{formatNumberWithUnits(noticeDetail.fansDown)||''}}-{{formatNumberWithUnits(noticeDetail.fansUp)||''}}
</view>
</view>
<view class="dl-item">
<view class="dl-label">
地区要求
</view>
<view class="dl-value">{{noticeDetail.city}} </view>
<view class="dl-value">{{noticeDetail.city||''}} </view>
</view>
<view class="dl-item">
<view class="dl-label">
博主类型
</view>
<view class="dl-value">{{noticeDetail.bloggerTypes}}</view>
<view class="dl-value">{{noticeDetail.bloggerTypes||''}}</view>
</view>
</view>
<view class="bottom-box">
<text class="update-text">{{calculateTimeDifference(noticeDetail.updateTime)}}更新</text>
<text class="view-text">{{noticeDetail.viewNum}} 阅读</text>
<text class="update-text">{{calculateTimeDifference(noticeDetail.updateTime)||''}}更新</text>
<text class="view-text">{{noticeDetail.viewNum||''}} 阅读</text>
</view>
</view>
<!-- 通告详情 -->
@ -83,7 +83,8 @@
<rich-text style="width: 100%" :nodes="noticeDetail.detail" />
</view>
<view class="detail-images">
<image v-for="(item,index) in noticeDetail.imageArray" :src="imageUrl+item" mode="widthFix"></image>
<image v-for="(item,index) in noticeDetail.imageArray" @click="preview(noticeDetail.imageArray)"
:src="imageUrl+item" mode="widthFix"></image>
</view>
</view>
<!-- 联系方式 -->
@ -118,7 +119,7 @@
</view>
<!-- 报名列表 -->
<view class="info-box notice-detail">
<view class="detail-title">收到报名{{imageArray.length}}</view>
<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">
@ -132,7 +133,7 @@
<!-- 去报名始终浮动下方 -->
<view class="dl-bottom-box" v-show="showBottom">
<!-- 报名 -->
<view class="report-box" v-if="null==userInfo || noticeDetail.userId!=userInfo.userId">
<view class="report-box">
<view @click="goHome()">
<image src="@/static/detail/home.png" mode="aspectFit"></image>
</view>
@ -144,7 +145,7 @@
<view v-else class="join-report" @click="changeUserType()">切换博主后报名</view>
</view>
<!-- 通告发布人能操作的 -->
<view class="report-box" v-if="null!=userInfo && userInfo.userId==noticeDetail.userId">
<view class="report-box" v-if="null!=userInfo && userInfo.userId==noticeDetail.userId&&ifBz==false">
<view v-if="'0'==noticeDetail.approvalStatus" class="close-notice">关闭</view>
<view v-if="'0'==noticeDetail.approvalStatus" class="waiting-approval">
<view>审核中</view>
@ -195,6 +196,9 @@
postForkUser
} from '@/api/business/base.js'
import config from '@/config'
import {
getSignCard
} from '@/api/business/signCard.js'
export default {
components: {
shareImages,
@ -277,6 +281,16 @@
this.viewNotice()
},
methods: {
preview(imageArray) {
let previewImages = []
imageArray.forEach(it => {
previewImages.push(this.imageUrl + it)
})
uni.previewImage({
urls: previewImages, //
});
},
/**
* 转换时间单位
* @param {Object} time
@ -435,7 +449,25 @@
* 报名
*/
goReport() {
this.$tab.navigateTo('/pages/notice/report')
getSignCard({
noticeId: this.noticeId
}).then(res => {
if (res.code == 200) {
if (res.data.canUserNum > 0) {
this.$tab.navigateTo('/pages/notice/report')
} else {
this.$refs.alertDialog.open()
}
console.log(res);
}
}).catch((e) => {
uni.showToast({
icon: 'error',
duration: 2000,
title: e
});
})
},
/**
* 分享
@ -823,4 +855,4 @@
}
}
}
</style>
</style>

View File

@ -1,130 +1,130 @@
<template>
<view class="dingyue-box">
<navigation-bar-vue style="width: 100%;" title="报名" background-color="#FFFFFF"
title-color="#3D3D3D"></navigation-bar-vue>
<view class="select-box-dom">
<view class="line-box">
<view class="dl-title">领域</view>
<view class="dl-content">
<view class="line-row" v-for="(item,index) in bloggerTypeList">
<view v-for="(t,i) in item"
:class="dataObj.bloggerTypeCode.indexOf(t.code)>-1?'line-item click':'line-item'"
@click="changeChooseValue(t,'bloggerTypeCode')">
{{t.title}}
</view>
<view style="clear: both;"></view>
</view>
</view>
</view>
<view class="line-box">
<view class="dl-title">平台</view>
<view class="dl-content">
<view class="line-row" v-for="(item,index) in platformList">
<view v-for="(t,i) in item"
:class="dataObj.platformCode.indexOf(t.code)>-1?'line-item click':'line-item'"
@click="changeChooseValue(t,'platformCode')">
{{t.title}}
</view>
<view style="clear: both;"></view>
</view>
</view>
</view>
<view class="line-box">
<view class="dl-title">结算方式</view>
<view class="dl-content">
<view class="line-row" v-for="(item,index) in noticeTypeList">
<view v-for="(t,i) in item"
:class="dataObj.noticeTypeCode.indexOf(t.code)>-1?'line-item click':'line-item'"
@click="changeChooseValue(t,'noticeTypeCode')">
{{t.title}}
</view>
<view style="clear: both;"></view>
</view>
</view>
</view>
<view class="line-box">
<view class="dl-title">关键词<text>包含以下关键词的通告将被收入订阅</text></view>
<view class="dl-content">
<view class="line-row">
<view class="keywords-item" v-for="(item,index) in dataObj.keywordsList">
{{checkKeywords(item)}} <uni-icons class="icon-text" type="closeempty" size="13"
@click="delKeywords(item)"></uni-icons>
</view>
<view class="keywords-item" @click="addNewKeys()">
<uni-icons type="plusempty" size="13"></uni-icons>
</view>
<view style="clear: both;"></view>
</view>
</view>
</view>
<view class="line-box">
<view class="dl-title">粉丝</view>
<view class="dl-content">
<view class="line-row">
<uni-data-select v-model="dataObj.fansLimit" :localdata="range" @change="change($event,'fans')"
:clear="false"></uni-data-select>
</view>
<view class="line-row" v-show="dataObj.fansLimit">
<view class="dl-drawer-item">
<input class="uni-input" v-model="dataObj.fansDown" type="digit" placeholder="最低" />
<view></view>
<input class="uni-input" v-model="dataObj.fansUp" type="digit" placeholder="最高" />
<navigation-bar-vue style="width: 100%;" title="报名" background-color="#FFFFFF"
title-color="#3D3D3D"></navigation-bar-vue>
<view class="select-box-dom">
<view class="line-box">
<view class="dl-title">领域</view>
<view class="dl-content">
<view class="line-row" v-for="(item,index) in bloggerTypeList">
<view v-for="(t,i) in item"
:class="dataObj.bloggerTypeCode.indexOf(t.code)>-1?'line-item click':'line-item'"
@click="changeChooseValue(t,'bloggerTypeCode')">
{{t.title}}
</view>
<view style="clear: both;"></view>
</view>
</view>
</view>
</view>
<view class="line-box">
<view class="dl-title">奖励</view>
<view class="dl-content">
<view class="line-row" v-for="(item,index) in rewardTypeList">
<view v-for="(t,i) in item"
:class="dataObj.rewardTypeCode.indexOf(t.code)>-1?'line-item click':'line-item'"
@click="changeChooseValue(t,'rewardTypeCode')">
{{t.title}}
</view>
<view style="clear: both;"></view>
</view>
</view>
</view>
<view class="line-box">
<view class="dl-title">稿费要求</view>
<view class="dl-content">
<view class="line-row">
<uni-data-select v-model="dataObj.feeLimit" :localdata="range" @change="change($event,'fee')"
:clear="false"></uni-data-select>
</view>
<view class="line-row" v-show="dataObj.feeLimit">
<view class="dl-drawer-item">
<input class="uni-input" v-model="dataObj.feeDown" type="digit" placeholder="最低" />
<view></view>
<input class="uni-input" v-model="dataObj.feeUp" type="digit" placeholder="最高" />
<view class="line-box">
<view class="dl-title">平台</view>
<view class="dl-content">
<view class="line-row" v-for="(item,index) in platformList">
<view v-for="(t,i) in item"
:class="dataObj.platformCode.indexOf(t.code)>-1?'line-item click':'line-item'"
@click="changeChooseValue(t,'platformCode')">
{{t.title}}
</view>
<view style="clear: both;"></view>
</view>
</view>
</view>
</view>
<view class="line-box">
<view class="dl-title">推送</view>
<view class="dl-content">
<view class="line-row">
<view class="seting-view"><text>符合订阅设置的新通告</text>
<switch v-if="dataObj.newNotice" style="float: right;display: flex;" checked color="#FC1F3E"
@change="switchChange($event,'newNotice')" />
<switch v-else style="float: right;display: flex;" color="#FC1F3E"
@change="switchChange($event,'newNotice')" />
</view>
<view class="seting-view"><text>订阅通告主新通告</text>
<switch v-if="dataObj.forkNotice" style="float: right;display: flex;" checked color="#FC1F3E"
@change="switchChange($event,'forkNotice')" />
<switch v-else style="float: right;display: flex;" color="#FC1F3E"
@change="switchChange($event,'forkNotice')" />
<view class="line-box">
<view class="dl-title">结算方式</view>
<view class="dl-content">
<view class="line-row" v-for="(item,index) in settleTypeList">
<view v-for="(t,i) in item"
:class="dataObj.settleTypeCode==t.code?'line-item click':'line-item'"
@click="changeChooseValue(t,'settleTypeCode')">
{{t.title}}
</view>
<view style="clear: both;"></view>
</view>
</view>
</view>
<view class="line-box">
<view class="dl-title">关键词<text>包含以下关键词的通告将被收入订阅</text></view>
<view class="dl-content">
<view class="line-row">
<view class="keywords-item" v-for="(item,index) in dataObj.keywordsList">
{{checkKeywords(item)}} <uni-icons class="icon-text" type="closeempty" size="13"
@click="delKeywords(item)"></uni-icons>
</view>
<view class="keywords-item" @click="addNewKeys()">
<uni-icons type="plusempty" size="13"></uni-icons>
</view>
<view style="clear: both;"></view>
</view>
</view>
</view>
<view class="line-box">
<view class="dl-title">粉丝</view>
<view class="dl-content">
<view class="line-row">
<uni-data-select v-model="dataObj.fansLimit" :localdata="range" @change="change($event,'fans')"
:clear="false"></uni-data-select>
</view>
<view class="line-row" v-show="dataObj.fansLimit">
<view class="dl-drawer-item">
<input class="uni-input" v-model="dataObj.fansDown" type="digit" placeholder="最低" />
<view></view>
<input class="uni-input" v-model="dataObj.fansUp" type="digit" placeholder="最高" />
</view>
</view>
</view>
</view>
<!-- <view class="line-box">
<view class="dl-title">奖励</view>
<view class="dl-content">
<view class="line-row" v-for="(item,index) in rewardTypeList">
<view v-for="(t,i) in item"
:class="dataObj.rewardTypeCode.indexOf(t.code)>-1?'line-item click':'line-item'"
@click="changeChooseValue(t,'rewardTypeCode')">
{{t.title}}
</view>
<view style="clear: both;"></view>
</view>
</view>
</view> -->
<view class="line-box">
<view class="dl-title">稿费要求</view>
<view class="dl-content">
<view class="line-row">
<uni-data-select v-model="dataObj.feeLimit" :localdata="range" @change="change($event,'fee')"
:clear="false"></uni-data-select>
</view>
<view class="line-row" v-show="dataObj.feeLimit">
<view class="dl-drawer-item">
<input class="uni-input" v-model="dataObj.feeDown" type="digit" placeholder="最低" />
<view></view>
<input class="uni-input" v-model="dataObj.feeUp" type="digit" placeholder="最高" />
</view>
</view>
</view>
</view>
<view class="line-box">
<view class="dl-title">推送</view>
<view class="dl-content">
<view class="line-row">
<view class="seting-view"><text>符合订阅设置的新通告</text>
<switch v-if="dataObj.newNotice" style="float: right;display: flex;" checked color="#FC1F3E"
@change="switchChange($event,'newNotice')" />
<switch v-else style="float: right;display: flex;" color="#FC1F3E"
@change="switchChange($event,'newNotice')" />
</view>
<view class="seting-view"><text>订阅通告主新通告</text>
<switch v-if="dataObj.forkNotice" style="float: right;display: flex;" checked
color="#FC1F3E" @change="switchChange($event,'forkNotice')" />
<switch v-else style="float: right;display: flex;" color="#FC1F3E"
@change="switchChange($event,'forkNotice')" />
</view>
</view>
</view>
</view>
<view class="line-box" style="align-items: center;">
<view class="submit-box" @click="saveSet()">保存</view>
</view>
</view>
<view class="line-box" style="align-items: center;">
<view class="submit-box" @click="saveSet()">保存</view>
</view>
</view>
<!-- 输入框示例 -->
<uni-popup ref="inputDialog" type="dialog" :key="keywordsValue">
<uni-popup-dialog ref="inputClose" mode="input" title="新增关键词" placeholder="请输入关键词"
@ -155,16 +155,16 @@
//
bloggerTypeList: [],
//--
noticeTypeList: [
settleTypeList: [
[{
code: "-1",
title: "不限"
}, {
code: "money",
title: "高奖励"
code: "0",
title: "普通结算"
}, {
code: "gift",
title: "品牌置换"
code: "1",
title: "平台结算"
}]
],
//--
@ -184,7 +184,7 @@
dataObj: {
bloggerTypeCode: [],
platformCode: [],
noticeTypeCode: [],
settleTypeCode: '',
//
keywordsList: [],
rewardTypeCode: [],
@ -324,7 +324,12 @@
* @param {Object} key
*/
changeChooseValue(item, key) {
console.log(item, 320);
if (key == 'settleTypeCode') {
this.dataObj[key] = item.code
console.log(this.dataObj[key], 320);
return
}
if (item.code == '-1') {
this.dataObj[key] = []
this.dataObj[key].push(item.code)