调整
This commit is contained in:
@@ -126,7 +126,11 @@ const router = new VueRouter({
|
|||||||
name: 'singleTrack',
|
name: 'singleTrack',
|
||||||
component: () => import('../view/selection/singletrack/Index.vue')
|
component: () => import('../view/selection/singletrack/Index.vue')
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
path: 'info',
|
||||||
|
name: 'info',
|
||||||
|
component: () => import('../view/Info.vue')
|
||||||
|
},
|
||||||
{
|
{
|
||||||
path: 'message',
|
path: 'message',
|
||||||
name: 'message',
|
name: 'message',
|
||||||
|
|||||||
@@ -124,6 +124,10 @@
|
|||||||
<el-menu-item index="/saleData">销售管理</el-menu-item>
|
<el-menu-item index="/saleData">销售管理</el-menu-item>
|
||||||
<el-menu-item index="/saleOut">售罄看板</el-menu-item>
|
<el-menu-item index="/saleOut">售罄看板</el-menu-item>
|
||||||
</el-submenu>
|
</el-submenu>
|
||||||
|
<el-menu-item index="/info">
|
||||||
|
<i class="el-icon-info"></i>
|
||||||
|
<span slot="title">未读消息</span>
|
||||||
|
</el-menu-item>
|
||||||
<el-menu-item index="/learning">
|
<el-menu-item index="/learning">
|
||||||
<i class="el-icon-eleme"></i>
|
<i class="el-icon-eleme"></i>
|
||||||
<span slot="title">新手园地</span>
|
<span slot="title">新手园地</span>
|
||||||
|
|||||||
138
src/view/Info.vue
Normal file
138
src/view/Info.vue
Normal file
@@ -0,0 +1,138 @@
|
|||||||
|
<template>
|
||||||
|
<ai-list class="Learning" v-loading="isLoading" element-loading-text="拼命加载中" element-loading-spinner="el-icon-loading">
|
||||||
|
<ai-title
|
||||||
|
slot="title"
|
||||||
|
title="未读消息"
|
||||||
|
|
||||||
|
isShowBottomBorder>
|
||||||
|
</ai-title>
|
||||||
|
<template slot="content">
|
||||||
|
<ai-table
|
||||||
|
:tableData="tableData"
|
||||||
|
:col-configs="colConfigs"
|
||||||
|
:isShowPagination="false"
|
||||||
|
style="margin-top: 8px;"
|
||||||
|
@getList="getList">
|
||||||
|
<el-table-column slot="send" label="是否发送通知" align="center">
|
||||||
|
<template v-slot="{ row }">
|
||||||
|
<el-switch
|
||||||
|
active-value="1"
|
||||||
|
inactive-value="0"
|
||||||
|
@change="e => onChange(row.id, e)"
|
||||||
|
v-model="row.isSend">
|
||||||
|
</el-switch>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
<el-table-column slot="options" label="操作" align="center" fixed="right" width="140px">
|
||||||
|
<template v-slot="{ row }">
|
||||||
|
<div class="table-options">
|
||||||
|
<el-button type="text" @click="edit(row)">处理</el-button>
|
||||||
|
</div>
|
||||||
|
</template>
|
||||||
|
</el-table-column>
|
||||||
|
</ai-table>
|
||||||
|
<AiDialog
|
||||||
|
title="未读消息列表"
|
||||||
|
:visible.sync="isShow"
|
||||||
|
:close-on-click-modal="false"
|
||||||
|
customFooter
|
||||||
|
width="80%">
|
||||||
|
<el-tabs tab-position="left" style="height: 500px;">
|
||||||
|
<el-tab-pane v-for="item in msgList" :label="item.title" :key="item.id"><div v-html="item.content"></div></el-tab-pane>
|
||||||
|
</el-tabs>
|
||||||
|
<div class="dialog-footer" slot="footer">
|
||||||
|
<el-button @click="isShow = false">关闭</el-button>
|
||||||
|
<el-button @click="readAll()" type="primary">一键已读</el-button>
|
||||||
|
</div>
|
||||||
|
</AiDialog>
|
||||||
|
</template>
|
||||||
|
</ai-list>
|
||||||
|
</template>
|
||||||
|
|
||||||
|
<script>
|
||||||
|
import { mapState } from 'vuex'
|
||||||
|
import {sendChromeAPIMessage, sendChromeNotification} from '@/api/chromeApi'
|
||||||
|
import { Message } from 'element-ui'
|
||||||
|
export default {
|
||||||
|
data () {
|
||||||
|
return {
|
||||||
|
colConfigs: [
|
||||||
|
{ prop: 'mallName', label: '店铺名称', align: 'left' },
|
||||||
|
{ prop: 'unreadNum', label: '未读数量', align: 'left' }
|
||||||
|
],
|
||||||
|
tableData: [],
|
||||||
|
dataList: [],
|
||||||
|
msgList: [],
|
||||||
|
total: 0,
|
||||||
|
isShow: false,
|
||||||
|
id: '',
|
||||||
|
currentMallId: '',
|
||||||
|
isLoading: false
|
||||||
|
}
|
||||||
|
},
|
||||||
|
|
||||||
|
created () {
|
||||||
|
this.getList()
|
||||||
|
},
|
||||||
|
computed: {
|
||||||
|
...mapState(['mallList']),
|
||||||
|
},
|
||||||
|
|
||||||
|
methods: {
|
||||||
|
async getList () {
|
||||||
|
this.isLoading = true
|
||||||
|
for (let i = 0; i < this.mallList.length; i++) {
|
||||||
|
let mallInfo = this.mallList[i]
|
||||||
|
let res = await sendChromeAPIMessage({
|
||||||
|
url: 'bg/quick/api/merchant/msgBox/unreadMsgDetail',
|
||||||
|
needMallId: true,
|
||||||
|
mallId: mallInfo.mallId,
|
||||||
|
data: {}})
|
||||||
|
if (res.success && res.errorCode == 1000000) {
|
||||||
|
this.dataList.push({mallId: mallInfo.mallId, data: res.result.unreadPopMsg})
|
||||||
|
this.tableData.push({mallId: mallInfo.mallId, mallName: mallInfo.mallName, unreadNum: (res.result.unreadPopMsg ? res.result.unreadPopMsg.length: 0)})
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.isLoading = false
|
||||||
|
},
|
||||||
|
edit(row) {
|
||||||
|
let temp = this.dataList.filter(item => {
|
||||||
|
return item.mallId == row.mallId
|
||||||
|
})
|
||||||
|
this.msgList = temp[0].data
|
||||||
|
this.currentMallId = temp[0].mallId
|
||||||
|
this.isShow = true
|
||||||
|
},
|
||||||
|
async readAll() {
|
||||||
|
if (!this.currentMallId) {
|
||||||
|
Message.error("请选择要标记已读的店铺")
|
||||||
|
return
|
||||||
|
}
|
||||||
|
let count = this.msgList.length
|
||||||
|
for (let i = 0; i < this.msgList.length; i++) {
|
||||||
|
let res = await sendChromeAPIMessage({
|
||||||
|
url: 'bg/quick/api/merchant/msgBox/read',
|
||||||
|
needMallId: true,
|
||||||
|
mallId: this.currentMallId,
|
||||||
|
data: {msgId: this.msgList[i].id}})
|
||||||
|
if (!res.success || res.errorCode != 1000000) {
|
||||||
|
Message.error("一个信息标记已读失败")
|
||||||
|
} else {
|
||||||
|
count--
|
||||||
|
}
|
||||||
|
}
|
||||||
|
for (let j = 0; j < this.tableData.length; j++) {
|
||||||
|
if (this.tableData[j].mallId == this.currentMallId) {
|
||||||
|
this.tableData[j].unreadNum = count
|
||||||
|
break
|
||||||
|
}
|
||||||
|
}
|
||||||
|
this.isShow = false
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
</script>
|
||||||
|
|
||||||
|
<style scoped lang="scss">
|
||||||
|
</style>
|
||||||
|
|
||||||
Reference in New Issue
Block a user