Commit 44ba63a5 authored by 沈翠玲's avatar 沈翠玲

修改bug

parent 9d8ff324
......@@ -13,7 +13,7 @@ export const getLoanpage = (params) => {
};
// 分配到调节中心
export const distributeLoan = (tenantId, data) => {
return request.post(`/LoanDistribute/distribute?tenantId=${tenantId}`, data);
return request.post(`/LoanDistribute/distribute?toTenantId=${tenantId}`, data);
};
// 手动调整分配CPE,确认
export const confirm = (data) => {
......
import request from '@/utils/http/index';
// 读取消息
export const readMessage = (params) => {
return request.get('/message/read', params);
};
// 获取我的消息
export const pageMyMesage = (params) => {
return request.get('/message/pageMyMesage', params);
};
......@@ -2,50 +2,29 @@
<div class="message">
<el-popover placement="bottom" :width="310" trigger="click">
<template #reference>
<el-badge :value="5" class="item">
<el-badge :value="msgList.length" class="item">
<i :class="'iconfont icon-xiaoxi'" class="toolBar-icon"></i>
</el-badge>
</template>
<el-tabs v-model="activeName">
<el-tab-pane label="通知(5)" name="first">
<!-- <el-tabs v-model="activeName"> -->
<!-- <el-tab-pane label="通知(5)" name="first"> -->
<div class="message-list">
<div class="message-item">
<img src="@/assets/images/msg01.png" alt="" class="message-icon" />
<div class="message-item" v-for="(item, index) in msgList" :key="index" @click="clickMessage(item)">
<img :src="item.serviceType ==='tip' ? msg02 : msg01" alt="" class="message-icon" />
<div class="message-content">
<span class="message-title">一键三连 Geeker-Admin 🧡</span>
<span class="message-date">一分钟前</span>
<span class="message-title" :class="{' text-gray-400' : item.messageReads && item.messageReads.length}">{{item.title}}</span>
<span class="message-date">{{timeago(item.sendTime)}}</span>
</div>
</div>
<div class="message-item">
<!-- <div class="message-item">
<img src="@/assets/images/msg02.png" alt="" class="message-icon" />
<div class="message-content">
<span class="message-title">一键三连 Geeker-Admin 💙</span>
<span class="message-date">一小时前</span>
</div>
</div>
<div class="message-item">
<img src="@/assets/images/msg03.png" alt="" class="message-icon" />
<div class="message-content">
<span class="message-title">一键三连 Geeker-Admin 💚</span>
<span class="message-date">半天前</span>
</div>
</div>
<div class="message-item">
<img src="@/assets/images/msg04.png" alt="" class="message-icon" />
<div class="message-content">
<span class="message-title">一键三连 Geeker-Admin 💜</span>
<span class="message-date">一星期前</span>
</div>
</div>
<div class="message-item">
<img src="@/assets/images/msg05.png" alt="" class="message-icon" />
<div class="message-content">
<span class="message-title">一键三连 Geeker-Admin 💛</span>
<span class="message-date">一个月前</span>
</div>
</div>
</div> -->
</div>
</el-tab-pane>
<!-- </el-tab-pane>
<el-tab-pane label="消息(0)" name="second">
<div class="message-empty">
<img src="@/assets/images/notData.png" alt="notData" />
......@@ -58,18 +37,41 @@
<div>暂无待办</div>
</div>
</el-tab-pane>
</el-tabs>
</el-tabs> -->
</el-popover>
</div>
</template>
<script setup>
import { ref } from 'vue';
import { reactive, ref, watch } from 'vue';
import useSocketStore from '../../../../stores/modules/websocket';
import {useUserStore} from '../../../../stores/modules/user';
import msg02 from '@/assets/images/msg02.png';
import msg01 from '@/assets/images/msg01.png';
import { computed, onMounted } from 'vue';
import { pageMyMesage, readMessage } from '@/api/message';
import dayjs from 'dayjs';
import { useRouter } from 'vue-router';
const router = useRouter();
const activeName = ref('first');
const msgList = ref([]);
const socketStore = useSocketStore();
console.log('socketStore', socketStore)
const query = () => {
pageMyMesage({
current: 1,
readStatus: 'read',
size: 100
}).then((res) => {
console.log('sadas', res)
if(res.success && res.result) {
msgList.value = res.result.content
}
});
}
watch(() => socketStore.msg, (newValue, oldValue) => {
query()
});
import { getAppEnvConfig } from '@/utils/env';
const envs = getAppEnvConfig();
const { userInfo } = useUserStore();
......@@ -81,6 +83,62 @@
if (socketStore.ws){
socketStore.sendMsg({ aa: 44 });
}
const clickMessage = (item) => {
readMessage({
msgId: item.id
}).then(res => {
router.push({
path: '/workplace/todo'
});
query()
})
}
const timeago = (time) => {
const data = new Date(time);
const dateTimeStamp = data.getTime()
const minute = 1000 * 60; //把分,时,天,周,半个月,一个月用毫秒表示
const hour = minute * 60;
const day = hour * 24;
const week = day * 7;
const month = day * 30;
const year = month * 12;
const now = new Date().getTime(); //获取当前时间毫秒
const diffValue = now - dateTimeStamp;//时间差
let result = "";
if (diffValue < 0) {
result = "" + "未来";
}
const minC = diffValue / minute; //计算时间差的分,时,天,周,月
const hourC = diffValue / hour;
const dayC = diffValue / day;
const weekC = diffValue / week;
const monthC = diffValue / month;
const yearC = diffValue / year;
if (yearC >= 1) {
result = " " + parseInt(yearC) + "年前"
} else if (monthC >= 1 && monthC < 12) {
result = " " + parseInt(monthC) + "月前"
} else if (weekC >= 1 && weekC < 5 && dayC > 6 && monthC < 1) {
result = " " + parseInt(weekC) + "周前"
} else if (dayC >= 1 && dayC <= 6) {
result = " " + parseInt(dayC) + "天前"
} else if (hourC >= 1 && hourC <= 23) {
result = " " + parseInt(hourC) + "小时前"
} else if (minC >= 1 && minC <= 59) {
result = " " + parseInt(minC) + "分钟前"
} else if (diffValue >= 0 && diffValue <= minute) {
result = "刚刚"
}
console.log(result)
return result
}
onMounted(() => {
query();
});
</script>
......@@ -96,10 +154,13 @@
.message-list {
display: flex;
flex-direction: column;
max-height: 460px;
overflow: auto;
.message-item {
display: flex;
cursor: pointer;
align-items: center;
padding: 20px 0;
padding: 6px 0;
border-bottom: 1px solid var(--el-border-color-light);
&:last-child {
border: none;
......
......@@ -273,7 +273,7 @@
borrowerPhone: pageParams.value.borrowerPhone,
commissionAmount: pageParams.value.commissionAmount,
remainingAmount: pageParams.value.remainingAmount,
tenantId: currentTenant.value,
tenantId: null,
}).then((res) => {
if (res.success) {
ElMessage.success({
......
......@@ -11,13 +11,13 @@
<el-form ref="formRef" :model="form" :rules="rules" inline label-width="80px">
<el-row :gutter="10">
<el-col :span="24">
<el-form-item class="w-full" label="租户名称" prop="name">
<el-input v-model="form.name" placeholder="请输入租户名称" />
<el-form-item class="w-full" label="调解中心名称" prop="name">
<el-input v-model="form.name" placeholder="请输入调解中心名称" />
</el-form-item>
</el-col>
<el-col :span="24">
<el-form-item class="w-full" label="租户编码" prop="code">
<el-input v-model="form.code" placeholder="租户编码" />
<el-form-item class="w-full" label="调解中心编码" prop="code">
<el-input v-model="form.code" placeholder="调解中心编码" />
</el-form-item>
</el-col>
<el-col :span="24">
......@@ -49,7 +49,7 @@
const formRef = ref(null);
const isEdit = computed(() => !!currentTenant.value);
const modalTitle = computed(() => (isEdit.value ? '编辑租户' : '新增租户'));
const modalTitle = computed(() => (isEdit.value ? '编辑调解中心' : '新增调解中心'));
const form = ref({
name: '',
......@@ -57,8 +57,8 @@
status: 'enable',
});
const rules = ref({
name: { required: true, message: '请输入租户名称', trigger: 'blur' },
code: { required: true, message: '请输入租户编码', trigger: 'blur' },
name: { required: true, message: '请输入调解中心名称', trigger: 'blur' },
code: { required: true, message: '请输入调解中心编码', trigger: 'blur' },
});
const loading = ref(false);
......
......@@ -26,8 +26,8 @@
const config = reactive({
columns: [
{ type: 'checkbox', width: 50 },
{ field: 'name', title: '租户名称', search: { el: 'input' } },
{ field: 'code', title: '租户编码', search: { el: 'input' } },
{ field: 'name', title: '调解中心名称', search: { el: 'input' } },
{ field: 'code', title: '调解中心编码', search: { el: 'input' } },
{
field: 'status',
title: '状态',
......
<template>
<div class="card content-box">
<span class="text"> 我的待办 🍓🍇🍈🍉</span>
<div class="table-box">
<ProTable ref="proTable" :config="config" :api="pageMyMesage">
</ProTable>
</div>
</template>
<script setup name="systemLog"></script>
<script setup name="systemLog" lang="jsx">
import { reactive, ref, watch } from 'vue';
import useSocketStore from '@/stores/modules/websocket';
import { ElMessageBox, ElMessage, ElTag } from 'element-plus';
import { onMounted } from 'vue';
import { pageMyMesage } from '@/api/message';
const statusOpt = [
{ label: '正常', value: 'normal' },
{ label: '已撤销', value: 'cancel' }
];
const messageTypeOpt = [
{ label: '通知', value: 'system' },
{ label: '任务消息', value: 'task' }
]
const sendTypeOpt = [
{ label: '群发', value: 'all' },
{ label: '指定用户发送', value: 'user' },
{ label: '指定角色发送', value: 'role' },
{ label: '指定调节中心发送', value: 'tentant' },
]
const serviceTypeOpt = [
{ label: '流程', value: 'bpm' },
{ label: '提示', value: 'tip' }
]
const proTable = ref();
const socketStore = useSocketStore();
const config = reactive({
columns: [
{ field: 'title', minWidth: 200, title: '消息标题', search: { el: 'input' } },
{
field: 'content',
title: '消息内容',
width: 160,
search: { el: 'input', props: { clearable: true } },
},
{
field: 'sender.username',
title: '发送人名称',
width: 160,
search: { el: 'input', props: { clearable: true },key: 'senderName' },
},
{
field: 'status',
title: '状态',
width: 100,
enum: statusOpt,
search: { el: 'select', props: { filterable: true }, span: 1 },
fieldNames: { label: 'label', value: 'value' },
slots: {
default: ({ row }) => {
return (
<ElTag type={row.status == 'normal' ? 'primary' : 'danger'}>
{row.status == 'normal' ? '正常' : '已撤销'}
</ElTag>
);
},
},
},
{
field: 'sendTime',
title: '发送时间',
width: 170,
},
{
field: 'messageType',
width: 100,
title: '消息类型',
enum: messageTypeOpt,
search: { el: 'select', props: { filterable: true }, span: 1 },
fieldNames: { label: 'label', value: 'value' },
slots: {
default: ({ row }) => {
return (
<>
{row.messageType
? messageTypeOpt.find((v) => v.value === row.messageType).label
: ''}
</>
);
},
},
},
{
field: 'sendType',
width: 100,
title: '发送方式',
enum: sendTypeOpt,
search: { el: 'select', props: { filterable: true }, span: 1 },
fieldNames: { label: 'label', value: 'value' },
slots: {
default: ({ row }) => {
return (
<>
{row.sendType
? sendTypeOpt.find((v) => v.value === row.sendType).label
: ''}
</>
);
},
},
},
{
field: 'serviceType',
width: 100,
title: '业务类型',
enum: serviceTypeOpt,
search: { el: 'select', props: { filterable: true }, span: 1 },
fieldNames: { label: 'label', value: 'value' },
slots: {
default: ({ row }) => {
return (
<>
{row.serviceType
? serviceTypeOpt.find((v) => v.value === row.serviceType).label
: ''}
</>
);
},
},
}
],
});
const query = () => proTable.value?.search();
watch(() => socketStore.msg, (newValue, oldValue) => {
query()
});
onMounted(() => {
query();
});
</script>
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment