提交 321e0a16 authored 作者: 王诒正's avatar 王诒正

触达方案

上级 cf45d84b
import httpRequest from '@/utils/axios'
// 用户群列表
export function groupList(params) {
export function groupList(params = {}) {
return httpRequest.get('/api/opera/v1/oprations/cgroups', { params })
}
......
import httpRequest from '@/utils/axios'
// 添加触达
export function reachCreate(data) {
return httpRequest.post('/api/opera/v1/oprations/reach', data)
}
// 触达列表
export function reachList(params = {}) {
return httpRequest.get('/api/opera/v1/oprations/reachs', { params })
}
// 触达详情
export function reachInfo(id, params = {}) {
return httpRequest.get(`/api/opera/v1/oprations/${id}}/reach`, { params })
}
// 触达更新
export function reachUpdate(id, data = {}) {
return httpRequest.put(`/api/opera/v1/oprations/${id}}/reach`, data)
}
// 触达删除
export function reachDelete(id, params = {}) {
return httpRequest.delete(`/api/opera/v1/oprations/${id}}/reach`, { params })
}
......@@ -205,6 +205,13 @@ export default {
console.log(opera.row)
switch (opera.tag) {
case 'reach':
this.$router.push({
name: 'reach-list',
query: {
id: opera.row.id,
level: opera.row.level
}
})
break
case 'group':
this.$router.push({
......
......@@ -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.case.level.toString() } }">案例背景</el-breadcrumb-item>
<el-breadcrumb-item :to="{ name: 'case-list', query: { level: this.case.level + '' } }">案例背景</el-breadcrumb-item>
<el-breadcrumb-item :to="{ name: 'group-list' }">用户群</el-breadcrumb-item>
</el-breadcrumb>
</el-card>
......
<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 :to="{ name: 'case-list', query: { level: this.case.level + '' } }">案例背景</el-breadcrumb-item>
<el-breadcrumb-item :to="{ name: 'reach-list' }">触达方案</el-breadcrumb-item>
</el-breadcrumb>
</el-card>
</div>
<div>
<div>
<el-card class="box-card">
<span><strong>当前案例:</strong> {{ this.case.name }}</span>
</el-card>
</div>
<div>
<el-card class="box-card">
<el-row>
<el-button size="mini" icon="el-icon-plus" type="success" @click="dialogAddVisible = true">
添 加
</el-button>
</el-row>
</el-card>
</div>
<div>
<el-card class="box-card">
<el-table
:data="tableData"
border
style="width: 100%">
<el-table-column
fixed
prop="created_at"
label="日期">
</el-table-column>
<el-table-column
fixed
label="用户群名称">
<template slot-scope="scope">
{{ scope.row.group.name }}
</template>
</el-table-column>
<el-table-column
fixed
label="触达方式">
<template slot-scope="scope">
<el-tag size="mini" type="">{{ scope.row.way.option }}</el-tag>
{{ scope.row.way.context }}
</template>
</el-table-column>
<el-table-column
fixed
label="触达时间点">
<template slot-scope="scope">
<el-tag size="mini" type="">{{ scope.row.date.option }}</el-tag>
{{ scope.row.date.context }}
</template>
</el-table-column>
<el-table-column
fixed
label="关键词">
<template slot-scope="scope">
<el-tag v-for="(item, index) in JSON.parse(scope.row.keywords)" size="mini" type="" :key="index">{{ item }}</el-tag>
</template>
</el-table-column>
<el-table-column
fixed
prop="operator"
label="编辑人">
</el-table-column>
<el-table-column
fixed
prop="updated_at"
label="更新时间">
</el-table-column>
<el-table-column
fixed="right"
label="操作">
<template slot-scope="scope">
<el-button size="mini" type="primary" icon="el-icon-edit" circle @click="showEditView(scope.row.id)"></el-button>
<el-button size="mini" type="danger" icon="el-icon-delete" circle @click="deleteData(scope.row.id)"></el-button>
</template>
</el-table-column>
</el-table>
</el-card>
</div>
</div>
<div>
<el-dialog title="添加触达方案" :visible.sync="dialogAddVisible" :modal="true">
<el-form size="mini" :model="addForm">
<el-form-item label="用户群名称" label-width="100px">
<el-select v-model="addForm.cgroup_id" placeholder="请选择用户群名称">
<el-option v-for="(item, index) in groupList" :key="index" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="触达方式" label-width="100px">
<el-select v-model="addForm.reach_way_id" placeholder="请选择触达方式">
<el-option v-for="(item, index) in wayList" :key="index" :label="item.context" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="触达时间点" label-width="100px">
<el-select v-model="addForm.reach_date_id" placeholder="请选择触达时间点">
<el-option v-for="(item, index) in dateList" :key="index" :label="item.context" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="关键词" label-width="100px">
<el-input
type="textarea"
:autosize="{ minRows: 5, maxRows: 15}"
placeholder="请输入关键词,一行一个"
v-model="addForm.keywordsStr">
</el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button size="mini" @click="dialogAddVisible = false">取 消</el-button>
<el-button size="mini" type="primary" @click="addData">保 存</el-button>
</div>
</el-dialog>
</div>
<div>
<el-dialog title="编辑触达方案" :visible.sync="dialogUpdateVisible" :modal="true">
<el-form size="mini" :model="updateForm">
<el-form-item label="用户群名称" label-width="100px">
<el-select v-model="updateForm.cgroup_id" placeholder="请选择用户群名称">
<el-option v-for="(item, index) in groupList" :key="index" :label="item.name" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="触达方式" label-width="100px">
<el-select v-model="updateForm.reach_way_id" placeholder="请选择触达方式">
<el-option v-for="(item, index) in wayList" :key="index" :label="item.context" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="触达时间点" label-width="100px">
<el-select v-model="updateForm.reach_date_id" placeholder="请选择触达时间点">
<el-option v-for="(item, index) in dateList" :key="index" :label="item.context" :value="item.id">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="关键词" label-width="100px">
<el-input
type="textarea"
:autosize="{ minRows: 5, maxRows: 15}"
placeholder="请输入关键词,一行一个"
v-model="updateForm.keywordsStr">
</el-input>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button size="mini" @click="dialogUpdateVisible = false">取 消</el-button>
<el-button size="mini" type="primary" @click="updateData">保 存</el-button>
</div>
</el-dialog>
</div>
</div>
</template>
<script>
import * as reachApi from '@/api/reach'
import * as casesApi from '@/api/cases'
import * as groupApi from '@/api/cgroups'
import * as triggerApi from '@/api/triggerEdit'
export default {
name: 'reach',
mounted() {
var caseId = this.$route.query.id
casesApi.caseInfo(caseId).then(res => {
if (res.code === 0) {
this.case = res.data
this.addForm.case_id = this.case.id
reachApi.reachList({ case_id: caseId }).then(res => {
if (res.code === 0) {
this.tableData = res.data
return true
} else {
this.$message.error(res.message)
return false
}
}).catch(error => {
console.log(error)
return false
})
triggerApi.getTriggerWayList().then(res => {
if (res.code === 0) {
this.wayList = res.data
return true
} else {
this.$message.error(res.message)
return false
}
})
triggerApi.getTriggerDateList().then(res => {
if (res.code === 0) {
this.dateList = res.data
return true
} else {
this.$message.error(res.message)
return false
}
})
groupApi.groupList({ case_id: this.case.id }).then(res => {
if (res.code === 0) {
this.groupList = res.data
reachApi.reachList({ case_id: this.case.id }).then(res => {
if (res.code === 0) {
this.tableData = res.data
return true
} else {
this.$message.error(res.message)
return false
}
}).catch(error => {
console.log(error)
return false
})
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
})
},
data() {
return {
dialogAddVisible: false,
dialogUpdateVisible: false,
tableData: [],
case: {},
addForm: {
cgroup_id: '',
case_id: '',
reach_way_id: '',
reach_date_id: '',
keywords: [],
keywordsStr: ''
},
updateForm: {
id: '',
cgroup_id: '',
case_id: '',
reach_way_id: '',
reach_date_id: '',
keywords: [],
keywordsStr: ''
},
groupList: [],
wayList: [],
dateList: []
}
},
methods: {
addData() {
this.addForm.keywords = this.strToArr(this.addForm.keywordsStr)
reachApi.reachCreate(this.addForm).then(res => {
if (res.code === 0) {
this.dialogAddVisible = false
this.$message.success(res.message)
this.addForm = {
cgroup_id: '',
case_id: '',
reach_way_id: '',
reach_date_id: '',
keywords: [],
keywordsStr: ''
}
reachApi.reachList({ case_id: this.case.id }).then(res => {
if (res.code === 0) {
this.tableData = res.data
return true
} else {
this.$message.error(res.message)
return false
}
}).catch(error => {
console.log(error)
return false
})
return true
} else {
this.$message.error(res.message)
return false
}
}).catch(error => {
console.log(error)
this.$message.error('创建触达方案失败')
return false
})
},
showEditView(id) {
this.dialogUpdateVisible = true
reachApi.reachInfo(id).then(res => {
if (res.code === 0) {
console.log(res.data)
var reach = res.data
this.updateForm.id = id
this.updateForm.cgroup_id = reach.cgroup_id
this.updateForm.case_id = reach.case_id
this.updateForm.reach_way_id = reach.reach_way_id
this.updateForm.reach_date_id = reach.reach_date_id
this.updateForm.keywords = JSON.parse(reach.keywords)
this.updateForm.keywordsStr = this.updateForm.keywords.join('\r\n')
return true
} else {
this.$message.error(res.message)
return false
}
})
},
updateData() {
if (this.updateForm.id) {
this.updateForm.keywords = this.strToArr(this.updateForm.keywordsStr)
reachApi.reachUpdate(this.updateForm.id, this.updateForm).then(res => {
if (res.code === 0) {
this.dialogUpdateVisible = false
this.$message.success(res.message)
reachApi.reachList({ case_id: this.case.id }).then(res => {
if (res.code === 0) {
this.tableData = res.data
return true
} else {
this.$message.error(res.message)
return false
}
}).catch(error => {
console.log(error)
return false
})
return true
} else {
this.$message.error(res.message)
return false
}
}).catch(error => {
console.log(error)
this.$message.error('创建触达方案失败')
return false
})
}
},
deleteData(id) {
this.$confirm('确认删除?', '提示').then(_ => {
reachApi.reachDelete(id).then(res => {
if (res.code === 0) {
this.$message.success(res.message)
reachApi.reachList({ case_id: this.case.id }).then(res => {
if (res.code === 0) {
this.tableData = res.data
return true
} else {
this.$message.error(res.message)
return false
}
}).catch(error => {
console.log(error)
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
})
},
strToArr(str) {
// 转换成数组
var snsArr = str.split(/[(\r\n)\r\n]+/)
snsArr.forEach((item, index) => {
if (!item) {
snsArr.splice(index, 1)
}
})
return snsArr
}
}
}
</script>
......@@ -10,6 +10,7 @@ const userGroup = [
{ path: '/yhfq/groups', name: 'group-list', component: () => import(/* webpackChunkName: "usergroup" */ '@/pages/yhfq/cgroup/index') },
{ path: '/yhfq/groups/add', name: 'group-add', component: () => import(/* webpackChunkName: "usergroup" */ '@/pages/yhfq/cgroup/add') },
{ path: '/yhfq/groups/edit', name: 'group-edit', component: () => import(/* webpackChunkName: "usergroup" */ '@/pages/yhfq/cgroup/edit') },
{ path: '/yhfq/reach', name: 'reach-list', component: () => import(/* webpackChunkName: "usergroup" */ '@/pages/yhfq/reach/index') },
{ path: '/albj', component: () => import(/* webpackChunkName: "usergroup" */ '@/pages/yhfq/albj') },
{ path: '/yhfq/alfx', component: () => import(/* webpackChunkName: "usergroup" */ '@/pages/yhfq/alfx') },
{ path: '/yhfq/yhqfx', component: () => import(/* webpackChunkName: "usergroup" */ '@/pages/yhfq/yhqfx') }
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论