Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
member
Overview
Overview
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
member
member
Commits
a83b1217
Commit
a83b1217
authored
Aug 22, 2022
by
caoyanzhi
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/7月迭代-会员' into test
parents
37f974b6
0c82d27c
Hide whitespace changes
Inline
Side-by-side
Showing
9 changed files
with
122 additions
and
89 deletions
+122
-89
allCustomersList.less
src/components/allCustomers/allCustomersList.less
+4
-6
allCustomersList.vue
src/components/allCustomers/allCustomersList.vue
+2
-2
customerLog.vue
src/components/allCustomers/components/customerLog.vue
+36
-8
customerDetail.less
src/components/allCustomers/customerDetail.less
+9
-1
customerDetail.vue
src/components/allCustomers/customerDetail.vue
+31
-19
index.js
src/components/allCustomers/index.js
+2
-2
enterpriseIntegralDetial.vue
src/components/wechatmembers/enterpriseIntegralDetial.vue
+15
-19
enterpriseIntergralWithhold.vue
src/components/wechatmembers/enterpriseIntergralWithhold.vue
+16
-31
integralDataPage.vue
src/components/wechatmembers/integralDataPage.vue
+7
-1
No files found.
src/components/allCustomers/allCustomersList.less
View file @
a83b1217
...
...
@@ -51,7 +51,7 @@
padding: 20px;
background: #fff;
.contain-header {
//
margin-bottom: 20px;
margin-bottom: 20px;
.top-header {
display: flex;
align-items: center;
...
...
@@ -69,10 +69,9 @@
color: #606266;
}
}
.action-wrap {
display: flex;
justify-content: space-between;
align-items: center;
.el-form-item {
margin-bottom: 0;
}
.left {
font-size: 0;
}
...
...
@@ -90,7 +89,6 @@
.senior-search-content {
margin-top: 20px;
}
}
}
/deep/.el-table {
th > .cell:first-child,
...
...
src/components/allCustomers/allCustomersList.vue
View file @
a83b1217
...
...
@@ -24,7 +24,7 @@
<
el
-
form
inline
>
<
el
-
form
-
item
>
<
el
-
input
style
=
"width:
30
0px;"
style
=
"width:
26
0px;"
v
-
model
=
"pageParam.phoneNameCard"
prefix
-
icon
=
"el-icon-search"
placeholder
=
"输入姓名/昵称/手机号/会员卡号"
...
...
@@ -36,7 +36,7 @@
<
vue
-
gic
-
select
-
tree
:
options
=
"selectTreeOptions"
@
change
=
"onSelectTreeChange"
style
=
"display: inline-block;margin:0 10px; height: 32px"
/>
<
/el-form-item
>
<
el
-
form
-
item
style
=
"margin-right:10px;"
>
<
vue
-
gic
-
select
-
tree
:
options
=
"selectChannelList"
@
change
=
"onSelectChannelChange"
style
=
"display: inline-block;height: 32px"
/>
<
vue
-
gic
-
select
-
tree
:
options
=
"selectChannelList"
@
change
=
"onSelectChannelChange"
style
=
"display: inline-block;height: 32px
;
"
/>
<
/el-form-item
>
<
el
-
form
-
item
>
<
el
-
button
type
=
"text"
@
click
=
"showSearch = !showSearch"
class
=
"senior-search"
>
...
...
src/components/allCustomers/components/customerLog.vue
View file @
a83b1217
...
...
@@ -2,7 +2,7 @@
<div
style=
"padding:20px"
>
<div
class=
"logTop"
>
<el-cascader
style=
"width:260px;"
style=
"width:260px;
height:32px;margin-bottom:3px
"
placeholder=
"全部类型/全部事由"
:options=
"options"
filterable
...
...
@@ -13,7 +13,7 @@
<el-date-picker
style=
"width: 256px; margin-left:10px;"
v-model=
"dateDefault"
type=
"daterange"
range-separator=
"~"
start-placeholder=
"创建开始日期"
end-placeholder=
"创建结束日期"
:default-time=
"['00:00:00', '23:59:59']"
:picker-options=
"pickerOptions()"
value-format=
"yyyy-MM-dd"
@
change=
"handleSearch"
:clearable=
"false"
>
</el-date-picker>
<p
class=
"font14 tip-p"
v-if=
"!memberId"
>
展示近一年的日志
</p>
</div>
<el-table
:data=
"tableData"
style=
"width: 100%"
>
<el-table
:data=
"tableData"
style=
"width: 100%
; min-height: 210px;
"
>
<el-table-column
prop=
"createTime"
label=
"时间"
min-width=
"138px"
>
<template
slot-scope=
"scope"
>
{{
scope
.
row
.
createTime
|
formatDate
(
'ymd'
)
}}
<br
/>
{{
scope
.
row
.
createTime
|
formatDate
(
'hms'
)
}}
...
...
@@ -22,19 +22,24 @@
<el-table-column
prop=
"operType"
label=
"日志类型"
min-width=
"166px"
:formatter=
"(row, col, val) => val || '--'"
/>
<el-table-column
prop=
"operReason"
label=
"事由"
min-width=
"138px"
:formatter=
"(row, col, val) => val || '--'"
/>
<el-table-column
prop=
"operContent"
label=
"日志详情"
min-width=
"301px"
show-overflow-tooltip
:formatter=
"(row, col, val) => val || '--'"
/>
<el-table-column
prop=
"operRemark"
label=
"备注"
min-width=
"290px"
show-overflow-tooltip
>
<el-table-column
prop=
"operRemark"
label=
"备注"
min-width=
"290px"
>
<
template
slot-scope=
"{ row }"
>
<span
v-if=
"row.operRemark"
v-html=
"row.operRemark"
/>
<div
v-if=
"row.operRemark"
style=
"width: 100%"
ref=
"operRemark"
>
<el-tooltip
placement=
"top"
:disabled=
"row.hideTip"
>
<div
style=
"max-width: 400px"
slot=
"content"
v-html=
"row.operRemark"
></div>
<span
style=
"display:inline-block; max-width: 90%;overflow: hidden; text-overflow:ellipsis;white-space:nowrap;vertical-align:middle"
v-html=
"row.operRemark"
></span>
</el-tooltip>
<el-button
v-if=
"memberId && (row.operType == '客户合并' && row.referLogId && (row.referLogId != -1 && row.referLogId != ''))"
type=
"text"
@
click=
"goLink('/customerLog',row.referLogId)"
>
查看
</el-button>
</div>
<span
v-else
>
--
</span>
</
template
>
</el-table-column>
<el-table-column
prop=
""
label=
"操作"
min-width=
"77px"
v-if=
"memberId"
>
<
!-- <
el-table-column prop="" label="操作" min-width="77px" v-if="memberId">
<template slot-scope="{ row }">
<el-button v-if="row.operType == '客户合并' && row.referLogId && (row.referLogId != -1 && row.referLogId != '')" type="text" @click="goLink('/customerLog',row.referLogId)">查看</el-button>
<p v-else>--</p>
<!--
<el-button
@
click=
"goLink('/customerLog',row.referLogId)"
>
查看
</el-button>
-->
</template>
</el-table-column>
</el-table-column>
-->
</el-table>
<div
class=
"page mTop20"
v-if=
"totalCount > 0"
>
<dm-pagination
...
...
@@ -140,6 +145,20 @@ export default {
return
el
;
});
this
.
totalCount
=
res
.
data
.
result
.
page
.
totalCount
;
this
.
$nextTick
(()
=>
{
const
maxWidth
=
this
.
$refs
.
operRemark
.
clientWidth
;
const
div
=
document
.
createElement
(
'div'
);
div
.
style
.
position
=
'fixed'
;
div
.
style
.
zIndex
=
-
1
;
div
.
style
.
opacity
=
0
;
document
.
body
.
appendChild
(
div
);
this
.
tableData
=
this
.
tableData
.
map
(
el
=>
{
div
.
innerHTML
=
el
.
operRemark
;
el
.
hideTip
=
div
.
clientWidth
/
maxWidth
<
0.8
;
return
el
;
})
document
.
body
.
removeChild
(
div
);
})
}
else
{
checkFalse
(
res
.
data
.
message
);
return
false
;
...
...
@@ -192,13 +211,22 @@ export default {
},
};
</
script
>
<
style
>
/* .el-cascader-menu {
min-width: 130px !important;
width: 130px !important;
} */
.el-tooltip__popper
{
max-width
:
400px
;
}
</
style
>
<
style
lang=
"scss"
scoped
>
.logTop
{
margin-bottom
:
20px
;
display
:
flex
;
align-items
:
center
;
margin-right
:
10px
;
line-height
:
normal
;
//
line-height
:
normal
;
vertical-align
:
middle
;
}
.tip-p
{
...
...
src/components/allCustomers/customerDetail.less
View file @
a83b1217
...
...
@@ -263,6 +263,7 @@
}
}
&.is-clique {
width: 387px;
padding: 17px 13px 17px 18px;
border-radius: 8px;
border: 1px solid #E4E7ED;
...
...
@@ -291,6 +292,7 @@
justify-content: space-between;
align-items: center;
margin-bottom: 8px;
height: 48px;
cursor: pointer;
.score-icon {
color: #FFCB48;
...
...
@@ -319,7 +321,7 @@
vertical-align: middle;
}
.score-detail-value {
font-size:
20
px;
font-size:
16
px;
font-weight: bold;
color: #303133;
line-height: 19px;
...
...
@@ -999,4 +1001,9 @@
line-height: 1;
color: #909399;
}
}
.text-over{
text-overflow: ellipsis;
overflow: hidden;
white-space: wrap;
}
\ No newline at end of file
src/components/allCustomers/customerDetail.vue
View file @
a83b1217
...
...
@@ -373,50 +373,50 @@
<!-- 积分相关 -->
<div
:class=
"['scores',
{ 'is-clique': showClique }]">
<div
class=
"scores-box"
v-if=
"showClique"
@
click=
"goLinkWithClique('/enterpriseIntegralDataPage')"
>
<div
class=
"scores-info"
>
<icon-label-value
label=
"集团积分"
:value=
"memberInfo.totalPointEnterprise || 0"
>
<div
class=
"scores-info"
style=
"width: 368px;"
>
<icon-label-value
label=
"集团积分"
:value=
"memberInfo.totalPointEnterprise || 0"
style=
"width: 51%;"
>
<div
class=
"score-icon"
slot=
"icon"
>
<i
class=
"iconfont icon-jifenjiabei"
></i>
</div>
</icon-label-value>
<div
class=
"score-detail"
>
<p
class=
"score-detail-item"
>
<span
class=
"score-detail-label"
>
可用积分
</span>
<span
class=
"score-detail-value"
>
{{
memberInfo
.
cliqueMemberIntegral
?
memberInfo
.
cliqueMemberIntegral
:
0
}}
</span>
<div
class=
"score-detail"
style=
"margin-left: 0;width: 49%;"
>
<p
class=
"score-detail-item
flex
"
>
<span
class=
"score-detail-label
width-84
"
>
可用积分
</span>
<span
class=
"score-detail-value
text-over
"
>
{{
memberInfo
.
cliqueMemberIntegral
?
memberInfo
.
cliqueMemberIntegral
:
0
}}
</span>
</p>
<p
class=
"score-detail-item"
>
<span
class=
"score-detail-label"
>
<p
class=
"score-detail-item
flex
"
>
<span
class=
"score-detail-label
width-84
"
>
不可用积分
<el-tooltip
content=
"不可用原因:积分为冻结/预扣状态,详情可查看客户日志"
placement=
"top"
>
<i
class=
"iconfont icon-QuestionCircleOutlined"
style=
"font-size: 14px;color: #606266"
/>
</el-tooltip>
</span>
<span
class=
"score-detail-value"
>
{{
memberInfo
.
cliqueMemberInvalidIntegral
?
memberInfo
.
cliqueMemberInvalidIntegral
:
0
}}
</span>
<span
class=
"score-detail-value
text-over
"
>
{{
memberInfo
.
cliqueMemberInvalidIntegral
?
memberInfo
.
cliqueMemberInvalidIntegral
:
0
}}
</span>
</p>
</div>
</div>
<i
class=
"el-icon-arrow-right"
style=
"font-size: 16px;color: #909399"
></i>
</div>
<div
class=
"scores-box"
@
click=
"goLink('/integralDataPage')"
>
<div
class=
"scores-info"
>
<icon-label-value
label=
"积分"
:value=
"memberInfo.totalPoint || 0"
>
<div
class=
"scores-box"
@
click=
"goLink('/integralDataPage')"
>
<div
class=
"scores-info"
style=
"width: 368px;"
>
<icon-label-value
label=
"积分"
:value=
"memberInfo.totalPoint || 0"
style=
"width: 51%;"
>
<div
class=
"score-icon"
slot=
"icon"
>
<i
class=
"iconfont icon-jifenduihuan"
></i>
</div>
</icon-label-value>
<div
class=
"score-detail"
>
<p
class=
"score-detail-item"
>
<span
class=
"score-detail-label"
>
可用积分
</span>
<span
class=
"score-detail-value"
>
{{
memberInfo
.
accumulatPoints
?
memberInfo
.
accumulatPoints
:
0
}}
</span>
<div
class=
"score-detail"
style=
"margin-left: 0;width: 49%;"
>
<p
class=
"score-detail-item
flex
"
>
<span
class=
"score-detail-label
width-84
"
>
可用积分
</span>
<span
class=
"score-detail-value
text-over
"
>
{{
memberInfo
.
accumulatPoints
?
memberInfo
.
accumulatPoints
:
0
}}
</span>
</p>
<p
class=
"score-detail-item"
>
<span
class=
"score-detail-label"
>
<p
class=
"score-detail-item
flex
"
>
<span
class=
"score-detail-label
width-84
"
>
不可用积分
<el-tooltip
content=
"不可用原因:积分为冻结/预扣状态,详情可查看客户日志"
placement=
"top"
>
<i
class=
"iconfont icon-QuestionCircleOutlined"
style=
"font-size: 14px;color: #606266"
/>
</el-tooltip>
</span>
<span
class=
"score-detail-value"
>
{{
memberInfo
.
invalidIntegral
?
memberInfo
.
invalidIntegral
:
0
}}
</span>
<span
class=
"score-detail-value
text-over
"
>
{{
memberInfo
.
invalidIntegral
?
memberInfo
.
invalidIntegral
:
0
}}
</span>
</p>
</div>
</div>
...
...
@@ -902,4 +902,16 @@ export default { ...action };
.subTitle
.line
{
margin-right
:
8px
!important
;
}
.text-over
{
text-overflow
:
ellipsis
;
overflow
:
hidden
;
white-space
:
wrap
;
}
.width-84
{
min-width
:
100px
;
max-width
:
100px
}
.flex
{
display
:
flex
;
}
</
style
>
src/components/allCustomers/index.js
View file @
a83b1217
...
...
@@ -27,7 +27,7 @@ export default {
collapseTags
:
true
,
allCheckText
:
'全部关联渠道'
,
placeholder
:
'全部关联渠道'
,
width
:
2
6
0
width
:
2
0
0
},
treeOptions
:
{
data
:
[
...
...
@@ -124,7 +124,7 @@ export default {
collapseTags
:
false
,
allCheckText
:
'全部客户'
,
placeholder
:
'全部客户'
,
width
:
2
6
0
width
:
2
4
0
},
treeOptions
:
{
data
:
[
...
...
src/components/wechatmembers/enterpriseIntegralDetial.vue
View file @
a83b1217
...
...
@@ -63,7 +63,7 @@
:data=
"memberData"
tooltip-effect=
"dark"
ref=
"multipleTable"
max-height=
"659
"
:max-height=
"height
"
>
<el-table-column
prop=
"createTime"
...
...
@@ -100,29 +100,15 @@
prop=
"brandName"
label=
"来源品牌"
min-width=
"150px"
show-overflow-tooltip
>
<
template
slot-scope=
"scope"
>
<el-tooltip
placement=
"top"
>
<div
slot=
"content"
>
<p>
{{
scope
.
row
.
brandName
}}
</p>
</div>
<div
class=
"integral-box text-ellipsis-2 line-20"
>
{{
scope
.
row
.
brandName
}}
</div>
</el-tooltip>
</
template
>
</el-table-column>
<el-table-column
prop=
"remark"
label=
"备注"
min-width=
"160px"
show-overflow-tooltip
>
<
template
slot-scope=
"scope"
>
<el-tooltip
placement=
"top"
>
<div
slot=
"content"
>
<p>
{{
scope
.
row
.
remark
}}
</p>
</div>
<div
class=
"integral-box text-ellipsis-2 line-20"
>
{{
scope
.
row
.
remark
}}
</div>
</el-tooltip>
</
template
>
</el-table-column>
</el-table>
<div
...
...
@@ -172,6 +158,7 @@ export default {
},
data
()
{
return
{
height
:
document
.
body
.
clientHeight
-
262
,
page
:
{
currentPage
:
1
,
pageSize
:
20
,
...
...
@@ -234,7 +221,7 @@ export default {
doFetch
(
url
.
enterpriseIntegralDetailData
,
para
)
.
then
(
res
=>
{
if
(
res
.
data
.
errorCode
===
0
)
{
this
.
memberData
=
res
.
data
.
result
.
page
.
result
;
this
.
memberData
=
res
.
data
.
result
.
page
.
result
||
[]
;
this
.
page
.
currentPage
=
res
.
data
.
result
.
page
.
currentPage
;
this
.
page
.
totalCount
=
res
.
data
.
result
.
page
.
totalCount
;
}
else
{
...
...
@@ -279,7 +266,7 @@ export default {
};
</
script
>
<
style
lang=
"scss"
>
<
style
lang=
"scss"
scoped
>
.search-top
{
display
:
flex
;
justify-content
:
space-between
;
...
...
@@ -313,4 +300,13 @@ export default {
display
:
-webkit-box
;
-webkit-box-orient
:
vertical
;
}
.table-content
{
/deep/
.el-table
{
th
>
.
cell
:
first-child
,
td
>
.
cell
:
first-child
{
padding-left
:
10px
;
}
}
}
</
style
>
src/components/wechatmembers/enterpriseIntergralWithhold.vue
View file @
a83b1217
...
...
@@ -11,8 +11,8 @@
:picker-options=
"pickerOptions()"
value-format=
"yyyy-MM-dd"
@
change=
"handleSearch"
:clearable=
"false"
>
</el-date-picker>
</div>
</div>
<div>
<el-table
:data=
"memberData"
tooltip-effect=
"dark"
ref=
"multipleTable"
max-height=
"659
"
>
<div
class=
"table-content"
>
<el-table
:data=
"memberData"
tooltip-effect=
"dark"
ref=
"multipleTable"
:max-height=
"height
"
>
<el-table-column
prop=
"createTime"
label=
"时间"
min-width=
"130px"
>
<template
slot-scope=
"scope"
>
<div
class=
"line-20"
>
{{
scope
.
row
.
createTime
|
formatYMD
}}
</div>
...
...
@@ -45,35 +45,11 @@
<div
v-else
>
无截止时间
</div>
</
template
>
</el-table-column>
<el-table-column
prop=
"relationId"
label=
"关联id"
min-width=
"160px"
>
<
template
slot-scope=
"scope"
>
<el-tooltip
placement=
"top"
>
<div
slot=
"content"
>
<p>
{{
scope
.
row
.
relationId
}}
</p>
</div>
<div
class=
"integral-box text-ellipsis-2 line-20"
>
{{
scope
.
row
.
relationId
}}
</div>
</el-tooltip>
</
template
>
<el-table-column
prop=
"relationId"
label=
"关联id"
min-width=
"160px"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"openStoreName"
label=
"积分成本主体"
min-width=
"170px"
>
<
template
slot-scope=
"scope"
>
<el-tooltip
placement=
"top"
>
<div
slot=
"content"
>
<p>
{{
scope
.
row
.
openStoreName
}}
</p>
</div>
<div
class=
"integral-box text-ellipsis-2 line-20"
>
{{
scope
.
row
.
openStoreName
}}
</div>
</el-tooltip>
</
template
>
<el-table-column
prop=
"openStoreName"
label=
"积分成本主体"
min-width=
"170px"
show-overflow-tooltip
>
</el-table-column>
<el-table-column
prop=
"intervalEffect"
label=
"备注信息"
min-width=
"140px"
>
<
template
slot-scope=
"scope"
>
<el-tooltip
placement=
"top"
>
<div
slot=
"content"
>
<p>
{{
scope
.
row
.
intervalEffect
}}
</p>
</div>
<div
class=
"integral-box text-ellipsis-2 line-20"
>
{{
scope
.
row
.
intervalEffect
}}
</div>
</el-tooltip>
</
template
>
<el-table-column
prop=
"intervalEffect"
label=
"备注信息"
min-width=
"140px"
show-overflow-tooltip
>
</el-table-column>
</el-table>
<div
class=
"page mTop20"
>
...
...
@@ -114,6 +90,7 @@ export default {
},
data
()
{
return
{
height
:
document
.
body
.
clientHeight
-
262
,
memberData
:
[],
page
:
{
currentPage
:
1
,
...
...
@@ -158,7 +135,7 @@ export default {
.
then
(
res
=>
{
this
.
loading
=
false
;
if
(
res
.
data
.
errorCode
===
0
)
{
this
.
memberData
=
res
.
data
.
result
.
page
.
result
;
this
.
memberData
=
res
.
data
.
result
.
page
.
result
||
[]
;
this
.
page
.
currentPage
=
res
.
data
.
result
.
page
.
currentPage
;
this
.
page
.
totalCount
=
res
.
data
.
result
.
page
.
totalCount
;
}
else
{
...
...
@@ -173,7 +150,6 @@ export default {
},
mounted
()
{
this
.
setDefalutTime
()
console
.
log
(
this
.
memberId
,
1
);
if
(
this
.
memberId
){
this
.
getIntegralDataPage
()
}
...
...
@@ -183,6 +159,15 @@ export default {
};
</
script
>
<
style
lang=
"scss"
scoped
>
.table-content
{
/deep/
.el-table
{
th
>
.
cell
:
first-child
,
td
>
.
cell
:
first-child
{
padding-left
:
10px
;
}
}
}
.width160
{
width
:
160px
;
}
...
...
src/components/wechatmembers/integralDataPage.vue
View file @
a83b1217
...
...
@@ -54,7 +54,7 @@
<el-option
label=
"所有积分状态"
:value=
-1
></el-option>
<el-option
v-for=
"item in frozenStatusList"
:key=
"item.value"
:label=
"item.label"
:value=
"item.value"
></el-option>
</el-select>
<el-date-picker
style=
"width: 256px;"
v-model=
"dateDefault"
type=
"daterange"
range-separator=
"~"
start-placeholder=
"创建开始日期"
end-placeholder=
"创建结束日期"
:default-time=
"['00:00:00', '23:59:59']"
:picker-options=
"pickerOptions()"
value-format=
"yyyy-MM-dd"
@
change=
"handleSearch"
:clearable=
"false"
>
</el-date-picker>
<el-date-picker
style=
"width: 256px;
margin-bottom:1px;
"
v-model=
"dateDefault"
type=
"daterange"
range-separator=
"~"
start-placeholder=
"创建开始日期"
end-placeholder=
"创建结束日期"
:default-time=
"['00:00:00', '23:59:59']"
:picker-options=
"pickerOptions()"
value-format=
"yyyy-MM-dd"
@
change=
"handleSearch"
:clearable=
"false"
>
</el-date-picker>
</div>
<el-button
v-if=
"getCodeAuth('memberAdjustIntegral')"
...
...
@@ -501,5 +501,11 @@ export default {
overflow-y
:
auto
;
box-sizing
:
border-box
;
}
/
deep
/
.el-table
{
th
>
.
cell
:
first-child
,
td
>
.
cell
:
first-child
{
padding-left
:
10px
;
}
}
}
</
style
>
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