Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Contribute to GitLab
Sign in
Toggle navigation
Y
yishuju-ui
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
何远江
yishuju-ui
Commits
44ba63a5
Commit
44ba63a5
authored
Jan 21, 2025
by
沈翠玲
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
修改bug
parent
9d8ff324
Hide whitespace changes
Inline
Side-by-side
Showing
7 changed files
with
249 additions
and
49 deletions
+249
-49
allcation.js
src/api/allcation.js
+1
-1
message.js
src/api/message.js
+9
-0
Message.vue
src/layouts/components/Header/components/Message.vue
+96
-35
allocationModal.vue
...s/property/case-allocation/components/allocationModal.vue
+1
-1
TenantFormModal.vue
src/views/system/tenantManage/components/TenantFormModal.vue
+7
-7
index.vue
src/views/system/tenantManage/index.vue
+2
-2
index.vue
src/views/workplace/todo/index.vue
+133
-3
No files found.
src/api/allcation.js
View file @
44ba63a5
...
...
@@ -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?t
oT
enantId=
${
tenantId
}
`
,
data
);
};
// 手动调整分配CPE,确认
export
const
confirm
=
(
data
)
=>
{
...
...
src/api/message.js
0 → 100644
View file @
44ba63a5
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
);
};
src/layouts/components/Header/components/Message.vue
View file @
44ba63a5
...
...
@@ -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
{
re
f
}
from
'vue'
;
import
{
re
active
,
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
:
20
px
0
;
padding
:
6
px
0
;
border-bottom
:
1px
solid
var
(
--
el-border-color-light
);
&
:last-child
{
border
:
none
;
...
...
src/views/property/case-allocation/components/allocationModal.vue
View file @
44ba63a5
...
...
@@ -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
({
...
...
src/views/system/tenantManage/components/TenantFormModal.vue
View file @
44ba63a5
...
...
@@ -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
);
...
...
src/views/system/tenantManage/index.vue
View file @
44ba63a5
...
...
@@ -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
:
'状态'
,
...
...
src/views/workplace/todo/index.vue
View file @
44ba63a5
<
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
>
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment