|
@@ -45,11 +45,13 @@
|
|
|
<el-dropdown-item command="setLayout">
|
|
|
<span>布局设置</span>
|
|
|
</el-dropdown-item>
|
|
|
- <el-dropdown-item command="message">
|
|
|
+ <el-dropdown-item command="message" v-if="settingsStore.showMessage">
|
|
|
<el-badge :value="messageCount" :max="99" class="item" :hidden="messageCount == 0">
|
|
|
<span>站内信</span>
|
|
|
</el-badge>
|
|
|
-
|
|
|
+ </el-dropdown-item>
|
|
|
+ <el-dropdown-item command="sendMessage" v-if="settingsStore.showMessage">
|
|
|
+ <span>发站内信</span>
|
|
|
</el-dropdown-item>
|
|
|
<el-dropdown-item divided command="logout">
|
|
|
<span>退出登录</span>
|
|
@@ -76,7 +78,7 @@
|
|
|
<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="消息内容" prop="message" align="center" show-overflow-tooltip />
|
|
|
<el-table-column label="查看" width="120" align="center">
|
|
|
<template #default="scope">
|
|
|
<el-button type="success" icon="view" circle @click="handleView(scope.row)" />
|
|
@@ -85,9 +87,43 @@
|
|
|
</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" />
|
|
|
+ layout="total, prev, next, jumper" />
|
|
|
</div>
|
|
|
</el-dialog>
|
|
|
+ <el-dialog title="发消息" v-model="addMessageDialog" width="450" center @close="closeMessageFormDialog">
|
|
|
+ <el-form ref="addMessageFormRef" v-model="messageData" label-width="100">
|
|
|
+ <el-row :gutter="10">
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="收件人">
|
|
|
+ <el-autocomplete :fetch-suggestions="querySearchAsync" :trigger-on-focus="true" style="width: 100%"
|
|
|
+ v-model="messageData.toNickName" placeholder="选择人员" popper-class="my-autocomplete"
|
|
|
+ @select="handleSelectEmployee">
|
|
|
+ <template #default="{ item }">
|
|
|
+ <div style="
|
|
|
+ display: flex;
|
|
|
+ flex-direction: row;
|
|
|
+ justify-content: space-between;
|
|
|
+ ">
|
|
|
+ <div class="name" style="font-size: 12px">
|
|
|
+ {{ item.nickName }}
|
|
|
+ </div>
|
|
|
+ <span class="code" style="font-size: 10px; color: darkgrey">{{ item.userName }}</span>
|
|
|
+ </div>
|
|
|
+ </template>
|
|
|
+ </el-autocomplete>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ <el-col :span="24">
|
|
|
+ <el-form-item label="发送信息">
|
|
|
+ <el-input type="textarea" v-model="messageData.message"></el-input>
|
|
|
+ </el-form-item>
|
|
|
+ </el-col>
|
|
|
+ </el-row>
|
|
|
+ </el-form>
|
|
|
+ <template #footer>
|
|
|
+ <el-button @click="sendMessage">发送</el-button>
|
|
|
+ </template>
|
|
|
+ </el-dialog>
|
|
|
</div>
|
|
|
</template>
|
|
|
|
|
@@ -97,6 +133,7 @@ import Breadcrumb from '@/components/Breadcrumb'
|
|
|
import TopNav from '@/components/TopNav'
|
|
|
import Hamburger from '@/components/Hamburger'
|
|
|
import Screenfull from '@/components/Screenfull'
|
|
|
+import { selectUserList, getInfo } from "@/api/business/noCurrentReject";
|
|
|
// import SizeSelect from '@/components/SizeSelect'
|
|
|
// import HeaderSearch from '@/components/HeaderSearch'
|
|
|
// import RuoYiGit from '@/components/RuoYi/Git'
|
|
@@ -119,12 +156,19 @@ const messageCount = ref(0)
|
|
|
const showMessageDialog = ref(false)
|
|
|
const tenantLoading = ref(false)
|
|
|
const showDialog = ref(false)
|
|
|
+const addMessageDialog = ref(false)
|
|
|
const tenantList = ref([])
|
|
|
const messageList = ref([])
|
|
|
+const messageData = ref({
|
|
|
+ fromUserId: useUserStore().user.userId,
|
|
|
+ toUserId: null,
|
|
|
+ toUserName: null,
|
|
|
+ toNickName: null,
|
|
|
+ message: null
|
|
|
+})
|
|
|
const currentTenantName = ref(getTenant().tenantName)
|
|
|
const total = ref(0)
|
|
|
const queryParams = ref({
|
|
|
- toUserId: useUserStore().userId,
|
|
|
pageSize: 10,
|
|
|
pageNum: 1
|
|
|
})
|
|
@@ -144,6 +188,10 @@ function handleCommand(command) {
|
|
|
case 'message':
|
|
|
showMessageDialog.value = true
|
|
|
getMessages()
|
|
|
+ break
|
|
|
+ case 'sendMessage':
|
|
|
+ addMessageDialog.value = true
|
|
|
+ break
|
|
|
default:
|
|
|
break
|
|
|
}
|
|
@@ -210,7 +258,8 @@ const messageCountChanged = (count) => {
|
|
|
|
|
|
}
|
|
|
const getMessages = () => {
|
|
|
- console.log(queryParams.value)
|
|
|
+ console.log(userStore)
|
|
|
+ queryParams.value.toUserId = useUserStore().user.userId
|
|
|
listMessage(queryParams.value).then(res => {
|
|
|
if (res.code === 200) {
|
|
|
messageList.value = res.rows
|
|
@@ -223,6 +272,35 @@ const getMessages = () => {
|
|
|
})
|
|
|
}
|
|
|
|
|
|
+const closeMessageFormDialog = () => {
|
|
|
+ addMessageDialog.value = false
|
|
|
+ messageData.value = {
|
|
|
+ fromUserId: useUserStore().user.userId,
|
|
|
+ toUserId: null,
|
|
|
+ toUserName: null,
|
|
|
+ toNickName: null,
|
|
|
+ message: null
|
|
|
+ }
|
|
|
+}
|
|
|
+function querySearchAsync(queryString, cb) {
|
|
|
+ if (queryString) {
|
|
|
+ selectUserList(queryString).then((res) => {
|
|
|
+ cb(res.rows);
|
|
|
+ });
|
|
|
+ }
|
|
|
+}
|
|
|
+
|
|
|
+function handleSelectEmployee(item) {
|
|
|
+ messageData.value.toNickName = item.nickName;
|
|
|
+ messageData.value.toUserId = item.userId;
|
|
|
+ messageData.value.toUserName = item.userName;
|
|
|
+}
|
|
|
+
|
|
|
+function sendMessage() {
|
|
|
+ useMessageStore().sendMsg(messageData.value)
|
|
|
+ closeMessageFormDialog()
|
|
|
+}
|
|
|
+
|
|
|
onMounted(() => {
|
|
|
window.addEventListener('messageChange', (target) => {
|
|
|
const count = target.detail
|