|
@@ -46,7 +46,10 @@
|
|
|
<span>布局设置</span>
|
|
|
</el-dropdown-item>
|
|
|
<el-dropdown-item command="message">
|
|
|
- <span>站内信</span>
|
|
|
+ <el-badge :value="messageCount" :max="99" class="item" :hidden="messageCount == 0">
|
|
|
+ <span>站内信</span>
|
|
|
+ </el-badge>
|
|
|
+
|
|
|
</el-dropdown-item>
|
|
|
<el-dropdown-item divided command="logout">
|
|
|
<span>退出登录</span>
|
|
@@ -68,6 +71,23 @@
|
|
|
</el-table-column>
|
|
|
</el-table>
|
|
|
</el-dialog>
|
|
|
+ <el-dialog title="站内信" v-model="showMessageDialog" width="450" center @close="showMessageDialog = false">
|
|
|
+ <div class="page-container column-container">
|
|
|
+ <el-table ref="dialogTable" :data="messageList" height="460px" row-key="id" align="center">
|
|
|
+ <el-table-column label="行号" type="index" width="50" align="center" />
|
|
|
+ <el-table-column label="消息来源" prop="fromNickName" align="center" />
|
|
|
+ <el-table-column label="消息内容" prop="message" align="center" />
|
|
|
+ <el-table-column label="查看" width="120" align="center">
|
|
|
+ <template #default="scope">
|
|
|
+ <el-button type="success" icon="view" circle @click="handleView(scope.row)" />
|
|
|
+ </template>
|
|
|
+ </el-table-column>
|
|
|
+ </el-table>
|
|
|
+ <pagination v-show="total > 0" :total="total" v-model:page="queryParams.pageNum"
|
|
|
+ v-model:limit="queryParams.pageSize" @pagination="getMessages" size="small"
|
|
|
+ layout="total, prev, pager, next" />
|
|
|
+ </div>
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -86,17 +106,28 @@ import useUserStore from '@/store/modules/user'
|
|
|
import useSettingsStore from '@/store/modules/settings'
|
|
|
import { setTenant, getTenant } from '@/utils/auth'
|
|
|
import { listTenant } from '@/api/business/tenant.js'
|
|
|
+import { listMessage } from '@/api/business/message.js'
|
|
|
import router from '@/router'
|
|
|
+import useMessageStore from '@/store/modules/message'
|
|
|
+import { nextTick, onBeforeUnmount, onMounted } from 'vue'
|
|
|
|
|
|
const { proxy } = getCurrentInstance()
|
|
|
const appStore = useAppStore()
|
|
|
const userStore = useUserStore()
|
|
|
const settingsStore = useSettingsStore()
|
|
|
-
|
|
|
+const messageCount = ref(0)
|
|
|
+const showMessageDialog = ref(false)
|
|
|
const tenantLoading = ref(false)
|
|
|
const showDialog = ref(false)
|
|
|
const tenantList = ref([])
|
|
|
+const messageList = ref([])
|
|
|
const currentTenantName = ref(getTenant().tenantName)
|
|
|
+const total = ref(0)
|
|
|
+const queryParams = ref({
|
|
|
+ toUserId: useUserStore().userId,
|
|
|
+ pageSize: 10,
|
|
|
+ pageNum: 1
|
|
|
+})
|
|
|
|
|
|
function toggleSideBar() {
|
|
|
appStore.toggleSideBar()
|
|
@@ -110,6 +141,9 @@ function handleCommand(command) {
|
|
|
case 'logout':
|
|
|
logout()
|
|
|
break
|
|
|
+ case 'message':
|
|
|
+ showMessageDialog.value = true
|
|
|
+ getMessages()
|
|
|
default:
|
|
|
break
|
|
|
}
|
|
@@ -171,6 +205,36 @@ const loadTenant = () => {
|
|
|
tenantLoading.value = false
|
|
|
})
|
|
|
}
|
|
|
+
|
|
|
+const messageCountChanged = (count) => {
|
|
|
+
|
|
|
+}
|
|
|
+const getMessages = () => {
|
|
|
+ console.log(queryParams.value)
|
|
|
+ listMessage(queryParams.value).then(res => {
|
|
|
+ if (res.code === 200) {
|
|
|
+ messageList.value = res.rows
|
|
|
+ total.value = res.total
|
|
|
+ } else {
|
|
|
+ messageList.value = []
|
|
|
+ total.value = 0
|
|
|
+ }
|
|
|
+
|
|
|
+ })
|
|
|
+}
|
|
|
+
|
|
|
+onMounted(() => {
|
|
|
+ window.addEventListener('messageChange', (target) => {
|
|
|
+ const count = target.detail
|
|
|
+ if (count != messageCount.value) {
|
|
|
+ messageCount.value = count
|
|
|
+ }
|
|
|
+ // console.log(messageCount)
|
|
|
+ })
|
|
|
+})
|
|
|
+onBeforeUnmount(() => {
|
|
|
+ window.removeEventListener('messageChange')
|
|
|
+})
|
|
|
</script>
|
|
|
|
|
|
<style lang="scss" scoped>
|