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
afa080ce
Commit
afa080ce
authored
Jul 28, 2022
by
曾经
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
异常会员
parent
943147c8
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
8 changed files
with
102 additions
and
102 deletions
+102
-102
api.js
src/components/axios/api.js
+1
-0
url.js
src/components/axios/url.js
+5
-4
abnormal-member.js
...nts/wechatmembers/abnormal-member-list/abnormal-member.js
+0
-0
abnormal-member.less
...s/wechatmembers/abnormal-member-list/abnormal-member.less
+1
-1
abnormal-member.vue
...ts/wechatmembers/abnormal-member-list/abnormal-member.vue
+76
-77
fieldsSettingDialog.vue
...mal-member-list/components/dialog/fieldsSettingDialog.vue
+11
-16
freeze.vue
...members/abnormal-member-list/components/dialog/freeze.vue
+1
-1
abnormal-setting.js
...onents/wechatmembers/abnormal-setting/abnormal-setting.js
+7
-3
No files found.
src/components/axios/api.js
View file @
afa080ce
...
...
@@ -8,6 +8,7 @@ export function doFetchqs(url,option) {
}
export
function
doFetchGet
(
url
,
option
)
{
option
=
option
||
{};
option
.
requestProject
=
'member'
;
return
fetchGet
(
url
,
option
);
}
src/components/axios/url.js
View file @
afa080ce
...
...
@@ -101,13 +101,14 @@ const urlConfig = {
batchUpdateFrozen
:
"/api-member/members-batch-update-frozen"
,
getExceptionList
:
'/api-member/list-exception-member'
,
getExceptionMemberList
:
'/api-member/exception-member-list'
,
getExceptionFieldsList
:
'/api-member/'
,
exceptionMemberExportExcel
:
'/api-member/exception-Member-export-excel'
,
// 异常会员数据导出
getExceptionMemberList
:
'/api-member/exception-member-list'
,
// 获取异常列表
exceptionMemberExportExcel
:
'/api-member/exception-member-export-excel'
,
// 异常会员数据导出
exceptionMemberBatchFrozen
:
'/api-member/exception-batch-frozen'
,
// 异常会员批量冻结
getAbnormalSetting
:
'/api-member/exception-config-view'
,
// 异常配置详情
saveAbnormalSetting
:
'/api-member/exception-config-save'
,
// 保存异常配置
getUnfreezeCount
:
'/api-member/'
,
// 获取当前选中的异常会员的未冻结数量
getUnfreezeCount
:
'/api-member/no_froze_member_count'
,
// 获取当前选中的异常会员的未冻结数量
getEnableDownload
:
'/api-auth/get-enable-download-data-config-by-user'
}
const
defaultUrl
=
Object
.
assign
({},
urlConfig
);
...
...
src/components/wechatmembers/abnormal-member-list/abnormal-member.js
View file @
afa080ce
This diff is collapsed.
Click to expand it.
src/components/wechatmembers/abnormal-member-list/abnormal-member.less
View file @
afa080ce
...
...
@@ -121,7 +121,7 @@
.data-abnormal-page{
position: relative;
text-align: center;
height:
100%
;
height:
calc(100% - 100px)
;
padding: 0 30px;
.icon{
margin: 116px auto 30px;
...
...
src/components/wechatmembers/abnormal-member-list/abnormal-member.vue
View file @
afa080ce
<
template
>
<div
class=
"frozen-list"
>
<div
class=
"forzen-container"
v-if=
"settingType == 1"
>
<div
class=
"forzen-container"
v-if=
"settingType == 1
|| settingType == 4
"
>
<div
class=
"search"
>
<div
class=
"top-header"
>
<h2>
异常会员
{{
total
}}
人
</h2>
...
...
@@ -25,41 +25,34 @@
<el-option
label=
"冻结"
:value=
"2"
></el-option>
</el-select>
</el-row>
<span
class=
"right-btn"
style=
"margin-left: 10px; min-width: 364px;text-align: right;"
>
<!--
<span
class=
"right-btn"
style=
"margin-left: 10px; min-width: 364px; text-align: right"
>
<!--
v-if="getCodeAuth('searchReasultDownload')"
:limit-code="getCode('searchReasultDownload')"
-->
<el-button
icon=
"el-icon-download"
@
click=
"download"
<el-button
icon=
"el-icon-download"
@
click=
"download"
>
搜索结果导出
</el-button
>
<!--
v-if="getCodeAuth('batchFreeze')"
:limit-code="getCode('batchFreeze')"
-->
<el-button
@
click=
"batchFreeze"
plain
>
批量冻结
</el-button
>
<el-button
@
click=
"batchFreeze"
plain
>
批量冻结
</el-button>
<!--
v-if="getCodeAuth('abnormalSetting')"
:limit-code="getCode('abnormalSetting')"
-->
<el-button
type=
"primary"
@
click=
"toSettingPage"
<el-button
type=
"primary"
@
click=
"toSettingPage"
>
异常规则配置
</el-button
>
</span>
</div>
</div>
<div
class=
"frozen-table"
>
<div
class=
"frozen-table"
v-if=
"settingType == 1"
>
<el-table
v-loading=
"load"
ref=
"multipleTable"
...
...
@@ -102,7 +95,7 @@
"
:fixed=
"colum.code === 'name'"
:sortable=
"colum.isSort ? 'custom' : false"
:sort-orders=
"['descending','ascending']"
:sort-orders=
"['descending',
'ascending']"
>
<
template
slot-scope=
"{ row }"
>
<!-- 基本信息 -->
...
...
@@ -117,9 +110,7 @@
<div>
<div>
<span
v-if=
"row.memberName"
>
{{
row
.
memberName
}}
</span>
<span
v-if=
"row.memberName"
>
{{
row
.
memberName
}}
</span>
<span
class=
"nick-name"
v-if=
"row.nickName"
>
(
{{
row
.
nickName
}}
)
</span
>
...
...
@@ -305,9 +296,6 @@
>
正常
</span
>
<span
class=
"dm-status--warning"
v-if=
"row.frozenStatus == 1"
>
异常
</span
>
<span
class=
"dm-status--warning"
v-if=
"row.frozenStatus == 2"
>
冻结
</span
>
</div>
...
...
@@ -327,29 +315,21 @@
<el-table-column
label=
"异常原因"
min-width=
"220"
>
<
template
slot-scope=
"{ row }"
>
<el-popover
placement=
"top-start"
width=
"200"
trigger=
"hover"
>
<el-row
type=
"flex"
>
<div
class=
"dm-status--info"
>
{{
row
.
reason
}}
</div>
<div>
连续两周 每周消费次数大于2次;
</div>
</el-row>
<el-row
type=
"flex"
>
<div
class=
"dm-status--info"
>
{{
row
.
reason
}}
</div>
<div>
单笔订单同一SPU不同SKU购买大于等于2件且满足此类情况的订单大于等于3笔
</div>
<el-popover
placement=
"top-start"
width=
"200"
trigger=
"hover"
:disabled=
"!row.exceptionReason"
>
<el-row
type=
"flex"
v-for=
"(item,index) in (row.exceptionReason||'').split(',')"
:key=
"index"
>
<div
class=
"dm-status--info"
></div>
<div>
{{
item
}}
</div>
</el-row>
<span
slot=
"reference"
>
异常原因异常原因异常原因异常原因异常原因异常原因异常原因
</span
>
{{
row
.
exceptionReason
||
'--'
}}
</span
>
</el-popover>
</
template
>
</el-table-column>
<el-table-column
label=
"判断异常时间"
min-width=
"150"
>
<
template
slot-scope=
"{ row }"
>
<div>
{{
row
.
bizData
|
formatDate
(
"ymd"
)
}}
</div>
<div>
{{
row
.
bizData
|
formatDate
(
"hms"
)
}}
</div>
<div>
{{
row
.
judgeTime
|
formatDate
(
"ymd"
)
}}
</div>
<div>
{{
row
.
judgeTime
|
formatDate
(
"hms"
)
}}
</div>
</
template
>
</el-table-column>
<el-table-column
...
...
@@ -360,7 +340,7 @@
>
<
template
slot=
"header"
>
<span>
操作
</span>
<i
class=
"el-icon-setting"
@
click=
"dialogFieldVisible = true"
/>
<i
class=
"el-icon-setting"
@
click=
"dialog
Member
FieldVisible = true"
/>
</
template
>
<
template
slot-scope=
"{ row }"
>
<el-button
...
...
@@ -375,7 +355,7 @@
tips=
"确定解冻?"
@
confirm=
"unfreezeItem(row)"
placement=
"top-start"
v-if=
"getCodeAuth('memberFrozen') && row.frozenStatus ==
2
"
v-if=
"getCodeAuth('memberFrozen') && row.frozenStatus ==
1
"
>
<el-button
type=
"text"
:limit-code=
"getCode('memberFrozen')"
>
解冻
</el-button
...
...
@@ -385,7 +365,7 @@
type=
"text"
@
click=
"freezeItem(row)"
:limit-code=
"getCode('memberFrozen')"
v-if=
"getCodeAuth('memberFrozen') && row.frozenStatus ==
1
"
v-if=
"getCodeAuth('memberFrozen') && row.frozenStatus ==
0
"
>
冻结
</el-button
>
</
template
>
...
...
@@ -404,6 +384,27 @@
</dm-pagination>
</div>
</div>
<!-- 已配置,已更新,但是数据异常 -->
<div
class=
"data-abnormal-page"
v-else-if=
"settingType == 4"
>
<div
class=
"icon iconfont-components3 icon-cp-warning-circle-fill"
></div>
<div
class=
"title"
>
根据您当前配置的异常会员条件,系统统计出您商户的“异常会员数量”占比超过总会员数量的3%,请确认您所配置的条件是否合理。
</div>
<div
class=
"subtitle"
>
(基于行业数据,常规的异常会员占比在大约在0.1%~2%之间)
</div>
<el-button
type=
"primary"
@
click=
"toSetting"
v-if=
"getCodeAuth('abnormalSetting')"
:limit-code=
"getCode('abnormalSetting')"
>
重新配置
</el-button
>
</div>
</div>
<!-- 未配置 -->
<div
class=
"no-setting-page"
v-else-if=
"settingType == 2"
>
...
...
@@ -433,49 +434,47 @@
</svg>
<div
class=
"label"
>
列表数据将在次日全量更新
</div>
<el-alert
class=
"no-update-alert"
<el-alert
class=
"no-update-alert"
title=
"异常会员规则配置已修改,如需解冻此前异常转冻结的会员,可前往冻结会员列表,筛选冻结方式,进行批量解冻"
type=
"info"
:closable=
"false"
show-icon
>
type=
"info"
:closable=
"false"
show-icon
>
</el-alert>
</div>
</div>
<!-- 已配置,已更新,但是数据异常 -->
<div
class=
"data-abnormal-page"
v-else-if=
"settingType == 4"
>
<div
class=
"icon iconfont-components3 icon-cp-warning-circle-fill"
></div>
<div
class=
"title"
>
根据您当前配置的异常会员条件,系统统计出您商户的“异常会员数量”占比超过总会员数量的3%,请确认您所配置的条件是否合理。
</div>
<div
class=
"subtitle"
>
(基于行业数据,常规的异常会员占比在大约在0.1%~2%之间)
</div>
<el-button
type=
"primary"
@
click=
"toSetting"
v-if=
"getCodeAuth('abnormalSetting')"
:limit-code=
"getCode('abnormalSetting')"
>
重新配置
</el-button
>
</div>
<table-colum-dialog
:dialogVisible
.
sync=
"dialogFieldVisible"
:memberFields=
"memberFields"
<member-fields-dialog
:max=
"8"
:dialogVisible
.
sync=
"dialogMemberFieldVisible"
:fields=
"memberFields"
@
submit=
"submitMemberFields"
/>
<vue-gic-export-excel
:dataArr=
"frozenList"
:dialogVisible
.
sync=
"exportData.dialogVisible"
:type=
"1"
:excelUrl=
"exportData.excelUrl"
:params=
"exportData.params"
:projectName=
"exportData.projectName"
/>
<freeze-dialog
:visible
.
sync=
'freezeDialogOptions.visible'
:count=
'freezeDialogOptions.count'
:isBatchFreeze=
'freezeDialogOptions.isBatchFreeze'
<export-fields-dialog
:max=
"20"
:dialogVisible
.
sync=
"dialogExportFieldVisible"
:fields=
"exportFields"
@
submit=
"submitExportFields"
/>
<vue-gic-export-excel
:dataArr=
"frozenList"
:dialogVisible
.
sync=
"exportData.dialogVisible"
:type=
"exportData.type"
:excelUrl=
"exportData.excelUrl"
:params=
"exportData.params"
:projectName=
"exportData.projectName"
/>
<freeze-dialog
:visible
.
sync=
"freezeDialogOptions.visible"
:count=
"freezeDialogOptions.count"
:isBatchFreeze=
"freezeDialogOptions.isBatchFreeze"
v-if=
"freezeDialogOptions.visible"
@
submit=
"sureFreeze"
/>
@
submit=
"sureFreeze"
/>
</div>
</template>
...
...
src/components/wechatmembers/abnormal-member-list/components/dialog/
tableColum
Dialog.vue
→
src/components/wechatmembers/abnormal-member-list/components/dialog/
fieldsSetting
Dialog.vue
View file @
afa080ce
...
...
@@ -8,22 +8,22 @@
width=
"600px"
>
<div
class=
"checkwtip mBottom10"
>
请选择您想显示的列表字段,最多勾选
8
个选项,已经勾选了
<span
请选择您想显示的列表字段,最多勾选
{{
max
}}
个选项,已经勾选了
<span
class=
"curcheck"
>
{{
checkedFieldsCopy
.
length
}}
</span>
个
</div>
<el-checkbox-group
v-model=
"checkedFieldsCopy"
class=
"table-colum-wrap"
:min=
"
0
"
:max=
"
8
"
:min=
"
min
"
:max=
"
max
"
>
<el-checkbox
v-for=
"(item, index) in
memberF
ields"
v-for=
"(item, index) in
f
ields"
class=
"table-colum-item"
:key=
"index"
:label=
"item"
:disabled=
"item.code==='name'"
:disabled=
"item.code==='name'
|| item.code==='memberName'
"
>
{{
item
.
name
}}
</el-checkbox>
...
...
@@ -37,15 +37,11 @@
</
template
>
<
script
>
export
default
{
name
:
'
TableColumDai
log'
,
name
:
'
ExportFieldsDia
log'
,
props
:
{
checkedFields
:
{
type
:
Array
,
default
:
()
=>
{
return
[];
},
},
memberFields
:
{
min
:
0
,
max
:
8
,
fields
:
{
type
:
Array
,
default
:
()
=>
{
return
[];
...
...
@@ -65,7 +61,7 @@ export default {
watch
:
{
dialogVisible
(
n
,
o
)
{
this
.
visible
=
n
;
if
(
!
(
this
.
memberFields
&&
this
.
memberF
ields
.
length
)){
if
(
!
(
this
.
fields
&&
this
.
f
ields
.
length
)){
this
.
$message
({
message
:
"设置异常"
,
type
:
"error"
...
...
@@ -73,7 +69,7 @@ export default {
return
this
.
visible
=
false
;
}
if
(
n
)
{
this
.
checkedFieldsCopy
=
this
.
memberF
ields
.
filter
((
item
)
=>
{
this
.
checkedFieldsCopy
=
this
.
f
ields
.
filter
((
item
)
=>
{
return
item
.
check
});
}
...
...
@@ -87,7 +83,6 @@ export default {
}).
join
(
','
));
},
cancel
()
{
this
.
checkedFieldsCopy
=
[].
concat
(
this
.
checkedFields
);
this
.
$emit
(
'update:dialogVisible'
,
false
);
},
},
...
...
src/components/wechatmembers/abnormal-member-list/components/dialog/freeze.vue
View file @
afa080ce
...
...
@@ -4,7 +4,7 @@
:visible
.
sync=
"visible"
width=
"600px"
@
close=
"onClose"
>
<div
v-if=
"isBatchFreeze"
class=
"freeze-tips"
>
<span>
当前已选择
</span>
<span
class=
"count"
>
20
</span>
<span
class=
"count"
>
{{
count
}}
</span>
<span>
位未冻结的会员
</span>
</div>
<el-form
:model=
"submitData"
ref=
"submitForm"
:rules=
"rules"
>
...
...
src/components/wechatmembers/abnormal-setting/abnormal-setting.js
View file @
afa080ce
import
{
doFetch
,
doFetchqs
}
from
"@/components/axios/api"
;
import
{
doFetch
,
doFetchGet
}
from
"@/components/axios/api"
;
import
url
from
"@/components/axios/url"
;
import
{
checkFalse
,
...
...
@@ -414,7 +414,8 @@ export default {
// ]
// });
doFetch
(
url
.
getAbnormalSetting
).
then
(
res
=>
{
doFetchGet
(
url
.
getAbnormalSetting
).
then
(
res
=>
{
console
.
log
(
"res--->"
,
res
);
let
{
errorCode
,
result
,
message
}
=
res
.
data
||
{};
if
(
errorCode
!=
0
)
{
checkFalse
(
message
);
...
...
@@ -437,6 +438,9 @@ export default {
let
configsItem
=
(
configs
||
[]).
find
(
item1
=>
{
return
item
.
configType
==
item1
.
configType
;
});
if
(
!
configsItem
){
return
;
}
switch
(
+
item
.
configType
)
{
case
1
:
item
.
list
.
forEach
(
item1
=>
{
...
...
@@ -513,7 +517,7 @@ export default {
this
.
formData
=
formData
;
},
submit
(){
doFetch
qs
(
url
.
saveAbnormalSetting
,
this
.
submitData
)
doFetch
(
url
.
saveAbnormalSetting
,
this
.
submitData
)
.
then
(
res
=>
{
let
{
errorCode
,
message
}
=
res
.
data
||
{};
if
(
errorCode
!=
0
)
{
...
...
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