| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698 |
- <template>
- <view class="flex-common-css">
- <Nav title="我的发布" titleColor="#333" bgckgroundBox='#fff'></Nav>
- <view class="tab-box flex-justify-around bgc-f ">
- <view class="tab-but flex-1 flex-direction align-items-center" v-for="(item, index) in tabList" :key="index"
- @click="tabStitle(item.status)">
- <view class="fs-32 mb-18" :class="status==item.status?'fc-41ABF5':'fc-3'">
- {{item.name}}
- </view>
- <view v-show="status==item.status" class="tab-hr bgc-41ABF5"></view>
- </view>
- </view>
- <scroll-view :scroll-y="true" class="scroll-view-css content-box box-sizing-border"
- @scrolltolower="scrolltolower">
- <view v-if="listData.length <= 0" class="scroll-view-css">
- <EnBlank :customSrc='true'>
- <template v-slot:blankImg>
- <image class="black-custom-img" src="@/static/img/common/no-order.png" mode=""></image>
- </template>
- </EnBlank>
- </view>
- <view class="item-box box-sizing-border b-rad-20 mb-20 bgc-f flex-justify-space"
- v-for="(item,index) in listData" :key="index" @click="goToUrl(item)">
- <image class="item-head-img flex-shrink0 b-rad-50 mr-16" :src="item.head_img" mode="aspectFill"></image>
- <view class="itme-right common-view-css box-border-box">
- <view class="item-name flex-justify-space mb-16">
- <view class="">
- <view class="mb-4 fc-3 fs-28">
- {{item.nickname}}
- </view>
- <view class="fs-24 fc-9">
- {{item.created_date}}
- </view>
- </view>
- <view class="align-items-center">
- <image class="rd-img mr-8" src="@/static/img/my/rd.png" mode=""></image>
- <view class="fs-26 fc-9">
- {{item.heat}}
- </view>
- </view>
- </view>
- <view class="item-content fs-30 fc-3 mb-16">
- {{item.content}}
- </view>
- <view class="item-img-box mb-20 align-items-center flex-wrap-wrap">
- <image class="b-rad-12" v-for="imgUrl in item.image" :src="imgUrl" mode="aspectFill"
- :class="item.image.length==1?'item-img-one':item.image.length==2?'item-img-two':'item-img-three'">
- </image>
- </view>
- <view class="align-items-center mb-40">
- <view class="label-box align-items-center mr-20 b-rad-200 bgc-F2F2F2">
- <image class="wz mr-8" src="@/static/img/my/wz.png" mode=""></image>
- <view class="fs-24 fc-9">
- {{item.school_name}}
- </view>
- </view>
- <view class="label-box align-items-center b-rad-200 bgc-F2F2F2">
- <image class="wz mr-8" src="@/static/img/my/ht.png" mode=""></image>
- <view class="fs-24 fc-9">
- {{item.topic_name}}
- </view>
- </view>
- </view>
- <view class="flex-justify-space">
- <view class="align-items-center" @click.stop="handUp(1,item)">
- <uni-icons class="mr-8" type="hand-up" size="22"
- :color="item.is_like==1?'#FD5C02':'#999'"></uni-icons>
- <view class="fs-24 fc-9">
- {{item.like}}
- </view>
- </view>
- <view class="align-items-center" @click.stop="openMsg(item,0)">
- <image class="but-icons mr-8" src="@/static/img/my/hf.png" mode=""></image>
- <view class="fs-24 fc-9">
- {{item.remark}}
- </view>
- </view>
- <view class="" @click.stop="alumniDelClick(item)">
- <uni-icons color="#999999" type="trash" size="20"></uni-icons>
- </view>
- </view>
- </view>
- </view>
- </scroll-view>
- <movable-area class="add-box" v-show="false">
- <movable-view direction="all" y="300">
- <view class="add-but b-rad-50 text-align-center" @click="addInfo()">
- <uni-icons type="plusempty" color="#fff" size="30"></uni-icons>
- </view>
- </movable-view>
- </movable-area>
- <uni-popup ref="popmsg" type="bottom">
- <view class="pop-box pop-msg box-border-box p-24">
- <!-- 输入框 -->
- <view class="pop-input" v-if="isShowIpnut">
- <view class="head-pop flex-justify-space align-items-center mb-24 box-border-box p-24">
- <view class="fs-28 fw-600 fc-41ABF5"></view>
- <view class="fs-36 fc-0 fw-600">评论</view>
- <uni-icons @click.stop="closeInput()" type="closeempty" size="24"></uni-icons>
- </view>
- <view class="scroll-view-css">
- <view class="bgc-f box-border-box p-32">
- <view class="fs-34 fw-600 mb-20">评论</view>
- <textarea v-model="msgData.content" maxlength="100" class=" fs-24"
- placeholder='友善评论,文明发言'></textarea>
- </view>
- </view>
- <view class="box-border-box p-24">
- <view class="save-box" @click.stop="save()">评论</view>
- </view>
- </view>
- <!-- ----- -->
- <view class="head-pop flex-justify-space align-items-center mb-24">
- <view class=""></view>
- <view class="fs-36 fc-0 fw-600">评论内容</view>
- <uni-icons @click.stop="closeMsg()" type="closeempty" size="24"></uni-icons>
- </view>
- <view v-if="remarkData.list.length === 0" class="scroll-view-css">
- <EnBlank :customSrc='true'>
- <template v-slot:blankImg>
- <image class="black-custom-img" src="@/static/img/common/no-order.png" mode=""></image>
- </template>
- </EnBlank>
- </view>
- <view v-else class="scroll-view-css box-border-box plr-24">
- <view class="list-box flex-justify-space" v-for="(item,i) in remarkData.list" :key="i">
- <image class="list-box-img" :src="item.head_img" mode="scaleToFill"></image>
- <view class="flex-1 p-b-20">
- <view class=" flex-justify-space">
- <view class=" b-b-F9F9F9 mr-20">
- <view class="fs-28 fw-400 fc-9 mb-8 align-items-center">
- {{item.nickname}}
- <span v-if="item.is_author == 1"
- class='only-box text-align-center fs-24 fc-41ABF5 ml-10'>作者</span>
- <view class="ml-10" v-if="item.is_self == 1" @click="delInfo(item)">
- <uni-icons type="trash" size="18"></uni-icons>
- </view>
- </view>
- <view class="fs-30 fw-400 mb-8" @click.stop="openInput(1,item)">
- {{item.content}}
- </view>
- <view class="fs-24 fw-400 fc-9 mb-8">{{item.created_date}}</view>
- </view>
- <view class="display-flex" @click.stop="handUp(2,item)">
- <uni-icons type="hand-up" size="20"
- :color="item.is_like==1?'#FD5C02':'#999'"></uni-icons>
- <view class="fs-24 fw-400 mt-5" :class="item.is_like==1?'fc-FD5C02':'fc-9'">
- {{item.like}}
- </view>
- </view>
- </view>
- <view v-if="item.isOpen" class="fs-24 fc-6 text-align-center mb-12"
- @click="openReply(1,item)">展开更多评论
- </view>
- <!-- 回复 -->
- <view class="mb-16" v-if="item.replyList.length > 0">
- <view class="list-box flex-justify-space" v-for="(info,index) in item.replyList"
- :key="index">
- <image class="list-box-img" :src="info.head_img" mode="scaleToFill"></image>
- <view class="flex-1">
- <view class=" flex-justify-space">
- <view class=" b-b-F9F9F9 mr-20">
- <view class="fs-28 fw-400 fc-9 mb-8 align-items-center">
- {{info.nickname}}
- <span v-if="info.is_author == 1"
- class='only-box text-align-center fs-24 fc-41ABF5 ml-10'>作者</span>
- <view class="ml-10" v-if="info.is_self == 1" @click="delInfo(info)">
- <uni-icons type="trash" size="18"></uni-icons>
- </view>
- </view>
- <view class="fs-30 fw-400 mb-8" @click.stop="openInput(2,info)">
- {{info.content}}
- </view>
- <view class="fs-24 fw-400 fc-9 mb-8">{{info.created_date}}</view>
- </view>
- <view class="display-flex" @click.stop="handUp(2,info)">
- <uni-icons type="hand-up" size="20"
- :color="info.is_like==1?'#FD5C02':'#999'"></uni-icons>
- <view class="fs-24 fw-400 mt-5"
- :class="info.is_like==1?'fc-FD5C02':'fc-9'">{{info.like}}</view>
- </view>
- </view>
- </view>
- </view>
- <view v-if="item.replyList.length < item.count"
- class="fs-24 fc-6 text-align-center mb-12" @click="openReply(2,item)">展开更多评论</view>
- </view>
- </view>
- </view>
- <view v-if="remarkData.list.length < remarkData.total" class="text-align-center fs-26"
- @click="scrolltolowerList">加载更多评论</view>
- </view>
- <view class="input-box text-align-left fs-28 fc-9 box-border-box plr-24" @click.stop="openInput(0,'')">
- 友善评论,文明发言</view>
- </view>
- </uni-popup>
- </view>
- </template>
- <script>
- import EnBlank from "@/components/en-utils/en-blank/en-blank";
- import {
- alumnMyAlumni,
- setAlumniLike,
- getRemarkList,
- setCreateRemark,
- alumniDel,
- setRemarkLike,
- delRemark,
- alumnInfo
- } from "@/api/alumni.js"
- import tools from "@/service/tools";
- export default {
- components: {
- EnBlank
- },
- data() {
- return {
- tabList: [{
- name: '已发布',
- status: 1
- }, {
- name: '审核中',
- status: 0
- }, {
- name: '审核失败',
- status: 2
- }, ],
- status: 1,
- listData: [],
- isShowIpnut: false,
- // 一级评论
- remarkData: {
- remark_id: '',
- news_id: '',
- total: 0,
- list: [],
- page: 1,
- },
- // 发起评论
- msgData: {
- news_id: '',
- remark_id: '',
- content: '',
- reply_id: '',
- },
- // 回复评论
- replyData: {
- page: 1,
- },
- isAJAX: false,
- total: 0,
- page: 1
- };
- },
- onLoad(data) {},
- mounted() {
- this.alumnMyAlumni()
- },
- methods: {
- tabStitle(status) {
- if (this.status != status) {
- this.status = status
- this.page = 1;
- this.listData = [];
- this.alumnMyAlumni()
- }
- },
- goToUrl(item) {
- if (this.status == 1) {
- alumnInfo({
- news_id: item.news_id
- }).then((res) => {
- if (res.code === 1) {
- uni.navigateTo({
- url: "/pages-school/circle-info?news_id=" + item.news_id
- })
- } else {
- tools.error(res.msg)
- }
- })
- }
- },
- alumniDelClick(item) {
- // 删除帖子
- alumniDel({
- news_id: item.news_id
- }).then((res) => {
- if (res.code == 1) {
- tools.success(res.msg)
- this.listData = []
- this.page = 1;
- this.alumnMyAlumni()
- } else {
- tools.error(res.msg)
- }
- })
- },
- // 加载更多评论
- scrolltolowerList() {
- if (this.remarkData.list.length < this.remarkData.total) {
- this.remarkData.page += 1;
- this.getMsg();
- }
- },
- // 点赞
- handUp(type, item) {
- if (this.isAJAX) {
- return
- }
- this.isAJAX = true;
- let is_like = item.is_like == 1 ? 0 : 1;
- if (type == 1) {
- // 点赞贴子
- setAlumniLike({
- news_id: item.news_id,
- is_like: is_like
- }).then((res) => {
- this.handUpFun(res, item, is_like)
- })
- } else {
- // 点赞评论
- setRemarkLike({
- news_id: item.news_id,
- is_like: is_like,
- remark_id: item.id
- }).then((res) => {
- this.handUpFun(res, item, is_like)
- })
- }
- },
- // 点赞公共回复
- handUpFun(res, item, is_like) {
- if (res.code === 1) {
- item.is_like = is_like;
- if (is_like == 0) {
- item.like -= 1
- } else {
- item.like += 1
- }
- this.isAJAX = false;
- tools.success(res.msg);
- } else {
- this.isAJAX = false;
- tools.error(res.msg);
- }
- },
- openInput(type, item) {
- if (type == 0) {
- this.msgData.remark_id = 0;
- } else if (type == 1) {
- this.msgData.remark_id = item.id;
- this.msgData.reply_id = item.m_id;
- } else {
- this.msgData.remark_id = item.remark_id;
- this.msgData.reply_id = item.m_id;
- }
- this.isShowIpnut = true;
- },
- save() {
- if (this.isAJAX) {
- return
- }
- this.isAJAX = true;
- setCreateRemark(this.msgData).then((res) => {
- if (res.code == 1) {
- tools.success('评论成功')
- setTimeout(() => {
- this.isAJAX = false;
- this.closeInput()
- if (this.msgData.remark_id == 0) {
- this.remarkData.list = [];
- this.remarkData.page = 1;
- this.getMsg();
- // this.list = [];
- // this.fromData.page = 1;
- this.listData = []
- this.page = 1;
- this.alumnMyAlumni()
- } else {
- this.remarkData.list = [];
- this.remarkData.page = 1;
- this.getMsg();
- }
- }, 1500)
- } else {
- this.isAJAX = false;
- tools.error(res.msg)
- }
- })
- },
- closeInput() {
- this.isShowIpnut = false;
- this.msgData.remark_id = '';
- this.msgData.content = '';
- this.msgData.reply_id = '';
- },
- // 打开评论
- openMsg(item) {
- uni.navigateTo({
- url: "/pages-school/circle-info?news_id=" + item.news_id
- })
- // this.remarkData.news_id = item.news_id;
- // this.msgData.news_id = item.news_id;
- // this.remarkData.remark_id = 0;
- // this.getMsg();
- },
- // 获取回复列表
- openReply(type, item) {
- // type 1获取其他 2加载更多
- if (this.isAJAX) {
- return
- }
- this.isAJAX = true;
- if (type == 1) {
- item.replyList = [];
- this.replyData.page = 1;
- } else {
- this.replyData.page += 1;
- }
- getRemarkList({
- news_id: item.news_id,
- remark_id: item.id,
- page: this.replyData.page
- }).then((res) => {
- if (res.code === 1) {
- this.isAJAX = false;
- item.replyList = [...item.replyList, ...res.data.items];
- item.isOpen = false;
- } else {
- this.isAJAX = false;
- tools.error(res.msg)
- }
- })
- },
- closeMsg() {
- this.$refs.popmsg.close();
- this.remarkData.list = [];
- this.remarkData.page = 1;
- this.msgData.news_id = '';
- this.remarkData.remark_id = '';
- },
- delInfo(item) {
- if (this.isAJAX) {
- return
- }
- this.isAJAX = true;
- delRemark({
- remark_id: item.id
- }).then((res) => {
- if (res.code === 1) {
- tools.success('删除成功')
- setTimeout(() => {
- this.isAJAX = false;
- this.remarkData.list = [];
- this.remarkData.page = 1;
- this.getMsg();
- // this.list = [];
- // this.fromData.page = 1;
- // this.getList();
- this.listData = []
- this.page = 1;
- this.alumnMyAlumni()
- }, 1500)
- } else {
- this.isAJAX = false;
- tools.error(res.msg)
- }
- })
- },
- // 获取评论
- getMsg() {
- if (this.isAJAX) {
- return
- }
- this.isAJAX = true;
- getRemarkList({
- news_id: this.remarkData.news_id,
- remark_id: this.remarkData.remark_id,
- page: this.remarkData.page
- }).then((res) => {
- if (res.code === 1) {
- this.isAJAX = false;
- this.remarkData.list = [...this.remarkData.list, ...res.data.items];
- this.remarkData.total = res.data.total;
- this.remarkData.list.forEach((v) => {
- v.replyList = [];
- if (v.count > 0) {
- v.isOpen = true;
- }
- })
- this.$refs.popmsg.open();
- } else {
- this.isAJAX = false;
- tools.error(res.msg)
- }
- })
- },
- scrolltolower() {
- if (this.listData.length < this.total) {
- this.page += 1;
- this.alumnMyAlumni();
- }
- },
- alumnMyAlumni() {
- alumnMyAlumni({
- status: this.status,
- page: this.page
- }).then((res) => {
- if (res.code == 1) {
- if (res.data.items.length > 0) {
- this.listData.push(...res.data.items)
- this.total = res.data.total
- }
- }
- })
- }
- },
- }
- </script>
- <style lang="scss" scoped>
- .tab-box {
- padding: 22rpx 0 4rpx 0;
- }
- .tab-hr {
- width: 40rpx;
- height: 4rpx;
- border-radius: 2rpx;
- }
- .item-content {
- width: 558rpx;
- // white-space: nowrap;
- word-wrap: break-word;
- }
- .content-box {
- padding: 20rpx 24rpx;
- }
- .item-box {
- padding: 24rpx;
- }
- .item-name {
- align-items: flex-start;
- }
- .item-head-img {
- width: 80rpx;
- height: 80rpx;
- }
- .rd-img {
- width: 40rpx;
- height: 40rpx;
- }
- .label-box {
- padding: 0 12rpx;
- height: 38rpx;
- line-height: 38rpx;
- }
- .wz {
- width: 32rpx;
- height: 32rpx;
- }
- .but-icons {
- width: 40rpx;
- height: 40rpx;
- }
- .item-img-box {
- width: calc(100% + 6rpx);
- }
- .item-img-one {
- width: 360rpx;
- height: 360rpx;
- }
- .item-img-two {
- width: 276rpx;
- height: 276rpx;
- margin: 0 6rpx 0 0;
- }
- .item-img-three {
- width: 182rpx;
- height: 182rpx;
- margin: 0 6rpx 6rpx 0;
- }
- .add-box {
- position: fixed;
- right: 98rpx;
- top: 10vh;
- max-width: 88rpx;
- height: 80vh;
- z-index: 999;
- }
- .add-but {
- width: 88rpx;
- height: 88rpx;
- line-height: 88rpx;
- background: linear-gradient(284deg, #0290FC 0%, #01D8FF 100%);
- }
- .pop-box {
- width: 100%;
- height: 50vh;
- background-color: #fff;
- border-radius: 24rpx 24rpx 0rpx 0rpx;
- display: flex;
- flex-direction: column;
- .item-box {
- width: 100%;
- height: 92rpx;
- border-radius: 200rpx;
- line-height: 92rpx;
- text-align: center;
- margin-bottom: 24rpx;
- }
- }
- .pop-msg {
- height: 70vh;
- position: relative;
- .pop-input {
- position: absolute;
- width: 100%;
- height: 70vh;
- background-color: #fff;
- bottom: 0;
- left: 0;
- border-top: 1rpx solid #ccc;
- border-radius: 20rpx 20rpx 0 0;
- display: flex;
- flex-direction: column;
- .save-box {
- text-align: center;
- line-height: 88rpx;
- font-weight: 600;
- font-size: 32rpx;
- color: #FFFFFF;
- width: 100%;
- height: 80rpx;
- border-radius: 200rpx;
- background: linear-gradient(105deg, #57CAFF 0%, #41ABF5 100%);
- }
- }
- .head-pop {
- padding-bottom: 34rpx !important;
- border-bottom: 1rpx solid #F2F2F2;
- }
- .list-box {
- .list-box-img {
- width: 80rpx;
- height: 80rpx;
- border-radius: 50%;
- margin-right: 16rpx;
- }
- .only-box {
- padding: 4rpx 16rpx;
- background: rgba(65, 171, 245, 0.1);
- border-radius: 8rpx 8rpx 8rpx 8rpx;
- }
- .msg-img {
- width: 144rpx;
- height: 144rpx;
- border-radius: 12rpx;
- margin-right: 5rpx;
- margin-bottom: 5rpx;
- }
- .msg-img:nth-child(3n) {
- margin-right: 0rpx;
- }
- .msg-img-1 {
- width: 100rpx !important;
- height: 100rpx !important;
- }
- }
- }
- </style>
|