提交 41b9df6d authored 作者: 王诒正's avatar 王诒正

添加触达,编辑触达,删除触达,触达列表

上级 8cd88b96
......@@ -4,7 +4,52 @@ import httpRequest from '@/utils/axios'
export function bindWechat(data) {
return httpRequest.post('/api/passport/rest/wechat/bind-unionid', data)
}
// 获取用户信息
export function getTriggerList() {
// 获取触达方式列表
export function getTriggerWayList() {
return httpRequest.get('/api/opera/v1/oprations/reach/ways')
}
// 获取触达方式详情
export function triggerWay(id) {
return httpRequest.get(`/api/opera/v1/oprations/reach/${id}/way`)
}
// 编辑触达方式
export function triggerWayUpdate(id, data) {
return httpRequest.put(`/api/opera/v1/oprations/reach/${id}/way`, data)
}
// 创建触达方式
export function triggerWayCreate(data) {
return httpRequest.post('/api/opera/v1/oprations/reach/way', data)
}
// 删除触达方式
export function triggerWayDelete(id, params = {}) {
return httpRequest.delete(`/api/opera/v1/oprations/reach/${id}/way`, { params })
}
// 获取触达时间列表
export function getTriggerDateList() {
return httpRequest.get('/api/opera/v1/oprations/reach/dates')
}
// 获取触达时间详情
export function triggerDate(id) {
return httpRequest.get(`/api/opera/v1/oprations/reach/${id}/date`)
}
// 编辑触达时间
export function triggerDateUpdate(id, data) {
return httpRequest.put(`/api/opera/v1/oprations/reach/${id}/date`, data)
}
// 创建触达时间
export function triggerDateCreate(data) {
return httpRequest.post('/api/opera/v1/oprations/reach/date', data)
}
// 删除触达时间
export function triggerDateDelete(id, params = {}) {
return httpRequest.delete(`/api/opera/v1/oprations/reach/${id}/date`, { params })
}
......@@ -26,7 +26,7 @@ export default {
return {
defaultMenus: [
{
title: '案例背景',
title: '案例背景编辑',
icon: '',
path: '/yhfq/albj'
// children: [
......@@ -35,9 +35,8 @@ export default {
// // { title: '用户群分析', path: '/yhfq/yhqfx' }
// ]
},
{ title: '用户触达编辑', icon: '', path: '/triggerEditor' },
{ title: '用户群分析', icon: '', path: '/' },
{ title: '用户触达', icon: '', path: '/' }
{ title: '用户群特征编辑', icon: '', path: '/characteristicsEditor' },
{ title: '用户触达编辑', icon: '', path: '/triggerEditor' }
]
}
},
......
<template>
<div>
<div>
<el-card class="box-card">
<el-breadcrumb separator-class="el-icon-arrow-right">
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
<el-breadcrumb-item>用户群特征编辑</el-breadcrumb-item>
</el-breadcrumb>
</el-card>
</div>
</div>
</template>
<script>
</script>
......@@ -40,7 +40,7 @@
</el-row>
<template #footer>
<div class="app-container-ft">
<el-button type="primary" size="mini">确定</el-button>
<el-button type="primary" size="mini" @click="cli">确定</el-button>
</div>
</template>
</app-container>
......@@ -91,9 +91,12 @@ export default {
}
return result
},
cli() {
console.log(this.triggerMode)
},
getList() {
api
.getTriggerList()
.getTriggerWayList()
.then(response => {
if (response.data.length !== 0) {
this.triggerMode = response.data
......@@ -102,6 +105,17 @@ export default {
.finally(() => {
this.submitLoading = false
})
api
.getTriggerDateList()
.then(response => {
if (response.data.length !== 0) {
this.triggerTime = response.data
}
})
.finally(() => {
this.submitLoading = false
})
}
}
}
......
<template>
<div>
<div>
<el-card class="box-card">
<el-breadcrumb separator-class="el-icon-arrow-right">
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
<el-breadcrumb-item>用户触达编辑</el-breadcrumb-item>
</el-breadcrumb>
</el-card>
</div>
<div>
<el-tabs v-model="triggerName" type="border-card" @tab-click="handleClick">
<div>
<el-card class="box-card">
<el-row>
<el-button size="mini" icon="el-icon-plus" @click="showAddView" type="success">添 加</el-button>
</el-row>
</el-card>
</div>
<el-tab-pane label="触达方式" name="way">
<div>
<el-card class="box-card">
<el-table
:data="wayTableData"
border
style="width: 100%">
<el-table-column
fixed
prop="created_at"
label="日期">
</el-table-column>
<el-table-column
fixed
prop="option"
label="选项">
</el-table-column>
<el-table-column
fixed
prop="context"
label="触达方式">
</el-table-column>
<el-table-column
fixed="right"
label="操作">
<template slot-scope="scope">
<el-button type="primary" icon="el-icon-edit" circle @click="shoWayEditView(scope.row.id)"></el-button>
<el-button type="danger" icon="el-icon-delete" circle @click="deleteWay(scope.row.id)"></el-button>
</template>
</el-table-column>
</el-table>
</el-card>
</div>
</el-tab-pane>
<el-tab-pane label="触达时间" name="date">
<div>
<el-card class="box-card">
<el-table
:data="dateTableData"
border
style="width: 100%">
<el-table-column
fixed
prop="created_at"
label="日期">
</el-table-column>
<el-table-column
fixed
prop="option"
label="选项">
</el-table-column>
<el-table-column
fixed
prop="context"
label="触达方式">
</el-table-column>
<el-table-column
fixed="right"
label="操作">
<template slot-scope="scope">
<el-button type="primary" icon="el-icon-edit" circle @click="shoDateEditView(scope.row.id)"></el-button>
<el-button type="danger" icon="el-icon-delete" circle @click="deleteDate(scope.row.id)"></el-button>
</template>
</el-table-column>
</el-table>
</el-card>
</div>
</el-tab-pane>
</el-tabs>
</div>
<div>
<el-dialog title="添加触达方式" :visible.sync="dialogWayFormVisible">
<el-form size="mini" :model="wayForm">
<el-form-item label="选项" label-width="100px">
<el-select v-model="wayForm.option" placeholder="请选择">
<el-option
v-for="(item, index) in optionsList"
:label="item"
:value="item"
:key="index">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="触达方式" label-width="100px">
<el-input v-model="wayForm.context"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button size="mini" @click="dialogWayFormVisible = false">取 消</el-button>
<el-button size="mini" type="primary" @click="saveWay">保 存</el-button>
</div>
</el-dialog>
</div>
<div>
<el-dialog title="编辑触达方式" :visible.sync="dialogWayUpdateVisible">
<el-form size="mini" :model="wayEditForm">
<el-form-item label="选项" label-width="100px">
<el-select v-model="wayEditForm.option" disabled>
<el-option
:label="wayEditForm.option"
:value="wayEditForm.option">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="触达方式" label-width="100px">
<el-input v-model="wayEditForm.context"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button size="mini" @click="dialogWayUpdateVisible = false">取 消</el-button>
<el-button size="mini" type="primary" @click="updateWay">保 存</el-button>
</div>
</el-dialog>
</div>
<div>
<el-dialog title="添加触达时间" :visible.sync="dialogDateFormVisible">
<el-form size="mini" :model="dateForm">
<el-form-item label="选项" label-width="100px">
<el-select v-model="dateForm.option" placeholder="请选择">
<el-option
v-for="(item, index) in optionsList"
:label="item"
:value="item"
:key="index">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="触达时间" label-width="100px">
<el-input v-model="dateForm.context"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button size="mini" @click="dialogDateFormVisible = false">取 消</el-button>
<el-button size="mini" type="primary" @click="saveDate">保 存</el-button>
</div>
</el-dialog>
</div>
<div>
<el-dialog title="编辑触达时间" :visible.sync="dialogDateUpdateVisible">
<el-form size="mini" :model="dateEditForm">
<el-form-item label="选项" label-width="100px">
<el-select v-model="dateEditForm.option" disabled>
<el-option
:label="dateEditForm.option"
:value="dateEditForm.option">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="触达方式" label-width="100px">
<el-input v-model="dateEditForm.context"></el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button size="mini" @click="dialogDateUpdateVisible = false">取 消</el-button>
<el-button size="mini" type="primary" @click="updateDate">保 存</el-button>
</div>
</el-dialog>
</div>
</div>
</template>
<script>
import * as trrigerApi from '@/api/triggerEdit'
export default {
name: 'trigger',
data() {
return {
triggerName: 'way',
dialogWayFormVisible: false,
dialogWayUpdateVisible: false,
dialogDateFormVisible: false,
dialogDateUpdateVisible: false,
optionsList: [],
wayForm: {
option: '',
context: ''
},
wayEditForm: {
id: '',
option: '',
context: ''
},
dateForm: {
option: '',
context: ''
},
dateEditForm: {
id: '',
option: '',
context: ''
},
wayTableData: [],
dateTableData: []
}
},
mounted() {
this.optionsList = this.A_Z()
if (this.triggerName === 'way') {
trrigerApi.getTriggerWayList().then(res => {
console.log(res)
if (res.code === 0) {
this.wayTableData = res.data
return true
} else {
this.$message.error(res.message)
return false
}
})
} else if (this.triggerName === 'date') {
trrigerApi.getTriggerDateList().then(res => {
console.log(res)
if (res.code === 0) {
this.TableData = res.data
return true
} else {
this.$message.error(res.message)
return false
}
})
}
},
methods: {
handleClick(tab, event) {
if (this.triggerName === 'way') {
trrigerApi.getTriggerWayList().then(res => {
if (res.code === 0) {
this.wayTableData = res.data
return true
} else {
this.$message.error(res.message)
return false
}
})
} else if (this.triggerName === 'date') {
trrigerApi.getTriggerDateList().then(res => {
if (res.code === 0) {
this.dateTableData = res.data
return true
} else {
this.$message.error(res.message)
return false
}
})
}
},
showAddView() {
switch (this.triggerName) {
case 'way':
this.dialogWayFormVisible = true
break
case 'date':
this.dialogDateFormVisible = true
break
default:
return false
}
},
saveWay() {
trrigerApi.triggerWayCreate(this.wayForm).then(res => {
if (res.code === 0) {
this.$message.success(res.message)
this.dialogWayFormVisible = false
trrigerApi.getTriggerWayList().then(res => {
if (res.code === 0) {
this.wayTableData = res.data
return true
} else {
this.$message.error(res.message)
return false
}
})
return true
} else {
this.$message.error(res.message)
return false
}
}).catch(error => {
console.log(error)
return false
})
},
saveDate() {
trrigerApi.triggerDateCreate(this.dateForm).then(res => {
if (res.code === 0) {
this.$message.success(res.message)
this.dialogDateFormVisible = false
trrigerApi.getTriggerDateList().then(res => {
if (res.code === 0) {
this.dateTableData = res.data
return true
} else {
this.$message.error(res.message)
return false
}
})
return true
} else {
this.$message.error(res.message)
return false
}
}).catch(error => {
console.log(error)
return false
})
},
deleteWay(id) {
this.$confirm('确认删除?', '提示').then(_ => {
trrigerApi.triggerWayDelete(id).then(res => {
if (res.code === 0) {
this.$message.success(res.message)
trrigerApi.getTriggerWayList().then(res => {
if (res.code === 0) {
this.wayTableData = res.data
return true
} else {
this.$message.error(res.message)
return false
}
})
return true
} else {
this.$message.error(res.message)
return false
}
}).catch(error => {
console.log(error)
this.$message.error('删除失败')
return false
})
return true
}).catch(_ => {
return false
})
},
deleteDate(id) {
this.$confirm('确认删除?', '提示').then(_ => {
trrigerApi.triggerDateDelete(id).then(res => {
if (res.code === 0) {
this.$message.success(res.message)
trrigerApi.getTriggerDateList().then(res => {
if (res.code === 0) {
this.dateTableData = res.data
return true
} else {
this.$message.error(res.message)
return false
}
})
return true
} else {
this.$message.error(res.message)
return false
}
}).catch(error => {
console.log(error)
this.$message.error('删除失败')
return false
})
}).catch(_ => {
return false
})
},
shoWayEditView(id) {
this.dialogWayUpdateVisible = true
trrigerApi.triggerWay(id).then(res => {
if (res.code === 0) {
var way = res.data
this.wayEditForm.option = way.option
this.wayEditForm.context = way.context
this.wayEditForm.id = way.id
return true
} else {
this.$message.error(res.message)
return false
}
})
},
updateWay(id) {
this.dialogWayUpdateVisible = false
trrigerApi.triggerWayUpdate(this.wayEditForm.id, this.wayEditForm).then(res => {
if (res.code === 0) {
this.$message.success(res.message)
trrigerApi.getTriggerWayList().then(res => {
if (res.code === 0) {
this.wayTableData = res.data
return true
} else {
this.$message.error(res.message)
return false
}
})
return true
} else {
this.$message.error(res.message)
return false
}
})
},
shoDateEditView(id) {
this.dialogDateUpdateVisible = true
trrigerApi.triggerDate(id).then(res => {
if (res.code === 0) {
var date = res.data
this.dateEditForm.option = date.option
this.dateEditForm.context = date.context
this.dateEditForm.id = date.id
return true
} else {
this.$message.error(res.message)
return false
}
})
},
updateDate(id) {
this.dialogDateUpdateVisible = false
trrigerApi.triggerDateUpdate(this.dateEditForm.id, this.dateEditForm).then(res => {
if (res.code === 0) {
this.$message.success(res.message)
trrigerApi.getTriggerDateList().then(res => {
if (res.code === 0) {
this.dateTableData = res.data
return true
} else {
this.$message.error(res.message)
return false
}
})
return true
} else {
this.$message.error(res.message)
return false
}
})
},
// 获取a-z的数组
A_Z() {
const result = []
for (let i = 0; i < 26; i++) {
result.push(String.fromCharCode(65 + i))
}
return result
}
}
}
</script>
......@@ -4,7 +4,7 @@
<el-card class="box-card">
<el-breadcrumb separator-class="el-icon-arrow-right">
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
<el-breadcrumb-item :to="{ name: 'case-list', params: { level: this.level.toStirng() } }">案例背景</el-breadcrumb-item>
<el-breadcrumb-item :to="{ name: 'case-list', params: { level: this.level } }">案例背景</el-breadcrumb-item>
<el-breadcrumb-item :to="{ path: '/yhfq/albj/detail' }">案例背景</el-breadcrumb-item>
</el-breadcrumb>
</el-card>
......
......@@ -4,7 +4,7 @@
<el-card class="box-card">
<el-breadcrumb separator-class="el-icon-arrow-right">
<el-breadcrumb-item :to="{ path: '/' }">首页</el-breadcrumb-item>
<el-breadcrumb-item :to="{ name: 'case-list', query: { level: this.$route.query.level } }">案例背景</el-breadcrumb-item>
<el-breadcrumb-item :to="{ name: 'case-list', query: { level: this.case.level.toString() } }">案例背景</el-breadcrumb-item>
<el-breadcrumb-item :to="{ name: 'group-list' }">用户群</el-breadcrumb-item>
</el-breadcrumb>
</el-card>
......
......@@ -31,7 +31,11 @@ export default [
},
{
path: '/triggerEditor',
component: () => import(/* webpackChunkName: "triggerEditor" */ '@/pages/triggerEditor/index')
component: () => import(/* webpackChunkName: "triggerEditor" */ '@/pages/triggerEditor/list')
},
{
path: '/characteristicsEditor',
component: () => import(/* webpackChunkName: "triggerEditor" */ '@/pages/characteristicsEditor/index')
},
...userGroup
]
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论