Skip to content
Projects
Groups
Snippets
Help
This project
Loading...
Sign in / Register
Toggle navigation
M
marketing
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
marketing-web
marketing
Commits
8ec20f6a
Commit
8ec20f6a
authored
Mar 21, 2022
by
crushh
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
update: list
parent
ca347aa6
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
60 additions
and
13 deletions
+60
-13
aiApi.js
src/service/api/aiApi.js
+6
-0
birthSense.vue
src/views/ai/birthSense.vue
+26
-4
form.vue
src/views/ai/form.vue
+3
-2
task.vue
src/views/ai/task.vue
+25
-7
No files found.
src/service/api/aiApi.js
View file @
8ec20f6a
...
...
@@ -17,3 +17,9 @@ export const aiDictList = params => requests('/api-marketing/ai-dict-list', para
//新建ai活动
export
const
initActivity
=
params
=>
requests
(
PREFIX
+
'/init-activity'
,
params
,
true
);
//终止活动计划
export
const
stopActivityPlan
=
params
=>
requests
(
PREFIX
+
'stop-activity-plan'
,
params
,
true
,
false
,
'get'
);
//重新开启活动计划
export
const
startActivityPlan
=
params
=>
requests
(
PREFIX
+
'start-activity-plan'
,
params
,
true
,
false
,
'get'
);
src/views/ai/birthSense.vue
View file @
8ec20f6a
...
...
@@ -3,7 +3,13 @@
<el-form-item
label=
"外呼时间"
required
>
<el-radio
v-model=
"form.birth_type"
:label=
"1"
@
change=
"onChangeEffectType"
>
生日当天
</el-radio>
<el-radio
v-model=
"form.birth_type"
:label=
"2"
@
change=
"onChangeEffectType"
>
生日当月
</el-radio>
<el-radio
v-model=
"form.birth_type"
:label=
"3"
@
change=
"onChangeEffectType"
>
生日前
<el-input
class=
"w100"
style=
"margin:0 5px;"
v-model=
"form.birth_days"
/>
天
</el-radio>
<el-radio
v-model=
"form.birth_type"
:label=
"3"
@
change=
"onChangeEffectType"
>
生日前
<el-form-item
prop=
"birth_days"
style=
"display: inline-block;"
>
<el-input-number
class=
"w100"
style=
"margin:0 5px;"
v-model=
"form.birth_days"
controls-position=
"right"
:max=
"30"
:min=
"1"
size=
"small"
/>
天
</el-form-item>
</el-radio>
</el-form-item>
<el-form-item
label=
"生日范围"
prop=
"birthDate1"
v-show=
"form.birth_type == 1 || form.birth_type == 3"
>
<el-date-picker
value-format=
"timestamp"
format=
"MM-dd"
v-model=
"form.birthDate1"
@
change=
"handleDateChange"
:picker-options=
"pickerOptions"
type=
"daterange"
placeholder=
"请选择生日范围"
range-separator=
"~"
start-placeholder=
"开始日期"
end-placeholder=
"结束日期"
>
</el-date-picker>
...
...
@@ -43,9 +49,16 @@ export default {
}
callback
();
};
const
birthDaysValidtor
=
(
rule
,
value
,
callback
)
=>
{
if
(
this
.
form
.
birth_type
==
3
&&
!
value
)
{
return
callback
(
new
Error
(
'不能为空'
));
}
callback
();
};
return
{
formatDateTimeByType
,
form
:
{
birth_days
:
' '
,
birthDate1
:
''
,
//生日范围 当天
birthDate2
:
''
,
//生日范围 当月
birth_type
:
1
,
//外呼时间 1当天 2当月 3生日前
...
...
@@ -53,7 +66,8 @@ export default {
},
rules
:
{
birthDate1
:
{
validator
:
birthDateValidtor
},
birthDate2
:
{
validator
:
birthDateValidtor
}
birthDate2
:
{
validator
:
birthDateValidtor
},
birth_days
:
{
validator
:
birthDaysValidtor
}
},
pickerOptions
:
{
onPick
(
time
)
{
...
...
@@ -100,6 +114,10 @@ export default {
str
=
formatDateTimeByType
(
this
.
form
.
birthDate1
[
0
],
'yyyy-MM-dd'
)
+
' 至 '
+
formatDateTimeByType
(
this
.
form
.
birthDate1
[
1
],
'yyyy-MM-dd'
);
}
else
if
(
this
.
form
.
birth_type
==
2
&&
this
.
form
.
birthDate2
.
length
)
{
str
=
formatDateTimeByType
(
this
.
form
.
birthDate2
[
0
],
'yyyy-MM-dd'
)
+
' 至 '
+
formatDateTimeByType
(
this
.
form
.
birthDate2
[
1
],
'yyyy-MM-dd'
);
}
else
if
(
this
.
form
.
birth_type
==
3
&&
this
.
form
.
birthDate1
.
length
)
{
let
start
=
this
.
form
.
birthDate1
[
0
]
-
this
.
form
.
birth_days
*
24
*
60
*
60
*
1000
;
let
end
=
this
.
form
.
birthDate1
[
1
]
-
this
.
form
.
birth_days
*
24
*
60
*
60
*
1000
;
str
=
formatDateTimeByType
(
start
,
'yyyy-MM-dd'
)
+
' 至 '
+
formatDateTimeByType
(
end
,
'yyyy-MM-dd'
);
}
return
str
;
}
...
...
@@ -120,17 +138,21 @@ export default {
});
this
.
$refs
.
form
.
validate
(
val
=>
{
if
(
val
)
{
const
{
birth_type
,
call_flag
,
birthDate1
,
birthDate2
,
callTime
}
=
this
.
form
;
const
{
birth_type
,
call_flag
,
birthDate1
,
birthDate2
,
callTime
,
birth_days
}
=
this
.
form
;
const
obj
=
{
startDate
:
birth_type
==
2
?
birthDate2
[
0
]
:
birthDate1
[
0
],
endDate
:
birth_type
==
2
?
birthDate2
[
1
]
:
birthDate1
[
1
],
call_flag
,
birth_type
,
callTime
callTime
,
birth_days
};
if
(
arr
.
length
)
{
obj
.
callTime
=
arr
;
}
if
(
birth_type
!=
3
)
{
obj
.
birth_days
=
undefined
;
}
resolve
(
obj
);
}
else
{
resolve
(
false
);
...
...
src/views/ai/form.vue
View file @
8ec20f6a
...
...
@@ -298,7 +298,7 @@ export default {
async
submit
()
{
const
activeTimeData
=
await
this
.
$refs
.
birthSense
.
submit
();
if
(
!
activeTimeData
)
return
;
const
{
startDate
,
endDate
,
call_flag
,
birth_type
,
callTime
}
=
activeTimeData
;
const
{
startDate
,
endDate
,
call_flag
,
birth_type
,
callTime
,
birth_days
}
=
activeTimeData
;
this
.
$refs
.
form
.
validate
(
async
(
val
,
obj
)
=>
{
console
.
log
(
val
);
console
.
log
(
obj
);
...
...
@@ -322,7 +322,8 @@ export default {
memberType
,
filterJson
,
sceneJson
:
JSON
.
stringify
({
birth_type
birth_type
,
birth_days
}),
activityEventList
:
[
{
...
...
src/views/ai/task.vue
View file @
8ec20f6a
...
...
@@ -89,7 +89,7 @@
</template>
<
script
>
import
{
pageStatistics
,
page
,
rechargeCenter
}
from
'@/service/api/aiApi.js'
;
import
{
pageStatistics
,
page
,
rechargeCenter
,
stopActivityPlan
,
startActivityPlan
}
from
'@/service/api/aiApi.js'
;
import
{
formatDateTimeByType
}
from
'@/utils/index.js'
;
import
filterAvater
from
'@/mixins/filterAvater.js'
;
import
dmDropdown
from
'@/components/dm-drop-down/dm-drop-down'
;
...
...
@@ -139,9 +139,7 @@ export default {
visible
:
row
=>
{
return
row
.
activityPlanStatus
===
0
||
row
.
activityPlanStatus
==
1
;
},
handler
:
row
=>
{
console
.
log
(
'终止'
);
}
handler
:
row
=>
this
.
stopTask
(
row
)
},
{
text
:
'重新开启'
,
...
...
@@ -151,9 +149,7 @@ export default {
visible
:
row
=>
{
return
row
.
activityPlanStatus
===
5
;
},
handler
:
row
=>
{
console
.
log
(
'重新开启'
);
}
handler
:
row
=>
this
.
rebootTask
(
row
)
},
{
text
:
'复制'
,
...
...
@@ -355,6 +351,28 @@ export default {
async
getStatistics
(
para
)
{
const
{
result
}
=
await
pageStatistics
([
1
,
2
,
3
]).
finally
(()
=>
(
this
.
loading
=
false
));
console
.
log
(
result
);
},
stopTask
(
row
)
{
this
.
$confirm
(
'任务终止后未外呼的客户将停止外呼任务,终止后不可重新启用任务,是否继续终止任务?'
,
'提示'
,
{
confirmButtonText
:
'终止'
,
cancelBUttonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
stopActivityPlan
({
planId
:
row
.
planId
}).
then
(
res
=>
{
this
.
getTableData
();
});
});
},
rebootTask
(
row
)
{
this
.
$confirm
(
'重新开启任务后,将会对未外呼的客户进行外呼,是否确定重新开启营销活动?'
,
'提示'
,
{
confirmButtonText
:
'确定'
,
cancelBUttonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
startActivityPlan
({
planId
:
row
.
planId
}).
then
(
res
=>
{
this
.
getTableData
();
});
});
}
}
};
...
...
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