Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
memberTag-web
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
memberTag
memberTag-web
Commits
0e6883f5
Commit
0e6883f5
authored
Apr 20, 2022
by
liuchenxi
Browse files
Options
Browse Files
Download
Plain Diff
Merge branch 'feature/3月会员标签' into feature/4月会员分组
parents
cf7208e0
1bbad60b
Expand all
Hide whitespace changes
Inline
Side-by-side
Showing
26 changed files
with
323 additions
and
139 deletions
+323
-139
App.vue
src/App.vue
+2
-0
Trash.vue
src/components/Trash.vue
+10
-9
card.vue
src/components/card/card.vue
+1
-1
tag-config-options.vue
src/components/tag/tag-config-options.vue
+7
-6
index.js
src/components/tagDetail/mixin/index.js
+2
-0
api.js
src/request/api.js
+10
-0
index.js
src/router/index.js
+17
-5
store.js
src/store/store.js
+10
-2
router-utils.js
src/utils/router-utils.js
+57
-0
layout.vue
src/view/layout/layout.vue
+3
-2
delete-tag-dialog.vue
src/view/manualTag/delete-tag-dialog.vue
+1
-1
manual-tag-value-edit-info.vue
src/view/manualTag/manual-tag-value-edit-info.vue
+0
-0
manual-tag-value-edit.vue
src/view/manualTag/manual-tag-value-edit.vue
+4
-3
manualTagEdit.vue
src/view/manualTag/manualTagEdit.vue
+12
-7
edit-tag.vue
src/view/memberGroup/edit-tag.vue
+5
-5
index.vue
src/view/memberGroup/index.vue
+1
-3
memberGroupList.vue
src/view/memberGroup/memberGroupList.vue
+1
-1
memberLevelDetail.vue
src/view/memberGroup/memberLevelDetail.vue
+2
-1
pyramid-group-table.vue
src/view/memberGroup/pyramid-group-table.vue
+1
-1
member-tag.vue
src/view/platformTag/member-tag.vue
+20
-11
second-tag.vue
src/view/platformTag/second-tag.vue
+15
-8
tag-container-active.vue
src/view/platformTag/tag-container-active.vue
+54
-16
tag-container-system.vue
src/view/platformTag/tag-container-system.vue
+6
-19
tag-container.vue
src/view/platformTag/tag-container.vue
+53
-15
public.css
static/css/public.css
+6
-0
index.css
theme/index.css
+23
-23
No files found.
src/App.vue
View file @
0e6883f5
...
...
@@ -36,7 +36,9 @@ export default {
if
(
res
.
data
.
errorCode
==
0
)
{
const
uId
=
res
.
data
.
result
&&
res
.
data
.
result
.
userId
;
const
isSuperAdmin
=
res
.
data
.
result
&&
res
.
data
.
result
.
superAdmin
;
const
enableAccessControl
=
res
.
data
.
result
&&
res
.
data
.
result
.
enableAccessControl
;
this
.
$store
.
commit
(
'changeSuperAdmin'
,
isSuperAdmin
);
this
.
$store
.
commit
(
'changeEnableAccess'
,
enableAccessControl
);
if
(
this
.
uniqueId
===
''
)
{
this
.
$store
.
commit
(
'changeUniqueId'
,
uId
);
}
...
...
src/components/Trash.vue
View file @
0e6883f5
...
...
@@ -2,7 +2,8 @@
<div
id=
"trash"
>
<el-popover
placement=
"top-start"
trigger=
"hover"
content=
"一键清除废弃标签值"
>
<div
slot=
"reference"
class=
"trash"
@
click=
"dialogVisible = true"
>
<el-badge
:value=
"trashList.length > 99 ? '99+' : trashList.length"
class=
"badge"
>
<!-- $store.state.delTrashNum 该值在活动标签和手工标签列表删除里也有更新 -->
<el-badge
:value=
"$store.state.delTrashNum > 99 ? '99+' : $store.state.delTrashNum"
class=
"badge"
>
<i
class=
"iconfont icon-delete trashIcon"
></i>
</el-badge>
</div>
...
...
@@ -12,13 +13,13 @@
<header>
已选择待删除的标签/标签值
</header>
<ul
class=
"tagBox"
>
<li
v-for=
"item in trashList"
:key=
"item.tagItemId"
class=
"tagItem"
>
{{
item
.
tagItemName
}}
<i
class=
"iconfont icon-guanbi1 delIcon"
@
click=
"delCheckTag(item.tagItemId)"
></i>
{{
item
.
tagItem
Id
==
null
?
item
.
tagName
:
item
.
tagItem
Name
}}
<i
class=
"iconfont icon-guanbi1 delIcon"
@
click=
"delCheckTag(item.tagItemId
, item.tagId
)"
></i>
</li>
</ul>
<span
slot=
"footer"
>
<el-button
@
click=
"dialogVisible = false"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"doClean"
:disabled=
"
delTime > 0 ||
!trashList.length"
>
{{
delTime
>
0
?
getDelTime
()
:
'删除'
}}
</el-button>
<el-button
type=
"primary"
@
click=
"doClean"
:disabled=
"!trashList.length"
>
{{
delTime
>
0
?
getDelTime
()
:
'删除'
}}
</el-button>
</span>
</el-dialog>
</div>
...
...
@@ -53,6 +54,7 @@ export default {
const
{
errorCode
,
message
,
result
=
[]
}
=
res
;
if
(
errorCode
!=
1
)
return
this
.
$message
.
error
(
message
);
this
.
trashList
=
result
;
this
.
$store
.
commit
(
'changeDelTrashNum'
,
result
.
length
);
this
.
progress
=
result
.
length
;
});
},
...
...
@@ -79,7 +81,7 @@ export default {
return
`倒计时:
${
h
}
h:
${
m
}
min:
${
s
}
s`
;
},
doClean
()
{
if
(
this
.
delTime
)
return
;
if
(
this
.
delTime
>
0
)
return
this
.
$message
.
error
(
'当前有正在删除的标签/标签值,删除完成后才能再次操作删除任务'
)
;
cleanTrashList
().
then
(
res
=>
{
const
{
errorCode
,
message
}
=
res
;
if
(
errorCode
!=
1
)
return
this
.
$message
.
error
(
message
);
...
...
@@ -89,8 +91,9 @@ export default {
this
.
$emit
(
'beginClean'
)
});
},
delCheckTag
(
tagItemId
)
{
delTrashList
({
tagItemId
}).
then
(
res
=>
{
delCheckTag
(
tagItemId
,
tagId
)
{
const
type
=
tagItemId
==
null
?
1
:
0
;
delTrashList
({
tagItemId
:
type
?
tagId
:
tagItemId
,
type
}).
then
(
res
=>
{
const
{
errorCode
,
message
}
=
res
;
if
(
errorCode
!=
1
)
return
this
.
$message
.
error
(
message
);
this
.
getTrashList
();
...
...
@@ -143,7 +146,6 @@ export default {
}
header
{
color
:
#303133
;
font-weight
:
700
;
}
.tagBox
{
display
:
flex
;
...
...
@@ -153,7 +155,6 @@ header {
margin-top
:
16px
;
margin-right
:
8px
;
padding
:
3px
8px
;
border
:
1px
solid
#dcdfe6
;
border-radius
:
2px
;
font-size
:
13px
;
color
:
#2f54eb
;
...
...
src/components/card/card.vue
View file @
0e6883f5
...
...
@@ -46,7 +46,7 @@
<!--
<el-button
@
click=
"refresh"
>
刷新列表
</el-button>
-->
</div>
</div>
<div
style=
"font-size:12px;color:#909399;line-height:30px;"
>
* 仅能选择卡券模板投放期限有效的卡券
</div>
<div
style=
"font-size:12px;color:#909399;line-height:30px;
background:#f7faff
"
>
* 仅能选择卡券模板投放期限有效的卡券
</div>
<div
class=
"pic-list-box"
>
<!-- @selection-change="handleSelectionChange" -->
<el-table
...
...
src/components/tag/tag-config-options.vue
View file @
0e6883f5
...
...
@@ -225,7 +225,7 @@
<el-option
class=
"options"
v-for=
"item in parent.searchOptions"
:key=
"item.key"
:label=
"item.value"
:value=
"item.key"
>
<div
:class=
"parent.addSelectTags.some(el => el.clerkId == item.key) && 'active'"
>
<p>
{{
item
.
value
||
'--'
}}
</p>
<p>
{{
item
.
clerkCode
||
'--'
}}
{{
parent
.
addSelectTags
}}
</p>
<p>
{{
item
.
clerkCode
||
'--'
}}
</p>
</div>
</el-option>
</el-select>
...
...
@@ -256,7 +256,8 @@
<div
v-if=
"parent.templateCode == 'tag011'"
>
<div
:key=
"'tag11' + pindex"
>
<
template
v-if=
"loadSelector"
>
<dm-store-selector
:options=
"parent.uuidOptions"
:creatorId=
"creatorId"
:uuid
.
sync=
"parent.uuid"
ref=
"storeNew"
:isAdd=
"!parent.uuid"
/>
<!--scenes服务门店查上线,其余门店查所有-->
<dm-store-selector
:options=
"parent.uuidOptions"
:creatorId=
"creatorId"
:uuid
.
sync=
"parent.uuid"
ref=
"storeNew"
:isAdd=
"!parent.uuid"
:scenes=
"tagId == 'd568b880d8464a9b9365b9861828f587' ? '': 'tagScenes'"
:scenesVal=
"tagId == 'd568b880d8464a9b9365b9861828f587' ? '': 'tagScenes'"
/>
</
template
>
<!-- <vue-gic-store-new :options="parent.uuidOptions" :creatorId="creatorId" :uuid.sync="parent.uuid" ref="storeNew" :isAdd="!parent.uuid"> </vue-gic-store-new> -->
</div>
...
...
@@ -929,7 +930,7 @@
<div
:key=
"'tag7' + pindex"
>
<div>
<el-radio
v-model=
"parent.radioType"
:label=
"0"
>
固定时段
</el-radio>
<el-radio
v-model=
"parent.radioType"
:label=
"1"
>
最近
时段
</el-radio>
<el-radio
v-model=
"parent.radioType"
:label=
"1"
>
相对
时段
</el-radio>
</div>
<!-- 固定时段 -->
<div
class=
"w-500 tag030 border-box"
:style=
"
{'paddingBottom': '5px', 'minHeight': parent.radioType ? '120px' : 'auto'}">
...
...
@@ -944,8 +945,8 @@
end-placeholder=
"结束时间"
format=
"yyyy-MM-dd"
value-format=
"yyyy-MM-dd"
:picker-options=
"openCardPickerOptions"
>
<!-- openCardPickerOptions -->
</el-date-picker>
<template
v-if=
"parent.radioType"
>
<div
class=
"tag030flex"
>
...
...
@@ -2467,7 +2468,7 @@ export default {
&
.all-select-options__city
{
.el-checkbox-group
{
max-height
:
3
00px
;
max-height
:
2
00px
;
overflow-y
:
auto
;
}
}
...
...
@@ -2560,7 +2561,7 @@ export default {
.flex-direction
{
display
:
flex
;
flex-direction
:
column
;
padding-left
:
11
0
px
;
padding-left
:
11
8
px
;
box-shadow
:
border-box
;
/deep/
.el-checkbox
{
margin
:
0
;
...
...
src/components/tagDetail/mixin/index.js
View file @
0e6883f5
...
...
@@ -1488,6 +1488,8 @@ export default {
name
:
name
,
requestProject
:
'member-tag'
};
// 专属导购硬编码传type
if
(
that
.
tagId
==
"87d5e65945c84012a2a2534ef0b261b0"
)
para
.
type
=
2
;
that
.
axios
.
post
(
`
${
that
.
baseUrl
}
/api-plug/search-clerk`
,
qs
.
stringify
(
para
))
.
then
(
res
=>
{
...
...
src/request/api.js
View file @
0e6883f5
...
...
@@ -375,4 +375,14 @@ export const changeTagSort = (params = {}) =>
}
})
// 是否展示系统标签
export
const
isShowSystemTag
=
(
params
=
{})
=>
request
({
url
:
'/tagLevel/isShowTag'
,
method
:
'get'
,
params
:
{
requestProject
:
'gic-member-tag-web'
,
...
params
}
})
src/router/index.js
View file @
0e6883f5
import
Router
from
'vue-router'
;
import
_import
from
'./_import.js'
;
// import delCache from '@/utils/router-utils.js';
const
errorPage
=
r
=>
{
import
(
'view/errorPage/index.vue'
).
then
(
module
=>
{
r
(
module
);
...
...
@@ -19,7 +20,10 @@ export const constantRouterMap = [
name
:
'会员标签'
,
component
:
_import
(
'platformTag'
,
'member-tag'
),
meta
:
{
title
:
'会员标签'
title
:
'会员标签'
,
keepAlive
:
true
,
componentName
:
'member-tag'
,
fromPath
:
[
'/manualTagValueEdit'
]
}
},
{
...
...
@@ -126,7 +130,10 @@ export const constantRouterMap = [
component
:
_import
(
'memberGroup'
,
'memberGroupList'
),
name
:
'会员分组'
,
meta
:
{
title
:
'会员标签-会员分组'
title
:
'会员标签-会员分组'
,
keepAlive
:
true
,
componentName
:
'memberGroupList'
,
fromPath
:
[
'/memberGroupEdit'
,
'/memberLevelDetail'
,
'/memberGroupDetail'
]
}
},
{
...
...
@@ -190,9 +197,14 @@ export const constantRouterMap = [
},
{
path
:
'*'
,
redirect
:
'/404'
,
hidden
:
true
}
];
export
default
new
Router
({
const
router
=
new
Router
({
routes
:
constantRouterMap
,
base
:
'/member-tag/'
,
scrollBehavior
:
()
=>
({
y
:
0
})
});
})
router
.
beforeEach
((
to
,
from
,
next
)
=>
{
const
{
fromPath
=
[]
}
=
from
.
meta
||
{};
from
.
meta
.
keepAlive
=
fromPath
.
includes
(
to
.
path
);
next
();
})
export
default
router
;
src/store/store.js
View file @
0e6883f5
...
...
@@ -11,7 +11,9 @@ export default new Vuex.Store({
show
:
false
,
tagRealName
:
''
,
uniqueId
:
''
,
isSuperAdmin
:
0
isSuperAdmin
:
0
,
delTrashNum
:
0
,
enableAccessControl
:
0
},
mutations
:
{
[
types
.
LOGIN
]:
(
state
,
data
)
=>
{
...
...
@@ -36,6 +38,12 @@ export default new Vuex.Store({
},
[
'changeSuperAdmin'
](
state
,
data
)
{
state
.
isSuperAdmin
=
data
;
}
},
[
'changeDelTrashNum'
](
state
,
data
)
{
state
.
delTrashNum
=
data
;
},
[
'changeEnableAccess'
](
state
,
data
)
{
state
.
enableAccessControl
=
data
;
},
}
});
src/utils/router-utils.js
0 → 100644
View file @
0e6883f5
/**
* 需求分析
* A是列表页,B是详情页,C是另一个列表页
* A=>B=>A A的状态不变
* A=>C=>A A为初始状态
* A=>B=>C=>A A为初始状态
* A=>B=>A=>C=>A A为初始状态
* A=>B=>A=>C=>A=>B=>A A的状态不变(保持A最新的状态)
* A=>B=>A=>C=>A=>B=>C=>A A为初始状态
*/
/**
* 查找指定的组件实例
* @param {array} components 组件树
* @param {string} componentName 指定的组件name
* @returns 找到的组件实例
*/
function
getComponent
(
components
,
componentName
)
{
let
result
=
{};
components
.
some
(
el
=>
{
if
(
el
.
$options
.
name
==
componentName
)
{
result
=
el
;
}
else
if
(
Array
.
isArray
(
el
.
$children
))
{
result
=
getComponent
(
el
.
$children
,
componentName
);
}
return
result
.
$el
;
});
return
result
;
}
/**
* 清除指定组件的缓存
* @param {object} vm 组件实例
*/
function
delCache
(
vm
)
{
let
{
componentOptions
,
parent
=
{},
key
}
=
vm
.
$vnode
||
{};
let
{
cache
,
keys
}
=
parent
.
componentInstance
||
{};
cache
=
cache
||
{};
keys
=
Array
.
isArray
(
keys
)
?
keys
:
[];
if
(
!
componentOptions
)
return
;
if
(
!
key
)
{
const
{
Ctor
,
tag
}
=
componentOptions
;
key
=
Ctor
.
cid
+
(
tag
?
`::
${
tag
}
`
:
''
);
}
if
(
cache
[
key
])
{
if
(
Array
.
isArray
(
keys
))
{
vm
.
$vnode
.
parent
.
componentInstance
.
keys
=
keys
.
filter
(
v
=>
v
!=
key
);
}
delete
vm
.
$vnode
.
parent
.
componentInstance
.
cache
[
key
];
}
}
export
default
(
components
,
componentName
)
=>
{
delCache
(
getComponent
(
components
,
componentName
));
};
src/view/layout/layout.vue
View file @
0e6883f5
<
template
>
<dm-layout
project-name=
"report"
>
<keep-alive>
<router-view
:key=
"$route.fullPath"
></router-view>
<router-view
v-if=
"$route.meta.keepAlive"
:key=
"$route.fullPath"
></router-view>
</keep-alive>
<router-view
v-if=
"!$route.meta.keepAlive"
/>
</dm-layout>
</
template
>
<
script
>
export
default
{
name
:
'layout'
name
:
'layout'
,
}
</
script
>
src/view/manualTag/delete-tag-dialog.vue
View file @
0e6883f5
...
...
@@ -34,7 +34,7 @@ export default {
},
computed
:
{
desc
()
{
return
this
.
data
.
length
?
'该标签下的标签值正在被分组使用,删除后会员分组将查询不到对应的会员。'
:
'标签删除后,若有正在使用该标签的会员分组则会员分组覆盖人群将查询不到该标签下的人群。'
;
return
this
.
list
.
length
?
'该标签下的标签值正在被分组使用,删除后会员分组将查询不到对应的会员。'
:
'标签删除后,若有正在使用该标签的会员分组则会员分组覆盖人群将查询不到该标签下的人群。'
;
}
},
methods
:
{
...
...
src/view/manualTag/manual-tag-value-edit-info.vue
View file @
0e6883f5
This diff is collapsed.
Click to expand it.
src/view/manualTag/manual-tag-value-edit.vue
View file @
0e6883f5
...
...
@@ -5,7 +5,7 @@
<div
class=
"manualTagEdit-wrap__title"
>
<span>
<dm-sub-title
:text=
"tagInfo.tagName"
/>
<p
class=
"tip"
>
导购标签排序应用于好办小程序,好办端展示按照排序从上到下展示
</p>
<p
class=
"tip"
v-if=
"$route.query.type == 'manual'"
>
导购标签排序应用于好办小程序,好办端展示按照排序从上到下展示
</p>
</span>
<div
class=
"operation-btn"
>
<el-button
v-if=
"$route.query.type == 'manual'"
type=
"primary"
class=
"ghost-btn"
@
click=
"importMember"
>
...
...
@@ -234,7 +234,8 @@ export default {
};
this
.
refreshTag
.
push
({
tagItemIndex
:
index
,
tagItemId
:
item
.
tagItemId
tagItemId
:
item
.
tagItemId
,
type
:
0
});
this
.
tagValTableData
[
index
].
showDelPopOver
=
false
;
getRequest
(
'/delTagItem/add'
,
para
).
then
(
res
=>
{
...
...
@@ -443,7 +444,7 @@ export default {
// 已删除
if
(
this
.
tagValTableData
[
tagItemIndex
].
tagItemId
===
tagItemId
)
{
this
.
refreshTag
=
this
.
refreshTag
.
filter
(
item
=>
item
.
tagItemId
!==
tagItemId
)
this
.
getValueData
();
//
this.getValueData();
}
break
;
case
5
:
...
...
src/view/manualTag/manualTagEdit.vue
View file @
0e6883f5
...
...
@@ -3,8 +3,7 @@
<div
class=
"manualTagEdit-wrap"
>
<el-form
:model=
"ruleForm"
:rules=
"rules"
ref=
"ruleForm"
label-width=
"100px"
>
<el-form-item
label=
"标签名称:"
prop=
"tagName"
>
<el-input
class=
"w-full"
placeholder=
"请输入内容"
v-model=
"ruleForm.tagName"
:maxlength=
"15"
></el-input>
<label
class=
"input-label"
>
{{
ruleForm
.
tagName
.
length
}}
/15
</label>
<el-input
class=
"w-full"
placeholder=
"请输入标签名称"
v-model=
"ruleForm.tagName"
:maxlength=
"15"
show-word-limit
></el-input>
</el-form-item>
<el-form-item
label=
"所属分类:"
prop=
"tagLevel"
>
<el-form-item
prop=
"tagTwoLevelGroupId"
class=
"fl"
>
...
...
@@ -19,7 +18,13 @@
</el-form-item>
</el-form-item>
<el-form-item
label=
"排序:"
prop=
"tagSort"
v-if=
"currentType == 'manual'"
>
<template
#
label
>
排序
<i
class=
"iconfont icon-QuestionCircleOutlined icon"
/>
:
</
template
>
<template
#
label
>
排序
<el-tooltip
placement=
"top"
content=
"控制好办上标签展示顺序,按照数字降序排序"
trigger=
"hover"
>
<i
class=
"iconfont icon-QuestionCircleOutlined icon"
/>
</el-tooltip>
:
</
template
>
<el-input
v-model=
"ruleForm.tagSort"
placeholder=
"请输入1-100000之间的整数"
class=
"w-full"
@
input=
"validateInputSort"
@
blur=
"blurSort"
/>
</el-form-item>
<el-form-item
label=
"标签类型:"
prop=
"tagType"
v-if=
"currentType == 'manual'"
>
...
...
@@ -39,7 +44,7 @@
</el-form>
<div
class=
"manualTagEdit-btns"
>
<el-button
@
click=
"$emit('update:showPop', false)"
>
取消
</el-button>
<el-button
type=
"primary"
@
click=
"confirmSave"
>
保存
</el-button>
<el-button
type=
"primary"
@
click=
"confirmSave"
>
确定
</el-button>
</div>
</div>
</el-dialog>
...
...
@@ -67,7 +72,7 @@ const validateTagValue = (rule, value, cb) => {
const
validateTagSort
=
(
rule
,
value
,
cb
)
=>
{
const
res
=
/^
[
0-9
]
+$/
;
if
(
!
res
.
test
(
value
)
||
value
>
100000
||
value
<
1
)
{
cb
(
new
Error
(
'仅支持输入1-1
-1
00000之间的整数'
))
cb
(
new
Error
(
'仅支持输入1-100000之间的整数'
))
}
cb
();
}
...
...
@@ -232,7 +237,8 @@ export default {
if
(
errorCode
===
1
)
{
this
.
optionsTwo
=
result
;
if
(
currentType
==
'active'
&&
!
this
.
isEdit
)
{
this
.
ruleForm
.
tagTwoLevelGroupId
=
result
.
find
(
el
=>
el
.
name
===
'渠道标签'
).
id
;
const
find
=
result
.
find
(
el
=>
el
.
name
===
'渠道标签'
);
this
.
ruleForm
.
tagTwoLevelGroupId
=
find
?
find
.
id
:
find
;
this
.
getOptionsThree
(
this
.
ruleForm
.
tagTwoLevelGroupId
);
}
}
...
...
@@ -356,7 +362,6 @@ export default {
.icon
{
font-size
:
14px
;
color
:
#606266
;
margin-left
:
1px
;
position
:
relative
;
top
:
1px
;
}
...
...
src/view/memberGroup/edit-tag.vue
View file @
0e6883f5
<
template
>
<div>
<!-- 添加标签、编辑标签 -->
<el-dialog
:title=
"title"
:visible
.
sync=
"showEditTagPop"
top=
"10vh"
width=
"
6
00px"
:before-close=
"handleClose"
custom-class=
"edit-tag"
:close-on-click-modal=
"false"
append-to-body
>
<el-dialog
:title=
"title"
:visible
.
sync=
"showEditTagPop"
top=
"10vh"
width=
"
9
00px"
:before-close=
"handleClose"
custom-class=
"edit-tag"
:close-on-click-modal=
"false"
append-to-body
>
<div
class=
"dialog-box"
>
<div
class=
"tag-info"
>
<p
class=
"tag-name"
>
...
...
@@ -11,9 +11,9 @@
<p
class=
"tag-desc"
>
{{
tagDataAssgin
.
tagDescribe
}}
</p>
</div>
<p
v-if=
"tagId"
class=
"m-t-20 m-b-20 tag-config"
>
<dm-sub-title
text=
"标签值设置"
/
>
<span
class=
"inline-block"
><dm-sub-title
text=
"标签值设置"
/></span
>
<el-tooltip
v-if=
"tagDataAssgin.columnKey==='haobanWechatRelatedTime'||(Object.keys(tagDataAssgin).length&&tagDataAssgin.tagValue&&JSON.parse(tagDataAssgin.tagValue).val[0].data.key==='haobanWechatRelatedTime')"
popper-class=
"edit-tag-tooltip"
placement=
"top"
open-delay=
"100"
effect=
"light"
><div
slot=
"content"
><span
style=
"font-weight:600"
>
固定时段:
</span>
在所选时间段内与关联了好办导购账号的企微员工成为好友的;
<br/><span
style=
"font-weight:600"
>
相对时段:
</span>
在“标签统计时间”(每天凌晨计算统计一次)的前X天/月/年与某员工成为好友的。例:选择相对时段为“最近2天”,那么系统在5号凌晨进行统计时,统计的是在3号、4号与某员工成为企微好友的用户;系统在6号凌晨统计时,统计的是在4号、5号与某员工成为企微好友的客户;
</div><i
class=
"iconfont icon-
tishi
"
></i></el-tooltip></p>
><div
slot=
"content"
><span
style=
"font-weight:600"
>
固定时段:
</span>
在所选时间段内与关联了好办导购账号的企微员工成为好友的;
<br/><span
style=
"font-weight:600"
>
相对时段:
</span>
在“标签统计时间”(每天凌晨计算统计一次)的前X天/月/年与某员工成为好友的。例:选择相对时段为“最近2天”,那么系统在5号凌晨进行统计时,统计的是在3号、4号与某员工成为企微好友的用户;系统在6号凌晨统计时,统计的是在4号、5号与某员工成为企微好友的客户;
</div><i
class=
"iconfont icon-
QuestionCircleOutlined
"
></i></el-tooltip></p>
<!-- 所有标签的配置项 -->
<div
class=
"tag-config-options"
>
<tag-config-options
v-if=
"isAddFlag"
:creatorId=
"creatorId"
:tagId=
"tagDataAssgin.tagId"
:columnKey=
"tagDataAssgin.columnKey"
ref=
"tagConfig"
:templateDataList=
"templateObj"
@
returnTagData=
"returnTagData"
></tag-config-options>
...
...
@@ -101,7 +101,7 @@ export default {
<
style
lang=
"less"
scoped
>
.dialog-box
{
.tag-info
{
background
:
#f
2f3f5
;
background
:
#f
7f8fa
;
padding
:
16px
;
.tag-name
{
display
:
flex
;
...
...
@@ -146,7 +146,7 @@ export default {
}
.tag-config-options
{
max-height
:
50vh
;
//
overflow-y
:
auto
;
overflow-y
:
auto
;
}
.tag-value
{
margin-top
:
10px
;
...
...
src/view/memberGroup/index.vue
View file @
0e6883f5
...
...
@@ -2,9 +2,7 @@
<div
id=
"index"
>
<transition
name=
"fade"
mode=
"out-in"
>
<!-- 缓存已经填好内容的页面 -->
<keep-alive
include=
"memberGroupList"
>
<router-view></router-view>
</keep-alive
>
<router-view></router-view>
</transition>
</div>
</
template
>
...
...
src/view/memberGroup/memberGroupList.vue
View file @
0e6883f5
...
...
@@ -4,7 +4,7 @@
<el-tabs
v-model=
"activeType"
class=
"tabs"
>
<el-tab-pane
label=
"我的客户分组"
name=
"1"
></el-tab-pane>
<el-tab-pane
label=
"固化人群"
name=
"2"
></el-tab-pane>
<el-tab-pane
label=
"金字塔客户分组"
name=
"3"
></el-tab-pane>
<el-tab-pane
label=
"金字塔客户分组"
name=
"3"
v-if=
"!($store.state.enableAccessControl && !$store.state.isSuperAdmin)"
></el-tab-pane>
</el-tabs>
</div>
<div
class=
"right-content"
>
...
...
src/view/memberGroup/memberLevelDetail.vue
View file @
0e6883f5
...
...
@@ -136,7 +136,8 @@
</
template
>
<!-- 开卡时间 -->
<
template
v-if=
"item.code == 'crateCardDateString'"
>
<div>
{{
scope
.
row
.
crateCardDateString
}}
</div>
<div>
{{
scope
.
row
.
crateCardDateString
|
formatTimeYMD
}}
</div>
<div>
{{
scope
.
row
.
crateCardDateString
|
formatTimeHMS
}}
</div>
</
template
>
<!-- 新增时间 -->
<
template
v-if=
"item.code == 'createTime'"
>
...
...
src/view/memberGroup/pyramid-group-table.vue
View file @
0e6883f5
...
...
@@ -36,7 +36,7 @@
</div>
<div
class=
"show-haoban"
>
<h2>
展示在好办
</h2>
<span
class=
"tips"
>
开启后,
默认次日更新好办管理后台,如需立即更新,请至好办管理后台操作“同步”
</span>
<span
class=
"tips"
>
开启后,
立即更新至好办小程序
</span>
<p>
<span
v-for=
"item in haobanList"
:key=
"item.memberTagGradeId"
class=
"switch-item"
>
<span>
{{ item.aliasName }}
</span>
...
...
src/view/platformTag/member-tag.vue
View file @
0e6883f5
...
...
@@ -4,9 +4,9 @@
<div
class=
"member-box"
>
<div
class=
"flex"
>
<el-tabs
v-model=
"activeTag"
@
tab-click=
"handleClick"
>
<el-tab-pane
label=
"系统标签"
name=
"system"
></el-tab-pane>
<el-tab-pane
label=
"活动标签"
name=
"active"
></el-tab-pane>
<el-tab-pane
label=
"系统标签"
name=
"system"
v-if=
"isShowSystem"
></el-tab-pane>
<el-tab-pane
label=
"手工标签"
name=
"manual"
></el-tab-pane>
<el-tab-pane
label=
"活动标签"
name=
"active"
></el-tab-pane>
</el-tabs>
<a
href=
"https://www.yuque.com/exnmlu/hpbb1c/cz27hs"
target=
"_blank"
class=
"help-doc"
>
查看帮助文档
</a>
</div>
...
...
@@ -19,7 +19,7 @@
<div
class=
"tag-all"
>
<p
class=
"tag-name"
>
<span
class=
"sub-title"
><
dm-sub-title
:text=
"showSearchResult ? `【$
{tagName}】搜索结果` : tagName"/>
<
/span>
<span
class=
"sub-title"
></span>
<el-button
type=
"primary"
class=
"add-newtag"
...
...
@@ -40,7 +40,7 @@
class=
"add-newtag"
placeholder=
"请输入标签名称"
prefix-icon=
"el-icon-search"
style=
"width: 260px"
style=
"width: 260px
;float: left;margin-left: 0
"
v-model=
"memberTag"
@
keyup
.
native
.
enter=
"searchMemberList"
@
clear=
"allTagList"
...
...
@@ -65,7 +65,7 @@
@
remote-sort=
"remoteSort"
/>
<tag-container-system
v-show=
"activeTag == 'system'"
:data=
"memberTagList"
:refersh=
"refershList"
@
addTag=
"selectedTag"
@
change=
"searchMemberList"
/>
<tag-container-active
v-show=
"activeTag == 'active'"
:data=
"memberTagList"
:refersh=
"refershList"
@
addTag=
"selectedTag"
@
change=
"searchMemberList"
@
ediActiveTag=
"editHandTag"
/>
<tag-container-active
v-show=
"activeTag == 'active'"
:data=
"memberTagList"
:refersh=
"refershList"
@
addTag=
"selectedTag"
@
change=
"searchMemberList"
@
ediActiveTag=
"editHandTag"
@
deleteHandTag=
"deleteHandTag"
/>
<div
class=
"page-box"
v-if=
"total > 0"
>
<dm-pagination
...
...
@@ -208,7 +208,7 @@ import TagContainer from './tag-container';
import
TagContainerSystem
from
'./tag-container-system'
;
import
TagContainerActive
from
'./tag-container-active'
;
import
ManualTagEdit
from
'../manualTag/manualTagEdit'
;
import
{
getMemberTag
,
getMemberTagList
,
addNewGroup
,
memberGroupList
,
groupCount
,
getMemberTagGradeEnsure
,
isAutomaticSync
}
from
'@/request/api'
;
import
{
getMemberTag
,
getMemberTagList
,
addNewGroup
,
memberGroupList
,
groupCount
,
getMemberTagGradeEnsure
,
isAutomaticSync
,
isShowSystemTag
}
from
'@/request/api'
;
import
EditTag
from
'../memberGroup/edit-tag'
;
import
Trash
from
'@/components/Trash.vue'
;
import
{
parseTime
}
from
'@/utils'
;
...
...
@@ -363,7 +363,8 @@ export default {
weimId
:
[
'3d11ac15963b4c0790762e6147ea9315'
,
'5bdac971673b4f40a9af981e3c9215bf'
],
isSync
:
false
,
// 是否开启自动同步开关
activeTag
:
'system'
,
manualOrderBy
:
-
1
manualOrderBy
:
-
1
,
isShowSystem
:
true
};
},
computed
:
{
...
...
@@ -401,7 +402,6 @@ export default {
return
arr
;
}
else
{
return
this
.
tagList
.
filter
(
el
=>
{
if
(
el
.
levelName
==
'常用标签'
&&
el
.
count
<=
0
)
return
false
;
return
el
[
'handTag'
]
===
0
;
});
}
...
...
@@ -565,6 +565,7 @@ export default {
},
// 新增第三级手工标签
editHandTag
(
list
)
{
console
.
log
(
list
);
/**
* 第一级标签切换时,重置manualTagPop.tagTwoLevelGroupId和manualTagPop.tagLevelGroupId为空
* 第二级标签切换时,修改manualTagPop.tagTwoLevelGroupId为当前第二级标签的tagLevelGroupId,重置manualTagPop.tagLevelGroupId为空
...
...
@@ -757,6 +758,7 @@ export default {
},
// 点击活动标签、手工标签
handleClick
()
{
this
.
params
.
pageNum
=
1
;
this
.
memberTag
=
''
;
const
{
activeTag
,
tagList
,
allTagList
,
handleFristTag
}
=
this
;
if
(
activeTag
===
'system'
)
{
...
...
@@ -776,10 +778,16 @@ export default {
remoteSort
(
prop
,
order
)
{
this
.
manualOrderBy
=
order
==
'descending'
?
0
:
1
;
this
.
loadMemberTagList
(
this
.
params
);
},
getShowSystem
()
{
return
isShowSystemTag
().
then
(
res
=>
{
this
.
isShowSystem
=
res
.
result
;
if
(
!
res
.
result
)
this
.
activeTag
=
'manual'
;
})
}
},
beforeMount
()
{
async
beforeMount
()
{
this
.
_groupCount
();
// 一二三级都需要一个变量来保存自己的信息 在切换页码和数量的时候也要传参数过去
this
.
middleWareVariable
=
{};
...
...
@@ -824,6 +832,7 @@ export default {
this
.
loadMemberTagList
(
this
.
params
);
this
.
$store
.
commit
(
'modiftTagName'
,
'我的用户'
);
}
this
.
getShowSystem
()
},
mounted
()
{
this
.
$on
(
'refersh-member-list'
,
()
=>
{
...
...
@@ -939,6 +948,7 @@ export default {
padding-bottom
:
40px
;
overflow-y
:
auto
;
.tag-name
{
overflow
:
hidden
;
line-height
:
34px
;
padding
:
20px
;
font-size
:
16px
;
...
...
@@ -951,7 +961,6 @@ export default {
}
.add-newtag
{
float
:
right
;
margin-bottom
:
10px
;
margin-left
:
15px
;
}
}
...
...
@@ -964,7 +973,7 @@ export default {
}
.my-pop-tagbox
{
position
:
fixed
;
z-index
:
2
;
z-index
:
10
;
right
:
29px
;
bottom
:
230px
;
height
:
120px
;
...
...
src/view/platformTag/second-tag.vue
View file @
0e6883f5
...
...
@@ -14,7 +14,7 @@
</el-tooltip>
</span>
<i
class=
"arrow-line iconfont icon-next-"
v-if=
"!isOtherTag"
></i>
<template
v-if=
"
tagName === '手工标签'
&& tagList.id !== '3d11ac15963b4c0790762e6147ea9315'"
>
<template
v-if=
"
(['手工标签', '活动标签'].includes(tagName))
&& tagList.id !== '3d11ac15963b4c0790762e6147ea9315'"
>
<el-popover
placement=
"bottom"
width=
"30"
trigger=
"click"
v-if=
"getCode('add') || getCode('edit')"
>
<li
class=
"more"
@
click=
"addNewType"
:limit-code=
"getCode('add')"
v-if=
"getCodeAuth('add')"
>
新增子分类
</li>
<li
class=
"more"
@
click=
"handleEditType"
:limit-code=
"getCode('edit')"
v-if=
"getCodeAuth('edit')"
>
编辑子分类
</li>
...
...
@@ -30,18 +30,18 @@
<!-- 编辑子分类 -->
<el-dialog
:title=
"newName"
:visible
.
sync=
"editVisiable"
:close-on-click-modal=
"false"
width=
"600px"
>
<el-table
:data=
"editData"
height=
"400"
>
<el-table-column
label=
"子分类名称"
prop=
"levelName"
>
<el-table-column
label=
"子分类名称"
prop=
"levelName"
min-width=
"90"
>
<
template
slot-scope=
"scope"
>
<el-input
v-model=
"scope.row.levelName"
v-if=
"scope.row.editName"
></el-input>
<span
v-else
>
{{
scope
.
row
.
levelName
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"标签数量"
prop=
"count"
>
<el-table-column
label=
"标签数量"
prop=
"count"
min-width=
"50"
>
<
template
slot-scope=
"scope"
>
<span>
{{
scope
.
row
.
count
==
null
?
'--'
:
scope
.
row
.
count
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"操作"
>
<el-table-column
label=
"操作"
min-width=
"50"
>
<
template
slot-scope=
"scope"
>
<div
class=
"btn-group"
>
<el-button
:disabled=
"scope.row.levelName.indexOf('未分类') > -1"
@
click=
"handleEdit(scope.row, scope.$index)"
type=
"text"
>
{{
scope
.
row
.
editText
}}
</el-button>
...
...
@@ -59,11 +59,11 @@
<el-dialog
:title=
"newName"
:visible
.
sync=
"dialogVisible"
width=
"600px"
top=
"20%"
:close-on-click-modal=
"false"
custom-class=
"add-tag-dialog"
>
<div
class=
"newtype"
>
<p
class=
"name"
><span
class=
"required"
>
*
</span>
子分类
</p>
<el-input
style=
"width: 100%"
placeholder=
"请输入分类名称"
maxlength=
"10"
v-model=
"typeName"
show-word-limit
>
</el-input>
<el-input
style=
"width: 100%"
placeholder=
"请输入
子
分类名称"
maxlength=
"10"
v-model=
"typeName"
show-word-limit
>
</el-input>
</div>
<span
slot=
"footer"
class=
"dialog-footer"
>
<el-button
@
click=
"dialogVisible = false"
>
取 消
</el-button>
<el-button
type=
"primary"
@
click=
"newTag"
>
添 加
</el-button>
<el-button
type=
"primary"
@
click=
"newTag"
>
确 定
</el-button>
</span>
</el-dialog>
</div>
...
...
@@ -174,7 +174,8 @@ export default {
...
el
,
editName
:
false
,
editText
:
'编辑'
,
deleteText
:
'删除'
deleteText
:
'删除'
,
originLevelName
:
el
.
levelName
}));
this
.
editData
[
i
].
editName
=
true
;
this
.
editData
[
i
].
editText
=
'确认'
;
...
...
@@ -227,6 +228,7 @@ export default {
this
.
editData
[
i
].
editName
=
false
;
this
.
editData
[
i
].
editText
=
'编辑'
;
this
.
editData
[
i
].
deleteText
=
'删除'
;
this
.
editData
[
i
].
levelName
=
list
.
originLevelName
;
return
;
}
const
param
=
{
...
...
@@ -361,6 +363,7 @@ export default {
.light-active
{
background
:
#EBEFFE
;
color
:
#2f54eb
;
font-weight
:
500
;
}
.icon-next-
{
font-size
:
30px
;
...
...
@@ -409,17 +412,19 @@ export default {
}
}
.more
{
line-height
:
26
px
;
line-height
:
34
px
;
text-align
:
center
;
cursor
:
pointer
;
&:hover
{
color
:
#2f54eb
;
background-color
:
#f7f8fa
;
}
}
.add-tag-dialog
{
.newtype
{
.name
{
margin-bottom
:
10px
;
color
:
#303133
;
}
}
.required
{
...
...
@@ -450,6 +455,8 @@ export default {
}
.btn-group
{
font-size
:
0
;
display
:
flex
;
align-items
:
center
;
}
.menu-icon
{
width
:
16px
;
height
:
16px
;
...
...
src/view/platformTag/tag-container-active.vue
View file @
0e6883f5
...
...
@@ -2,7 +2,7 @@
<!-- 具体标签 -->
<div
class=
"tag-some-list"
>
<el-table
:data=
"tableData"
style=
"width: 100%"
>
<el-table-column
label=
"标签名称"
prop=
"tagName"
min-width=
"
10
0"
fixed=
"left"
>
<el-table-column
label=
"标签名称"
prop=
"tagName"
min-width=
"
23
0"
fixed=
"left"
>
<template
slot-scope=
"scope"
>
<span
class=
"tag-name"
>
{{
scope
.
row
.
tagName
}}
</span>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"添加标签"
placement=
"bottom"
>
...
...
@@ -10,12 +10,12 @@
</el-tooltip>
</
template
>
</el-table-column>
<el-table-column
label=
"上级分类名称"
min-width=
"
9
0"
prop=
"tagLevelGroupName"
>
<el-table-column
label=
"上级分类名称"
min-width=
"
11
0"
prop=
"tagLevelGroupName"
>
<
template
slot-scope=
"{ row }"
>
<span>
{{
row
.
tagLevelGroupName
||
'--'
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"覆盖人数"
prop=
"memberCount"
min-width=
"
8
0"
show-overflow-tooltip
>
<el-table-column
label=
"覆盖人数"
prop=
"memberCount"
min-width=
"
10
0"
show-overflow-tooltip
>
<
template
slot=
"header"
>
覆盖人数
<el-popover
width=
"260"
trigger=
"hover"
placement=
"top"
>
...
...
@@ -35,7 +35,7 @@
<div>
{{
scope
.
row
.
tagDescribe
?
scope
.
row
.
tagDescribe
:
'--'
}}
</div>
</
template
>
</el-table-column>
<el-table-column
label=
"创建时间"
prop=
"createTime"
min-width=
"
9
0"
>
<el-table-column
label=
"创建时间"
prop=
"createTime"
min-width=
"
10
0"
>
<
template
slot-scope=
"{ row }"
>
<template
v-if=
"row.createTime"
>
<p>
{{
dateformat
(
new
Date
(
row
.
createTime
),
'yyyy-MM-dd'
)
}}
</p>
...
...
@@ -44,11 +44,13 @@
<span
v-else
>
--
</span>
</template>
</el-table-column>
<el-table-column
label=
"操作"
fixed=
"right"
>
<
template
slot-scope=
"{ row }"
>
<el-button
type=
"text"
@
click=
"editActiveTag(row)"
>
编辑
</el-button>
<el-button
type=
"text"
@
click=
"editActiveTagValue(row)"
>
详情
</el-button>
<el-button
type=
"text"
@
click=
"deleteActiveTag(row)"
>
删除
</el-button>
<el-table-column
label=
"操作"
fixed=
"right"
min-width=
"200"
>
<
template
slot-scope=
"scope"
>
<div
class=
"font-0"
>
<el-button
class=
"m-r-12"
type=
"text"
@
click=
"editActiveTag(scope.row)"
>
编辑
</el-button>
<el-button
class=
"m-r-12"
type=
"text"
@
click=
"editActiveTagValue(scope.row)"
>
详情
</el-button>
<el-button
class=
"m-r-12"
type=
"text"
@
click=
"deleteActiveTag(scope.row, scope.$index, e)"
>
删除
</el-button>
</div>
</
template
>
</el-table-column>
</el-table>
...
...
@@ -62,6 +64,8 @@ import tagDetails from '@/components/tagDetail/mixin/index';
import
{
dateformat
}
from
'@/utils/formatTime'
;
import
{
delThirdHandTag
}
from
'@/request/api'
;
import
DeleteTagDialog
from
'../manualTag/delete-tag-dialog.vue'
;
import
errMsg
from
'@/common/js/error'
;
import
{
getRequest
}
from
'@/api/api'
;
export
default
{
name
:
'tag-container'
,
...
...
@@ -114,11 +118,24 @@ export default {
query
:
{
tagId
:
list
.
tagId
,
type
:
'active'
}
});
},
deleteActiveTag
(
list
)
{
deleteActiveTag
(
list
,
index
,
e
)
{
this
.
deleteTagDialog
.
visible
=
true
;
this
.
deleteTagDialog
.
deleteData
=
list
;
this
.
deleteTagDialog
.
deleteData
=
{
...
list
,
currentIndex
:
index
,
e
};
},
doDelete
(
list
)
{
const
{
currentIndex
:
index
,
e
,
memberCount
}
=
list
;
// memberCount为0时不加入垃圾桶,直接删除
if
(
memberCount
==
0
)
{
this
.
directDelTag
(
list
);
}
else
{
this
.
intoTrash
(
list
,
index
,
e
);
}
},
directDelTag
(
list
)
{
const
param
=
{
tagId
:
list
.
tagId
,
requestProject
:
'gic-member-tag-web'
...
...
@@ -131,10 +148,33 @@ export default {
type
:
'success'
,
duration
:
1000
});
this
.
$emit
(
'delete
Active
Tag'
,
this
.
groupId
);
this
.
$emit
(
'delete
Hand
Tag'
,
this
.
groupId
);
}
})
},
// 加入到垃圾桶
intoTrash
(
item
,
index
,
e
)
{
const
para
=
{
itemId
:
item
.
tagId
,
type
:
1
};
getRequest
(
'/delTagItem/add'
,
para
).
then
(
res
=>
{
const
{
errorCode
}
=
res
.
data
;
if
(
errorCode
===
1
)
{
item
.
delStatus
=
0
;
this
.
$store
.
commit
(
'changeDelTrashNum'
,
this
.
$store
.
state
.
delTrashNum
+
1
);
this
.
$message
.
success
(
'添加成功,请点击右侧「垃圾桶」图标进行删除'
);
// this.startAnimation(e)
return
;
}
errMsg
.
errorMsg
(
res
.
data
);
}).
catch
(
error
=>
{
this
.
$message
.
error
({
duration
:
1000
,
message
:
error
.
message
});
});
},
},
watch
:
{
data
:
{
...
...
@@ -179,14 +219,12 @@ export default {
cursor
:
pointer
;
color
:
#303133
;
transition
:
all
.3s
;
color
:
#2f54eb
;
&:hover
{
transform
:
scale
(
1.25
);
}
}
.refresh
{
color
:
#909399
;
&:hover
{
color
:
#2f54eb
;
}
color
:
#606266
;
}
</
style
>
src/view/platformTag/tag-container-system.vue
View file @
0e6883f5
...
...
@@ -2,7 +2,7 @@
<!-- 具体标签 -->
<div
class=
"tag-some-list"
>
<el-table
:data=
"tableData"
style=
"width: 100%"
>
<el-table-column
label=
"标签名称"
prop=
"tagName"
min-width=
"
130"
>
<el-table-column
label=
"标签名称"
prop=
"tagName"
min-width=
"
230"
fixed
>
<template
slot-scope=
"scope"
>
<span
class=
"tag-name"
>
{{
scope
.
row
.
tagName
}}
</span>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"添加标签"
placement=
"top"
>
...
...
@@ -10,12 +10,12 @@
</el-tooltip>
</
template
>
</el-table-column>
<el-table-column
label=
"是否实时"
prop=
"isActive"
min-width=
"
6
0"
>
<el-table-column
label=
"是否实时"
prop=
"isActive"
min-width=
"
7
0"
>
<
template
slot-scope=
"scope"
>
<span
:class=
"['base', scope.row.isActive == 1 ? 'keep-active' : 'no-active']"
>
{{
scope
.
row
.
isActive
==
1
?
'实时'
:
'非实时'
}}
</span>
</
template
>
</el-table-column>
<el-table-column
label=
"上级分类名称"
min-width=
"
9
0"
>
<el-table-column
label=
"上级分类名称"
min-width=
"
10
0"
>
<
template
slot-scope=
"{ row }"
>
<span>
{{
row
.
tagLevelGroupName
||
'--'
}}
</span>
</
template
>
...
...
@@ -76,7 +76,7 @@ export default {
changeMoreUse
(
row
)
{
const
params
=
{
tagId
:
row
.
tagId
,
isMoreUse
:
row
.
isMoreUse
?
0
:
1
};
updateMoreUse
(
params
).
then
(()
=>
{
this
.
$message
.
success
(
'设置成功
'
);
this
.
$message
.
success
(
params
.
isMoreUse
?
'已设为"常用标签"'
:
'已取消"设为常用标签"
'
);
row
.
isMoreUse
=
row
.
isMoreUse
?
0
:
1
;
})
}
...
...
@@ -124,6 +124,7 @@ export default {
cursor
:
pointer
;
color
:
#303133
;
transition
:
all
0.3s
;
color
:
#2f54eb
;
&:hover
{
transform
:
scale
(
1.25
);
}
...
...
@@ -135,20 +136,6 @@ export default {
}
}
.base
{
height
:
22px
;
border-radius
:
2px
;
padding
:
0
8px
;
display
:
inline-block
;
text-align
:
center
;
line-height
:
22px
;
font-size
:
12px
;
&.keep-active
{
background
:
#dee3fc
;
color
:
#2f54eb
;
}
&
.no-active
{
background
:
#feecda
;
color
:
#fa8c16
;
}
font-size
:
14px
;
}
</
style
>
src/view/platformTag/tag-container.vue
View file @
0e6883f5
...
...
@@ -2,7 +2,7 @@
<!-- 具体标签 -->
<div
class=
"tag-some-list"
>
<el-table
:data=
"tableData"
style=
"width: 100%"
@
sort-change=
"sortChange"
>
<el-table-column
label=
"标签名称"
prop=
"tagName"
min-width=
"
140"
>
<el-table-column
label=
"标签名称"
prop=
"tagName"
min-width=
"
230"
fixed
>
<template
slot-scope=
"scope"
>
<span
class=
"tag-name"
>
{{
scope
.
row
.
tagName
}}
</span>
<el-tooltip
class=
"item"
effect=
"dark"
content=
"添加标签"
placement=
"bottom"
>
...
...
@@ -30,7 +30,7 @@
{{
scope
.
row
.
memberCount
?
(
scope
.
row
.
memberCount
|
formatNum
)
+
'人'
:
'--'
}}
</
template
>
</el-table-column>
<el-table-column
label=
"标签类型"
prop=
"isMultiple"
min-width=
"1
5
0"
>
<el-table-column
label=
"标签类型"
prop=
"isMultiple"
min-width=
"1
0
0"
>
<
template
slot-scope=
"{ row }"
>
<div>
{{
row
.
isMultiple
?
'多选'
:
'单选'
}}
</div>
</
template
>
...
...
@@ -45,7 +45,7 @@
排序
<el-popover
width=
"260"
trigger=
"hover"
placement=
"top"
>
<div
style=
"color: #303133;"
>
控制好办上标签展示顺序,按照数字
升
序排序
控制好办上标签展示顺序,按照数字
降
序排序
</div>
<i
slot=
"reference"
class=
"iconfont icon-QuestionCircleOutlined refresh"
></i>
</el-popover>
...
...
@@ -64,11 +64,13 @@
<span
v-else
>
--
</span>
</template>
</el-table-column>
<el-table-column
label=
"操作"
v-if=
"(getCodeAuth('edit') || getCodeAuth('setValue') || getCodeAuth('delete'))"
min-width=
"200"
>
<el-table-column
label=
"操作"
v-if=
"(getCodeAuth('edit') || getCodeAuth('setValue') || getCodeAuth('delete'))"
min-width=
"200"
fixed=
"right"
>
<
template
slot-scope=
"scope"
>
<el-button
type=
"text"
v-if=
"!isWeim && getCodeAuth('edit')"
:limit-code=
"getCode('edit')"
@
click=
"editHandTag(scope.row)"
>
编辑
</el-button>
<el-button
type=
"text"
v-if=
"getCodeAuth('setValue')"
:limit-code=
"getCode('setValue')"
@
click=
"editHandTagValue(scope.row)"
>
详情
</el-button>
<el-button
type=
"text"
v-if=
"!isWeim && getCodeAuth('delete')"
:limit-code=
"getCode('delete')"
@
click=
"deleteHandTag(scope.row)"
>
删除
</el-button>
<div
class=
"font-0"
>
<el-button
class=
"m-r-12"
type=
"text"
v-if=
"!isWeim && getCodeAuth('edit')"
:limit-code=
"getCode('edit')"
@
click=
"editHandTag(scope.row)"
>
编辑
</el-button>
<el-button
class=
"m-r-12"
type=
"text"
v-if=
"getCodeAuth('setValue')"
:limit-code=
"getCode('setValue')"
@
click=
"editHandTagValue(scope.row)"
>
详情
</el-button>
<el-button
class=
"m-r-12"
type=
"text"
v-if=
"!isWeim && getCodeAuth('delete')"
:limit-code=
"getCode('delete')"
@
click=
"deleteHandTag(scope.row, scope.$index, $event)"
>
删除
</el-button>
</div>
</
template
>
</el-table-column>
</el-table>
...
...
@@ -82,8 +84,8 @@ import tagDetails from '@/components/tagDetail/mixin/index';
import
DeleteTagDialog
from
'../manualTag/delete-tag-dialog.vue'
;
import
{
delThirdHandTag
,
changeTagSort
}
from
'@/request/api'
;
import
{
dateformat
}
from
'@/utils/formatTime'
;
import
errMsg
from
'@/common/js/error'
;
import
{
getRequest
}
from
'@/api/api'
;
export
default
{
name
:
'tag-container'
,
...
...
@@ -128,11 +130,24 @@ export default {
query
:
{
tagId
:
list
.
tagId
,
type
:
'manual'
}
});
},
deleteHandTag
(
list
)
{
deleteHandTag
(
list
,
index
,
e
)
{
this
.
deleteTagDialog
.
visible
=
true
;
this
.
deleteTagDialog
.
deleteData
=
list
;
this
.
deleteTagDialog
.
deleteData
=
{
...
list
,
currentIndex
:
index
,
e
};
},
doDelete
(
list
)
{
const
{
currentIndex
:
index
,
e
,
memberCount
}
=
list
;
// memberCount为0时不加入垃圾桶,直接删除
if
(
memberCount
==
0
)
{
this
.
directDelTag
(
list
);
}
else
{
this
.
intoTrash
(
list
,
index
,
e
);
}
},
directDelTag
(
list
)
{
const
param
=
{
tagId
:
list
.
tagId
,
requestProject
:
'gic-member-tag-web'
...
...
@@ -149,6 +164,31 @@ export default {
}
})
},
// 加入到垃圾桶
intoTrash
(
item
,
index
,
e
)
{
console
.
log
(
item
);
const
para
=
{
itemId
:
item
.
tagId
,
type
:
1
};
getRequest
(
'/delTagItem/add'
,
para
).
then
(
res
=>
{
const
{
errorCode
}
=
res
.
data
;
if
(
errorCode
===
1
)
{
item
.
delStatus
=
0
;
console
.
log
(
this
.
$store
.
state
.
delTrashNum
+
1
);
this
.
$store
.
commit
(
'changeDelTrashNum'
,
this
.
$store
.
state
.
delTrashNum
+
1
);
this
.
$message
.
success
(
'添加成功,请点击右侧「垃圾桶」图标进行删除'
);
// this.startAnimation(e)
return
;
}
errMsg
.
errorMsg
(
res
.
data
);
}).
catch
(
error
=>
{
this
.
$message
.
error
({
duration
:
1000
,
message
:
error
.
message
});
});
},
handleTrackParam
(
type
,
data
)
{
let
fn
=
{
addTag
:
()
=>
{
...
...
@@ -236,17 +276,15 @@ export default {
font-size
:
16px
;
cursor
:
pointer
;
transition
:
all
.3s
;
color
:
#2f54eb
;
&:hover
{
transform
:
scale
(
1.25
);
}
}
.refresh
{
color
:
#
909399
;
color
:
#
606266
;
position
:
relative
;
top
:
1px
;
&:hover
{
color
:
#2f54eb
;
}
}
.sort
{
//
/deep/
.el-input__inner
{
...
...
static/css/public.css
View file @
0e6883f5
...
...
@@ -349,6 +349,9 @@ input:focus {
.m-r-10
{
margin-right
:
10px
;
}
.m-r-12
{
margin-right
:
12px
;
}
.m-r-20
{
margin-right
:
20px
;
}
...
...
@@ -540,6 +543,9 @@ i {
font-style
:
normal
;
font-weight
:
normal
;
}
.font-0
{
font-size
:
0
;
}
.font-10
{
font-size
:
10px
;
}
...
...
theme/index.css
View file @
0e6883f5
...
...
@@ -11263,7 +11263,7 @@
.el-button
:focus
{
color
:
#2F54EB
;
border-color
:
#2F54EB
;
background-color
:
#
e8f4ff
;
background-color
:
#
EBEFFE
;
}
.el-button
:active
{
...
...
@@ -11385,8 +11385,8 @@
.el-button--primary.is-plain
{
color
:
#2F54EB
;
background
:
#
e8f4ff
;
border-color
:
#
a3d3ff
;
background
:
#
EBEFFE
;
border-color
:
#
2f54eb
;
}
.el-button--primary.is-plain
:hover
,
...
...
@@ -11408,7 +11408,7 @@
.el-button--primary.is-plain.is-disabled
:focus
,
.el-button--primary.is-plain.is-disabled
:active
{
color
:
#74bcff
;
background-color
:
#
e8f4ff
;
background-color
:
#
EBEFFE
;
border-color
:
#d1e9ff
;
}
...
...
@@ -12526,7 +12526,7 @@
.el-dropdown-menu__item
:not
(
.is-disabled
)
:hover
,
.el-dropdown-menu__item
:focus
{
background-color
:
#
e8f4ff
;
background-color
:
#
EBEFFE
;
color
:
#597EF7
;
}
...
...
@@ -13663,7 +13663,7 @@
.el-menu-item
:hover
,
.el-menu-item
:focus
{
outline
:
none
;
background-color
:
#
e8f4ff
;
background-color
:
#
EBEFFE
;
}
.el-menu-item.is-disabled
{
...
...
@@ -13721,7 +13721,7 @@
.el-submenu__title
:hover
,
.el-submenu__title
:focus
{
outline
:
none
;
background-color
:
#
e8f4ff
;
background-color
:
#
EBEFFE
;
}
.el-submenu__title.is-disabled
{
...
...
@@ -13731,7 +13731,7 @@
}
.el-submenu__title
:hover
{
background-color
:
#
e8f4ff
;
background-color
:
#
EBEFFE
;
}
.el-submenu
.el-menu
{
...
...
@@ -25700,7 +25700,7 @@
.el-button
:focus
{
color
:
#2F54EB
;
border-color
:
#2F54EB
;
background-color
:
#
e8f4ff
;
background-color
:
#
EBEFFE
;
}
.el-button
:active
{
...
...
@@ -25822,8 +25822,8 @@
.el-button--primary.is-plain
{
color
:
#2F54EB
;
background
:
#
e8f4ff
;
border-color
:
#
a3d3ff
;
background
:
#
EBEFFE
;
border-color
:
#
2f54eb
;
}
.el-button--primary.is-plain
:hover
,
...
...
@@ -25845,7 +25845,7 @@
.el-button--primary.is-plain.is-disabled
:focus
,
.el-button--primary.is-plain.is-disabled
:active
{
color
:
#74bcff
;
background-color
:
#
e8f4ff
;
background-color
:
#
EBEFFE
;
border-color
:
#d1e9ff
;
}
...
...
@@ -29645,18 +29645,18 @@
}
.el-table--striped
.el-table__body
tr
.el-table__row--striped.current-row
td
{
background-color
:
#
e8f4ff
;
background-color
:
#
EBEFFE
;
}
.el-table__body
tr
.hover-row
>
td
,
.el-table__body
tr
.hover-row.current-row
>
td
,
.el-table__body
tr
.hover-row.el-table__row--striped
>
td
,
.el-table__body
tr
.hover-row.el-table__row--striped.current-row
>
td
{
background-color
:
#
e8f4ff
;
background-color
:
#
EBEFFE
;
}
.el-table__body
tr
.current-row
>
td
{
background-color
:
#
e8f4ff
;
background-color
:
#
EBEFFE
;
}
.el-table__column-resize-proxy
{
...
...
@@ -31929,7 +31929,7 @@
}
.el-table-filter__list-item
:hover
{
background-color
:
#
e8f4ff
;
background-color
:
#
EBEFFE
;
color
:
#597EF7
;
}
...
...
@@ -49297,7 +49297,7 @@
.el-button
:focus
{
color
:
#2F54EB
;
border-color
:
#2F54EB
;
background-color
:
#
e8f4ff
;
background-color
:
#
EBEFFE
;
}
.el-button
:active
{
...
...
@@ -49419,8 +49419,8 @@
.el-button--primary.is-plain
{
color
:
#2F54EB
;
background
:
#
e8f4ff
;
border-color
:
#
a3d3ff
;
background
:
#
EBEFFE
;
border-color
:
#
2f54eb
;
}
.el-button--primary.is-plain
:hover
,
...
...
@@ -49442,7 +49442,7 @@
.el-button--primary.is-plain.is-disabled
:focus
,
.el-button--primary.is-plain.is-disabled
:active
{
color
:
#74bcff
;
background-color
:
#
e8f4ff
;
background-color
:
#
EBEFFE
;
border-color
:
#d1e9ff
;
}
...
...
@@ -77876,8 +77876,8 @@
.el-button--primary.is-plain
{
color
:
#2F54EB
;
background
:
#
e8f4ff
;
border-color
:
#
a3d3ff
;
background
:
#
EBEFFE
;
border-color
:
#
2f54eb
;
}
.el-button--primary.is-plain
:hover
,
...
...
@@ -77897,7 +77897,7 @@
/* .el-button--primary.is-plain.is-disabled, .el-button--primary.is-plain.is-disabled:hover, .el-button--primary.is-plain.is-disabled:focus, .el-button--primary.is-plain.is-disabled:active {
color: #74bcff;
background-color: #
e8f4ff
;
background-color: #
EBEFFE
;
border-color: #d1e9ff; } */
.el-button--success
{
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