提交 9b1c0ee4 authored 作者: 王诒正's avatar 王诒正

用户群和用户群特征的编辑

上级 721b966d
......@@ -11,12 +11,12 @@ export function groupAdd(data) {
}
// 获取用户群详情
export function groupInfo(id, params) {
export function groupInfo(id, params = {}) {
return httpRequest.get(`/api/opera/v1/oprations/${id}/cgroup`, { params })
}
// 更新用户群信息
export function groupUpdate(id, data) {
export function groupUpdate(id, data = {}) {
return httpRequest.put(`/api/opera/v1/oprations/${id}/cgroup`, data)
}
......
......@@ -4,8 +4,8 @@
<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="{ path: '/yhfq/albj' }">案例背景</el-breadcrumb-item>
<el-breadcrumb-item :to="{ path: '/yhfq/albj/detail' }">案例背景</el-breadcrumb-item>
<el-breadcrumb-item :to="{ path: '/yhfq/albj', query: { level: this.$route.query.level } }">案例背景</el-breadcrumb-item>
<el-breadcrumb-item>添加案例背景</el-breadcrumb-item>
</el-breadcrumb>
</el-card>
</div>
......@@ -78,7 +78,7 @@ import * as api from '@/api/cases'
export default {
name: 'add',
mounted() {
this.ruleForm.level = this.$route.params.level
this.ruleForm.level = this.$route.query.level
},
data() {
return {
......
......@@ -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 } }">案例背景</el-breadcrumb-item>
<el-breadcrumb-item :to="{ name: 'case-list', params: { level: this.level.toStirng() } }">案例背景</el-breadcrumb-item>
<el-breadcrumb-item :to="{ path: '/yhfq/albj/detail' }">案例背景</el-breadcrumb-item>
</el-breadcrumb>
</el-card>
......@@ -39,15 +39,28 @@
</template>
<script>
import * as casesApi from '@/api/cases'
export default {
name: 'detail',
mounted() {
var data = this.$route.params
console.log('dasdasdas', this.$route.params)
this.companyDetail = data.company_detail
this.productDetail = data.product_detail
this.positionDetail = data.position_detail
this.level = data.level.toString()
var caseId = this.$route.query.id
casesApi.caseInfo(caseId).then(res => {
if (res.code === 0) {
console.log(res.data)
var data = res.data
this.companyDetail = data.company_detail
this.productDetail = data.product_detail
this.positionDetail = data.position_detail
this.level = data.level.toString()
return true
} else {
this.$message.error(res.message)
return false
}
}).catch(error => {
console.log(error)
return false
})
},
data() {
return {
......
......@@ -15,7 +15,7 @@
<el-card class="box-card">
<el-row>
<el-button size="mini" icon="el-icon-plus" type="success">
<router-link :to="{ name: 'case-add', params: { level: activeName } }"> 添加 </router-link>
<router-link :to="{ name: 'case-add', query: { level: activeName } }"> 添加 </router-link>
</el-button>
</el-row>
</el-card>
......@@ -83,7 +83,7 @@
<el-card class="box-card">
<el-row>
<el-button size="mini" icon="el-icon-plus" type="success">
<router-link :to="{ name: 'case-add', params: { level: activeName } }"> 添加 </router-link>
<router-link :to="{ name: 'case-add', query: { level: activeName } }"> 添加 </router-link>
</el-button>
</el-row>
</el-card>
......@@ -155,8 +155,8 @@
import * as api from '@/api/cases'
export default {
mounted() {
var level = this.$route.params.level
if (level !== undefined) {
var level = this.$route.query.level
if (level) {
this.activeName = level
}
api.caseList({ level: parseInt(this.activeName) }).then(res => {
......@@ -209,13 +209,18 @@ export default {
case 'group':
this.$router.push({
name: 'group-list',
params: opera.row
params: opera.row,
query: {
id: opera.row.id,
level: opera.row.level
}
})
return true
case 'detail':
this.$router.push({
name: 'case-detail',
params: opera.row
params: opera.row,
query: { id: opera.row.id }
})
return true
case 'delete':
......
......@@ -4,15 +4,15 @@
<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.$route.params.caseInfo.level.toString() } }">案例背景</el-breadcrumb-item>
<el-breadcrumb-item :to="{ name: 'group-list', params: this.$route.params.caseInfo }">用户群</el-breadcrumb-item>
<el-breadcrumb-item :to="{ name: 'case-list', query: { level: this.$route.query.level.toString() } }">案例背景</el-breadcrumb-item>
<el-breadcrumb-item :to="{ name: 'group-list', query: { id: this.$route.query.case_id } }">用户群</el-breadcrumb-item>
<el-breadcrumb-item>添加用户群</el-breadcrumb-item>
</el-breadcrumb>
</el-card>
</div>
<div>
<el-card class="box-card">
<span>当前案例: {{ this.$route.params.caseInfo.name }}</span>
<span>当前案例: {{ this.case.name }}</span>
</el-card>
<el-card class="box-card">
<div slot="header" class="clearfix">
......@@ -119,21 +119,35 @@
<script>
import * as templateApi from '@/api/characteristics-template'
import * as groupApi from '@/api/cgroups'
import * as casesApi from '@/api/cases'
import * as characteristicsApi from '@/api/characteristic'
export default {
name: 'add',
mounted() {
this.groupForm.case_id = this.$route.params.caseInfo.id
// 先获取特征模板别表
templateApi.characteristicsTemplateList().then(res => {
this.groupForm.case_id = this.$route.query.case_id
casesApi.caseInfo(this.groupForm.case_id).then(res => {
if (res.code === 0) {
this.characteristicTemplateList = res.data
console.log(this.characteristicTemplateList)
this.case = res.data
// 先获取特征模板别表
templateApi.characteristicsTemplateList().then(res => {
if (res.code === 0) {
this.characteristicTemplateList = res.data
console.log(this.characteristicTemplateList)
} else {
this.$message.error(res.message)
}
}).catch(error => {
console.log(error)
})
return true
} else {
this.$message.error(res.message)
return false
}
}).catch(error => {
console.log(error)
return false
})
},
data () {
......@@ -148,6 +162,7 @@ export default {
groupHidden: false,
selectId: '',
group: {},
case: {},
groupForm: {
case_id: '',
name: '',
......@@ -253,6 +268,14 @@ export default {
if (res.code === 0) {
this.$message.success('创建成功')
this.dialogFormVisible = false
this.optionsHidden = true
this.form = {
value: '',
name: '',
options: '',
context: '',
template_id: ''
}
characteristicsApi.characteristicsList({ cgroup_id: this.group.id }).then(res => {
if (res.code === 0) {
this.tableData = res.data
......
......@@ -4,19 +4,19 @@
<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.$route.params.case_info.level.toString() } }">案例背景</el-breadcrumb-item>
<el-breadcrumb-item :to="{ name: 'group-list', params: this.$route.params.case_info }">用户群</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', query: { id: this.case.id, level: this.case.level } }">用户群</el-breadcrumb-item>
<el-breadcrumb-item>编辑用户群</el-breadcrumb-item>
</el-breadcrumb>
</el-card>
</div>
<div>
<el-card class="box-card">
<span>当前案例: {{ this.$route.params.case_info.name }}</span>
<span>当前案例: {{ this.case.name }}</span>
</el-card>
<el-card class="box-card">
<div slot="header" class="clearfix">
<span>创建用户群</span>
<span>编辑用户群</span>
</div>
<div>
<el-form size="mini" :model="groupForm" :rules="groupRules"
......@@ -30,6 +30,7 @@
list-type="picture-card"
name="file"
:limit="1"
:file-list="fileList"
:multiple="false"
:on-preview="handlePictureCardPreview"
:on-remove="handleRemove"
......@@ -45,14 +46,82 @@
</el-input>
</el-dialog>
</el-form-item>
<el-form-item :hidden="groupHidden">
<el-button type="primary" @click="onSubmit">保存</el-button>
</el-form-item>
</el-form>
</div>
</el-card>
<el-card class="box-card" :hidden="characteristicsHidden">
<div slot="header" class="clearfix">
<span>用户群特征</span>
</div>
<div>
<el-button size="mini" type="success" @click="dialogFormVisible = true">添加</el-button>
</div>
<div>
<el-table :data="tableData" style="width: 100%">
<el-table-column label="创建时间">
<template slot-scope="scope">
<i class="el-icon-time"></i>
<span style="margin-left: 10px">{{ scope.row.created_at }}</span>
</template>
</el-table-column>
<el-table-column label="特征名称">
<template slot-scope="scope">
<span>{{ scope.row.name }}</span>
</template>
</el-table-column>
<el-table-column label="特征选项">
<template slot-scope="scope">
<div v-for="(item, index) in JSON.parse(scope.row.context)" :key="index">
<el-tag :type="item.answer ? 'wanning' : 'info'">
<p>{{ item.options}}{{ item.options_info }}</p><br/>
</el-tag>
</div>
</template>
</el-table-column>
<el-table-column label="操作">
<template slot-scope="scope">
<el-button type="danger" icon="el-icon-delete" circle @click="deletecharaCteristics(scope.row.id)"></el-button>
</template>
</el-table-column>
</el-table>
</div>
</el-card>
</div>
<div>
<el-dialog title="添加用户群特征" :visible.sync="dialogFormVisible">
<el-form size="mini" :model="form" ref="form" :rules="characteristicsRules" label-width="80px">
<el-form-item label="特征名称" prop="name">
<el-select v-model="form.value" placeholder="请选择" @change="selectOneCharacteristic">
<el-option
v-for="(item, index) in characteristicTemplateList"
:key="index"
:label="item.name"
:value="item">
</el-option>
</el-select>
</el-form-item>
<el-form-item label="特征选项" prop="options" :hidden="optionsHidden">
<el-radio v-for="(item, index) in form.context" :key="index" v-model="form.options" :label="item.options">{{ item.options + '、' + item.options_info}}</el-radio><br/>
</el-form-item>
</el-form>
<div slot="footer" class="dialog-footer">
<el-button size="mini" @click="dialogFormVisible = false">取 消</el-button>
<el-button size="mini" type="primary" @click="saveCharacteristic">保 存</el-button>
</div>
</el-dialog>
</div>
</div>
</div>
</template>
<script>
import * as templateApi from '@/api/characteristics-template'
import * as groupApi from '@/api/cgroups'
import * as casesApi from '@/api/cases'
import * as characteristicsApi from '@/api/characteristic'
export default {
name: 'edit',
data() {
......@@ -67,29 +136,97 @@ export default {
groupHidden: false,
selectId: '',
group: {},
case: {},
groupForm: {
case_id: '',
name: '',
poster_url: '',
desc: ''
},
groupRules: {}
fileList: [],
groupRules: {},
form: {
value: '',
name: '',
options: '',
context: '',
template_id: ''
},
characteristicsRules: {
value: [
{ required: true, message: '请选择特征名称', trigger: 'blur' }
],
options: [
{ required: true, message: '请勾选特征选项', trigger: 'blur' }
]
},
tableData: []
}
},
mounted() {
var caseInfo = this.$route.params.case_info
console.log('case_info', caseInfo)
this.group = this.$route.params.group
this.groupForm = {
case_id: caseInfo.id,
name: this.group.name,
poster_url: this.group.poster_url,
desc: this.group.desc
}
if (this.group.poster_url) {
this.groupPosterUrlDisabled = true
}
console.log(this.groupForm)
var caseId = this.$route.query.case_id
casesApi.caseInfo(caseId).then(res => {
if (res.code === 0) {
this.case = res.data
console.log('case_info', this.case)
var groupId = this.$route.query.group_id
groupApi.groupInfo(groupId).then(res => {
if (res.code === 0) {
this.group = res.data
this.groupForm.case_id = this.case.id
this.groupForm.name = this.group.name
this.groupForm.poster_url = this.group.poster_url
this.groupForm.desc = this.group.desc
if (this.group.poster_url) {
this.groupPosterUrlDisabled = true
var objUrl = {}
objUrl.url = this.group.poster_url
this.fileList.push(objUrl)
}
console.log('groupForm', this.groupForm)
characteristicsApi.characteristicsList({ cgroup_id: this.group.id }).then(res => {
if (res.code === 0) {
console.log('test', res.data)
this.tableData = res.data
return true
} else {
this.$message.error(res.message)
return false
}
}).catch(error => {
console.log(error)
return false
})
} else {
this.$message.error(res.messag)
}
}).catch(error => {
console.log(error)
return false
})
// 先获取特征模板别表
templateApi.characteristicsTemplateList().then(res => {
if (res.code === 0) {
this.characteristicTemplateList = res.data
console.log(this.characteristicTemplateList)
} else {
this.$message.error(res.message)
}
}).catch(error => {
console.log(error)
})
return true
} else {
this.$message.error(res.message)
return false
}
}).catch(error => {
console.log(error)
return false
})
},
methods: {
handleRemove(file, fileList) {
......@@ -116,6 +253,128 @@ export default {
console.log('文件上传失败')
console.log(err)
this.$message.error('文件上传失败')
},
onSubmit() {
groupApi.groupUpdate(this.group.id, this.groupForm).then(res => {
if (res.code === 0) {
this.$message.success('保存成功')
return true
} else {
this.$message.error(res.message)
}
}).catch(error => {
console.log(error)
this.$message.error('保存失败')
return false
})
},
// 保存特征
saveCharacteristic() {
if (!this.group || !this.group.id || this.group.id === undefined) {
this.$message.error('请创建用户群或刷新后重试')
return false
}
var addData = {}
console.log('group', this.group)
addData.cgroup_id = this.group.id
addData.name = this.form.name
addData.template_id = this.form.template_id
var contextInfo = this.form.context
var addDataContext = []
for (var index in contextInfo) {
var addOptions = contextInfo[index].options
var addOptionsinfo = contextInfo[index].options_info
var answer = 0
if ((this.form.context[index]).options === (this.form.options)) {
answer = 1
}
addDataContext[index] = {
options: addOptions,
options_info: addOptionsinfo,
answer: answer
}
}
addData.context = addDataContext
var sendData = {
data: [addData]
}
characteristicsApi.characteristicsCreateBatch(sendData).then(res => {
if (res.code === 0) {
this.$message.success('创建成功')
this.dialogFormVisible = false
this.optionsHidden = true
this.form = {
value: '',
name: '',
options: '',
context: '',
template_id: ''
}
characteristicsApi.characteristicsList({ cgroup_id: this.group.id }).then(res => {
if (res.code === 0) {
console.log('test', res.data)
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
})
},
selectOneCharacteristic(option) {
console.log(option)
var context = option.context
if (context) {
this.optionsHidden = false
this.form.template_id = option.id
this.form.name = option.name
this.form.context = JSON.parse(context)
console.log(this.form.context)
} else {
this.form.context = []
}
},
// 删除特征
deletecharaCteristics(id) {
this.$confirm('确认删除?', '提示').then(_ => {
characteristicsApi.characteristicsDelete(id).then(res => {
if (res.code === 0) {
this.$message.success('删除成功')
characteristicsApi.characteristicsList({ cgroup_id: this.group.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
})
}
}).catch(error => {
console.log(error)
return false
})
return true
}).catch(_ => {
return false
})
}
}
}
......
......@@ -4,19 +4,19 @@
<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.$route.params.level } }">案例背景</el-breadcrumb-item>
<el-breadcrumb-item :to="{ name: 'case-list', query: { level: this.$route.query.level.toString() } }">案例背景</el-breadcrumb-item>
<el-breadcrumb-item :to="{ name: 'group-list' }">用户群</el-breadcrumb-item>
</el-breadcrumb>
</el-card>
</div>
<div>
<el-card class="box-card">
<span>当前案例: {{ this.$route.params.name }}</span>
<span>当前案例: {{ this.case.name }}</span>
</el-card>
<el-card class="box-card">
<el-row>
<el-button size="mini" icon="el-icon-plus" type="success">
<router-link :to="{ name: 'group-add', params: { caseInfo: this.$route.params } }"> 添加 </router-link>
<router-link :to="{ name: 'group-add', query: { case_id: this.case.id, level: this.case.level } }"> 添加 </router-link>
</el-button>
</el-row>
</el-card>
......@@ -82,8 +82,10 @@
<div class="scroll-content">
<i v-for="(characteristic, index) in characteristicsInfo.characteristics" :key="index">
<div v-if="characteristic.context" class="scroll-container">
<span>{{ characteristic.name }} :</span>
<span v-for="(contextInfo, index) in JSON.parse(characteristic.context)" :key="index"><br/>{{contextInfo.options + '、' + contextInfo.options_info +'. '}}</span>
<strong><span>{{ characteristic.name }}</span></strong><br/>
<span v-for="(contextInfo, index) in JSON.parse(characteristic.context)" :key="index"><br/>
{{contextInfo.options + '、' + contextInfo.options_info +'. '}}
</span><br/><br/>
<br/>
</div>
</i>
......@@ -95,15 +97,28 @@
<script>
import * as api from '@/api/cgroups'
import * as casesApi from '@/api/cases'
export default {
name: 'cgroup-index',
mounted() {
var caseInfo = this.$route.params
api.groupList({ case_id: caseInfo.id }).then(res => {
console.log(res)
var caseId = this.$route.query.id
casesApi.caseInfo(caseId).then(res => {
if (res.code === 0) {
console.log(res.data)
this.tableData = res.data
this.case = res.data
api.groupList({ case_id: caseId }).then(res => {
if (res.code === 0) {
console.log(res.data)
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)
......@@ -118,7 +133,8 @@ export default {
return {
dialogVisible: false,
tableData: [],
characteristicsInfo: {}
characteristicsInfo: {},
case: {}
}
},
methods: {
......@@ -129,6 +145,11 @@ export default {
params: {
case_info: this.$route.params,
group: group
},
query: {
case_id: this.$route.query.id,
level: this.$route.query.level,
group_id: group.id
}
})
},
......@@ -194,6 +215,5 @@ export default {
.scroll-content{
width: 100%;
height: 30%;
background-color: rgb(248, 212, 224);
}
</style>
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论