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
b87501d9
Commit
b87501d9
authored
Aug 03, 2022
by
shaojiawen
Browse files
Options
Browse Files
Download
Plain Diff
update:merge
parents
e6fa3e6a
5ad3fd69
Hide whitespace changes
Inline
Side-by-side
Showing
13 changed files
with
425 additions
and
84 deletions
+425
-84
allCustomersList.vue
src/components/allCustomers/allCustomersList.vue
+2
-8
babyinfoDialog.vue
src/components/allCustomers/components/babyinfoDialog.vue
+19
-1
baseinfoDialog.vue
src/components/allCustomers/components/baseinfoDialog.vue
+19
-1
customerLog.vue
src/components/allCustomers/components/customerLog.vue
+207
-0
customerlabelDialog.vue
...omponents/allCustomers/components/customerlabelDialog.vue
+3
-3
customerDetail.vue
src/components/allCustomers/customerDetail.vue
+18
-9
info.js
src/components/allCustomers/info.js
+50
-48
url.js
src/components/axios/url.js
+3
-1
cardMixin.js
src/components/wechatmembers/cardMixin.js
+39
-0
cardvoucher.vue
src/components/wechatmembers/cardvoucher.vue
+44
-7
integralDataPage.vue
src/components/wechatmembers/integralDataPage.vue
+11
-4
integralMixin.js
src/components/wechatmembers/integralMixin.js
+3
-2
index.js
src/router/index.js
+7
-0
No files found.
src/components/allCustomers/allCustomersList.vue
View file @
b87501d9
...
...
@@ -133,21 +133,15 @@
<
img
class
=
"channel-icon"
v
-
if
=
"channel.parentSourceCode == 1700"
src
=
"../../../static/img/channel-icon/qiyeweixin-1.png"
alt
=
""
>
<
img
class
=
"channel-icon"
v
-
if
=
"channel.parentSourceCode == 1303"
src
=
"../../../static/img/channel-icon/weimen-1.png"
alt
=
""
>
<
img
class
=
"channel-icon"
v
-
if
=
"channel.parentSourceCode == 1302"
src
=
"../../../static/img/channel-icon/tianmao-1.png"
alt
=
""
>
<!--
<
img
class
=
"channel-icon"
v
-
if
=
"channel.parentSourceCode == 1304"
src
=
"../../../static/img/channel-icon/douyin-1.png"
alt
=
""
>
-->
<
/template
>
<
template
v
-
if
=
"channel.activeFlag == 1"
>
<
img
class
=
"channel-icon"
v
-
if
=
"channel.parentSourceCode == 1304"
src
=
"../../../static/img/channel-icon/douyin-1.png"
alt
=
""
>
<
/template
>
<
template
v
-
if
=
"channel.activeFlag != 1"
>
<
img
class
=
"channel-icon"
v
-
if
=
"channel.parentSourceCode == 1304"
src
=
"../../../static/img/channel-icon/douyin-2.png"
alt
=
""
>
<
/template
>
<
/template
>
<
template
v
-
if
=
"channel.highlight == 2"
>
<
img
class
=
"channel-icon"
v
-
if
=
"channel.parentSourceCode == 1100"
src
=
"../../../static/img/channel-icon/weixin-2.png"
alt
=
""
>
<
img
class
=
"channel-icon"
v
-
if
=
"channel.parentSourceCode == 1600"
src
=
"../../../static/img/channel-icon/xiaochengxu-2.png"
alt
=
""
>
<
img
class
=
"channel-icon"
v
-
if
=
"channel.parentSourceCode == 1700"
src
=
"../../../static/img/channel-icon/qiyeweixin-2.png"
alt
=
""
>
<
img
class
=
"channel-icon"
v
-
if
=
"channel.parentSourceCode == 1303"
src
=
"../../../static/img/channel-icon/weimen-2.png"
alt
=
""
>
<
img
class
=
"channel-icon"
v
-
if
=
"channel.parentSourceCode == 1302"
src
=
"../../../static/img/channel-icon/tianmao-2.png"
alt
=
""
>
<
!--
<
img
class
=
"channel-icon"
v
-
if
=
"channel.parentSourceCode == 1304"
src
=
"../../../static/img/channel-icon/douyin-2.png"
alt
=
""
>
--
>
<
img
class
=
"channel-icon"
v
-
if
=
"channel.parentSourceCode == 1304"
src
=
"../../../static/img/channel-icon/douyin-2.png"
alt
=
""
>
<
/template
>
<
/span
>
<
/template
>
...
...
src/components/allCustomers/components/babyinfoDialog.vue
View file @
b87501d9
...
...
@@ -7,6 +7,7 @@
:close-on-click-modal=
"false"
@
close=
"cancel"
width=
"480px"
:picker-options=
"pickerOptions()"
>
<el-tabs
v-model=
"activeName"
>
<el-tab-pane
...
...
@@ -81,7 +82,24 @@ export default {
visible
:
false
,
fieldsList
:
[],
activeName
:
'0'
,
loading
:
false
loading
:
false
,
pickerOptions
()
{
// let pickerMinDate;
return
{
onPick
(
obj
)
{
// pickerMinDate = obj.minDate;
},
disabledDate
(
time
)
{
let
start
=
new
Date
();
start
.
setFullYear
(
start
.
getFullYear
()
-
100
);
start
.
setDate
(
start
.
getDate
()
+
1
);
start
=
new
Date
(
`
${
start
.
getFullYear
()}
-
${
start
.
getMonth
()
+
1
}
-
${
start
.
getDate
()}
`
);
let
end
=
new
Date
();
end
=
new
Date
(
`
${
end
.
getFullYear
()}
-
${
end
.
getMonth
()
+
1
}
-
${
end
.
getDate
()}
23:59:59`
);
return
time
.
getTime
()
<
start
.
getTime
()
||
time
.
getTime
()
>
end
;
}
};
}
};
},
watch
:
{
...
...
src/components/allCustomers/components/baseinfoDialog.vue
View file @
b87501d9
<
template
>
<div>
<el-dialog
title=
"编辑基本信息"
title=
"编辑基本信息
333
"
custom-class=
"customer-dialog"
:visible
.
sync=
"visible"
:close-on-click-modal=
"false"
...
...
@@ -46,6 +46,7 @@
v-model=
"form.memberBirthday"
type=
"date"
placeholder=
"选择日期"
:picker-options=
"pickerOptions()"
/>
</el-form-item>
<el-form-item
label=
"手机号码:"
>
...
...
@@ -168,6 +169,23 @@ export default {
remark
:
[{
required
:
true
,
message
:
'请输入原因备注'
,
trigger
:
'blur'
}],
},
btnLoading
:
false
,
pickerOptions
()
{
// let pickerMinDate;
return
{
onPick
(
obj
)
{
// pickerMinDate = obj.minDate;
},
disabledDate
(
time
)
{
let
start
=
new
Date
();
start
.
setFullYear
(
start
.
getFullYear
()
-
100
);
start
.
setDate
(
start
.
getDate
()
+
1
);
start
=
new
Date
(
`
${
start
.
getFullYear
()}
-
${
start
.
getMonth
()
+
1
}
-
${
start
.
getDate
()}
`
);
let
end
=
new
Date
();
end
=
new
Date
(
`
${
end
.
getFullYear
()}
-
${
end
.
getMonth
()
+
1
}
-
${
end
.
getDate
()}
23:59:59`
);
return
time
.
getTime
()
<
start
.
getTime
()
||
time
.
getTime
()
>
end
;
}
};
}
};
},
computed
:
{
...
...
src/components/allCustomers/components/customerLog.vue
0 → 100644
View file @
b87501d9
<
template
>
<div
style=
"padding:20px"
>
<div
class=
"logTop"
>
<el-cascader
style=
"width:260px;"
placeholder=
"全部类型/全部事由"
:options=
"options"
filterable
clearable
:props=
"
{ checkStrictly: true }"
@change="filterMethod">
<template
slot-scope=
"
{data}">
<span>
{{
data
.
operTypeName
||
data
.
openReasonName
}}
</span>
</
template
>
</el-cascader>
<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"
>
</el-date-picker>
<p
class=
"font14 tip-p"
v-if=
"!memberId"
>
展示近一年的日志
</p>
</div>
<el-table
:data=
"tableData"
style=
"width: 100%"
>
<el-table-column
prop=
"createTime"
label=
"时间"
>
<
template
slot-scope=
"scope"
>
{{
scope
.
row
.
createTime
|
formatTime
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"operType"
label=
"日志类型"
/>
<el-table-column
prop=
"operReason"
label=
"事由"
/>
<el-table-column
prop=
"operContent"
label=
"日志详情"
show-overflow-tooltip
/>
<el-table-column
prop=
"operRemark"
label=
"备注"
show-overflow-tooltip
>
<
template
slot-scope=
"{ row }"
>
<span
v-html=
"row.operRemark"
/>
</
template
>
</el-table-column>
<el-table-column
prop=
""
label=
"操作"
width=
"120"
v-if=
"memberId"
>
<
template
slot-scope=
"{ }"
>
<el-button
type=
"text"
@
click=
"goLink('/customerLog')"
>
查看
</el-button>
</
template
>
</el-table-column>
</el-table>
<div
class=
"page mTop20"
v-if=
"totalCount > 0"
>
<dm-pagination
v-if=
"!memberId"
background
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
:current-page=
"logPageParam.currentPage"
:page-sizes=
"[20, 40, 60, 80]"
:page-size=
"logPageParam.pageSize"
layout=
"total, sizes, prev, pager, next"
:total=
"totalCount"
/>
<dm-pagination
v-else
background
@
size-change=
"handleSizeChange"
@
current-change=
"handleCurrentChange"
:current-page=
"logPageParam.currentPage"
:page-size=
"logPageParam.pageSize"
layout=
"prev, pager, next"
:total=
"totalCount"
/>
</div>
</div>
</template>
<
script
>
import
mixin
from
'../../wechatmembers/cardMixin'
;
import
url
from
'../../axios/url'
;
import
{
doFetch
,
doFetchGet
}
from
'../../axios/api'
;
export
default
{
name
:
'customerLog'
,
mixins
:
[
mixin
],
props
:
{
memberId
:
{
type
:
String
,
default
:
''
}
},
data
()
{
return
{
tableLoading
:
false
,
tableData
:
[],
logPageParam
:
{
pageSize
:
20
,
currentPage
:
1
,
operReason
:
null
,
operType
:
null
,
beginTime
:
''
,
endTime
:
''
},
totalCount
:
0
,
options
:
[
// {
// value: 'zhinan',
// label: '指南',
// children: [{
// value: 'shejiyuanze',
// label: '设计原则',
// children: [{
// value: 'yizhi',
// label: '一致'
// }, {
// value: 'fankui',
// label: '反馈'
// }, {
// value: 'xiaolv',
// label: '效率'
// }, {
// value: 'kekong',
// label: '可控'
// }]
// }, {
// value: 'daohang',
// label: '导航',
// children: [{
// value: 'cexiangdaohang',
// label: '侧向导航'
// }, {
// value: 'dingbudaohang',
// label: '顶部导航'
// }]
// }]
// }
]
};
},
created
()
{
this
.
setDefalutTime
()
this
.
getLogPage
();
this
.
getLogTypeData
();
},
methods
:
{
// 级联搜索
filterMethod
(
e
)
{
console
.
log
(
e
);
},
// 客户日志类型列表
getLogTypeData
()
{
doFetchGet
(
url
.
getMemberLogType
,{}).
then
(
res
=>
{
if
(
res
.
data
.
errorCode
==
0
)
{
this
.
options
=
res
.
data
.
result
||
[];
console
.
log
(
this
.
options
,
'999'
);
}
})
},
// 客户日志列表
getLogPage
()
{
this
.
tableLoading
=
true
;
this
.
logPageParam
.
beginTime
=
this
.
dateDefault
[
0
];
this
.
logPageParam
.
endTime
=
this
.
dateDefault
[
1
];
doFetch
(
url
.
logPage
,
{
...
this
.
logPageParam
,
memberId
:
this
.
memberId
||
this
.
$route
.
query
.
memberId
,
})
.
then
(
res
=>
{
this
.
tableLoading
=
false
;
if
(
res
.
data
.
errorCode
===
0
)
{
this
.
tableData
=
res
.
data
.
result
.
page
.
result
||
[];
this
.
tableData
=
this
.
tableData
.
map
(
el
=>
{
if
(
typeof
el
.
operRemark
==
'string'
)
{
el
.
operRemark
=
el
.
operRemark
.
replace
(
/
\n
/g
,
' <br />'
);
}
return
el
;
});
this
.
totalCount
=
res
.
data
.
result
.
page
.
totalCount
;
}
else
{
checkFalse
(
res
.
data
.
message
);
return
false
;
}
})
.
catch
(
err
=>
{
this
.
tableLoading
=
false
;
checkStatus
(
err
);
})
.
finally
(
_
=>
this
.
count
++
);
},
handleSizeChange
(
v
)
{
this
.
logPageParam
.
pageSize
=
v
;
this
.
logPageParam
.
currentPage
=
1
;
this
.
getLogPage
();
},
handleCurrentChange
(
v
)
{
this
.
logPageParam
.
currentPage
=
v
;
this
.
getLogPage
();
},
handleSearch
()
{
this
.
logPageParam
.
currentPage
=
1
;
this
.
getLogPage
();
},
goLink
(
v
)
{
console
.
log
(
this
.
memberId
,
'this.memberId'
);
if
(
v
)
this
.
$router
.
push
({
path
:
v
,
query
:
{
memberId
:
this
.
memberId
}
});
},
}
};
</
script
>
<
style
lang=
"scss"
scoped
>
.logTop
{
margin-bottom
:
20px
;
display
:
flex
!important
;
align-items
:
center
!important
;
margin-right
:
10px
;
}
.tip-p
{
margin-left
:
20px
;
color
:
#6B6D71
;
//
padding-bottom
:
16px
;
}
</
style
>
\ No newline at end of file
src/components/allCustomers/components/customerlabelDialog.vue
View file @
b87501d9
...
...
@@ -171,7 +171,7 @@ export default {
this
.
otherTagsList
=
this
.
formatTagsList
(
otherTagsList
);
this
.
weimobTagsList
=
this
.
formatTagsList
(
weimobTagsList
);
this
.
weimobTagFlag
=
weimobTagFlag
;
console
.
log
(
this
.
tagsList
);
//
console.log(this.tagsList);
}
else
{
checkFalse
(
res
.
data
.
message
);
}
...
...
@@ -211,7 +211,7 @@ export default {
},
// 切换选中
changeCheck
(
item
,
isMultiple
=
true
)
{
console
.
log
(
item
,
'item'
);
//
console.log(item, 'item');
let
count
=
0
;
this
.
$nextTick
(
_
=>
{
// 站位
...
...
@@ -259,7 +259,7 @@ export default {
if
(
ele
.
checkBox
)
tagIds
.
push
(
ele
.
checkBox
);
}
});
console
.
log
(
tagIds
);
//
console.log(tagIds);
let
curtagIds
=
''
;
if
(
tagIds
.
length
>
0
)
{
curtagIds
=
tagIds
.
join
(
','
);
...
...
src/components/allCustomers/customerDetail.vue
View file @
b87501d9
...
...
@@ -60,7 +60,7 @@
<!--
{{
member
.
memberSources
}}
-->
<el-popover
popper-class=
"channel-info-popover"
v-if=
"channel.highlight == 1"
trigger=
"hover"
placement=
"top"
>
<div
class=
"channel-info"
>
<div
class=
"channel-title"
>
{{
channel
.
sourceName
}}
<
span
v-if=
"channel.parentSourceCode == 1304 && channel.activeFlag !=1"
>
(未激活)
</span><
/div>
<div
class=
"channel-title"
>
{{
channel
.
sourceName
}}
</div>
<div
class=
"channel-info-item"
v-if=
"!channel.event || channel.event != '-'"
>
<span
class=
"channel-info-label"
>
来 源:
</span>
<span
class=
"channel-info-value"
>
{{
channel
.
event
||
'--'
}}
</span>
...
...
@@ -76,11 +76,7 @@
<img
class=
"channel-icon"
v-if=
"channel.parentSourceCode == 1700"
src=
"../../../static/img/channel-icon/qiyeweixin-1.png"
alt=
""
>
<img
class=
"channel-icon"
v-if=
"channel.parentSourceCode == 1303"
src=
"../../../static/img/channel-icon/weimen-1.png"
alt=
""
>
<img
class=
"channel-icon"
v-if=
"channel.parentSourceCode == 1302"
src=
"../../../static/img/channel-icon/tianmao-1.png"
alt=
""
>
<!--
<img
class=
"channel-icon"
v-if=
"channel.parentSourceCode == 1304"
src=
"../../../static/img/channel-icon/douyin-1.png"
alt=
""
>
-->
<span
v-if=
"channel.parentSourceCode == 1304"
>
<img
class=
"channel-icon"
v-if=
"channel.activeFlag == 1"
src=
"../../../static/img/channel-icon/douyin-1.png"
alt=
""
>
<img
class=
"channel-icon"
v-else
src=
"../../../static/img/channel-icon/douyin-2.png"
alt=
""
>
</span>
<img
class=
"channel-icon"
v-if=
"channel.parentSourceCode == 1304"
src=
"../../../static/img/channel-icon/douyin-1.png"
alt=
""
>
</
template
>
</el-popover>
<
template
v-if=
"channel.highlight == 2"
>
...
...
@@ -729,7 +725,8 @@
<!-- 标签备注end -->
<!-- 客户日志 -->
<
template
v-if=
"section.name==='log'"
>
<!-- <customer-log style="padding:0" v-if="section.name==='log'" :memberId="memberId"></customer-log> -->
<!-- <template v-if="section.name==='log'">
<el-table :data="tableData" v-loading="tableLoading" style="width: 100%">
<el-table-column prop="createTime" label="时间">
<template slot-scope="scope">
...
...
@@ -737,8 +734,8 @@
</template>
</el-table-column>
<el-table-column prop="operType" label="日志类型" />
<el-table-column
prop=
"operContent"
label=
"日志详情"
/>
<el-table-column prop="operReason" label="事由" />
<el-table-column prop="operContent" label="日志详情" />
<el-table-column prop="operRemark" label="备注">
<template slot-scope="{ row }">
<span v-html="row.operRemark" />
...
...
@@ -757,10 +754,16 @@
:total="totalCount"
/>
</div>
</template>
</template>
-->
<!-- 客户日志end -->
</div>
</div>
<dm-sub-title
text=
"客户日志"
type=
"fill"
style=
"margin-bottom: 20px;font-size:14px;"
>
客户日志
<span
style=
"margin-left: 10px; color: #909399;font-size:12px"
>
(展示近一年的日志)
</span>
</dm-sub-title>
<customer-log
style=
"padding:0"
:memberId=
"memberId"
></customer-log>
</div>
<!-- 基本信息修改弹窗 -->
<baseinfo-dialog
...
...
@@ -887,4 +890,10 @@ export default { ...action };
height
:
22px
!important
;
top
:
9px
;
}
.subTitle
.text
{
font-size
:
14px
!important
;
}
.subTitle
.line
{
margin-right
:
8px
!important
;
}
</
style
>
src/components/allCustomers/info.js
View file @
b87501d9
...
...
@@ -10,6 +10,7 @@ import { mapState } from 'vuex';
import
url
from
'../../components/axios/url'
;
import
{
doFetch
,
doFetchqs
,
doFetchGet
}
from
'../../components/axios/api'
;
import
authMethods
from
'@/mixins/auth'
;
import
CustomerLog
from
'./components/customerLog.vue'
;
import
{
checkFalse
,
checkStatus
,
...
...
@@ -65,16 +66,16 @@ export default {
sourceTagList
:
[]
}
},
tableData
:
[],
logPageParam
:
{
pageSize
:
20
,
currentPage
:
1
,
},
totalCount
:
0
,
//
tableData: [],
//
logPageParam: {
//
pageSize: 20,
//
currentPage: 1,
//
},
//
totalCount: 0,
defaultImg
,
labelTabsActive
:
'memberTagGroup'
,
fullscreenLoading
:
false
,
// 全局loading
tableLoading
:
false
,
// 用户日志列表loading
//
tableLoading: false, // 用户日志列表loading
imgLoading
:
false
,
// 刷新头像loading
popoverVisible
:
false
,
// 修改等级popover
toggleTag
:
false
,
// 拓展信息展开按钮
...
...
@@ -173,14 +174,14 @@ export default {
{
title
:
'营销活动标签'
,
key
:
'marketingTagList'
},
],
},
{
title
:
'客户日志'
,
name
:
'log'
,
class
:
'log-info-contain'
},
//
{ title: '客户日志', name: 'log', class: 'log-info-contain' },
],
marketingRecordNum
:
0
};
},
watch
:
{
count
:
function
(
n
,
o
)
{
if
(
n
===
4
){
if
(
n
===
3
){
this
.
fullscreenLoading
=
false
;
if
(
!
this
.
memberInfo
.
erpIntegralFlag
)
this
.
$message
.
error
(
'查询ERP积分失败,当前积分为上次同步积分,实际积分以ERP为准'
);
}
...
...
@@ -240,7 +241,7 @@ export default {
this
.
count
=
0
;
this
.
fullscreenLoading
=
true
;
this
.
getAllDetail
();
this
.
getLogPage
();
//
this.getLogPage();
},
isOverflow
(
text
)
{
const
dom
=
document
.
createElement
(
'span'
);
...
...
@@ -250,7 +251,7 @@ export default {
dom
.
innerText
=
text
;
document
.
body
.
appendChild
(
dom
);
const
result
=
dom
.
offsetWidth
>=
72
;
console
.
log
(
dom
.
offsetWidth
)
//
console.log(dom.offsetWidth)
document
.
body
.
removeChild
(
dom
);
return
result
;
},
...
...
@@ -333,32 +334,32 @@ export default {
.
finally
(
_
=>
this
.
count
++
);
});
},
getLogPage
()
{
this
.
tableLoading
=
true
;
doFetch
(
url
.
logPage
,
{
...
this
.
logPageParam
,
memberId
:
this
.
memberId
,
})
.
then
(
res
=>
{
this
.
tableLoading
=
false
;
if
(
res
.
data
.
errorCode
===
0
)
{
this
.
tableData
=
res
.
data
.
result
.
page
.
result
||
[];
this
.
tableData
=
this
.
tableData
.
map
(
el
=>
{
if
(
typeof
el
.
operRemark
==
'string'
)
{
el
.
operRemark
=
el
.
operRemark
.
replace
(
/
\n
/g
,
' <br />'
);
}
return
el
;
});
this
.
totalCount
=
res
.
data
.
result
.
page
.
totalCount
;
}
else
{
checkFalse
(
res
.
data
.
message
);
return
false
;
}
})
.
catch
(
err
=>
{
this
.
tableLoading
=
false
;
checkStatus
(
err
);
})
.
finally
(
_
=>
this
.
count
++
);
},
//
getLogPage () {
//
this.tableLoading = true;
//
doFetch(url.logPage, {
//
...this.logPageParam,
//
memberId: this.memberId,
//
})
//
.then(res => {
//
this.tableLoading = false;
//
if (res.data.errorCode === 0) {
//
this.tableData = res.data.result.page.result || [];
//
this.tableData = this.tableData.map(el => {
//
if (typeof el.operRemark == 'string') { el.operRemark = el.operRemark.replace(/\n/g, ' <br />'); }
//
return el;
//
});
//
this.totalCount = res.data.result.page.totalCount;
//
} else {
//
checkFalse(res.data.message);
//
return false;
//
}
//
})
//
.catch(err => {
//
this.tableLoading = false;
//
checkStatus(err);
//
})
//
.finally(_ => this.count++);
//
},
updateImgUrl
()
{
this
.
imgLoading
=
true
;
doFetch
(
url
.
updateImgUrl
,
{
...
...
@@ -398,15 +399,15 @@ export default {
});
}
},
handleSizeChange
(
v
)
{
this
.
logPageParam
.
pageSize
=
v
;
this
.
logPageParam
.
currentPage
=
1
;
this
.
getLogPage
();
},
handleCurrentChange
(
v
)
{
this
.
logPageParam
.
currentPage
=
v
;
this
.
getLogPage
();
},
//
handleSizeChange (v) {
//
this.logPageParam.pageSize = v;
//
this.logPageParam.currentPage = 1;
//
this.getLogPage();
//
},
//
handleCurrentChange (v) {
//
this.logPageParam.currentPage = v;
//
this.getLogPage();
//
},
// 集团配置
getEnterpriseInfo
()
{
doFetchqs
(
url
.
enterpriseInfo
).
then
(
res
=>
{
...
...
@@ -475,7 +476,7 @@ export default {
const
res
=
await
doFetchGet
(
url
.
getMarketingRecordNum
,
param
);
if
(
res
.
data
.
errorCode
==
0
)
{
this
.
marketingRecordNum
=
res
.
data
.
result
||
0
;
console
.
log
(
this
.
marketingRecordNum
);
//
console.log(this.marketingRecordNum);
}
else
{
checkFalse
(
res
.
data
.
message
);
}
...
...
@@ -491,6 +492,7 @@ export default {
customermainstoreDialog
,
customersubstoreDialog
,
customerlabelDialog
,
IconLabelValue
IconLabelValue
,
CustomerLog
},
};
src/components/axios/url.js
View file @
b87501d9
...
...
@@ -99,7 +99,9 @@ const urlConfig = {
getMarketingRecordNum
:
'/api-marketing/member/marketing-count'
,
aiLogPage
:
'/api-marketing/member/page-ai-member-log'
,
getOrderList
:
'/api-member/member-all-order-page'
,
getMemberSourceList
:
'/api-plug/member-source-list'
getMemberSourceList
:
'/api-plug/member-source-list'
,
getMemberLogType
:
'/api-plug/member-oper-type-list'
,
getMemberLogReason
:
'/api-plug/member-oper-reason-list'
}
const
defaultUrl
=
Object
.
assign
({},
urlConfig
);
...
...
src/components/wechatmembers/cardMixin.js
0 → 100644
View file @
b87501d9
import
{
formatYMD
}
from
'@/common/filters/custom.js'
;
export
default
{
data
()
{
return
{
// dateKey: 0,
dateDefault
:
[],
pickerOptions
()
{
// let pickerMinDate;
return
{
onPick
(
obj
)
{
// pickerMinDate = obj.minDate;
},
disabledDate
(
time
)
{
let
start
=
new
Date
();
start
.
setFullYear
(
start
.
getFullYear
()
-
1
);
start
.
setDate
(
start
.
getDate
()
+
1
);
start
=
new
Date
(
`
${
start
.
getFullYear
()}
-
${
start
.
getMonth
()
+
1
}
-
${
start
.
getDate
()}
`
);
let
end
=
new
Date
();
end
=
new
Date
(
`
${
end
.
getFullYear
()}
-
${
end
.
getMonth
()
+
1
}
-
${
end
.
getDate
()}
23:59:59`
);
return
time
.
getTime
()
<
start
.
getTime
()
||
time
.
getTime
()
>
end
;
}
};
}
};
},
methods
:
{
setDefalutTime
(){
let
start
=
new
Date
();
start
.
setFullYear
(
start
.
getFullYear
());
start
.
setDate
(
start
.
getDate
());
start
=
`
${
start
.
getFullYear
()}
-
${
start
.
getMonth
()
+
1
}
-
${
start
.
getDate
()}
`
;
let
end
=
new
Date
();
end
=
`
${
end
.
getFullYear
()}
-
${
end
.
getMonth
()
+
1
}
-
${
end
.
getDate
()
-
1
}
`
;
this
.
dateDefault
=
[
formatYMD
(
new
Date
(
end
).
getTime
()),
formatYMD
(
new
Date
(
start
).
getTime
())]
},
}
};
\ No newline at end of file
src/components/wechatmembers/cardvoucher.vue
View file @
b87501d9
...
...
@@ -5,12 +5,12 @@
<el-select
v-model=
"cardReviceCode"
style=
"margin-right: 7px;"
placeholder=
"所有
渠道
"
placeholder=
"所有
来源
"
@
change=
"handleSearch"
>
<el-option
:key=
-1
label=
"所有
渠道
"
label=
"所有
来源
"
:value=
-1
></el-option>
<el-option
...
...
@@ -24,6 +24,7 @@
v-model=
"useStatus"
placeholder=
"所有状态"
@
change=
"handleSearch"
style=
"margin-right: 7px;"
>
<el-option
:key=
-1
...
...
@@ -71,7 +72,9 @@
:value=
10
></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"
>
</el-date-picker>
</div>
<p
class=
"font14 tip-p"
>
展示投放时间仅一年的卡券
</p>
<div
class=
"table-content"
>
<el-table
:data=
"memberData"
...
...
@@ -107,9 +110,17 @@
</el-table-column>
<el-table-column
prop=
"receiveName"
label=
"投放
渠道
"
label=
"投放
来源
"
></el-table-column>
<el-table-column
prop=
"cardType"
label=
"卡券类型"
>
<
template
slot-scope=
"{row}"
>
{{
row
.
cardType
==
0
?
'抵金券'
:
row
.
cardType
==
1
?
'折扣券'
:
row
.
cardType
==
2
?
'兑换券'
:
'--'
}}
</
template
>
</el-table-column>
<el-table-column
prop=
"cardName"
label=
"卡券名称"
>
...
...
@@ -120,6 +131,24 @@
</
template
>
</el-table-column>
<el-table-column
prop=
"cardDenomination"
label=
"优惠额度"
>
<
template
slot-scope=
"{row}"
>
{{
row
.
cardType
==
0
?
`${row.cardDenomination
}
元`
:
row
.
cardType
==
1
?
`${row.cardDenomination
}
折`
:
row
.
cardType
==
2
?
`${row.cardDenomination
}
`
:
'--'
}}
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
prop
=
"receiveName"
label
=
"有效期"
>
<
template
slot
-
scope
=
"{row
}
"
>
<!--
{{
row
.
cardEffectiveMode
==
0
?
`${row.effectTime | formatTime
}
-${row.limitTime | formatTime
}
`
:
row
.
cardEffectiveMode
==
1
&&
row
.
receiveTime
==
null
?
`领取后${row.startDay
}
天生效,有效期${row.limitDay
}
天`
:
row
.
cardEffectiveMode
==
1
&&
row
.
receiveTime
!=
null
?
`${row.effectTime | formatTime
}
-${row.limitTime | formatTime
}
`
:
row
.
cardEffectiveMode
==
2
&&
row
.
receiveTime
==
null
?
'领取后当月有效'
:
row
.
cardEffectiveMode
==
2
&&
row
.
receiveTime
!=
null
?
`${row.effectTime | formatTime
}
-${row.limitTime | formatTime
}
`
:
'--'
}}
-->
{{
row
.
cardEffectiveMode
==
0
||
(
row
.
cardEffectiveMode
==
2
&&
row
.
receiveTime
!=
null
)
||
(
row
.
cardEffectiveMode
==
1
&&
row
.
receiveTime
!=
null
)
?
`${row.effectTime | formatTime
}
-${row.limitTime | formatTime
}
`
:
row
.
cardEffectiveMode
==
1
&&
row
.
receiveTime
==
null
?
`领取后${row.startDay
}
天生效,有效期${row.limitDay
}
天`
:
row
.
cardEffectiveMode
==
2
&&
row
.
receiveTime
==
null
?
'领取后当月有效'
:
'--'
}}
<
/template
>
<
/el-table-column
>
<
el
-
table
-
column
prop
=
"cardCode"
label
=
"卡券代码"
>
...
...
@@ -130,7 +159,7 @@
<
/el-table-column
>
<
el
-
table
-
column
prop
=
"status"
label=
"状态"
label
=
"
卡券
状态"
>
<
div
slot
-
scope
=
"scope"
v
-
html
=
"formatStatus(scope.row)"
>
<!--
<
span
v
-
if
=
"scope.row.status === -1"
>
所有
<
/span
>
...
...
@@ -299,6 +328,7 @@
<
/template
>
<
script
>
import
mixin
from
'./cardMixin'
;
import
nav
from
"../../common/navbar/navbar.vue"
;
import
{
doFetch
}
from
"../../components/axios/api"
;
import
url
from
"../../components/axios/url"
;
...
...
@@ -352,12 +382,12 @@ export default {
orderNumber
:
null
,
}
;
}
,
mixins
:
[
authMethods
],
mixins
:
[
authMethods
,
mixin
],
methods
:
{
formatStatus
(
row
)
{
let
_content
=
''
;
const
{
status
}
=
row
;
console
.
log
(
row
)
//
console.log(row)
let
isOverdue
=
Date
.
now
()
>=
row
.
limitTime
;
if
(
status
==
3
)
{
_content
=
`<div class="${isOverdue ? 'dm-status--info' : 'dm-status--error'
}
">${isOverdue ? '已过期' : '待领取'
}
</div>`
;
...
...
@@ -503,7 +533,9 @@ export default {
pageSize
:
this
.
page
.
pageSize
,
currentPage
:
this
.
page
.
currentPage
,
cardReviceCode
:
this
.
cardReviceCode
,
useStatus
:
this
.
useStatus
useStatus
:
this
.
useStatus
,
beginTime
:
this
.
dateDefault
[
0
],
endTime
:
this
.
dateDefault
[
1
],
}
)
.
then
(
res
=>
{
if
(
res
.
data
.
errorCode
===
0
)
{
...
...
@@ -556,6 +588,7 @@ export default {
}
}
,
created
()
{
this
.
setDefalutTime
()
if
(
this
.
memberId
)
{
this
.
getMemberCardsPage
();
}
...
...
@@ -569,6 +602,10 @@ export default {
<
/script
>
<
style
lang
=
"stylus"
scoped
>
.
tip
-
p
{
color
:
#
6
B6D71
;
padding
-
bottom
:
16
px
;
}
.
check
-
box
{
padding
-
bottom
:
20
px
;
}
...
...
src/components/wechatmembers/integralDataPage.vue
View file @
b87501d9
<
template
>
<div
class=
"integral-tab"
>
<div
class=
"integral-tab
m20
"
>
<el-tabs
v-model=
"activeName"
>
<el-tab-pane
label=
"积分明细"
name=
"first"
>
<p
class=
"font14 tip-p"
>
展示近两年的积分明细
</p>
...
...
@@ -52,6 +52,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"
>
</el-date-picker>
</div>
<el-button
v-if=
"getCodeAuth('memberAdjustIntegral')"
...
...
@@ -232,6 +233,7 @@
</template>
<
script
>
import
mixin
from
'./integralMixin'
;
import
enterpriseIntergralWithhold
from
'./enterpriseIntergralWithhold.vue'
;
import
nav
from
"../../common/navbar/navbar.vue"
;
import
{
doFetch
}
from
"../../components/axios/api"
;
...
...
@@ -284,7 +286,7 @@ export default {
integralFlag
:
""
};
},
mixins
:
[
authMethods
],
mixins
:
[
authMethods
,
mixin
],
methods
:
{
formatSourceType
(
row
,
col
,
val
)
{
const
type
=
this
.
sourceTypeList
.
find
(
el
=>
el
.
value
==
val
)
||
{};
...
...
@@ -335,8 +337,8 @@ export default {
dictCode
:
this
.
dictCode
,
searchType
:
this
.
searchType
,
sourceType
:
this
.
sourceType
,
beginTime
:
this
.
beginTime
,
endTime
:
this
.
endTime
,
beginTime
:
this
.
dateDefault
[
0
]
,
endTime
:
this
.
dateDefault
[
1
]
,
storeName
:
this
.
storeName
,
frozenStatus
:
this
.
frozenStatus
})
...
...
@@ -395,6 +397,7 @@ export default {
}
},
created
()
{
this
.
setDefalutTime
()
if
(
this
.
memberId
)
{
this
.
getIntegralDataPage
();
this
.
getIntegralOperateType
();
...
...
@@ -410,6 +413,10 @@ export default {
</
script
>
<
style
lang=
"stylus"
>
.m20
{
margin
:
20px
;
margin-top
:
0px
;
}
.tip-p
{
color
:
#6B6D71
;
padding-bottom
:
16px
;
...
...
src/components/wechatmembers/integralMixin.js
View file @
b87501d9
...
...
@@ -27,12 +27,12 @@ export default {
methods
:
{
setDefalutTime
(){
let
start
=
new
Date
();
start
.
setFullYear
(
start
.
getFullYear
()
-
2
);
start
.
setFullYear
(
start
.
getFullYear
());
start
.
setDate
(
start
.
getDate
()
+
1
);
start
=
`
${
start
.
getFullYear
()}
-
${
start
.
getMonth
()
+
1
}
-
${
start
.
getDate
()}
`
;
let
end
=
new
Date
();
end
=
`
${
end
.
getFullYear
()}
-
${
end
.
getMonth
()
+
1
}
-
${
end
.
getDate
()}
`
;
this
.
dateDefault
=
[
formatYMD
(
new
Date
(
start
).
getTime
()),
formatYMD
(
new
Date
(
end
).
getTime
())]
this
.
dateDefault
=
[
formatYMD
(
new
Date
(
end
).
getTime
()),
formatYMD
(
new
Date
(
start
).
getTime
())]
},
}
};
\ No newline at end of file
src/router/index.js
View file @
b87501d9
...
...
@@ -53,6 +53,13 @@ export const constantRouterMap = [
},
},
{
path
:
'/customerLog'
,
component
:
_import
(
'allCustomers/components'
,
'customerLog'
),
meta
:
{
title
:
'客户日志'
,
},
},
{
path
:
'/order-list'
,
component
:
_import
(
'allCustomers'
,
'order-list'
),
meta
:
{
...
...
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