Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
F
fns_front_2
Project
Project
Details
Activity
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
JIRA
JIRA
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Registry
Registry
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
chenqikuai
fns_front_2
Commits
953e29f0
Commit
953e29f0
authored
Nov 22, 2021
by
chenqikuai
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
perf: 修改代码,消除一些warning
parent
889d78bb
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
624 additions
and
496 deletions
+624
-496
index.vue
src/components/GroupTitle/index.vue
+8
-12
index.vue
src/components/LiveCard/index.vue
+0
-2
index.vue
src/components/Loan/LoanCard/index.vue
+28
-25
index.vue
src/components/Loan/LoanHotSwipe/index.vue
+11
-8
index.vue
src/components/Mine/AboutUs/index.vue
+47
-26
branch.vue
src/components/Mine/Branch/branch.vue
+14
-20
index.vue
src/components/Mine/Service/index.vue
+19
-32
index.vue
src/components/NavBar/index.vue
+36
-25
index.vue
src/components/PopUp/index.vue
+14
-14
index.vue
src/components/ServiceRating/index.vue
+68
-69
index.vue
src/components/showCall/index.vue
+27
-20
index.vue
src/views/ActivityList/index.vue
+9
-9
Login.vue
src/views/Auth/Login/Login.vue
+3
-3
Chat.vue
src/views/Chat/Chat.vue
+0
-0
ChatInput.vue
src/views/Chat/ChatInput.vue
+40
-21
index.vue
src/views/LoanDetail/components/LoanDetailDescribe/index.vue
+39
-25
index.vue
src/views/LoanDetail/index.vue
+0
-0
index.vue
src/views/withMenu/Components/TabBar/index.vue
+5
-6
index.vue
src/views/withMenu/FinancialManagement/index.vue
+6
-7
index.vue
src/views/withMenu/Home/AppList/index.vue
+17
-7
index.vue
src/views/withMenu/Home/Notify/index.vue
+26
-15
index.vue
src/views/withMenu/Home/index.vue
+20
-15
index.vue
src/views/withMenu/Loan/index.vue
+16
-21
branch.vue
src/views/withMenu/Mine/branch.vue
+53
-34
index.vue
src/views/withMenu/Mine/index.vue
+54
-45
setting.vue
src/views/withMenu/Mine/setting.vue
+64
-35
No files found.
src/components/GroupTitle/index.vue
View file @
953e29f0
...
@@ -6,30 +6,27 @@
...
@@ -6,30 +6,27 @@
<div
<div
v-if=
"iconName === 'icon-gengduo'"
v-if=
"iconName === 'icon-gengduo'"
class=
"flex items-center"
class=
"flex items-center"
@
click=
"$emit('seeMore')"
>
@
click=
"$emit('seeMore')"
>
<span
class=
"word9"
>
更多
</span>
<span
class=
"word9"
>
更多
</span>
<icon
<IconVue
name=
"icon-gengduo"
color=
"#979BB6"
size=
"10"
/>
name=
"icon-gengduo"
color=
"#979BB6"
size=
"10"
/>
</div>
</div>
<
icon
<
IconVue
v-else-if=
"iconName === 'icon-shaixuan'"
v-else-if=
"iconName === 'icon-shaixuan'"
:name=
"iconName"
:name=
"iconName"
color=
"#979BB6"
color=
"#979BB6"
size=
"16"
size=
"16"
@
click=
"clickFilter"
@
click=
"clickFilter"
/>
/>
<
icon
v-else-if=
"iconName"
:name=
"iconName"
color=
"#979BB6"
size=
"16"
/>
<
IconVue
v-else-if=
"iconName"
:name=
"iconName"
color=
"#979BB6"
size=
"16"
/>
</div>
</div>
</
template
>
</
template
>
<
script
lang=
"ts"
>
<
script
lang=
"ts"
>
import
{
defineComponent
}
from
"vue"
;
import
{
defineComponent
}
from
"vue"
;
import
Icon
from
"../common/Icon.vue"
;
import
Icon
Vue
from
"../common/Icon.vue"
;
export
default
defineComponent
({
export
default
defineComponent
({
emits
:
[
"filter"
,
"seeMore"
],
emits
:
[
"filter"
,
"seeMore"
],
components
:
{
Icon
},
components
:
{
Icon
Vue
},
props
:
{
props
:
{
title
:
{
title
:
{
type
:
String
,
type
:
String
,
...
@@ -82,4 +79,4 @@ export default defineComponent({
...
@@ -82,4 +79,4 @@ export default defineComponent({
text-align
:
center
;
text-align
:
center
;
margin
:
0
0
0
14px
;
margin
:
0
0
0
14px
;
}
}
</
style
>
</
style
>
\ No newline at end of file
src/components/LiveCard/index.vue
View file @
953e29f0
...
@@ -21,14 +21,12 @@
...
@@ -21,14 +21,12 @@
</
template
>
</
template
>
<
script
lang=
"ts"
>
<
script
lang=
"ts"
>
import
{
defineComponent
}
from
"vue"
;
import
{
defineComponent
}
from
"vue"
;
import
Icon
from
"../common/Icon.vue"
;
import
Bridge
from
"@/utils/jsBridge2"
;
import
Bridge
from
"@/utils/jsBridge2"
;
import
{
Toast
}
from
"vant"
;
import
{
Toast
}
from
"vant"
;
import
{
enableLive
}
from
"@/service/StaffService"
;
import
{
enableLive
}
from
"@/service/StaffService"
;
import
{
getCurrentUserAvatarUrl
}
from
"@/utils/userMsg"
;
import
{
getCurrentUserAvatarUrl
}
from
"@/utils/userMsg"
;
export
default
defineComponent
({
export
default
defineComponent
({
components
:
{
Icon
},
props
:
{
props
:
{
title
:
String
,
title
:
String
,
},
},
...
...
src/components/Loan/LoanCard/index.vue
View file @
953e29f0
<
template
>
<
template
>
<div
class=
"wrap15 flex mx-5 items-center"
@
click=
"$emit('click')"
>
<div
class=
"wrap15 flex mx-5 items-center"
@
click=
"$emit('click')"
>
<div
class=
"bd5 ml-4"
>
<div
class=
"bd5 ml-4"
>
<p
class=
"word14"
>
{{
max_amount
}}
<span
class=
"unit"
>
万
</span></p>
<p
class=
"word14"
>
{{
max_amount
}}
<span
class=
"unit"
>
万
</span></p>
<p
class=
"txt8"
>
最高可借
</p>
<p
class=
"txt8"
>
最高可借
</p>
</div>
</div>
<div
<div
class=
"bd6 flex flex-col flex-shrink overflow-hidden overflow-ellipsis"
class=
"bd6 flex flex-col flex-shrink overflow-hidden overflow-ellipsis"
>
>
<span
class=
"word15 w-full overflow-hidden overflow-ellipsis"
>
{{
product_name
}}
</span>
<span
class=
"word15 w-full overflow-hidden overflow-ellipsis"
>
{{
<span
class=
"txt10 w-full overflow-hidden overflow-ellipsis"
>
{{
features
}}
</span>
product_name
}}
</span>
<span
class=
"txt10 w-full overflow-hidden overflow-ellipsis"
>
{{
features
}}
</span>
<!--
<span
class=
"word16"
>
{{
features
}}
</span>
-->
<!--
<span
class=
"word16"
>
{{
features
}}
</span>
-->
</div>
</div>
<div
class=
"flex-grow"
></div>
<div
class=
"flex-grow"
></div>
<
icon
name=
"icon-gengduo"
color=
"#979BB6"
size=
"15"
class=
"mr-6"
/>
<
IconVue
name=
"icon-gengduo"
color=
"#979BB6"
size=
"15"
class=
"mr-6"
/>
</div>
</div>
</
template
>
</
template
>
<
script
lang=
"ts"
setup
>
<
script
lang=
"ts"
setup
>
import
Icon
from
"@/components/common/Icon.vue"
;
import
Icon
Vue
from
"@/components/common/Icon.vue"
;
import
{
eLoanMode
}
from
"@/views/withMenu/Loan/types"
;
import
{
eLoanMode
}
from
"@/views/withMenu/Loan/types"
;
import
{
PropType
}
from
"vue"
import
{
PropType
}
from
"vue"
;
defineEmits
([
'click'
])
defineEmits
([
"click"
]);
const
props
=
defineProps
({
const
props
=
defineProps
({
max_amount
:{
max_amount
:
{
type
:
Number
,
type
:
Number
,
required
:
true
required
:
true
,
},
},
product_name
:{
product_name
:
{
type
:
String
,
type
:
String
,
required
:
true
required
:
true
,
},
},
features
:{
features
:
{
type
:
String
,
type
:
String
,
required
:
true
required
:
true
,
},
},
inst_name
:{
inst_name
:
{
type
:
String
,
type
:
String
,
required
:
true
required
:
true
,
},
},
loanMode
:
{
loanMode
:
{
type
:
Number
as
PropType
<
eLoanMode
>
,
type
:
Number
as
PropType
<
eLoanMode
>
,
requried
:
true
,
requried
:
true
,
},
},
})
})
;
</
script
>
</
script
>
<
style
scoped
>
<
style
scoped
>
.wrap15
{
.wrap15
{
...
@@ -161,4 +165,4 @@ const props = defineProps({
...
@@ -161,4 +165,4 @@ const props = defineProps({
height
:
14px
;
height
:
14px
;
margin
:
27px
0
0
69px
;
margin
:
27px
0
0
69px
;
}
}
</
style
>
</
style
>
\ No newline at end of file
src/components/Loan/LoanHotSwipe/index.vue
View file @
953e29f0
<
template
>
<
template
>
<Skeleton
:row=
"3"
:loading=
"skeLoading"
>
<Skeleton
:row=
"3"
:loading=
"skeLoading"
>
<van-swipe
class=
"my-swipe"
indicator-color=
"#3E4FAF"
style=
"margin-top: 20px"
>
<van-swipe
class=
"my-swipe"
indicator-color=
"#3E4FAF"
style=
"margin-top: 20px"
>
<van-swipe-item
<van-swipe-item
class=
"flex justify-center swpiItem"
class=
"flex justify-center swpiItem"
v-for=
"item in state.hotProductList"
v-for=
"item in state.hotProductList"
...
@@ -72,7 +76,7 @@ const fetchList = () => {
...
@@ -72,7 +76,7 @@ const fetchList = () => {
inst_name
,
inst_name
,
product_name
,
product_name
,
product_status
,
product_status
,
}
=
ret
.
data
;
}
=
ret
.
data
||
{}
;
return
{
return
{
rate
,
rate
,
...
@@ -87,11 +91,11 @@ const fetchList = () => {
...
@@ -87,11 +91,11 @@ const fetchList = () => {
promiseList
.
push
(
promise
);
promiseList
.
push
(
promise
);
});
});
state
.
hotProductList
=
[];
state
.
hotProductList
=
[];
Promise
.
all
(
promiseList
).
then
(
list
=>
{
Promise
.
all
(
promiseList
).
then
(
(
list
)
=>
{
list
.
forEach
(
i
=>
{
list
.
forEach
(
(
i
)
=>
{
state
.
hotProductList
.
push
(
i
);
state
.
hotProductList
.
push
(
i
);
})
})
;
})
})
;
}
}
});
});
};
};
...
@@ -105,4 +109,4 @@ const fetchList = () => {
...
@@ -105,4 +109,4 @@ const fetchList = () => {
.swpiItem {
.swpiItem {
height: 230px;
height: 230px;
}
}
</
style
>
</
style
>
\ No newline at end of file
src/components/Mine/AboutUs/index.vue
View file @
953e29f0
<
template
>
<
template
>
<div
class=
"inner_box border border-card-shadow rounded-2xl px-7 pt-8 pb-6 bg-white mt-5"
>
<div
<div
class=
" bg-app-blue rounded-full w-6 h-6 inline-block mr-2 align-middle relative"
>
class=
"
<img
:src=
"path"
class=
" w-3 h-3 absolute inset-0 m-auto"
>
inner_box
border border-card-shadow
rounded-2xl
px-7
pt-8
pb-6
bg-white
mt-5
"
>
<div
class=
"
bg-app-blue
rounded-full
w-6
h-6
inline-block
mr-2
align-middle
relative
"
>
<img
:src=
"path"
class=
"w-3 h-3 absolute inset-0 m-auto"
/>
</div>
</div>
<span
:title=
"title"
class=
" text-app-blue font-semibold text-base align-middle"
>
{{
title
}}
</span>
<span
<p
class=
" text-gray-700 text-sm text-justify pt-3"
>
:title=
"title"
class=
"text-app-blue font-semibold text-base align-middle"
>
{{
title
}}
</span
>
<p
class=
"text-gray-700 text-sm text-justify pt-3"
>
<slot></slot>
<slot></slot>
</p>
</p>
</div>
</div>
</
template
>
</
template
>
<
script
lang=
"ts"
>
<
script
lang=
"ts"
>
import
{
defineComponent
}
from
'vue'
import
{
defineComponent
}
from
"vue"
;
import
Icon
from
"@/components/common/Icon.vue"
export
default
defineComponent
({
export
default
defineComponent
({
components
:{
Icon
},
props
:
{
props
:{
path
:
{
path
:{
type
:
String
,
type
:
String
,
default
:
""
,
default
:
''
},
title
:
{
type
:
String
,
default
:
""
,
},
},
title
:{
type
:
String
,
default
:
''
}
},
},
setup
()
{
setup
()
{
return
{};
},
return
{}
});
}
})
</
script
>
</
script
>
<
style
scoped
>
<
style
scoped
>
.inner_box
{
.inner_box
{
box-shadow
:
4px
9px
#
D6DBF8
;
box-shadow
:
4px
9px
#
d6dbf8
;
}
}
</
style
>
</
style
>
\ No newline at end of file
src/components/Mine/Branch/branch.vue
View file @
953e29f0
...
@@ -46,7 +46,10 @@
...
@@ -46,7 +46,10 @@
网点
网点
</p>
</p>
</div>
</div>
<div
class=
"flex items-start w-full justify-between"
v-if=
"!disableChat"
>
<div
class=
"flex items-start w-full justify-between"
v-if=
"!disableChat"
>
<div
class=
"text-gray-400 text-xs"
>
{{
location
}}
</div>
<div
class=
"text-gray-400 text-xs"
>
{{
location
}}
</div>
<div
class=
"text-gray-400 text-xs float-right ml-2"
>
<div
class=
"text-gray-400 text-xs float-right ml-2"
>
{{
filter
.
filterDistance
(
distance
)
}}
{{
filter
.
filterDistance
(
distance
)
}}
...
@@ -58,7 +61,7 @@
...
@@ -58,7 +61,7 @@
<div
class=
"mt-2 pb-3 flex justify-between items-center"
>
<div
class=
"mt-2 pb-3 flex justify-between items-center"
>
<div
class=
"overflow-hidden mr-6"
>
<div
class=
"overflow-hidden mr-6"
>
<div
v-if=
"is_normal_work"
class=
"mb-2"
>
<div
v-if=
"is_normal_work"
class=
"mb-2"
>
<
icon
<
IconVue
name=
"icon-yingye"
name=
"icon-yingye"
color=
"#1B1F37"
color=
"#1B1F37"
size=
"14"
size=
"14"
...
@@ -90,7 +93,7 @@
...
@@ -90,7 +93,7 @@
>
>
</div>
</div>
<div
v-if=
"is_normal_work"
>
<div
v-if=
"is_normal_work"
>
<
icon
<
IconVue
name=
"icon-a-shijian"
name=
"icon-a-shijian"
color=
"#1B1F37"
color=
"#1B1F37"
size=
"14"
size=
"14"
...
@@ -107,7 +110,7 @@
...
@@ -107,7 +110,7 @@
</div>
</div>
<div
class=
"text-right h-3"
v-if=
"!disableChat"
>
<div
class=
"text-right h-3"
v-if=
"!disableChat"
>
<
icon
<
IconVue
name=
"icon-ditu"
name=
"icon-ditu"
color=
"#3E4FAF"
color=
"#3E4FAF"
size=
"14"
size=
"14"
...
@@ -120,7 +123,7 @@
...
@@ -120,7 +123,7 @@
<!-- 底部操作 -->
<!-- 底部操作 -->
<div
<div
class=
"flex text-center py-3 text-gray-800 bg-branch-tab-bg rounded-b-2xl"
class=
"flex text-center py-3 text-gray-800 bg-branch-tab-bg rounded-b-2xl"
v-if=
"
(!isNotChatUser && is_normal_work && !disableChat)
"
v-if=
"
!isNotChatUser && is_normal_work && !disableChat
"
>
>
<p
<p
class=
"w-1/2 border-r border-gray-200 mb-0"
class=
"w-1/2 border-r border-gray-200 mb-0"
...
@@ -141,16 +144,8 @@
...
@@ -141,16 +144,8 @@
</template>
</template>
<
script
lang=
"ts"
setup
>
<
script
lang=
"ts"
setup
>
import
{
import
{
computed
,
defineComponent
,
PropType
,
ref
}
from
"vue"
;
computed
,
import
IconVue
from
"@/components/common/Icon.vue"
;
defineComponent
,
onMounted
,
onUnmounted
,
PropType
,
reactive
,
ref
,
}
from
"vue"
;
import
Icon
from
"@/components/common/Icon.vue"
;
import
{
transfterStrToDate
}
from
"@/utils/transfer"
;
import
{
transfterStrToDate
}
from
"@/utils/transfer"
;
import
AddressService
from
"@/service/AddressService"
;
import
AddressService
from
"@/service/AddressService"
;
import
dayjs
from
"dayjs"
;
import
dayjs
from
"dayjs"
;
...
@@ -296,8 +291,8 @@ const handleClickNagigate = () => {
...
@@ -296,8 +291,8 @@ const handleClickNagigate = () => {
};
};
const
handleClickChatWithClientManager
=
async
()
=>
{
const
handleClickChatWithClientManager
=
async
()
=>
{
console
.
log
(
props
.
outlet_id
,
'show outlet id'
);
console
.
log
(
props
.
outlet_id
,
"show outlet id"
);
authCheck
(
async
()
=>
{
authCheck
(
async
()
=>
{
goToChatWithOutletRoboot
({
goToChatWithOutletRoboot
({
outletId
:
props
.
outlet_id
as
number
,
outletId
:
props
.
outlet_id
as
number
,
...
@@ -306,7 +301,7 @@ const handleClickChatWithClientManager = async () => {
...
@@ -306,7 +301,7 @@ const handleClickChatWithClientManager = async () => {
};
};
const
isNotChatUser
=
getUserMsg
()?.
role2
===
eRole
.
manager
;
const
isNotChatUser
=
getUserMsg
()?.
role2
===
eRole
.
manager
;
console
.
log
(
isNotChatUser
,
'show isNotChatUser'
);
console
.
log
(
isNotChatUser
,
"show isNotChatUser"
);
</
script
>
</
script
>
<
style
lang=
"less"
scoped
>
<
style
lang=
"less"
scoped
>
...
@@ -316,4 +311,4 @@ console.log(isNotChatUser, 'show isNotChatUser');
...
@@ -316,4 +311,4 @@ console.log(isNotChatUser, 'show isNotChatUser');
width: 0.8rem;
width: 0.8rem;
}
}
}
}
</
style
>
</
style
>
\ No newline at end of file
src/components/Mine/Service/index.vue
View file @
953e29f0
<
template
>
<
template
>
<div
class=
" h-12 bg-white flex justify-between items-center px-3 rounded-lg"
>
<div
class=
"h-12 bg-white flex justify-between items-center px-3 rounded-lg"
>
<div
class=
" flex items-center"
>
<div
class=
"flex items-center"
>
<icon
<IconVue
:name=
"iconName"
color=
"#4E61C9"
size=
"14"
/>
:name=
"iconName"
<span
class=
"text-sm text-gray-800 ml-3"
>
{{
label
}}
</span>
color=
"#4E61C9"
size=
"14"
/>
<span
class=
" text-sm text-gray-800 ml-3"
>
{{
label
}}
</span>
</div>
</div>
<icon
<IconVue
name=
"icon-gengduo"
color=
"#8E92A3"
size=
"14"
/>
name=
"icon-gengduo"
color=
"#8E92A3"
size=
"14"
/>
</div>
</div>
</
template
>
</
template
>
<
script
lang=
"ts"
>
<
script
lang=
"ts"
>
import
{
defineComponent
}
from
'vue'
import
{
defineComponent
}
from
"vue"
;
import
Icon
from
"@/components/common/Icon.vue"
import
Icon
Vue
from
"@/components/common/Icon.vue"
;
export
default
defineComponent
({
export
default
defineComponent
({
components
:{
components
:
{
Icon
Icon
Vue
,
},
},
props
:
{
props
:
{
iconName
:
{
iconName
:
{
type
:
String
,
type
:
String
,
default
:
''
default
:
""
,
},
label
:
{
type
:
String
,
default
:
""
,
},
},
label
:{
type
:
String
,
default
:
''
}
},
},
setup
()
{
setup
()
{
return
{};
},
return
{}
});
}
})
</
script
>
</
script
>
<
style
scoped
>
<
style
scoped
></
style
>
</
style
>
\ No newline at end of file
src/components/NavBar/index.vue
View file @
953e29f0
...
@@ -2,12 +2,12 @@
...
@@ -2,12 +2,12 @@
<div
class=
"navbar w-full"
style=
"z-index: 300"
v-if=
"!bangsBlock"
>
<div
class=
"navbar w-full"
style=
"z-index: 300"
v-if=
"!bangsBlock"
>
<div
<div
class=
"h-full theBar flex items-end px-5 justify-center relative h46"
class=
"h-full theBar flex items-end px-5 justify-center relative h46"
style=
"background:
#F7F7FA; padding-bottom: 8px;
"
style=
"background:
#f7f7fa; padding-bottom: 8px
"
:style=
"[isBangs ? 'height:' + `$
{46 + heightOfNotch}px` : '']"
:style=
"[isBangs ? 'height:' + `$
{46 + heightOfNotch}px` : '']"
v-bind="$attrs"
v-bind="$attrs"
>
>
<div
class=
"relative w-full flex items-center justify-center"
>
<div
class=
"relative w-full flex items-center justify-center"
>
<
icon
<
IconVue
v-if=
"showBackIcon"
v-if=
"showBackIcon"
@
click=
"$router.go(-1)"
@
click=
"$router.go(-1)"
name=
"icon-fanhui"
name=
"icon-fanhui"
...
@@ -15,7 +15,7 @@
...
@@ -15,7 +15,7 @@
size=
"18"
size=
"18"
:color=
"iconColor"
:color=
"iconColor"
/>
/>
<
icon
<
IconVue
v-if=
"showSecondIcon && isRole"
v-if=
"showSecondIcon && isRole"
name=
"icon-kefu"
name=
"icon-kefu"
class=
"absolute left-11"
class=
"absolute left-11"
...
@@ -23,7 +23,7 @@
...
@@ -23,7 +23,7 @@
@
click=
"$emit('clickSecondIcon')"
@
click=
"$emit('clickSecondIcon')"
:color=
"iconColor"
:color=
"iconColor"
/>
/>
<
icon
<
IconVue
v-if=
"showSearchIcon"
v-if=
"showSearchIcon"
name=
"icon-sousuo"
name=
"icon-sousuo"
class=
"absolute left-11"
class=
"absolute left-11"
...
@@ -31,7 +31,11 @@
...
@@ -31,7 +31,11 @@
@
click=
"$router.push(path)"
@
click=
"$router.push(path)"
:color=
"iconColor"
:color=
"iconColor"
/>
/>
<div
class=
"title whitespace-nowrap overflow-hidden overflow-ellipsis px-5"
>
{{
title
}}
</div>
<div
class=
"title whitespace-nowrap overflow-hidden overflow-ellipsis px-5"
>
{{
title
}}
</div>
</div>
</div>
</div>
</div>
<div
<div
...
@@ -43,26 +47,29 @@
...
@@ -43,26 +47,29 @@
<div
v-else
class=
"navbar w-full"
>
<div
v-else
class=
"navbar w-full"
>
<div
<div
class=
"h-full theBar flex items-end px-5 justify-center relative"
class=
"h-full theBar flex items-end px-5 justify-center relative"
style=
"background:
rgb(237,237,237);
"
style=
"background:
rgb(237, 237, 237)
"
v-bind=
"$attrs"
v-bind=
"$attrs"
:style=
"
{
:style=
"
{
'height': heightOfNotch + 'px',
height: heightOfNotch + 'px',
}"
v-if="isBangs"
>
</div>
<div
:style=
"
{
height: heightOfNotch + 'px',
}"
}"
v-if="isBangs"
v-if="isBangs"
>
</div>
>
</div>
<div
:style=
"
{
'height': heightOfNotch + 'px'
}" v-if="isBangs">
</div>
</div>
</div>
</
template
>
</
template
>
<
script
lang=
"ts"
>
<
script
lang=
"ts"
>
import
{
notchHeight
}
from
"@/store/AppStore"
;
import
{
notchHeight
}
from
"@/store/AppStore"
;
import
{
defineComponent
}
from
"vue"
;
import
{
defineComponent
}
from
"vue"
;
import
Icon
from
"../common/Icon.vue"
;
import
Icon
Vue
from
"../common/Icon.vue"
;
export
default
defineComponent
({
export
default
defineComponent
({
inheritAttrs
:
false
,
inheritAttrs
:
false
,
emits
:
[
'clickSecondIcon'
],
emits
:
[
"clickSecondIcon"
],
components
:
{
Icon
},
components
:
{
Icon
Vue
},
props
:
{
props
:
{
title
:
{
title
:
{
type
:
String
,
type
:
String
,
...
@@ -94,27 +101,32 @@ export default defineComponent({
...
@@ -94,27 +101,32 @@ export default defineComponent({
path
:
{
path
:
{
type
:
Object
,
type
:
Object
,
default
:
()
=>
{
default
:
()
=>
{
return
{
path
:
'/Search'
}
return
{
path
:
"/Search"
};
}
}
,
},
},
bangsBlock
:
{
bangsBlock
:
{
type
:
Boolean
,
type
:
Boolean
,
default
:
false
default
:
false
,
}
}
,
},
},
mounted
()
{
mounted
()
{
console
.
log
(
document
.
documentElement
.
clientWidth
,
window
.
screen
.
width
,
'show width'
);
console
.
log
(
console
.
log
(
window
.
devicePixelRatio
,
'show window.devicePixelRatio'
);
document
.
documentElement
.
clientWidth
,
window
.
screen
.
width
,
"show width"
);
console
.
log
(
window
.
devicePixelRatio
,
"show window.devicePixelRatio"
);
},
},
computed
:
{
computed
:
{
isBangs
()
{
isBangs
()
{
return
true
return
true
;
},
},
heightOfNotch
()
{
// 刘海屏的刘海高度 单位px
heightOfNotch
()
{
// 刘海屏的刘海高度 单位px
return
notchHeight
.
value
/
window
.
devicePixelRatio
;
return
notchHeight
.
value
/
window
.
devicePixelRatio
;
return
103
;
return
103
;
}
}
,
}
}
,
});
});
</
script
>
</
script
>
<
style
lang=
"less"
scoped
>
<
style
lang=
"less"
scoped
>
...
@@ -136,4 +148,4 @@ export default defineComponent({
...
@@ -136,4 +148,4 @@ export default defineComponent({
font-weight: 400;
font-weight: 400;
}
}
}
}
</
style
>
</
style
>
\ No newline at end of file
src/components/PopUp/index.vue
View file @
953e29f0
...
@@ -2,17 +2,17 @@
...
@@ -2,17 +2,17 @@
<Popup
<Popup
v-model:show=
"visible"
v-model:show=
"visible"
position=
"right"
position=
"right"
style=
"height: 100vh; width: 86%
;
"
style=
"height: 100vh; width: 86%"
>
>
<div
class=
"flex flex-col h-full"
>
<div
class=
"flex flex-col h-full"
>
<div
class=
"mx-5 flex items-center justify-center relative mt-2.5"
>
<div
class=
"mx-5 flex items-center justify-center relative mt-2.5"
>
<
icon
<
IconVue
color=
"#000000"
color=
"#000000"
name=
"icon-a-shanchu1"
name=
"icon-a-shanchu1"
class=
"absolute left-0"
class=
"absolute left-0"
@
click=
"clickClose"
@
click=
"clickClose"
/>
/>
<div
class=
"title"
>
{{
title
||
'此处是标题'
}}
</div>
<div
class=
"title"
>
{{
title
||
"此处是标题"
}}
</div>
</div>
</div>
<div
class=
"flex-grow overflow-hidden"
>
<div
class=
"flex-grow overflow-hidden"
>
<div
class=
"h-full overflow-auto px-5"
>
<div
class=
"h-full overflow-auto px-5"
>
...
@@ -44,18 +44,18 @@
...
@@ -44,18 +44,18 @@
</Popup>
</Popup>
</
template
>
</
template
>
<
script
lang=
"ts"
>
<
script
lang=
"ts"
>
import
{
defineComponent
}
from
'vue'
import
{
defineComponent
}
from
"vue"
;
import
{
Popup
}
from
'vant'
import
{
Popup
}
from
"vant"
;
import
Icon
from
'@/components/common/Icon.vue'
import
Icon
Vue
from
"@/components/common/Icon.vue"
;
export
default
defineComponent
({
export
default
defineComponent
({
emits
:
[
'clickLeft'
,
'clickRight'
],
emits
:
[
"clickLeft"
,
"clickRight"
],
components
:
{
components
:
{
Popup
,
Popup
,
Icon
,
Icon
Vue
,
},
},
props
:
{
props
:
{
leftBtnName
:
{
type
:
String
,
default
:
'重置'
},
leftBtnName
:
{
type
:
String
,
default
:
"重置"
},
rightBtnName
:
{
type
:
String
,
default
:
'完成'
},
rightBtnName
:
{
type
:
String
,
default
:
"完成"
},
leftBtnActive
:
{
leftBtnActive
:
{
type
:
Boolean
,
type
:
Boolean
,
default
:
true
,
default
:
true
,
...
@@ -73,20 +73,20 @@ export default defineComponent({
...
@@ -73,20 +73,20 @@ export default defineComponent({
},
},
methods
:
{
methods
:
{
clickClose
():
void
{
clickClose
():
void
{
this
.
setShow
(
false
)
this
.
setShow
(
false
)
;
},
},
},
},
computed
:
{
computed
:
{
visible
:
{
visible
:
{
get
():
boolean
|
undefined
{
get
():
boolean
|
undefined
{
return
this
.
show
return
this
.
show
;
},
},
set
(
v
:
boolean
):
void
{
set
(
v
:
boolean
):
void
{
this
.
setShow
(
false
)
this
.
setShow
(
false
)
;
},
},
},
},
},
},
})
})
;
</
script
>
</
script
>
<
style
lang=
"less"
scoped
>
<
style
lang=
"less"
scoped
>
.btn {
.btn {
...
...
src/components/ServiceRating/index.vue
View file @
953e29f0
<
template
>
<
template
>
<div
class=
"mb-5"
>
<div
class=
"mb-5"
>
<div
class=
"rating mx-auto flow-root"
>
<div
class=
"rating mx-auto flow-root"
>
<div
class=
"flex items-center justify-center mt-5"
>
<div
class=
"flex items-center justify-center mt-5"
>
<div
class=
"line"
></div>
<div
class=
"line"
></div>
<div
class=
"title mx-2.5"
>
评价服务
</div>
<div
class=
"title mx-2.5"
>
评价服务
</div>
<div
class=
"line"
></div>
<div
class=
"line"
></div>
</div>
</div>
<div
class=
"flex items-center justify-center mt-5"
>
<div
class=
"flex items-center justify-center mt-5"
>
<div
<div
v-for=
"item in props.list"
v-for=
"item in props.list"
:key=
"item.icon"
:key=
"item.icon"
class=
"flex flex-col items-center w-20"
class=
"flex flex-col items-center w-20"
@
click=
"!selected && setSelectedRate && setSelectedRate(item.name)"
@
click=
"!selected && setSelectedRate && setSelectedRate(item.name)"
>
>
<icon
<IconVue
size=
"22"
size=
"22"
:name=
"item.icon"
:name=
"item.icon"
:color=
"item.name === selected ? selectedColor : unselectedColor"
:color=
"item.name === selected ? selectedColor : unselectedColor"
/>
/>
<div
class=
"mt-3 name"
>
{{
item
.
name
}}
</div>
<div
class=
"mt-3 name"
>
{{
item
.
name
}}
</div>
</div>
</div>
</div>
</div>
<div
class=
"title mt-5 text-center"
v-if=
"selected"
>
感谢您的评价
</div>
</div>
</div>
</div>
<div
class=
"title mt-5 text-center"
v-if=
"selected"
>
感谢您的评价
</div>
</div>
</
template
>
</
template
>
<
script
lang=
"ts"
setup
>
<
script
lang=
"ts"
setup
>
import
Icon
from
"@/components/common/Icon.vue"
import
Icon
Vue
from
"@/components/common/Icon.vue"
;
import
{
defineProps
,
PropType
}
from
"vue"
import
{
defineProps
,
PropType
}
from
"vue"
;
const
props
=
defineProps
({
const
props
=
defineProps
({
selected
:
String
,
selected
:
String
,
setSelectedRate
:
Function
,
setSelectedRate
:
Function
,
selectedColor
:
{
selectedColor
:
{
type
:
String
,
type
:
String
,
default
:
'#3E4FAF'
,
default
:
"#3E4FAF"
,
},
unselectedColor
:
{
type
:
String
,
default
:
"#8D92AF"
,
},
list
:
{
type
:
Array
as
PropType
<
{
icon
:
string
;
name
:
string
}[]
>
,
default
()
{
return
[
{
icon
:
"icon-manyi"
,
name
:
"满意"
,
},
{
icon
:
"icon-bumanyi"
,
name
:
"不满意"
,
},
];
},
},
unselectedColor
:
{
},
type
:
String
,
});
default
:
'#8D92AF'
},
list
:
{
type
:
Array
as
PropType
<
{
icon
:
string
,
name
:
string
}[]
>
,
default
()
{
return
[
{
icon
:
'icon-manyi'
,
name
:
'满意'
,
},
{
icon
:
'icon-bumanyi'
,
name
:
'不满意'
,
}
]
}
}
})
</
script
>
</
script
>
<
style
lang=
"less"
scoped
>
<
style
lang=
"less"
scoped
>
.title {
.title {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
}
.rating {
width: 335px;
height: 140px;
background: #ffffff;
.line {
width: 105px;
height: 1px;
border: 1px solid #f5f6f9;
}
.name {
font-size: 14px;
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
font-weight: 400;
color: #333333;
color: #333333;
}
}
}
.rating {
</
style
>
width: 335px;
height: 140px;
background: #ffffff;
.line {
width: 105px;
height: 1px;
border: 1px solid #f5f6f9;
}
.name {
font-size: 14px;
font-family: PingFangSC-Regular, PingFang SC;
font-weight: 400;
color: #333333;
}
}
</
style
>
\ No newline at end of file
src/components/showCall/index.vue
View file @
953e29f0
...
@@ -8,13 +8,15 @@
...
@@ -8,13 +8,15 @@
@click-overlay="hide"
@click-overlay="hide"
>
>
<div
class=
"text-center py-4"
@
click=
"handleClickCall"
>
<div
class=
"text-center py-4"
@
click=
"handleClickCall"
>
<
i
con
<
I
con
name=
"icon-a-dianhua"
name=
"icon-a-dianhua"
color=
"#3E4FAF"
color=
"#3E4FAF"
size=
"17"
size=
"17"
class=
"inline-block pr-3 align-text-bottom"
class=
"inline-block pr-3 align-text-bottom"
/>
/>
<span
class=
"text-app-blue text-sm align-middle font-semibold"
>
呼叫
{{
phone
}}
</span>
<span
class=
"text-app-blue text-sm align-middle font-semibold"
>
呼叫
{{
phone
}}
</span
>
</div>
</div>
</van-popup>
</van-popup>
<van-popup
<van-popup
...
@@ -26,20 +28,27 @@
...
@@ -26,20 +28,27 @@
@click-overlay="hide"
@click-overlay="hide"
>
>
<div
<div
class=
"text-app-blue text-sm font-semibold border-t border-gray-200 text-center py-4"
class=
"
text-app-blue text-sm
font-semibold
border-t border-gray-200
text-center
py-4
"
@
click=
"hide"
@
click=
"hide"
>
取消
</div>
>
取消
</div>
</van-popup>
</van-popup>
</div>
</div>
</
template
>
</
template
>
<
script
lang=
"ts"
setup
>
<
script
lang=
"ts"
setup
>
import
Vue
,
{
getCurrentInstance
}
from
'vue'
import
Vue
from
"vue"
;
import
jsBridge
from
"@/utils/jsBridge2"
import
jsBridge
from
"@/utils/jsBridge2"
;
import
Icon
from
"../common/Icon.vue"
;
// const { ctx } = getCurrentInstance() as any
const
emit
=
defineEmits
([
'hidden'
])
const
emit
=
defineEmits
([
"hidden"
]);
const
props
=
defineProps
({
const
props
=
defineProps
({
show
:
{
show
:
{
...
@@ -48,18 +57,17 @@ const props = defineProps({
...
@@ -48,18 +57,17 @@ const props = defineProps({
},
},
phone
:
{
phone
:
{
type
:
String
,
type
:
String
,
}
}
,
})
})
;
const
hide
=
()
=>
{
const
hide
=
()
=>
{
emit
(
'hidden'
,
false
)
emit
(
"hidden"
,
false
);
}
}
;
const
handleClickCall
=
async
()
=>
{
const
handleClickCall
=
async
()
=>
{
console
.
log
(
props
.
phone
)
console
.
log
(
props
.
phone
)
;
new
jsBridge
().
bridge_call
(
props
.
phone
,
()
=>
{
new
jsBridge
().
bridge_call
(
props
.
phone
,
()
=>
{
emit
(
'hidden'
,
false
)
emit
(
"hidden"
,
false
);
})
});
}
};
</
script
>
</
script
>
\ No newline at end of file
src/views/ActivityList/index.vue
View file @
953e29f0
...
@@ -4,8 +4,8 @@
...
@@ -4,8 +4,8 @@
:style=
"
{ background: '#0081F7 !important', color: 'white' }"
:style=
"
{ background: '#0081F7 !important', color: 'white' }"
iconColor="white"
iconColor="white"
/>
/>
<div
class=
"
-mt-5"
>
<div
class=
"-mt-5"
>
<img
src=
"../../assets/img/activity_bg.png"
class=
" w-full"
/>
<img
src=
"../../assets/img/activity_bg.png"
class=
"w-full"
/>
</div>
</div>
<!-- 活动列表 -->
<!-- 活动列表 -->
<van-list
<van-list
...
@@ -16,7 +16,8 @@
...
@@ -16,7 +16,8 @@
@
load=
"onLoad"
@
load=
"onLoad"
>
>
<div
class=
"px-5"
>
<div
class=
"px-5"
>
<Skeleton
:loading=
"skeLoading"
:row=
"3"
class=
"mt-2"
>
<div
class=
"mt-2"
v-if=
"skeLoading"
></div>
<Skeleton
:loading=
"skeLoading"
:row=
"3"
>
<card
<card
v-for=
"activity in activityList"
v-for=
"activity in activityList"
:update_at=
"activity.update_at"
:update_at=
"activity.update_at"
...
@@ -47,7 +48,7 @@ onMounted(() => {
...
@@ -47,7 +48,7 @@ onMounted(() => {
fetchList
();
fetchList
();
});
});
const
current
=
ref
(
1
)
const
current
=
ref
(
1
)
;
const
LIST_SIZE
:
number
=
4
;
const
LIST_SIZE
:
number
=
4
;
const
offset
=
ref
(
0
);
const
offset
=
ref
(
0
);
const
loading
=
ref
(
false
);
const
loading
=
ref
(
false
);
...
@@ -57,7 +58,7 @@ const activityList: Ref<ActivityItem[]> = ref([]);
...
@@ -57,7 +58,7 @@ const activityList: Ref<ActivityItem[]> = ref([]);
const
skeLoading
=
ref
(
false
);
const
skeLoading
=
ref
(
false
);
const
onLoad
=
()
=>
{
const
onLoad
=
()
=>
{
current
.
value
++
current
.
value
++
;
offset
.
value
=
(
current
.
value
-
1
)
*
LIST_SIZE
;
offset
.
value
=
(
current
.
value
-
1
)
*
LIST_SIZE
;
if
(
offset
.
value
>=
total
.
value
)
{
if
(
offset
.
value
>=
total
.
value
)
{
finished
.
value
=
true
;
finished
.
value
=
true
;
...
@@ -69,10 +70,10 @@ const onLoad = () => {
...
@@ -69,10 +70,10 @@ const onLoad = () => {
};
};
const
fetchList
=
()
=>
{
const
fetchList
=
()
=>
{
skeLoading
.
value
=
true
skeLoading
.
value
=
true
;
queryActivityList
({
limit
:
4
,
offset
:
offset
.
value
}).
then
((
ret
)
=>
{
queryActivityList
({
limit
:
4
,
offset
:
offset
.
value
}).
then
((
ret
)
=>
{
if
(
ret
.
code
===
200
)
{
if
(
ret
.
code
===
200
)
{
skeLoading
.
value
=
false
skeLoading
.
value
=
false
;
total
.
value
=
ret
.
data
.
total
;
total
.
value
=
ret
.
data
.
total
;
activityList
.
value
=
activityList
.
value
.
concat
(
ret
.
data
.
items
);
activityList
.
value
=
activityList
.
value
.
concat
(
ret
.
data
.
items
);
loading
.
value
=
false
;
loading
.
value
=
false
;
...
@@ -85,4 +86,4 @@ const fetchList = () => {
...
@@ -85,4 +86,4 @@ const fetchList = () => {
.title
{
.title
{
font-size
:
18px
;
font-size
:
18px
;
}
}
</
style
>
</
style
>
\ No newline at end of file
src/views/Auth/Login/Login.vue
View file @
953e29f0
<
template
>
<
template
>
<nav-bar
:bangsBlock=
"true"
/>
<nav-bar
:bangsBlock=
"true"
/>
<div
class=
"register pt-5"
>
<div
class=
"register pt-5"
>
<Icon
<Icon
Vue
name=
"icon-a-shanchu1"
name=
"icon-a-shanchu1"
color=
"black"
color=
"black"
size=
"20"
size=
"20"
...
@@ -144,7 +144,7 @@ import LoginButton from "./components/LoginButton/index.vue";
...
@@ -144,7 +144,7 @@ import LoginButton from "./components/LoginButton/index.vue";
import
Check
from
"@/components/common/Check/index.vue"
;
import
Check
from
"@/components/common/Check/index.vue"
;
import
PhoneInput
from
"./components/PhoneInput/index.vue"
;
import
PhoneInput
from
"./components/PhoneInput/index.vue"
;
import
SlideValidator
from
"@/components/common/SlideValidator/index.vue"
;
import
SlideValidator
from
"@/components/common/SlideValidator/index.vue"
;
import
Icon
from
"@/components/common/Icon.vue"
;
import
Icon
Vue
from
"@/components/common/Icon.vue"
;
import
notCheckedIcon
from
"@/assets/icons/not_checked.png"
;
import
notCheckedIcon
from
"@/assets/icons/not_checked.png"
;
import
checkedIcon
from
"@/assets/icons/checked.png"
;
import
checkedIcon
from
"@/assets/icons/checked.png"
;
...
@@ -193,7 +193,7 @@ export default defineComponent({
...
@@ -193,7 +193,7 @@ export default defineComponent({
Check
,
Check
,
PhoneInput
,
PhoneInput
,
SlideValidator
,
SlideValidator
,
Icon
,
Icon
Vue
,
},
},
data
()
{
data
()
{
return
{
return
{
...
...
src/views/Chat/Chat.vue
View file @
953e29f0
This diff is collapsed.
Click to expand it.
src/views/Chat/ChatInput.vue
View file @
953e29f0
...
@@ -6,7 +6,9 @@
...
@@ -6,7 +6,9 @@
@
click=
"inputType === 1 ? (inputType = 2) : (inputType = 1)"
@
click=
"inputType === 1 ? (inputType = 2) : (inputType = 1)"
class=
"w-7 h-7 mx-2.5 text-center select-none focus:outline-none"
class=
"w-7 h-7 mx-2.5 text-center select-none focus:outline-none"
>
>
<i
v-if=
"inputType === 1"
class=
"iconfont text-primary text-xl"
>

</i>
<i
v-if=
"inputType === 1"
class=
"iconfont text-primary text-xl"
>

</i
>
<i
v-else
class=
"iconfont text-primary text-xl"
>

</i>
<i
v-else
class=
"iconfont text-primary text-xl"
>

</i>
</button>
</button>
...
@@ -30,13 +32,29 @@
...
@@ -30,13 +32,29 @@
<button
<button
v-else
v-else
@
click=
"inputText.trim().length !== 0 && handleSend()"
@
click=
"inputText.trim().length !== 0 && handleSend()"
class=
"mx-2.5 px-4 py-1.5 flex items-center rounded-md text-center select-none focus:outline-none text-app-white"
class=
"
mx-2.5
px-4
py-1.5
flex
items-center
rounded-md
text-center
select-none
focus:outline-none
text-app-white
"
style=
"background: rgb(7, 193, 99)"
style=
"background: rgb(7, 193, 99)"
>
发送
</button>
>
发送
</button>
</div>
</div>
<!-- input menu -->
<!-- input menu -->
<div
v-show=
"showMenu"
class=
"min-h-input-menu flex items-center px-8 text-sm text-subtle"
>
<div
v-show=
"showMenu"
class=
"min-h-input-menu flex items-center px-8 text-sm text-subtle"
>
<ChatInputAlbumVue
/>
<ChatInputAlbumVue
/>
<!--
<ChatInputCameraVue
/>
-->
<!--
<ChatInputCameraVue
/>
-->
</div>
</div>
...
@@ -53,8 +71,7 @@ import ChatInputAlbumVue from "./ChatInputAlbum.vue";
...
@@ -53,8 +71,7 @@ import ChatInputAlbumVue from "./ChatInputAlbum.vue";
import
ChatInputCameraVue
from
"./ChatInputCamera.vue"
;
import
ChatInputCameraVue
from
"./ChatInputCamera.vue"
;
import
{
getFromId
}
from
"@/store/appCallerStore"
;
import
{
getFromId
}
from
"@/store/appCallerStore"
;
import
{
textInputStore
}
from
"@/store/textInputStore"
;
import
{
textInputStore
}
from
"@/store/textInputStore"
;
import
{
v4
as
uuidv4
}
from
'uuid'
import
{
v4
as
uuidv4
}
from
"uuid"
;
import
Icon
from
"@/components/common/Icon.vue"
;
import
{
useRoute
}
from
"vue-router"
;
import
{
useRoute
}
from
"vue-router"
;
import
{
getUserMsg
}
from
"@/utils/userMsg"
;
import
{
getUserMsg
}
from
"@/utils/userMsg"
;
import
{
eRole
}
from
"@/types/roleType"
;
import
{
eRole
}
from
"@/types/roleType"
;
...
@@ -68,7 +85,6 @@ export default defineComponent({
...
@@ -68,7 +85,6 @@ export default defineComponent({
ChatInputTextVue
,
ChatInputTextVue
,
ChatInputAlbumVue
,
ChatInputAlbumVue
,
ChatInputCameraVue
,
ChatInputCameraVue
,
Icon
,
},
},
setup
(
props
)
{
setup
(
props
)
{
...
@@ -78,7 +94,7 @@ export default defineComponent({
...
@@ -78,7 +94,7 @@ export default defineComponent({
voice
,
voice
,
}
}
const
target
=
route
.
query
.
targetId
as
string
const
target
=
route
.
query
.
targetId
as
string
;
/** 输入框类型,文本 or 语音 */
/** 输入框类型,文本 or 语音 */
const
inputType
=
ref
(
InputType
.
text
);
const
inputType
=
ref
(
InputType
.
text
);
...
@@ -94,7 +110,11 @@ export default defineComponent({
...
@@ -94,7 +110,11 @@ export default defineComponent({
type
:
ChatMessageTypes
;
type
:
ChatMessageTypes
;
content
:
MessageContent
;
content
:
MessageContent
;
})
=>
{
})
=>
{
messageStore
.
sendMessage
({
type
:
payload
.
type
,
content
:
payload
.
content
,
target
:
route
.
query
.
targetId
as
string
});
messageStore
.
sendMessage
({
type
:
payload
.
type
,
content
:
payload
.
content
,
target
:
route
.
query
.
targetId
as
string
,
});
textInputStore
.
clearTextMessage
();
textInputStore
.
clearTextMessage
();
};
};
...
@@ -117,7 +137,7 @@ export default defineComponent({
...
@@ -117,7 +137,7 @@ export default defineComponent({
// })
// })
const
handleSend
=
()
=>
{
const
handleSend
=
()
=>
{
console
.
log
(
'handle send'
);
console
.
log
(
"handle send"
);
const
isStaff
=
getUserMsg
()?.
role
===
eRole
.
staff
;
const
isStaff
=
getUserMsg
()?.
role
===
eRole
.
staff
;
const
isUser
=
getUserMsg
()?.
role
===
eRole
.
user
;
const
isUser
=
getUserMsg
()?.
role
===
eRole
.
user
;
...
@@ -127,43 +147,43 @@ export default defineComponent({
...
@@ -127,43 +147,43 @@ export default defineComponent({
*/
*/
messageStore
.
displayNewMessage
({
messageStore
.
displayNewMessage
({
content
:
{
content
:
{
content
:
inputText
.
value
content
:
inputText
.
value
,
},
},
from
:
getFromId
()
as
string
,
from
:
getFromId
()
as
string
,
target
:
target
,
target
:
target
,
uuid
:
uuidv4
(),
uuid
:
uuidv4
(),
state
:
'success'
,
state
:
"success"
,
datetime
:
new
Date
().
getTime
(),
datetime
:
new
Date
().
getTime
(),
type
:
ChatMessageTypes
.
robot
,
type
:
ChatMessageTypes
.
robot
,
})
})
;
ChatDBService
.
getInstance
().
handleEveryReceive
({
ChatDBService
.
getInstance
().
handleEveryReceive
({
msg
:
{
msg
:
{
content
:
{
content
:
{
content
:
inputText
.
value
content
:
inputText
.
value
,
},
},
from
:
getFromId
()
as
string
,
from
:
getFromId
()
as
string
,
target
:
target
,
target
:
target
,
uuid
:
uuidv4
(),
uuid
:
uuidv4
(),
state
:
'success'
,
state
:
"success"
,
datetime
:
new
Date
().
getTime
(),
datetime
:
new
Date
().
getTime
(),
type
:
ChatMessageTypes
.
robot
,
type
:
ChatMessageTypes
.
robot
,
},
},
masterId
:
getFromId
()
as
string
,
masterId
:
getFromId
()
as
string
,
isChattingWithTargetId
:
true
,
isChattingWithTargetId
:
true
,
isRoboot
:
true
,
isRoboot
:
true
,
})
})
;
textInputStore
.
clearTextMessage
();
textInputStore
.
clearTextMessage
();
}
else
{
}
else
{
sendChatMessage
({
type
:
1
,
content
:
{
content
:
inputText
.
value
}
})
sendChatMessage
({
type
:
1
,
content
:
{
content
:
inputText
.
value
}
})
;
}
}
}
}
;
return
{
return
{
inputType
,
inputType
,
inputText
,
inputText
,
showMenu
,
showMenu
,
sendChatMessage
,
sendChatMessage
,
handleSend
handleSend
,
// showReceiptInput,
// showReceiptInput,
};
};
},
},
...
@@ -173,4 +193,4 @@ export default defineComponent({
...
@@ -173,4 +193,4 @@ export default defineComponent({
.min-h-input-bar {
.min-h-input-bar {
min-height: 60px;
min-height: 60px;
}
}
</
style
>
</
style
>
\ No newline at end of file
src/views/LoanDetail/components/LoanDetailDescribe/index.vue
View file @
953e29f0
<
template
>
<
template
>
<div
class=
"describe mx-auto"
>
<div
class=
"describe mx-auto"
>
<div
class=
"box flex p-5"
>
<div
class=
"box flex p-5"
>
<Icon
name=
"icon-chanpinjieshao"
size=
"30"
color=
"RGBA(62, 79, 175, 1)"
/>
<IconVue
name=
"icon-chanpinjieshao"
size=
"30"
color=
"RGBA(62, 79, 175, 1)"
/>
<div
class=
"ml-3"
>
<div
class=
"ml-3"
>
<div
class=
"title"
>
产品介绍
</div>
<div
class=
"title"
>
产品介绍
</div>
<div
class=
"content whitespace-pre-wrap mt-2.5"
>
<div
class=
"content whitespace-pre-wrap mt-2.5"
>
{{
products
}}
{{
products
}}
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"box flex p-5"
>
<div
class=
"box flex p-5"
>
<Icon
name=
"icon-chanpintedian"
size=
"30"
color=
"RGBA(62, 79, 175, 1)"
/>
<IconVue
name=
"icon-chanpintedian"
size=
"30"
color=
"RGBA(62, 79, 175, 1)"
/>
<div
class=
"ml-3"
>
<div
class=
"ml-3"
>
<div
class=
"title"
>
产品特点
</div>
<div
class=
"title"
>
产品特点
</div>
<div
class=
"content whitespace-pre-wrap mt-2.5"
>
<div
class=
"content whitespace-pre-wrap mt-2.5"
>
{{
features
}}
{{
features
}}
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"box flex p-5"
>
<div
class=
"box flex p-5"
>
<Icon
name=
"icon-shiyongkehu"
size=
"30"
color=
"RGBA(62, 79, 175, 1)"
/>
<Icon
Vue
name=
"icon-shiyongkehu"
size=
"30"
color=
"RGBA(62, 79, 175, 1)"
/>
<div
class=
"ml-3"
>
<div
class=
"ml-3"
>
<div
class=
"title"
>
适用客户
</div>
<div
class=
"title"
>
适用客户
</div>
<div
class=
"content whitespace-pre-wrap mt-2.5"
>
<div
class=
"content whitespace-pre-wrap mt-2.5"
>
{{
apply_to
}}
{{
apply_to
}}
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"box flex p-5"
>
<div
class=
"box flex p-5"
>
<Icon
name=
"icon-shenqingtiaojian"
size=
"30"
color=
"RGBA(62, 79, 175, 1)"
/>
<IconVue
name=
"icon-shenqingtiaojian"
size=
"30"
color=
"RGBA(62, 79, 175, 1)"
/>
<div
class=
"ml-3"
>
<div
class=
"ml-3"
>
<div
class=
"title"
>
申请条件
</div>
<div
class=
"title"
>
申请条件
</div>
<div
class=
"content whitespace-pre-wrap mt-2.5"
>
<div
class=
"content whitespace-pre-wrap mt-2.5"
>
{{
apply_cond
}}
{{
apply_cond
}}
</div>
</div>
</div>
</div>
</div>
</div>
<div
class=
"box flex p-5"
>
<div
class=
"box flex p-5"
>
<Icon
name=
"icon-tijiaotiaojian"
size=
"30"
color=
"RGBA(62, 79, 175, 1)"
/>
<IconVue
name=
"icon-tijiaotiaojian"
size=
"30"
color=
"RGBA(62, 79, 175, 1)"
/>
<div
class=
"ml-3"
>
<div
class=
"ml-3"
>
<div
class=
"title"
>
提交条件
</div>
<div
class=
"title"
>
提交条件
</div>
<div
class=
"content whitespace-pre-wrap mt-2.5"
>
<div
class=
"content whitespace-pre-wrap mt-2.5"
>
{{
submit_cond
}}
{{
submit_cond
}}
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</div>
</
template
>
</
template
>
<
script
lang=
"ts"
setup
>
<
script
lang=
"ts"
setup
>
import
Icon
from
"@/components/common/Icon.vue"
;
import
Icon
Vue
from
"@/components/common/Icon.vue"
;
import
{
onMounted
}
from
"@vue/runtime-core"
;
import
{
onMounted
}
from
"@vue/runtime-core"
;
const
props
=
defineProps
({
const
props
=
defineProps
({
products
:{
products
:
{
type
:
String
,
type
:
String
,
required
:
true
,
required
:
true
,
},
},
features
:{
features
:
{
type
:
String
,
type
:
String
,
required
:
true
,
required
:
true
,
},
},
apply_to
:{
apply_to
:
{
type
:
String
,
type
:
String
,
required
:
true
,
required
:
true
,
},
},
apply_cond
:{
apply_cond
:
{
type
:
String
,
type
:
String
,
required
:
true
,
required
:
true
,
},
},
submit_cond
:{
submit_cond
:
{
type
:
String
,
type
:
String
,
required
:
true
,
required
:
true
,
},
},
})
});
</
script
>
</
script
>
<
style
lang=
"less"
scoped
>
<
style
lang=
"less"
scoped
>
.describe {
.describe {
...
@@ -100,4 +115,4 @@ const props = defineProps({
...
@@ -100,4 +115,4 @@ const props = defineProps({
line-height: 24px;
line-height: 24px;
}
}
}
}
</
style
>
</
style
>
\ No newline at end of file
src/views/LoanDetail/index.vue
View file @
953e29f0
This diff is collapsed.
Click to expand it.
src/views/withMenu/Components/TabBar/index.vue
View file @
953e29f0
<
template
>
<
template
>
<div
<div
class=
"
h-14 flex bg-tab-bar-bg items-center mx-2.5 overflow-hidden py-3"
class=
"h-14 flex bg-tab-bar-bg items-center mx-2.5 overflow-hidden py-3"
style=
"border-radius: 19px"
style=
"border-radius: 19px"
>
>
<div
class=
"flex-row flex justify-around w-full h-full"
>
<div
class=
"flex-row flex justify-around w-full h-full"
>
...
@@ -15,7 +15,9 @@
...
@@ -15,7 +15,9 @@
>
>
<TabItem
<TabItem
:tabName=
"item.name"
:tabName=
"item.name"
:iconName=
"activeTabRouteName === item.routeName ? item.icon : item.icon1"
:iconName=
"
activeTabRouteName === item.routeName ? item.icon : item.icon1
"
:active=
"activeTabRouteName === item.routeName"
:active=
"activeTabRouteName === item.routeName"
/>
/>
</div>
</div>
...
@@ -24,14 +26,12 @@
...
@@ -24,14 +26,12 @@
</
template
>
</
template
>
<
script
lang=
"ts"
>
<
script
lang=
"ts"
>
import
Icon
from
"@/components/common/Icon.vue"
;
import
TabItem
from
"./TabItem.vue"
;
import
TabItem
from
"./TabItem.vue"
;
import
tabList
from
"../../tabList"
;
import
tabList
from
"../../tabList"
;
import
{
defineComponent
}
from
"vue"
;
import
{
defineComponent
}
from
"vue"
;
export
default
defineComponent
({
export
default
defineComponent
({
components
:
{
components
:
{
Icon
,
TabItem
,
TabItem
,
},
},
props
:
[
"list"
,
"activeTabRouteName"
],
props
:
[
"list"
,
"activeTabRouteName"
],
...
@@ -115,4 +115,4 @@ export default defineComponent({
...
@@ -115,4 +115,4 @@ export default defineComponent({
height
:
22px
;
height
:
22px
;
margin
:
6px
0
0
58px
;
margin
:
6px
0
0
58px
;
}
}
</
style
>
</
style
>
\ No newline at end of file
src/views/withMenu/FinancialManagement/index.vue
View file @
953e29f0
...
@@ -10,7 +10,7 @@
...
@@ -10,7 +10,7 @@
<div
class=
"outer1 flex-col"
>
<div
class=
"outer1 flex-col"
>
<div
class=
"box2 flex-row justify-between"
>
<div
class=
"box2 flex-row justify-between"
>
<div
class=
"flex items-center"
>
<div
class=
"flex items-center"
>
<
icon
<
IconVue
class=
"icon2"
class=
"icon2"
name=
"icon-gouxuanyangshi"
name=
"icon-gouxuanyangshi"
color=
"#A7B2E3"
color=
"#A7B2E3"
...
@@ -19,7 +19,7 @@
...
@@ -19,7 +19,7 @@
<span
class=
"word2"
>
中低风险
</span>
<span
class=
"word2"
>
中低风险
</span>
</div>
</div>
<div
class=
"flex items-center"
>
<div
class=
"flex items-center"
>
<
icon
<
IconVue
class=
"icon2"
class=
"icon2"
name=
"icon-gouxuanyangshi"
name=
"icon-gouxuanyangshi"
color=
"#A7B2E3"
color=
"#A7B2E3"
...
@@ -28,7 +28,7 @@
...
@@ -28,7 +28,7 @@
<span
class=
"word3"
>
风格稳健
</span>
<span
class=
"word3"
>
风格稳健
</span>
</div>
</div>
<div
class=
"flex items-center"
>
<div
class=
"flex items-center"
>
<
icon
<
IconVue
class=
"icon2"
class=
"icon2"
name=
"icon-gouxuanyangshi"
name=
"icon-gouxuanyangshi"
color=
"#A7B2E3"
color=
"#A7B2E3"
...
@@ -51,7 +51,7 @@
...
@@ -51,7 +51,7 @@
<
script
lang=
"ts"
>
<
script
lang=
"ts"
>
import
{
defineComponent
}
from
"vue"
;
import
{
defineComponent
}
from
"vue"
;
import
Icon
from
"@/components/common/Icon.vue"
;
import
Icon
Vue
from
"@/components/common/Icon.vue"
;
import
FnsCard3
from
"@/components/FnsCard3/index.vue"
;
import
FnsCard3
from
"@/components/FnsCard3/index.vue"
;
import
GroupTitle
from
"@/components/GroupTitle/index.vue"
;
import
GroupTitle
from
"@/components/GroupTitle/index.vue"
;
import
MainFnsSwip
from
"./Components/MainFnsSwip/index.vue"
;
import
MainFnsSwip
from
"./Components/MainFnsSwip/index.vue"
;
...
@@ -60,7 +60,7 @@ import NavBar from "@/components/NavBar/index.vue";
...
@@ -60,7 +60,7 @@ import NavBar from "@/components/NavBar/index.vue";
export
default
defineComponent
({
export
default
defineComponent
({
components
:
{
components
:
{
Icon
,
Icon
Vue
,
FnsCard3
,
FnsCard3
,
MainFnsSwip
,
MainFnsSwip
,
GroupTitle
,
GroupTitle
,
...
@@ -86,4 +86,4 @@ export default defineComponent({
...
@@ -86,4 +86,4 @@ export default defineComponent({
.mainfnsswip {
.mainfnsswip {
margin-top: -130px;
margin-top: -130px;
}
}
</
style
>
</
style
>
\ No newline at end of file
src/views/withMenu/Home/AppList/index.vue
View file @
953e29f0
...
@@ -4,20 +4,31 @@
...
@@ -4,20 +4,31 @@
v-for=
"app in appList"
v-for=
"app in appList"
:key=
"app.name"
:key=
"app.name"
class=
"w-1/4 mb-5 text-center"
class=
"w-1/4 mb-5 text-center"
@
click=
"
app.cb && app.cb(
) || $router.push(
{ name: app.routerName })"
@
click=
"
(app.cb && app.cb()
) || $router.push(
{ name: app.routerName })"
>
>
<div
class=
"w-16 h-16 bg-white app-container mx-auto flex items-center justify-center"
>
<div
<Icon
:name=
"app.icon"
:color=
"app.color"
size=
"25"
/>
class=
"
w-16
h-16
bg-white
app-container
mx-auto
flex
items-center
justify-center
"
>
<IconVue
:name=
"app.icon"
:color=
"app.color"
size=
"25"
/>
</div>
</div>
<div
class=
"mt-2.5 app-name"
>
{{
app
.
name
}}
</div>
<div
class=
"mt-2.5 app-name"
>
{{
app
.
name
}}
</div>
</div>
</div>
</div>
</div>
</
template
>
</
template
>
<
script
lang=
"ts"
>
<
script
lang=
"ts"
>
import
Icon
from
"@/components/common/Icon.vue"
;
import
Icon
Vue
from
"@/components/common/Icon.vue"
;
import
{
defineComponent
}
from
"vue"
;
import
{
defineComponent
}
from
"vue"
;
export
default
defineComponent
({
export
default
defineComponent
({
components
:
{
Icon
},
components
:
{
Icon
Vue
},
props
:
[
"appList"
],
props
:
[
"appList"
],
});
});
</
script
>
</
script
>
...
@@ -32,4 +43,4 @@ export default defineComponent({
...
@@ -32,4 +43,4 @@ export default defineComponent({
font-weight
:
400
;
font-weight
:
400
;
color
:
#1b1f37
;
color
:
#1b1f37
;
}
}
</
style
>
</
style
>
\ No newline at end of file
src/views/withMenu/Home/Notify/index.vue
View file @
953e29f0
...
@@ -9,42 +9,54 @@
...
@@ -9,42 +9,54 @@
class=
"mx-3.5 wrap11"
class=
"mx-3.5 wrap11"
>
>
<template
#
left-icon
>
<template
#
left-icon
>
<Icon
name=
"icon-tongzhi"
color=
"#1B1F37"
class=
"mr-2"
/>
<Icon
Vue
name=
"icon-tongzhi"
color=
"#1B1F37"
class=
"mr-2"
/>
</
template
>
</
template
>
<van-swipe
vertical
class=
"notice-swipe"
:autoplay=
"3000"
:show-indicators=
"false"
>
<van-swipe
vertical
class=
"notice-swipe"
:autoplay=
"3000"
:show-indicators=
"false"
>
<van-swipe-item
<van-swipe-item
class=
"overflow-ellipsis overflow-hidden"
class=
"overflow-ellipsis overflow-hidden"
v-for=
"item in list"
v-for=
"item in list"
:key=
"item.uuid"
:key=
"item.uuid"
>
>
<div
@
click=
"$router.push({path: '/msgDetail', query: {info: JSON.stringify(item)}})"
>
<div
{{ item.content }}
@
click=
"
</div>
$router.push({
path: '/msgDetail',
query: { info: JSON.stringify(item) },
})
"
>
{{ item.content }}
</div>
</van-swipe-item>
</van-swipe-item>
</van-swipe>
</van-swipe>
</van-notice-bar>
</van-notice-bar>
</template>
</template>
<
script
lang=
"ts"
>
<
script
lang=
"ts"
>
import
Icon
from
"@/components/common/Icon.vue"
;
import
Icon
Vue
from
"@/components/common/Icon.vue"
;
import
Vue
,
{
defineComponent
}
from
"vue"
;
import
Vue
,
{
defineComponent
}
from
"vue"
;
import
{
NoticeBar
,
Swipe
,
SwipeItem
}
from
"vant"
;
import
{
NoticeBar
,
Swipe
,
SwipeItem
}
from
"vant"
;
export
default
defineComponent
({
export
default
defineComponent
({
components
:
{
components
:
{
Icon
,
Icon
Vue
,
"van-swipe"
:
Swipe
,
"van-swipe"
:
Swipe
,
"van-swipe-item"
:
SwipeItem
,
"van-swipe-item"
:
SwipeItem
,
},
},
props
:
[
'list'
],
props
:
[
"list"
],
setup
()
{
setup
()
{
const
goPage
=
()
=>
{
const
goPage
=
()
=>
{
console
.
log
(
1111
)
console
.
log
(
1111
)
;
}
}
;
return
{
return
{
goPage
goPage
,
}
}
;
}
}
,
});
});
</
script
>
</
script
>
<
style
>
<
style
>
...
@@ -86,4 +98,4 @@ export default defineComponent({
...
@@ -86,4 +98,4 @@ export default defineComponent({
white-space
:
nowrap
;
white-space
:
nowrap
;
line-height
:
17px
;
line-height
:
17px
;
}
}
</
style
>
</
style
>
\ No newline at end of file
src/views/withMenu/Home/index.vue
View file @
953e29f0
...
@@ -15,18 +15,25 @@
...
@@ -15,18 +15,25 @@
title=
"热门产品"
title=
"热门产品"
@
click=
"$router.push(
{ name: 'Loan' })"
@
click=
"$router.push(
{ name: 'Loan' })"
/>
/>
<Skeleton
:loading=
"skeLoading"
:row=
"3"
class=
"mt-2"
>
<LoanCard
<div
class=
"mt-2"
v-if=
"skeLoading"
></div>
v-if=
"!isReviewMode && product_name"
<Skeleton
:loading=
"skeLoading"
:row=
"3"
>
:max_amount=
"max_amount"
<div>
:product_name=
"product_name"
<LoanCard
:features=
"features"
v-if=
"!isReviewMode && product_name"
:inst_name=
"inst_name"
:max_amount=
"max_amount"
class=
"mt-5"
:product_name=
"product_name"
@
click=
"
:features=
"features"
$router.push(
{ name: 'LoanDetail', params: { uuid: hotLoanUuid } })
:inst_name=
"inst_name"
"
class=
"mt-5"
/>
@
click=
"
$router.push(
{
name: 'LoanDetail',
params: { uuid: hotLoanUuid },
})
"
/>
</div>
</Skeleton>
</Skeleton>
<group-title
<group-title
class=
"mt-7"
class=
"mt-7"
...
@@ -41,7 +48,7 @@
...
@@ -41,7 +48,7 @@
title=
"精彩活动"
title=
"精彩活动"
@
click=
"$router.push(
{ name: 'ActivityList' })"
@
click=
"$router.push(
{ name: 'ActivityList' })"
/>
/>
<Skeleton
:loading=
"skeLoading"
:row=
"3"
class=
"mt-2"
>
<Skeleton
:loading=
"skeLoading"
:row=
"3"
>
<div
class=
"mx-5 mt-5 text-center"
>
<div
class=
"mx-5 mt-5 text-center"
>
<img
<img
class=
"w-83 h-22 object-cover object-center rounded-lg inline-block"
class=
"w-83 h-22 object-cover object-center rounded-lg inline-block"
...
@@ -73,7 +80,6 @@ import Banner from "./Banner/Banner.vue";
...
@@ -73,7 +80,6 @@ import Banner from "./Banner/Banner.vue";
import
Navbar
from
"@/components/NavBar/index.vue"
;
import
Navbar
from
"@/components/NavBar/index.vue"
;
import
AppList
from
"./AppList/index.vue"
;
import
AppList
from
"./AppList/index.vue"
;
import
appList
from
"./appList"
;
import
appList
from
"./appList"
;
import
Icon
from
"@/components/common/Icon.vue"
;
import
Notify
from
"./Notify/index.vue"
;
import
Notify
from
"./Notify/index.vue"
;
import
GroupTitle
from
"@/components/GroupTitle/index.vue"
;
import
GroupTitle
from
"@/components/GroupTitle/index.vue"
;
import
FnsCard
from
"./FnsCard/index.vue"
;
import
FnsCard
from
"./FnsCard/index.vue"
;
...
@@ -115,7 +121,6 @@ export default defineComponent({
...
@@ -115,7 +121,6 @@ export default defineComponent({
components
:
{
components
:
{
Banner
,
Banner
,
AppList
,
AppList
,
Icon
,
Notify
,
Notify
,
GroupTitle
,
GroupTitle
,
Navbar
,
Navbar
,
...
...
src/views/withMenu/Loan/index.vue
View file @
953e29f0
...
@@ -63,7 +63,7 @@
...
@@ -63,7 +63,7 @@
<span
class=
"word35"
>
灵活快捷
</span>
<span
class=
"word35"
>
灵活快捷
</span>
</div>
</div>
</div>
-->
</div>
-->
<LoanHotSwipe
:loanMode=
"mode"
class=
"
absolute top-0 bottom-0"
/>
<LoanHotSwipe
:loanMode=
"mode"
class=
"absolute top-0 bottom-0"
/>
</div>
</div>
<!-- 热门产品 -->
<!-- 热门产品 -->
<!--
<GroupTitle
title=
"热门产品"
class=
"mt-2.5"
v-if=
"count"
iconName=
""
/>
-->
<!--
<GroupTitle
title=
"热门产品"
class=
"mt-2.5"
v-if=
"count"
iconName=
""
/>
-->
...
@@ -71,7 +71,7 @@
...
@@ -71,7 +71,7 @@
<GroupTitle
<GroupTitle
title=
"产品精选"
title=
"产品精选"
v-if=
"state.allProductList"
v-if=
"state.allProductList"
class=
"
mt-24"
class=
"mt-24"
@
seeMore=
"$router.push(
{ name: 'LoanList', params: { mode: mode } })"
@
seeMore=
"$router.push(
{ name: 'LoanList', params: { mode: mode } })"
/>
/>
<Skeleton
<Skeleton
...
@@ -102,7 +102,8 @@
...
@@ -102,7 +102,8 @@
v-if=
"src"
v-if=
"src"
@
click=
"$router.push(
{ name: 'ActivityList' })"
@
click=
"$router.push(
{ name: 'ActivityList' })"
/>
/>
<Skeleton
:loading=
"skeLoading"
:row=
"3"
class=
"mt-2"
>
<div
class=
"mt-2"
v-if=
"skeLoading"
></div>
<Skeleton
:loading=
"skeLoading"
:row=
"3"
>
<img
<img
class=
"mx-5 w-83 h-22 mt-5 rounded-lg mx-auto"
class=
"mx-5 w-83 h-22 mt-5 rounded-lg mx-auto"
:src=
"src"
:src=
"src"
...
@@ -213,20 +214,15 @@ const fetchList = () => {
...
@@ -213,20 +214,15 @@ const fetchList = () => {
limit
:
4
,
limit
:
4
,
loan_type
:
mode
.
value
,
loan_type
:
mode
.
value
,
offset
:
0
,
offset
:
0
,
product_status
:
eProductStatus
.
normal
product_status
:
eProductStatus
.
normal
,
}).
then
((
ret
)
=>
{
}).
then
((
ret
)
=>
{
if
(
ret
.
code
===
200
)
{
if
(
ret
.
code
===
200
)
{
skeLoading
.
value
=
false
;
skeLoading
.
value
=
false
;
const
promiseList
=
[]
as
Promise
<
any
>
[]
const
promiseList
=
[]
as
Promise
<
any
>
[]
;
ret
.
data
.
uuid
.
map
((
uuid
)
=>
{
ret
.
data
.
uuid
.
map
((
uuid
)
=>
{
const
promise
=
queryLoanProductInfo
({
uuid
}).
then
((
ret
)
=>
{
const
promise
=
queryLoanProductInfo
({
uuid
}).
then
((
ret
)
=>
{
const
{
const
{
max_amount
,
inst_name
,
uuid
,
features
,
product_name
}
=
max_amount
,
ret
.
data
||
{};
inst_name
,
uuid
,
features
,
product_name
,
}
=
ret
.
data
;
count
.
value
=
count
.
value
+
1
;
count
.
value
=
count
.
value
+
1
;
return
{
return
{
max_amount
,
max_amount
,
...
@@ -234,15 +230,15 @@ const fetchList = () => {
...
@@ -234,15 +230,15 @@ const fetchList = () => {
features
,
features
,
inst_name
,
inst_name
,
uuid
,
uuid
,
}
};
});
promiseList
.
push
(
promise
);
});
Promise
.
all
(
promiseList
).
then
((
list
)
=>
{
list
.
forEach
((
i
)
=>
{
state
.
allProductList
.
push
(
i
);
});
});
promiseList
.
push
(
promise
)
});
});
Promise
.
all
(
promiseList
).
then
(
list
=>
{
list
.
forEach
(
i
=>
{
state
.
allProductList
.
push
(
i
)
})
})
}
}
});
});
count
.
value
=
0
;
count
.
value
=
0
;
...
@@ -273,4 +269,4 @@ onMounted(() => {
...
@@ -273,4 +269,4 @@ onMounted(() => {
</
script
>
</
script
>
<
style
lang=
"less"
scoped
>
<
style
lang=
"less"
scoped
>
@import "./index.less";
@import "./index.less";
</
style
>
</
style
>
\ No newline at end of file
src/views/withMenu/Mine/branch.vue
View file @
953e29f0
...
@@ -2,13 +2,25 @@
...
@@ -2,13 +2,25 @@
<div
class=
"pb-5 min-h-screen overflow-scroll mb-8"
>
<div
class=
"pb-5 min-h-screen overflow-scroll mb-8"
>
<nav-bar
<nav-bar
title=
"网点服务"
title=
"网点服务"
:style=
"
{ 'background-color': '#2C3C92 !important',
'color'
: 'white' }"
:style=
"
{ 'background-color': '#2C3C92 !important',
color
: 'white' }"
iconColor="#FFFFFF"
iconColor="#FFFFFF"
/>
/>
<!-- 当前网点 -->
<!-- 当前网点 -->
<div
class=
"px-4 bg-branch-deep-blue h-40 mb-28 bg-app-branch-deep-blue flow-root"
>
<div
<Skeleton
:row=
"3"
:loading=
"result.loading"
class=
"mt-5"
>
class=
"
<div
class=
"detail text-white text-sm pl-1 pt-8"
>
提前预约网点 可享优先办理
</div>
px-4
bg-branch-deep-blue
h-40
mb-28
bg-app-branch-deep-blue
flow-root
"
>
<div
class=
"mt-5"
v-if=
"result.loading"
></div>
<Skeleton
:row=
"3"
:loading=
"result.loading"
>
<div
class=
"detail text-white text-sm pl-1 pt-8"
>
提前预约网点 可享优先办理
</div>
<branch
<branch
:changeable=
"false"
:changeable=
"false"
:name=
"result.topItem.name"
:name=
"result.topItem.name"
...
@@ -23,9 +35,12 @@
...
@@ -23,9 +35,12 @@
class=
"mt-3 shadow-sm z-20 relative"
class=
"mt-3 shadow-sm z-20 relative"
/>
/>
</Skeleton>
</Skeleton>
<Skeleton
:row=
"3"
:loading=
"result.loading"
class=
"mt-12"
>
<div
class=
"mt-12"
v-if=
"result.loading"
></div>
<Skeleton
:row=
"3"
:loading=
"result.loading"
>
<div
class=
"overflow-scroll -mt-8 pb-5 z-10 relative"
>
<div
class=
"overflow-scroll -mt-8 pb-5 z-10 relative"
>
<p
class=
"mt-12 mb-3 text-base font-semibold text-gray-800"
>
附近的网点
</p>
<p
class=
"mt-12 mb-3 text-base font-semibold text-gray-800"
>
附近的网点
</p>
<branch
<branch
v-for=
"(item, index) in result.lists"
v-for=
"(item, index) in result.lists"
:key=
"index"
:key=
"index"
...
@@ -44,23 +59,27 @@
...
@@ -44,23 +59,27 @@
</div>
</div>
</Skeleton>
</Skeleton>
<!-- 附近网点 -->
<!-- 附近网点 -->
<Skeleton
:row=
"3"
:loading=
"result.loading"
class=
"mt-5 mb-10"
></Skeleton>
<div
class=
"mt-5"
v-if=
"result.loading"
></div>
<Skeleton
:row=
"3"
:loading=
"result.loading"
></Skeleton>
<Skeleton
:row=
"3"
:loading=
"result.loading"
class=
"mt-10"
></Skeleton>
<div
class=
"mb-10"
v-if=
"result.loading"
></div>
<Skeleton
:row=
"3"
:loading=
"result.loading"
class=
"mt-10"
></Skeleton>
<div
class=
"mt-10"
v-if=
"result.loading"
></div>
<Skeleton
:row=
"3"
:loading=
"result.loading"
></Skeleton>
<div
class=
"mt-10"
v-if=
"result.loading"
></div>
<Skeleton
:row=
"3"
:loading=
"result.loading"
></Skeleton>
</div>
</div>
</div>
</div>
</
template
>
</
template
>
<
script
lang=
"ts"
>
<
script
lang=
"ts"
>
import
{
defineComponent
,
reactive
}
from
'vue'
import
{
defineComponent
,
reactive
}
from
"vue"
;
import
NavBar
from
"@/components/NavBar/index.vue"
import
NavBar
from
"@/components/NavBar/index.vue"
;
import
Branch
from
'@/components/Mine/Branch/branch.vue'
import
Branch
from
"@/components/Mine/Branch/branch.vue"
;
import
AddressService
from
'@/service/AddressService/index'
import
AddressService
from
"@/service/AddressService/index"
;
import
{
iNearbyOutLet
}
from
"@/service/AddressService/types"
import
{
iNearbyOutLet
}
from
"@/service/AddressService/types"
;
import
{
Skeleton
}
from
'vant'
import
{
Skeleton
}
from
"vant"
;
const
addressService
=
new
AddressService
()
const
addressService
=
new
AddressService
()
;
export
default
defineComponent
({
export
default
defineComponent
({
components
:
{
NavBar
,
Branch
,
Skeleton
},
components
:
{
NavBar
,
Branch
,
Skeleton
},
...
@@ -69,26 +88,27 @@ export default defineComponent({
...
@@ -69,26 +88,27 @@ export default defineComponent({
topItem
:
{}
as
iNearbyOutLet
,
topItem
:
{}
as
iNearbyOutLet
,
lists
:
[]
as
iNearbyOutLet
[],
lists
:
[]
as
iNearbyOutLet
[],
loading
:
false
,
loading
:
false
,
})
})
;
const
getAddressList
=
()
=>
{
const
getAddressList
=
()
=>
{
result
.
loading
=
true
;
result
.
loading
=
true
;
addressService
.
getNearby
({
addressService
bank_code
:
Number
(
process
.
env
.
VUE_APP_BANK_CODE
),
.
getNearby
({
number
:
4
,
bank_code
:
Number
(
process
.
env
.
VUE_APP_BANK_CODE
),
}).
then
(
res
=>
{
number
:
4
,
result
.
loading
=
false
;
})
result
.
topItem
=
res
.
data
[
0
]
.
then
((
res
)
=>
{
result
.
lists
=
res
.
data
.
slice
(
1
)
result
.
loading
=
false
;
})
result
.
topItem
=
res
.
data
[
0
];
}
result
.
lists
=
res
.
data
.
slice
(
1
);
getAddressList
()
});
};
getAddressList
();
return
{
return
{
result
,
result
,
}
}
;
}
}
,
})
})
;
</
script
>
</
script
>
<
style
scoped
>
<
style
scoped
></
style
>
</
style
>
\ No newline at end of file
src/views/withMenu/Mine/index.vue
View file @
953e29f0
<
template
>
<
template
>
<div
class=
"min-h-screen"
style=
"background:
#F8F8FA
"
>
<div
class=
"min-h-screen"
style=
"background:
#f8f8fa
"
>
<!-- top -->
<!-- top -->
<div
class=
"top bg-center bg-no-repeat bg-cover"
>
<div
class=
"top bg-center bg-no-repeat bg-cover"
>
<div
class=
"w-full text-center text-white text-base pt-14"
>
我的
</div>
<div
class=
"w-full text-center text-white text-base pt-14"
>
我的
</div>
...
@@ -7,7 +7,9 @@
...
@@ -7,7 +7,9 @@
<div
class=
"mt-8 ml-5"
>
<div
class=
"mt-8 ml-5"
>
<img
:src=
"avatarUrl"
class=
"w-12 h-12 inline-block object-contain"
/>
<img
:src=
"avatarUrl"
class=
"w-12 h-12 inline-block object-contain"
/>
<div
class=
"text-white ml-3 inline-block"
>
<div
class=
"text-white ml-3 inline-block"
>
<span
v-if=
"isLogin"
>
{{
filter
.
filterPhone
(
userMsg
?.
userInfo
.
phone
)
}}
</span>
<span
v-if=
"isLogin"
>
{{
filter
.
filterPhone
(
userMsg
?.
userInfo
.
phone
)
}}
</span>
<span
v-else
>
未登录
</span>
<span
v-else
>
未登录
</span>
</div>
</div>
</div>
</div>
...
@@ -16,7 +18,12 @@
...
@@ -16,7 +18,12 @@
@
click=
"$router.push('setting')"
@
click=
"$router.push('setting')"
>
>
<span
class=
"text-sm leading-8 pr-2 pl-4 text-white"
>
个人中心
</span>
<span
class=
"text-sm leading-8 pr-2 pl-4 text-white"
>
个人中心
</span>
<icon
name=
"icon-gengduo"
color=
"#FFFFFF"
size=
"14"
class=
"my-auto pr-3"
/>
<IconVue
name=
"icon-gengduo"
color=
"#FFFFFF"
size=
"14"
class=
"my-auto pr-3"
/>
</div>
</div>
</div>
</div>
</div>
</div>
...
@@ -41,9 +48,10 @@
...
@@ -41,9 +48,10 @@
title=
"我的网点"
title=
"我的网点"
@
seeMore=
"$router.push('branch')"
@
seeMore=
"$router.push('branch')"
class=
"mt-5"
class=
"mt-5"
:iconName=
"
(isUser || !isLogin)
? 'icon-gengduo' : ''"
:iconName=
"
isUser || !isLogin
? 'icon-gengduo' : ''"
/>
/>
<Skeleton
:loading=
"state.loading"
:row=
"4"
class=
"mt-2"
>
<div
class=
"mt-2"
v-if=
"state.loading"
></div>
<Skeleton
:loading=
"state.loading"
:row=
"4"
>
<branch
<branch
class=
"mt-3 mx-5"
class=
"mt-3 mx-5"
v-if=
"state.branchinfo || !isUser"
v-if=
"state.branchinfo || !isUser"
...
@@ -62,49 +70,49 @@
...
@@ -62,49 +70,49 @@
</
template
>
</
template
>
<
script
lang=
"ts"
>
<
script
lang=
"ts"
>
import
{
computed
,
defineComponent
,
onMounted
,
reactive
,
ref
}
from
"vue"
import
{
computed
,
defineComponent
,
onMounted
,
reactive
,
ref
}
from
"vue"
;
import
Icon
from
"@/components/common/Icon.vue"
import
Icon
Vue
from
"@/components/common/Icon.vue"
;
import
Service
from
'@/components/Mine/Service/index.vue'
import
Service
from
"@/components/Mine/Service/index.vue"
;
import
Branch
from
'@/components/Mine/Branch/branch.vue'
import
Branch
from
"@/components/Mine/Branch/branch.vue"
;
import
GroupTitle
from
"@/components/GroupTitle/index.vue"
import
GroupTitle
from
"@/components/GroupTitle/index.vue"
;
import
{
getCurrentUserAvatarUrl
,
getUserMsg
}
from
"@/utils/userMsg"
import
{
getCurrentUserAvatarUrl
,
getUserMsg
}
from
"@/utils/userMsg"
;
import
filter
from
"@/filter"
import
filter
from
"@/filter"
;
import
AddressService
from
"@/service/AddressService"
import
AddressService
from
"@/service/AddressService"
;
import
{
iNearbyOutLet
}
from
"@/service/AddressService/types"
import
{
iNearbyOutLet
}
from
"@/service/AddressService/types"
;
import
{
Skeleton
}
from
"vant"
import
{
Skeleton
}
from
"vant"
;
import
{
eRole
}
from
"@/types/roleType"
import
{
eRole
}
from
"@/types/roleType"
;
export
default
defineComponent
({
export
default
defineComponent
({
name
:
"Mine"
,
name
:
"Mine"
,
components
:
{
components
:
{
Icon
,
Icon
Vue
,
Service
,
Service
,
Branch
,
Branch
,
GroupTitle
,
GroupTitle
,
Skeleton
Skeleton
,
},
},
props
:
{
props
:
{
iconName
:
{
iconName
:
{
type
:
String
,
type
:
String
,
default
:
''
default
:
""
,
},
},
},
},
setup
(
props
,
context
)
{
setup
(
props
,
context
)
{
const
avatarUrl
=
getCurrentUserAvatarUrl
()
const
avatarUrl
=
getCurrentUserAvatarUrl
()
;
const
state
=
reactive
({
const
state
=
reactive
({
branchinfo
:
{}
as
iNearbyOutLet
,
branchinfo
:
{}
as
iNearbyOutLet
,
loading
:
false
,
loading
:
false
,
})
})
;
const
userMsg
=
computed
(()
=>
{
const
userMsg
=
computed
(()
=>
{
return
getUserMsg
()
return
getUserMsg
()
;
})
})
;
const
isUser
=
computed
(()
=>
{
const
isUser
=
computed
(()
=>
{
console
.
log
(
'isuser'
,
userMsg
?.
value
?.
role
==
eRole
.
user
);
console
.
log
(
"isuser"
,
userMsg
?.
value
?.
role
==
eRole
.
user
);
return
userMsg
?.
value
?.
role
==
eRole
.
user
return
userMsg
?.
value
?.
role
==
eRole
.
user
;
})
})
;
let
branchinfo
=
reactive
({}
as
iNearbyOutLet
)
let
branchinfo
=
reactive
({}
as
iNearbyOutLet
)
;
onMounted
(
async
()
=>
{
onMounted
(
async
()
=>
{
state
.
loading
=
true
;
state
.
loading
=
true
;
...
@@ -113,38 +121,40 @@ export default defineComponent({
...
@@ -113,38 +121,40 @@ export default defineComponent({
const
ret
=
await
AddressService
.
getInstance
().
getNearby
({
const
ret
=
await
AddressService
.
getInstance
().
getNearby
({
bank_code
:
Number
(
process
.
env
.
VUE_APP_BANK_CODE
),
bank_code
:
Number
(
process
.
env
.
VUE_APP_BANK_CODE
),
number
:
1
,
number
:
1
,
})
})
;
if
(
ret
.
code
===
200
)
{
if
(
ret
.
code
===
200
)
{
state
.
branchinfo
=
ret
.
data
[
0
];
state
.
branchinfo
=
ret
.
data
[
0
];
}
}
}
else
{
}
else
{
const
ret
=
await
AddressService
.
getInstance
().
getStaffOutlet
()
const
ret
=
await
AddressService
.
getInstance
().
getStaffOutlet
()
;
if
(
ret
.
code
==
200
)
{
if
(
ret
.
code
==
200
)
{
const
ssid
=
ret
.
data
.
ss_id
const
ssid
=
ret
.
data
.
ss_id
;
AddressService
.
getInstance
().
getOutlets
({
AddressService
.
getInstance
()
id
:
ssid
,
.
getOutlets
({
level
:
4
id
:
ssid
,
}).
then
((
res
)
=>
{
level
:
4
,
if
(
res
.
code
==
200
)
{
})
state
.
branchinfo
=
res
.
data
.
then
((
res
)
=>
{
}
if
(
res
.
code
==
200
)
{
})
state
.
branchinfo
=
res
.
data
;
}
});
}
}
}
}
console
.
log
(
'info'
,
branchinfo
);
console
.
log
(
"info"
,
branchinfo
);
state
.
loading
=
false
;
state
.
loading
=
false
;
})
})
;
return
{
return
{
filter
,
filter
,
state
,
state
,
isUser
,
isUser
,
userMsg
,
userMsg
,
avatarUrl
avatarUrl
,
}
}
;
},
},
computed
:
{
computed
:
{
isLogin
()
{
isLogin
()
{
return
!!
getUserMsg
()
return
!!
getUserMsg
()
;
},
},
},
},
});
});
...
@@ -154,4 +164,4 @@ export default defineComponent({
...
@@ -154,4 +164,4 @@ export default defineComponent({
.top {
.top {
background-image: url(../../../assets/img/mine_bg.png);
background-image: url(../../../assets/img/mine_bg.png);
}
}
</
style
>
</
style
>
\ No newline at end of file
src/views/withMenu/Mine/setting.vue
View file @
953e29f0
...
@@ -2,12 +2,30 @@
...
@@ -2,12 +2,30 @@
<div>
<div>
<nav-bar
title=
"个人中心"
:style=
"
{ 'background-color': '#F7F7FA' }" />
<nav-bar
title=
"个人中心"
:style=
"
{ 'background-color': '#F7F7FA' }" />
<!-- 头像 -->
<!-- 头像 -->
<div
class=
"px-5 py-3 flex justify-between items-center border-b border-gray-200"
>
<div
class=
"
px-5
py-3
flex
justify-between
items-center
border-b border-gray-200
"
>
<span
class=
"text-sm font-semibold"
>
头像
</span>
<span
class=
"text-sm font-semibold"
>
头像
</span>
<img
:src=
"avatarUrl"
class=
"w-12 h-12 rounded-full object-contain"
/>
<img
:src=
"avatarUrl"
class=
"w-12 h-12 rounded-full object-contain"
/>
</div>
</div>
<!-- 手机号码 -->
<!-- 手机号码 -->
<div
class=
"px-5 py-5 flex justify-between items-center border-b border-gray-200"
>
<div
class=
"
px-5
py-5
flex
justify-between
items-center
border-b border-gray-200
"
>
<span
class=
"text-sm font-semibold"
>
手机号码
</span>
<span
class=
"text-sm font-semibold"
>
手机号码
</span>
<span
class=
"text-sm"
>
{{
getPhone
}}
</span>
<span
class=
"text-sm"
>
{{
getPhone
}}
</span>
</div>
</div>
...
@@ -18,9 +36,12 @@
...
@@ -18,9 +36,12 @@
<div
class=
"text-sm font-semibold"
>
设置密码
</div>
<div
class=
"text-sm font-semibold"
>
设置密码
</div>
<div
class=
"text-xs text-gray-400 pt-1"
>
保障账户登录安全
</div>
<div
class=
"text-xs text-gray-400 pt-1"
>
保障账户登录安全
</div>
</div>
</div>
<div
class=
"flex items-center text-xs h-1 text-right"
@
click=
"pushRouter"
>
<div
class=
"flex items-center text-xs h-1 text-right"
@
click=
"pushRouter"
>
<span>
设置
</span>
<span>
设置
</span>
<
icon
<
IconVue
name=
"icon-gengduo"
name=
"icon-gengduo"
color=
"#8E92A3"
color=
"#8E92A3"
size=
"12"
size=
"12"
...
@@ -30,62 +51,71 @@
...
@@ -30,62 +51,71 @@
</div>
</div>
</div>
</div>
</div>
</div>
<div
@
click=
"clickLogout"
class=
"logout-btn flex items-center justify-center fixed"
>
退出登录
</div>
<div
@
click=
"clickLogout"
class=
"logout-btn flex items-center justify-center fixed"
>
退出登录
</div>
</
template
>
</
template
>
<
script
lang=
"ts"
>
<
script
lang=
"ts"
>
import
{
defineComponent
}
from
'vue'
import
{
defineComponent
}
from
"vue"
;
import
NavBar
from
"@/components/NavBar/index.vue"
import
NavBar
from
"@/components/NavBar/index.vue"
;
import
Icon
from
"@/components/common/Icon.vue"
import
IconVue
from
"@/components/common/Icon.vue"
;
import
{
eAccountType
}
from
"@/views/Auth/Login/types"
import
{
eAccountType
}
from
"@/views/Auth/Login/types"
;
import
{
deleteUserMsg
,
getCurrentUserAvatarUrl
,
getUserMsg
}
from
'@/utils/userMsg'
import
{
import
filter
from
"@/filter"
deleteUserMsg
,
import
router
from
'@/router'
getCurrentUserAvatarUrl
,
import
{
userLogout
}
from
'@/service/UserManagementService'
getUserMsg
,
}
from
"@/utils/userMsg"
;
import
filter
from
"@/filter"
;
import
router
from
"@/router"
;
import
{
userLogout
}
from
"@/service/UserManagementService"
;
export
default
defineComponent
({
export
default
defineComponent
({
components
:
{
NavBar
,
Icon
},
components
:
{
NavBar
,
Icon
Vue
},
data
()
{
data
()
{
return
{
return
{
role
:
''
role
:
""
,
}
}
;
},
},
computed
:
{
computed
:
{
hasPassword
():
eAccountType
{
hasPassword
():
eAccountType
{
return
eAccountType
.
REG_NOPD
return
eAccountType
.
REG_NOPD
;
},
},
getPhone
()
{
getPhone
()
{
const
phone
=
getUserMsg
()?.
userInfo
.
phone
+
''
const
phone
=
getUserMsg
()?.
userInfo
.
phone
+
""
;
var
newphone
=
phone
.
replace
(
phone
.
substr
(
3
,
5
),
"*****"
)
var
newphone
=
phone
.
replace
(
phone
.
substr
(
3
,
5
),
"*****"
)
;
return
newphone
return
newphone
;
}
}
,
},
},
setup
()
{
setup
()
{
const
avatarUrl
=
getCurrentUserAvatarUrl
()
const
avatarUrl
=
getCurrentUserAvatarUrl
()
;
const
clickLogout
=
()
=>
{
const
clickLogout
=
()
=>
{
userLogout
();
userLogout
();
deleteUserMsg
();
deleteUserMsg
();
router
.
push
({
router
.
push
({
name
:
'Home'
name
:
"Home"
,
})
})
;
}
}
;
return
{
return
{
userMsg
:
getUserMsg
(),
userMsg
:
getUserMsg
(),
filter
,
filter
,
clickLogout
,
clickLogout
,
avatarUrl
avatarUrl
,
}
}
;
},
},
methods
:
{
methods
:
{
pushRouter
()
{
pushRouter
()
{
this
.
$router
.
push
({
this
.
$router
.
push
({
name
:
'PwdSetting'
,
name
:
"PwdSetting"
,
query
:
{
query
:
{
phone
:
this
.
userMsg
?.
userInfo
.
phone
phone
:
this
.
userMsg
?.
userInfo
.
phone
,
}
}
,
})
})
;
},
},
}
}
,
})
})
;
</
script
>
</
script
>
<
style
scoped
>
<
style
scoped
>
...
@@ -102,4 +132,4 @@ export default defineComponent({
...
@@ -102,4 +132,4 @@ export default defineComponent({
margin-left
:
40px
;
margin-left
:
40px
;
bottom
:
50px
;
bottom
:
50px
;
}
}
</
style
>
</
style
>
\ No newline at end of file
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