| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199 |
- <template>
- <view class='purchase-list'>
- <view class="content-title">
- <text class="text-bold" style="font-size: 40upx;">消息</text>
- <text>({{unreadCount}})</text>
- <text style="margin-left: 10upx;cursor: pointer;color: gray;" @click="handleUpdateAll">
- <uni-icons type="paperclip" size="15"></uni-icons>
- 全部已读
- </text>
- </view>
- <scroll-view class="purchase-body" scroll-y="true" @scrolltolower="scrolltolower" @scrolltoupper="scrolltoupper"
- @scroll="scroll" @touchstart="touchstart" @touchend="touchend">
- <uni-list :border="false" style="margin-top: 10px;">
- <uni-list-chat style="cursor: pointer;" v-for="item in listData" :avatar-circle="true" :key="item.id"
- :title="item.templateNickname" avatar="https://img.36krcdn.com/20200410/v2_fb948f4c18de4b22927f0361d53f6caf_img_png" :note="item.templateParams.content"
- :time="parseTime(item.createTime)" :clickable="true" badge-positon="left"
- :badge-text="item.readStatus?'':'dot'" @click="toggle(item)">
- </uni-list-chat>
- </uni-list>
- </scroll-view>
- <view>
- <!-- 底部弹窗 -->
- <uni-popup ref="popup" background-color="#fff" border-radius="10px 10px 0 0">
- <view class="popup-body">
- <view class="popup-close">
- <uni-icons type="closeempty" size="20" @click="popupClose"></uni-icons>
- </view>
- <view class="popup-content">
- <uni-forms :model="itemData" label-position="top">
- <uni-forms-item label="发送人">
- <uni-easyinput disabled v-model="itemData.name"/>
- </uni-forms-item>
- <uni-forms-item label="创建时间">
- <uni-easyinput disabled v-model="itemData.time"/>
- </uni-forms-item>
- <uni-forms-item label="内容" style="margin-bottom: 50px;">
- <uni-easyinput disabled type="textarea" v-model="itemData.content"/>
- </uni-forms-item>
- </uni-forms>
- </view>
- </view>
-
- </uni-popup>
- </view>
-
- </view>
- </template>
- <script>
- import {
- getMyNotifyMessagePage,
- updateNotifyMessageRead,
- updateAllNotifyMessageRead,
- getUnreadNotifyMessageCount,
- } from "@/api/message/index"
- import myPull from '@/static/js/myPull.js'
- export default {
- data() {
- return {
- unreadCount: 0,
- pageNo: 1,
- pageSize: 10,
- listData: [],
- itemData: {
- name:'',
- time:'',
- content:'',
- },
- }
- },
- onLoad() {
- this.refresh();
- },
- created() {
- this.getUnreadCount();
- },
- methods: {
- popupClose(){
- this.$refs.popup.close();
- },
- toggle(item) {
- this.itemData.name = item.templateNickname;
- this.itemData.time = this.parseTime(item.createTime);
- this.itemData.content = item.templateParams.content;
- this.$refs.popup.open('bottom');
- if(item.readStatus==false){
- this.handleUpdate([item.id]);
- }
- },
- handleUpdateSingle(row) {
- this.handleUpdate([row.id])
- },
- handleUpdate(ids) {
- updateNotifyMessageRead(ids).then(response => {
- // this.$modal.msgSuccess("消息已读!")
- this.page = 1;
- this.getList(this.page, this.__pulldone)
- });
- },
- handleUpdateAll() {
- updateAllNotifyMessageRead().then(response => {
- this.$modal.msgSuccess("全部已读!")
- this.page = 1;
- this.getList(this.page, this.__pulldone)
- });
- },
- getUnreadCount() {
- getUnreadNotifyMessageCount().then(response => {
- this.unreadCount = response.data;
- })
- },
- /**
- * @name 获取列表
- */
- getList(page, done) {
- getMyNotifyMessagePage({
- pageNo: page,
- pageSize: this.pageSize
- }).then(response => {
- let list = response.data.list;
- done(list);
- });
- },
- /**
- * @name 触底加载
- */
- scrolltolower(event) {
- this.getList(this.page, this.__pulldone)
- },
- scroll(e) {
- // 重新设置pulldown
- this.setPullDown(e.detail.scrollTop < 10)
- },
- scrolltoupper() {
- },
- },
- mixins: [myPull({})],
- }
- </script>
- <style lang="scss" scoped>
- .popup-body{
- z-index: 99;
- // margin-bottom: 60px;
- }
- .popup-close{
- cursor: pointer;
- height: 40px;
- line-height: 40px;
- padding-left: 10px;
- border-bottom: 1px solid #eaecef;
- }
- .popup-content{
- margin: 20px;
- }
- .purchase-list {
- background-color: #f5f5f5;
- height: 100%;
- overflow: hidden;
- .purchase-body {
- height: calc(100% - 88upx);
- overflow: auto
- }
- }
- .content-title {
- background-color: #ffffff;
- height: 88upx;
- font-size: 28upx;
- position: sticky;
- box-sizing: border-box;
- padding: 0 10px;
- border-bottom: 2upx solid #dddddd;
- box-shadow: rgba(0, 0, 0, 0.08) 0px 0px;
- min-width: 100%;
- overflow-x: auto;
-
- }
- .chat-custom-right {
- flex: 1;
- /* #ifndef APP-NVUE */
- display: flex;
- /* #endif */
- flex-direction: column;
- justify-content: space-between;
- align-items: flex-end;
- }
- .chat-custom-text {
- font-size: 12px;
- color: #999;
- }
- </style>
|