Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
J
jiedao-app-operator-master
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Boards
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
lanbaoming
jiedao-app-operator-master
Commits
cc33a773
Commit
cc33a773
authored
Aug 09, 2024
by
chenwei
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
积分记录
parent
6e9469c3
Changes
10
Hide whitespace changes
Inline
Side-by-side
Showing
10 changed files
with
604 additions
and
74 deletions
+604
-74
memberManagement.js
src/api/ecw/memberManagement.js
+18
-0
index.vue
src/components/DictSelector/index.vue
+3
-0
en_US.json
src/i18n/languages/en_US.json
+24
-2
dict.js
src/utils/dict.js
+1
-0
index.vue
...cw/memberManagement/addIntegrationRuleOperation/index.vue
+457
-55
index.vue
...ws/ecw/memberManagement/exchangeRecordOperation/index.vue
+0
-1
index.vue
src/views/ecw/memberManagement/integralRecord/index.vue
+77
-9
index.vue
src/views/ecw/memberManagement/integrationRule/index.vue
+22
-4
index.vue
src/views/ecw/memberManagement/memberPointsSummary/index.vue
+1
-1
index.vue
src/views/report/customerreport/index.vue
+1
-2
No files found.
src/api/ecw/memberManagement.js
View file @
cc33a773
...
@@ -218,3 +218,21 @@ export function integralRuleDelete(data) {
...
@@ -218,3 +218,21 @@ export function integralRuleDelete(data) {
data
,
data
,
});
});
}
}
//获取积分规则详情
export
function
integralRuleDetails
(
data
)
{
return
request
({
url
:
"
/member/score-rule/get
"
,
method
:
"
post
"
,
data
,
});
}
//编辑积分规则
export
function
integralRuleUpdated
(
data
)
{
return
request
({
url
:
"
/member/score-rule/update
"
,
method
:
"
post
"
,
data
,
});
}
src/components/DictSelector/index.vue
View file @
cc33a773
...
@@ -128,14 +128,17 @@ export default {
...
@@ -128,14 +128,17 @@ export default {
methods
:
{
methods
:
{
format
(
val
)
{
format
(
val
)
{
if
(
val
===
null
||
val
==
undefined
||
val
==
""
)
return
val
;
if
(
val
===
null
||
val
==
undefined
||
val
==
""
)
return
val
;
let
formatter
=
let
formatter
=
typeof
this
.
formatter
==
"
function
"
typeof
this
.
formatter
==
"
function
"
?
this
.
formatter
?
this
.
formatter
:
FORMATTERS
[
this
.
formatter
];
:
FORMATTERS
[
this
.
formatter
];
if
(
!
formatter
)
{
if
(
!
formatter
)
{
console
.
warn
(
"
格式器无效
"
,
this
.
formatter
);
console
.
warn
(
"
格式器无效
"
,
this
.
formatter
);
return
val
;
return
val
;
}
}
return
formatter
(
val
);
return
formatter
(
val
);
},
},
changeValue
(
val
)
{
changeValue
(
val
)
{
...
...
src/i18n/languages/en_US.json
View file @
cc33a773
...
@@ -4638,5 +4638,27 @@
...
@@ -4638,5 +4638,27 @@
"请输入会员昵称"
:
"Please enter a member nickname"
,
"请输入会员昵称"
:
"Please enter a member nickname"
,
"请输入礼品ID"
:
"Please enter the gift ID"
,
"请输入礼品ID"
:
"Please enter the gift ID"
,
"新增兑换"
:
"New exchange"
,
"新增兑换"
:
"New exchange"
,
"兑换信息导入"
:
"Exchange Information Import"
"兑换信息导入"
:
"Exchange Information Import"
,
}
"订单ID"
:
"order ID"
,
"请选择是否分享"
:
"Please choose whether to share "
,
"是否分享"
:
"Whether to share "
,
"活动链接"
:
"Activity Link "
,
"英文活动内容"
:
"English Activities "
,
"中文活动内容"
:
"Chinese Content"
,
"请输入查找"
:
"Please enter to find "
,
"删除规则"
:
"Delete Rules "
,
"积分范围"
:
"Integral Range "
,
"兑换记录ID"
:
"Exchange Record ID"
,
"核销回退"
:
"Write-off rollback "
,
"请输入礼品积分"
:
"Please enter Gift points "
,
"请输入当前积分"
:
"Please enter current credits "
,
"请选择礼品"
:
"Please select a Gift "
,
"中文活动内容不能为空"
:
"Chinese activity content cannot be empty "
,
"英文活动内容不能为空"
:
"English activity content cannot be empty "
,
"开始积分应大于上一次最终积分"
:
"Starting points should be greater than the last final points "
,
"开始积分应小于本次最终积分"
:
"The starting score should be less than the final score "
,
"本次最终积分应大于本次开始积分"
:
"The final score should be greater than the initial score "
,
"本次最终积分应小于下一次开始积分"
:
"This final score should be less than the next starting score "
,
"确认兑换"
:
"Confirm conversion"
,
"操作积分"
:
"Operation integral"
}
\ No newline at end of file
src/utils/dict.js
View file @
cc33a773
...
@@ -253,6 +253,7 @@ export const DICT_TYPE = {
...
@@ -253,6 +253,7 @@ export const DICT_TYPE = {
SCORE_RULE_TYPE
:
"
score_rule_type
"
,
//积分规则指标类型
SCORE_RULE_TYPE
:
"
score_rule_type
"
,
//积分规则指标类型
YES_OR_NO
:
"
yes_or_no
"
,
YES_OR_NO
:
"
yes_or_no
"
,
CLIENT_PLATFORM
:
"
client_platform
"
,
CLIENT_PLATFORM
:
"
client_platform
"
,
MEMBER_SCORE_SOURCE
:
"
member_score_source
"
,
//会员积分来源
};
};
/**
/**
...
...
src/views/ecw/memberManagement/addIntegrationRuleOperation/index.vue
View file @
cc33a773
...
@@ -5,6 +5,7 @@
...
@@ -5,6 +5,7 @@
ref=
"queryForm"
ref=
"queryForm"
size=
"small"
size=
"small"
:rules=
"rules"
:rules=
"rules"
:disabled=
"showViewTime"
label-width=
"120px"
label-width=
"120px"
>
>
<el-form-item
:label=
"$t('指标类型')"
prop=
"type"
>
<el-form-item
:label=
"$t('指标类型')"
prop=
"type"
>
...
@@ -24,8 +25,17 @@
...
@@ -24,8 +25,17 @@
:placeholder=
"$t('请输入查找')"
:placeholder=
"$t('请输入查找')"
clearable
clearable
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item
/>
></el-col>
<el-button
size=
"mini"
type=
"text"
style=
"margin-left: 10px"
v-if=
"queryParams.type == '4' && !showViewTime"
@
click=
"handleSelectBannerDialog()"
>
{{
$t
(
"
选择
"
)
}}
</el-button
>
</el-form-item>
</el-col>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('英文标题')"
prop=
"titleEn"
>
<el-form-item
:label=
"$t('英文标题')"
prop=
"titleEn"
>
<el-input
<el-input
...
@@ -49,27 +59,67 @@
...
@@ -49,27 +59,67 @@
</el-form-item>
</el-form-item>
</el-col>
</el-col>
</el-row>
</el-row>
<!--分享活动内容 -->
<el-form-item
:label=
"$t('中文活动内容')"
prop=
"extraShare.activityDescZh"
v-if=
"queryParams.type == '4'"
>
<editor
:readOnly=
"showViewTime"
:class=
"
{ readOnlyEditor: showViewTime }"
v-model="queryParams.extraShare.activityDescZh"
:min-height="150"
/>
</el-form-item>
<el-form-item
:label=
"$t('英文活动内容')"
prop=
"extraShare.activityDescEn"
v-if=
"queryParams.type == '4'"
>
<editor
:class=
"
{ readOnlyEditor: showViewTime }"
:readOnly="showViewTime"
v-model="queryParams.extraShare.activityDescEn"
:min-height="150"
/>
</el-form-item>
<!-- 分享文案 -->
<!-- 链接 -->
<el-form-item
:label=
"$t('活动链接')"
v-if=
"queryParams.type == '4'"
>
<el-input
v-model=
"queryParams.extraShare.activityUrl"
:placeholder=
"$t('请输入活动链接')"
clearable
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<!-- 推荐分享文案 -->
<el-row
:gutter=
"10
"
>
<el-row
:gutter=
"10"
v-if=
"queryParams.type == '3'
"
>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('中文分享文案 ')"
prop=
"titleZh"
>
<el-form-item
:label=
"$t('中文分享文案 ')"
prop=
"extraRecommend.shareContentZh"
>
<el-input
<el-input
type=
"textarea"
type=
"textarea"
style=
"width: 300px"
style=
"width: 300px"
v-model.trim=
"queryParams.
title
Zh"
v-model.trim=
"queryParams.
extraRecommend.shareContent
Zh"
:placeholder=
"$t('请输入分享文案')"
:placeholder=
"$t('请输入分享文案')"
clearable
clearable
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item
/>
</el-form-item
></el-col>
></el-col>
<el-col
:span=
"12"
>
<el-col
:span=
"12"
>
<el-form-item
:label=
"$t('英文分享文案')"
prop=
"titleEn"
>
<el-form-item
:label=
"$t('英文分享文案')"
prop=
"extraRecommend.shareContentEn"
>
<el-input
<el-input
type=
"textarea"
type=
"textarea"
style=
"width: 300px"
style=
"width: 300px"
v-model.trim=
"queryParams.
title
En"
v-model.trim=
"queryParams.
extraRecommend.shareContent
En"
:placeholder=
"$t('请输入分享文案')"
:placeholder=
"$t('请输入分享文案')"
clearable
clearable
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
...
@@ -77,7 +127,6 @@
...
@@ -77,7 +127,6 @@
></el-col>
></el-col>
</el-row>
</el-row>
<el-form-item
v-if=
"queryParams.type == '1'"
:label=
"$t('首单')"
>
<el-form-item
v-if=
"queryParams.type == '1'"
:label=
"$t('首单')"
>
<el-radio-group
v-model=
"queryParams.extraOrderV.firstOrder"
>
<el-radio-group
v-model=
"queryParams.extraOrderV.firstOrder"
>
<el-radio
<el-radio
...
@@ -307,46 +356,207 @@
...
@@ -307,46 +356,207 @@
>
>
</dict-selector>
</dict-selector>
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('是否分享')"
prop=
"extraRecommend.shareStatus"
v-if=
"queryParams.type == '3'"
>
<el-radio-group
v-model=
"queryParams.extraRecommend.shareStatus"
>
<el-radio
v-for=
"dict in getDictDatas(DICT_TYPE.YES_OR_NO)"
:key=
"dict.value"
:label=
"dict.value"
>
{{
$l
(
dict
,
"
label
"
)
}}
</el-radio
>
</el-radio-group>
</el-form-item>
<el-form-item
:label=
"$t('是否分享')"
prop=
"extraShare.shareStatus"
v-if=
"queryParams.type == '4'"
>
<el-radio-group
v-model=
"queryParams.extraShare.shareStatus"
>
<el-radio
v-for=
"dict in getDictDatas(DICT_TYPE.YES_OR_NO)"
:key=
"dict.value"
:label=
"dict.value"
>
{{
$l
(
dict
,
"
label
"
)
}}
</el-radio
>
</el-radio-group>
</el-form-item>
<!-- 编辑相关内容 -->
<div
v-if=
"showViewTime"
>
<el-form-item
:label=
"$t('创建人')"
>
<el-input
v-model.number=
"queryParams.creator"
:placeholder=
"$t('请输入创建人')"
clearable
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('创建时间')"
>
<el-date-picker
type=
"date"
:placeholder=
"$t('选择创建时间')"
v-model=
"queryParams.createTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
placement=
"bottom-start"
></el-date-picker>
</el-form-item>
<el-form-item
:label=
"$t('最后更新人')"
>
<el-input
v-model.number=
"queryParams.updater"
:placeholder=
"$t('请输入最后更新人')"
clearable
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
</el-form-item>
<el-form-item
:label=
"$t('最后更新时间')"
>
<el-date-picker
type=
"date"
:placeholder=
"$t('选择最后更新时间')"
v-model=
"queryParams.updateTime"
value-format=
"yyyy-MM-dd HH:mm:ss"
placement=
"bottom-start"
></el-date-picker>
</el-form-item>
</div>
</el-form>
</el-form>
<el-row
justify=
"end"
:gutter=
"20"
type=
"flex"
>
<el-row
justify=
"end"
:gutter=
"20"
type=
"flex"
>
<el-col
:span=
"3"
>
<el-col
:span=
"3"
v-if=
"$route.query.pageStatus == 'new'"
>
<el-button
type=
"primary"
@
click=
"handleSaveIntegralRule"
>
{{
<el-button
$t
(
"
保存
"
)
type=
"primary"
}}
</el-button>
@
click=
"handleSaveIntegralRule"
style=
"width: 100%"
>
{{
$t
(
"
保存
"
)
}}
</el-button
>
</el-col>
</el-col>
<el-col
:span=
"3"
>
<el-col
:span=
"3"
v-if=
"$route.query.pageStatus == 'new'"
>
<el-button
type=
"primary"
@
click=
"handleEnableIntegralRule"
>
{{
<el-button
$t
(
"
保存并启用
"
)
type=
"primary"
}}
</el-button>
style=
"width: 100%"
@
click=
"handleEnableIntegralRule"
>
{{
$t
(
"
保存并启用
"
)
}}
</el-button
>
</el-col>
<el-col
:span=
"3"
v-if=
"$route.query.pageStatus == 'edit'"
>
<el-button
type=
"primary"
style=
"width: 100%"
@
click=
"handleUpdatedIntegralRule"
>
{{
$t
(
"
更新
"
)
}}
</el-button
>
</el-col>
</el-col>
<el-col
:span=
"3"
>
<el-col
:span=
"3"
>
<el-button
type=
"primary"
@
click=
"handleResetIntegralRule"
>
{{
<el-button
$t
(
"
重置
"
)
type=
"primary"
}}
</el-button>
style=
"width: 100%"
@
click=
"handleResetIntegralRule"
>
{{
$t
(
"
重置
"
)
}}
</el-button
>
</el-col>
</el-col>
<el-col
:span=
"3"
>
<el-col
:span=
"3"
>
<el-button
@
click=
"handleGoBack"
>
{{
$t
(
"
返回
"
)
}}
</el-button>
<el-button
style=
"width: 100%"
type=
"primary"
@
click=
"handleGoBack"
>
{{
$t
(
"
返回
"
)
}}
</el-button>
</el-col>
</el-col>
</el-row>
</el-row>
<!-- 选择广告弹窗 -->
<el-dialog
:title=
"$t('选择广告')"
:visible.sync=
"dialogVisible"
width=
"50%"
>
<el-table
v-loading=
"loading"
:data=
"list"
>
<el-table-column
label=
""
align=
"center"
prop=
"id"
/>
<el-table-column
:label=
"$t('标题')"
align=
"center"
prop=
"titleZh"
/>
<el-table-column
:label=
"$t('WEB端图片')"
align=
"center"
prop=
"bannerUrlWeb"
>
<template
slot-scope=
"scope"
>
<el-image
:src=
"scope.row.bannerUrlWeb"
></el-image>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('APP端图片')"
align=
"center"
prop=
"bannerUrlApp"
>
<
template
slot-scope=
"scope"
>
<el-image
:src=
"scope.row.bannerUrlApp"
></el-image>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('状态')"
align=
"center"
prop=
"status"
>
<
template
slot-scope=
"scope"
>
<span>
{{
statusName
(
scope
.
row
.
status
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('创建时间')"
align=
"center"
prop=
"createTime"
width=
"180"
>
<
template
slot-scope=
"scope"
>
<span>
{{
parseTime
(
scope
.
row
.
createTime
)
}}
</span>
</
template
>
</el-table-column>
<el-table-column
:label=
"$t('操作')"
align=
"center"
class-name=
"small-padding fixed-width"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"text"
@
click=
"handleSelectAdvertising(scope.row)"
>
{{
$t
(
"
选择
"
)
}}
</el-button
>
</
template
>
</el-table-column>
</el-table>
<!-- 分页组件 -->
<pagination
v-show=
"total > 0"
:total=
"total"
:page.sync=
"queryParams.pageNo"
:limit.sync=
"queryParams.pageSize"
@
pagination=
"getList"
/>
</el-dialog>
</div>
</div>
</template>
</template>
<
script
>
<
script
>
import
{
CommonStatusEnum
}
from
"
@/utils/constants
"
;
import
{
getBannerPage
}
from
"
@/api/ecw/banner
"
;
import
Editor
from
"
@/components/Editor
"
;
import
{
getDictDatas
,
DICT_TYPE
}
from
"
@/utils/dict
"
;
import
{
getDictDatas
,
DICT_TYPE
}
from
"
@/utils/dict
"
;
import
{
import
{
queryMemberScoreRecord
,
getRegionTreeList
,
getRegionTreeList
,
getChannelList
,
getChannelList
,
createIntegralRule
,
createIntegralRule
,
integralRuleDetails
,
integralRuleUpdated
,
}
from
"
@/api/ecw/memberManagement
"
;
}
from
"
@/api/ecw/memberManagement
"
;
import
{
deepClone
}
from
"
@/utils/index
"
;
import
{
deepClone
}
from
"
@/utils/index
"
;
import
ImageUpload
from
"
@/components/ImageUpload
"
;
import
ImageUpload
from
"
@/components/ImageUpload
"
;
import
{
parseTime
}
from
"
@/utils/ruoyi
"
;
import
{
isNumber
}
from
"
min-dash
"
;
import
{
mergeWith
}
from
"
lodash
"
;
export
default
{
export
default
{
name
:
"
addIntegrationRuleOperation
"
,
name
:
"
addIntegrationRuleOperation
"
,
components
:
{
components
:
{
ImageUpload
,
ImageUpload
,
Editor
,
},
},
data
()
{
data
()
{
var
validatePass2
=
(
rule
,
value
,
callback
)
=>
{
const
validatePass2
=
(
rule
,
value
,
callback
)
=>
{
const
index
=
Number
(
rule
.
field
.
split
(
"
.
"
)[
2
]);
const
index
=
Number
(
rule
.
field
.
split
(
"
.
"
)[
2
]);
if
(
index
==
"
0
"
)
{
if
(
index
==
"
0
"
)
{
...
@@ -378,7 +588,7 @@ export default {
...
@@ -378,7 +588,7 @@ export default {
callback
();
callback
();
}
}
};
};
var
validatehigh
=
(
rule
,
value
,
callback
)
=>
{
const
validatehigh
=
(
rule
,
value
,
callback
)
=>
{
const
index
=
Number
(
rule
.
field
.
split
(
"
.
"
)[
2
]);
const
index
=
Number
(
rule
.
field
.
split
(
"
.
"
)[
2
]);
if
(
index
==
"
0
"
)
{
if
(
index
==
"
0
"
)
{
if
(
if
(
...
@@ -417,10 +627,29 @@ export default {
...
@@ -417,10 +627,29 @@ export default {
}
}
};
};
return
{
return
{
//查看显示时间详情
showViewTime
:
false
,
CommonStatusEnum
:
CommonStatusEnum
,
statusDictDatas
:
getDictDatas
(
DICT_TYPE
.
COMMON_STATUS
),
loading
:
true
,
total
:
0
,
// 广告设置列表
list
:
[],
queryadvertisingParams
:
{
pageNo
:
1
,
pageSize
:
10
,
titleZh
:
null
,
titleEn
:
null
,
contentZh
:
null
,
contentEn
:
null
,
bannerUrlWeb
:
null
,
bannerUrlApp
:
null
,
status
:
null
,
},
cascaderState
:
true
,
cascaderState
:
true
,
channelList
:
[],
channelList
:
[],
regionTreeList
:
[],
regionTreeList
:
[],
dialogVisible
:
false
,
rules
:
{
rules
:
{
pushActivity
:
[
pushActivity
:
[
{
{
...
@@ -508,7 +737,29 @@ export default {
...
@@ -508,7 +737,29 @@ export default {
},
},
],
],
//推荐
//推荐
extraRecommend
:
{
shareContentEn
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请输入分享文案
"
),
trigger
:
"
blur
"
,
},
],
shareContentZh
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请输入分享文案
"
),
trigger
:
"
blur
"
,
},
],
shareStatus
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请选择是否分享
"
),
trigger
:
"
change
"
,
},
],
},
//v值
//v值
extraOrderV
:
{
extraOrderV
:
{
orderEntry
:
[
orderEntry
:
[
...
@@ -571,12 +822,38 @@ export default {
...
@@ -571,12 +822,38 @@ export default {
},
},
],
],
},
},
//分享
extraShare
:
{
activityDescEn
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
中文活动内容不能为空
"
),
trigger
:
"
blur
"
,
},
],
activityDescZh
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
英文活动内容不能为空
"
),
trigger
:
"
blur
"
,
},
],
shareStatus
:
[
{
required
:
true
,
message
:
this
.
$t
(
"
请选择是否分享
"
),
trigger
:
"
change
"
,
},
],
},
},
},
queryParams
:
{
queryParams
:
{
dateRangeCreateTime
:
[],
//活动有效期
dateRangeCreateTime
:
[],
//活动有效期
type
:
""
,
//指标类型
type
:
""
,
//指标类型
titleZh
:
""
,
titleZh
:
""
,
titleEn
:
""
,
titleEn
:
""
,
coverImageZh
:
""
,
coverImageEn
:
""
,
maxScoreTotal
:
""
,
maxScoreTotal
:
""
,
endTime
:
""
,
endTime
:
""
,
startTime
:
""
,
//活动开始时间
startTime
:
""
,
//活动开始时间
...
@@ -587,26 +864,47 @@ export default {
...
@@ -587,26 +864,47 @@ export default {
descEn
:
""
,
descEn
:
""
,
getScoreOnce
:
""
,
//除v值之外的积分规则
getScoreOnce
:
""
,
//除v值之外的积分规则
showPlatform
:
"
1,2,3
"
,
//展示平台
showPlatform
:
"
1,2,3
"
,
//展示平台
extraRecommend
:{
//推荐
extraRecommend
:
{
shareContentEn
:
""
,
//推荐
shareContentZh
:
""
,
shareContentEn
:
""
,
shareStatus
:
""
shareContentZh
:
""
,
},
shareStatus
:
"
0
"
,
//是否分享(0是,1否)默认是
},
extraRegister
:
{
extraRegister
:
{
// 注册扩展字段
// 注册扩展字段
registerPlatform
:
""
,
registerPlatform
:
null
,
},
},
extraOrderV
:
{
extraOrderV
:
{
//订单V值扩展字段
//订单V值扩展字段
firstOrder
:
"
1
"
,
firstOrder
:
"
1
"
,
orderEntry
:
null
,
transportType
:
""
,
//运输方式
transportType
:
""
,
//运输方式
receiveAddrList
:
[],
receiveAddrList
:
[],
orderVRule
:
[{
low
:
""
,
high
:
""
,
score
:
""
}],
orderVRule
:
[{
low
:
""
,
high
:
""
,
score
:
""
}],
},
},
extraShare
:
{
// 分享扩展字段
activityDescEn
:
null
,
activityDescZh
:
null
,
activityUrl
:
""
,
shareStatus
:
"
0
"
,
},
},
},
};
};
},
},
computed
:
{
computed
:
{
statusName
()
{
return
(
value
)
=>
{
for
(
let
index
in
this
.
statusDictDatas
)
{
let
dictItem
=
this
.
statusDictDatas
[
index
];
if
(
dictItem
.
value
==
value
)
{
return
dictItem
.
value
==
CommonStatusEnum
.
ENABLE
+
""
?
this
.
$t
(
"
正常
"
)
:
this
.
$t
(
"
禁用
"
);
}
}
};
},
isChinese
()
{
isChinese
()
{
return
this
.
$i18n
.
locale
===
"
zh_CN
"
;
return
this
.
$i18n
.
locale
===
"
zh_CN
"
;
},
},
...
@@ -643,9 +941,94 @@ export default {
...
@@ -643,9 +941,94 @@ export default {
created
()
{
created
()
{
this
.
handleGetChannelList
();
this
.
handleGetChannelList
();
this
.
handleGetRegionTreeList
();
this
.
handleGetRegionTreeList
();
this
.
getList
();
if
(
this
.
$route
.
query
.
pageStatus
==
"
edit
"
)
{
this
.
handleIntegralRuleDetails
();
}
if
(
this
.
$route
.
query
.
pageStatus
==
"
view
"
)
{
this
.
showViewTime
=
true
;
this
.
handleIntegralRuleDetails
();
}
},
},
activated
()
{},
activated
()
{},
methods
:
{
methods
:
{
//编辑更新积分规则
handleUpdatedIntegralRule
()
{
this
.
$refs
[
"
queryForm
"
].
validate
((
valid
)
=>
{
if
(
valid
)
{
let
params
=
deepClone
(
this
.
queryParams
);
params
.
showPlatform
=
this
.
queryParams
.
showPlatform
?.
join
();
params
.
extraOrderV
.
orderEntry
=
this
.
queryParams
.
extraOrderV
?.
orderEntry
?.
join
();
params
.
extraRegister
.
registerPlatform
=
this
.
queryParams
.
extraRegister
.
registerPlatform
?.
join
();
integralRuleUpdated
(
params
).
then
((
res
)
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
更新成功
"
));
this
.
$router
.
go
(
-
1
);
});
}
else
{
console
.
log
(
"
error submit!!
"
);
return
false
;
}
});
},
//获取积分规则详情
handleIntegralRuleDetails
()
{
integralRuleDetails
({
id
:
this
.
$route
.
query
.
id
}).
then
((
res
)
=>
{
const
params
=
mergeWith
(
deepClone
(
this
.
queryParams
),
res
.
data
,
(
a
,
b
)
=>
{
return
b
===
null
?
a
:
undefined
;
}
);
params
.
createTime
=
parseTime
(
res
.
data
.
createTime
);
params
.
updateTime
=
parseTime
(
res
.
data
.
updateTime
);
if
(
isNumber
(
res
.
data
.
extraOrderV
?.
firstOrder
))
{
params
.
extraOrderV
.
firstOrder
=
res
.
data
.
extraOrderV
?.
firstOrder
.
toString
();
}
if
(
isNumber
(
res
.
data
.
pushActivity
))
{
params
.
pushActivity
=
res
.
data
.
pushActivity
.
toString
();
}
if
(
isNumber
(
res
.
data
.
extraShare
?.
shareStatus
))
{
params
.
extraShare
.
shareStatus
.
toString
();
}
if
(
isNumber
(
res
.
data
.
extraRecommend
?.
shareStatus
))
{
params
.
extraRecommend
.
shareStatus
.
toString
();
}
params
.
dateRangeCreateTime
=
[
parseTime
(
res
.
data
.
startTime
),
parseTime
(
res
.
data
.
endTime
),
];
this
.
queryParams
=
{
...
params
};
});
},
handleSelectBannerDialog
()
{
this
.
dialogVisible
=
true
;
},
handleSelectAdvertising
(
row
)
{
this
.
dialogVisible
=
false
;
this
.
queryParams
.
titleZh
=
row
.
titleZh
;
this
.
queryParams
.
titleEn
=
row
.
titleEn
;
this
.
queryParams
.
coverImageZh
=
row
.
bannerUrlApp
;
this
.
queryParams
.
coverImageEn
=
row
.
bannerUrlApp
;
this
.
queryParams
.
extraShare
.
activityDescZh
=
row
.
contentEn
;
this
.
queryParams
.
extraShare
.
activityDescEn
=
row
.
contentZh
;
},
/** 查询列表 */
getList
()
{
this
.
loading
=
true
;
// 处理查询参数
let
params
=
{
...
this
.
queryadvertisingParams
};
getBannerPage
(
params
).
then
((
response
)
=>
{
this
.
list
=
response
.
data
.
list
;
this
.
total
=
response
.
data
.
total
;
this
.
loading
=
false
;
});
},
//重置按钮操作
//重置按钮操作
handleResetIntegralRule
()
{
handleResetIntegralRule
()
{
this
.
$modal
this
.
$modal
...
@@ -661,37 +1044,52 @@ export default {
...
@@ -661,37 +1044,52 @@ export default {
this
.
$modal
this
.
$modal
.
confirm
(
this
.
$t
(
"
是否确认返回
"
),
this
.
$t
(
"
提示
"
))
.
confirm
(
this
.
$t
(
"
是否确认返回
"
),
this
.
$t
(
"
提示
"
))
.
then
(()
=>
{
.
then
(()
=>
{
this
.
$router
.
go
(
-
1
);
// this.$router.go(-1);
this
.
$store
.
dispatch
(
"
tagsView/delCurrentView
"
);
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
成功
"
));
this
.
$modal
.
msgSuccess
(
this
.
$t
(
"
成功
"
));
})
})
.
catch
(()
=>
{});
.
catch
(()
=>
{});
},
},
//保存
//保存
handleSaveIntegralRule
()
{
handleSaveIntegralRule
()
{
let
params
=
deepClone
(
this
.
queryParams
);
this
.
$refs
[
"
queryForm
"
].
validate
((
valid
)
=>
{
params
.
showPlatform
=
this
.
queryParams
.
showPlatform
?.
join
();
if
(
valid
)
{
params
.
extraOrderV
.
orderEntry
=
let
params
=
deepClone
(
this
.
queryParams
);
this
.
queryParams
.
extraOrderV
.
orderEntry
?.
join
();
params
.
showPlatform
=
this
.
queryParams
.
showPlatform
?.
join
();
params
.
extraRegister
.
registerPlatform
=
params
.
extraOrderV
.
orderEntry
=
this
.
queryParams
.
extraRegister
.
registerPlatform
?.
join
();
this
.
queryParams
.
extraOrderV
?.
orderEntry
?.
join
();
params
.
status
=
this
.
queryParams
.
status
||
"
2
"
;
params
.
extraRegister
.
registerPlatform
=
createIntegralRule
(
params
).
then
((
res
)
=>
{
this
.
queryParams
.
extraRegister
.
registerPlatform
?.
join
();
this
.
$message
.
success
(
this
.
$t
(
"
成功
"
));
params
.
status
=
this
.
queryParams
.
status
||
"
2
"
;
this
.
$router
.
go
(
-
1
);
createIntegralRule
(
params
).
then
((
res
)
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
成功
"
));
this
.
$router
.
go
(
-
1
);
});
}
else
{
console
.
log
(
"
error submit!!
"
);
return
false
;
}
});
});
},
},
//保存并启用
//保存并启用
handleEnableIntegralRule
()
{
handleEnableIntegralRule
()
{
let
params
=
deepClone
(
this
.
queryParams
);
this
.
$refs
[
"
queryForm
"
].
validate
((
valid
)
=>
{
params
.
showPlatform
=
this
.
queryParams
.
showPlatform
?.
join
();
if
(
valid
)
{
params
.
extraOrderV
.
orderEntry
=
let
params
=
deepClone
(
this
.
queryParams
);
this
.
queryParams
.
extraOrderV
.
orderEntry
?.
join
();
params
.
showPlatform
=
this
.
queryParams
.
showPlatform
?.
join
();
params
.
extraRegister
.
registerPlatform
=
params
.
extraOrderV
.
orderEntry
=
this
.
queryParams
.
extraRegister
.
registerPlatform
?.
join
();
this
.
queryParams
.
extraOrderV
.
orderEntry
?.
join
();
params
.
status
=
this
.
queryParams
.
status
||
"
1
"
;
params
.
extraRegister
.
registerPlatform
=
createIntegralRule
(
params
).
then
((
res
)
=>
{
this
.
queryParams
.
extraRegister
.
registerPlatform
?.
join
();
this
.
$message
.
success
(
this
.
$t
(
"
成功
"
));
params
.
status
=
this
.
queryParams
.
status
||
"
1
"
;
this
.
$router
.
go
(
-
1
);
createIntegralRule
(
params
).
then
((
res
)
=>
{
this
.
$message
.
success
(
this
.
$t
(
"
成功
"
));
this
.
$router
.
go
(
-
1
);
});
}
else
{
console
.
log
(
"
error submit!!
"
);
return
false
;
}
});
});
},
},
handleOrderVRule
(
item
,
index
)
{
handleOrderVRule
(
item
,
index
)
{
...
@@ -740,4 +1138,8 @@ export default {
...
@@ -740,4 +1138,8 @@ export default {
color
:
red
;
color
:
red
;
padding-left
:
120px
;
padding-left
:
120px
;
}
}
.readOnlyEditor
{
background-color
:
#f5f7fa
;
cursor
:
not
-
allowed
;
}
</
style
>
</
style
>
src/views/ecw/memberManagement/exchangeRecordOperation/index.vue
View file @
cc33a773
...
@@ -273,7 +273,6 @@
...
@@ -273,7 +273,6 @@
<el-form-item
:label=
"$t('核销人')"
>
<el-form-item
:label=
"$t('核销人')"
>
<el-input
v-model=
"item.verifyUser"
></el-input>
<el-input
v-model=
"item.verifyUser"
></el-input>
</el-form-item>
</el-form-item>
--
{{
item
.
verifyTime
}}
--
<el-form-item
:label=
"$t('核销时间')"
>
<el-form-item
:label=
"$t('核销时间')"
>
<el-date-picker
<el-date-picker
type=
"date"
type=
"date"
...
...
src/views/ecw/memberManagement/integralRecord/index.vue
View file @
cc33a773
...
@@ -17,10 +17,10 @@
...
@@ -17,10 +17,10 @@
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
onkeyup=
"this.value=this.value.replace(/(^\s*)|(\s*$)/g,'')"
/>
/>
</el-form-item>
</el-form-item>
<el-form-item
:label=
"$t('积分
规则
')"
>
<el-form-item
:label=
"$t('积分
来源
')"
>
<dict-selector
<dict-selector
clearable
clearable
:type=
"DICT_TYPE.
SCORE_RULE_TYP
E"
:type=
"DICT_TYPE.
MEMBER_SCORE_SOURC
E"
v-model=
"queryParams.sourceType"
v-model=
"queryParams.sourceType"
@
change=
"handleQuery"
@
change=
"handleQuery"
>
>
...
@@ -98,11 +98,17 @@
...
@@ -98,11 +98,17 @@
align=
"center"
align=
"center"
prop=
"id"
prop=
"id"
></el-table-column>
></el-table-column>
<el-table-column
<el-table-column
:label=
"$t('会员名称')"
align=
"center"
>
:label=
"$t('会员名称')"
<template
v-slot=
"
{ row }">
align=
"center"
<el-button
:prop=
"isChinese ? 'memberNameZh' : 'memberNameEn'"
type=
"text"
></el-table-column>
@
click=
"
$router.push('/member/member/member-details/' + row.memberId)
"
>
{{
isChinese
?
row
.
memberNameZh
:
row
.
memberNameEn
}}
</el-button
>
</
template
>
</el-table-column>
<el-table-column
<el-table-column
width=
"140"
width=
"140"
...
@@ -162,7 +168,69 @@
...
@@ -162,7 +168,69 @@
>
>
</el-table-column>
</el-table-column>
<el-table-column
:label=
"$t('详细信息')"
align=
"center"
>
<el-table-column
:label=
"$t('详细信息')"
align=
"center"
>
<
template
v-slot=
"{ row }"
>
{{}}
</
template
>
<
template
v-slot=
"{ row }"
>
<!-- 人工操作-->
<span
v-if=
"row.sourceType == '1'"
>
{{
row
.
extParamJson
.
comment
||
"
-
"
}}
</span>
<!-- 兑换礼品2 兑换礼品撤销4 跳转兑换记录详情-->
<el-button
v-if=
"row.sourceType == '2' || row.sourceType == '4'"
type=
"text"
@
click=
"
$router.push(
{
path: '/memberManagement/exchangeRecordOperation',
query: {
pageStatus: 'view',
exchangeRewardID: row.extParamJson.redeemId,
},
})
"
>
{{
`${$t("兑换记录ID")
}
:${row.extParamJson.redeemId
}
`
}}
<
/el-butto
n
>
<!--
系统过期
sourceType
=
3
不展示
-->
<
span
v
-
if
=
"
row.sourceType == '3'
"
>
-<
/span
>
<!--
订单
V
值
:
sourceType
=
5
,
extParamJson
中取
orderId
跳转订单详情
-->
<
el
-
button
v
-
if
=
"
row.sourceType == '5'
"
type
=
"
text
"
@
click
=
"
$router.push({
path: '/order/detail',
query: {
orderId: row.extParamJson.orderId,
}
,
}
)
"
>
{{
`${$t("订单ID")
}
:${row.extParamJson.orderId
}
`
}}
<
/el-butto
n
>
<!--
注册
sourceType
=
6
,
extParamJson
中取
userId
,
userNameZh
,
userNameZh
,
phone
展示会员名
+
手机号(手机号脱敏处理)
推荐
:
sourceType
=
7
,
extParamJson
中取
userId
,
userNameZh
,
userNameZh
,
phone
展示会员名
+
手机号(手机号脱敏处理)
-->
<
span
v
-
if
=
"
row.sourceType == '6' || row.sourceType == '7'
"
>
{{
`${
isChinese
? row.extParamJson.userNameZh
: row.extParamJson.userNameEn
}
(${row.extParamJson.phone
}
)`
}}
<
/spa
n
>
<!--
sourceType
=
8
,
extParamJson
中取
scoreRuleId
跳转活动详情
-->
<
el
-
button
v
-
if
=
"
row.sourceType == '8'
"
type
=
"
text
"
@
click
=
"
$router.push({
path: '/memberManagement/addIntegrationRuleOperation',
query: {
id: row.extParamJson.scoreRuleId,
pageStatus: 'view',
}
,
}
)
"
>
{{
`${$t("活动ID")
}
:${row.extParamJson.scoreRuleId
}
`
}}
<
/el-butto
n
>
<
/template
>
<
/el-table-column
>
<
/el-table-column
>
<
/el-table
>
<
/el-table
>
<!--
//分页列表 -->
<!--
//分页列表 -->
...
@@ -215,7 +283,7 @@ export default {
...
@@ -215,7 +283,7 @@ export default {
methods
:
{
methods
:
{
//积分来源
//积分来源
handleSourceType
(
id
)
{
handleSourceType
(
id
)
{
return
this
.
getDictDatas
(
DICT_TYPE
.
SCORE_RULE_TYP
E
).
filter
(
return
this
.
getDictDatas
(
DICT_TYPE
.
MEMBER_SCORE_SOURC
E
).
filter
(
(
item
)
=>
item
.
value
==
id
(
item
)
=>
item
.
value
==
id
)[
0
];
)[
0
];
}
,
}
,
...
...
src/views/ecw/memberManagement/integrationRule/index.vue
View file @
cc33a773
...
@@ -198,9 +198,12 @@
...
@@ -198,9 +198,12 @@
</el-table-column>
</el-table-column>
<el-table-column
width=
"220px"
:label=
"$t('操作')"
align=
"center"
>
<el-table-column
width=
"220px"
:label=
"$t('操作')"
align=
"center"
>
<
template
slot-scope=
"scope"
>
<
template
slot-scope=
"scope"
>
<el-button
size=
"mini"
type=
"text"
@
click=
"handleUpdate(scope.row)"
>
{{
<el-button
$t
(
"
查看
"
)
size=
"mini"
}}
</el-button>
type=
"text"
@
click=
"handleViewDetails(scope.row)"
>
{{
$t
(
"
查看
"
)
}}
</el-button
>
<el-button
<el-button
size=
"mini"
size=
"mini"
type=
"text"
type=
"text"
...
@@ -232,7 +235,7 @@
...
@@ -232,7 +235,7 @@
size=
"mini"
size=
"mini"
type=
"text"
type=
"text"
:disabled=
"scope.row.status == '1'"
:disabled=
"scope.row.status == '1'"
@
click=
"handle
Dele
te(scope.row)"
@
click=
"handle
Upda
te(scope.row)"
>
{{
$t
(
"
编辑
"
)
}}
</el-button
>
{{
$t
(
"
编辑
"
)
}}
</el-button
>
>
<el-button
<el-button
...
@@ -329,6 +332,20 @@ export default {
...
@@ -329,6 +332,20 @@ export default {
this
.
handleQuery
();
this
.
handleQuery
();
},
},
methods
:
{
methods
:
{
//编辑操作按钮
handleUpdate
(
row
)
{
this
.
$router
.
push
({
path
:
"
/memberManagement/addIntegrationRuleOperation
"
,
query
:
{
id
:
row
.
id
,
pageStatus
:
"
edit
"
},
});
},
//查看按钮操作
handleViewDetails
(
row
)
{
this
.
$router
.
push
({
path
:
"
/memberManagement/addIntegrationRuleOperation
"
,
query
:
{
id
:
row
.
id
,
pageStatus
:
"
view
"
},
});
},
//延期按钮操作
//延期按钮操作
handleDelayButton
(
row
)
{
handleDelayButton
(
row
)
{
this
.
postponeIntegralID
=
row
.
id
;
this
.
postponeIntegralID
=
row
.
id
;
...
@@ -400,6 +417,7 @@ export default {
...
@@ -400,6 +417,7 @@ export default {
handleNewScoreRule
()
{
handleNewScoreRule
()
{
this
.
$router
.
push
({
this
.
$router
.
push
({
path
:
"
/memberManagement/addIntegrationRuleOperation
"
,
path
:
"
/memberManagement/addIntegrationRuleOperation
"
,
query
:
{
pageStatus
:
"
new
"
},
});
});
},
},
//积分来源
//积分来源
...
...
src/views/ecw/memberManagement/memberPointsSummary/index.vue
View file @
cc33a773
...
@@ -285,7 +285,7 @@ export default {
...
@@ -285,7 +285,7 @@ export default {
.
then
((
_
)
=>
{
.
then
((
_
)
=>
{
let
params
=
{
...
this
.
formQuery
};
let
params
=
{
...
this
.
formQuery
};
operateMemberScore
(
params
).
then
((
res
)
=>
{
operateMemberScore
(
params
).
then
((
res
)
=>
{
this
.
dialogVisible
=
tru
e
;
this
.
dialogVisible
=
fals
e
;
this
.
formQuery
=
{
this
.
formQuery
=
{
comment
:
""
,
comment
:
""
,
memberIds
:
[],
memberIds
:
[],
...
...
src/views/report/customerreport/index.vue
View file @
cc33a773
...
@@ -92,7 +92,7 @@
...
@@ -92,7 +92,7 @@
/>
-->
/>
-->
</div>
</div>
</
template
>
</
template
>
<
script
>
<
script
>
import
UserSelector
from
"
@/components/UserSelector
"
;
import
UserSelector
from
"
@/components/UserSelector
"
;
import
Treeselect
from
"
@riophae/vue-treeselect
"
;
import
Treeselect
from
"
@riophae/vue-treeselect
"
;
...
@@ -389,4 +389,3 @@ export default {
...
@@ -389,4 +389,3 @@ export default {
},
},
};
};
</
script
>
</
script
>
\ 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