提交 2a5300a3 authored 作者: wangyizheng's avatar wangyizheng

编辑案例

上级 b8bfad4d
......@@ -30,9 +30,9 @@ export function Case2(id, params = {}) {
}
// 更新案例
export function updateCase2(data) {
export function updateCase2(id, data) {
var headers = {
'Content-Type': 'application/json'
}
return httpRequest.put('/api/opera/v2/training/cases', data, { headers })
return httpRequest.put(`/api/opera/v2/training/${id}/case`, data, { headers })
}
......@@ -136,9 +136,9 @@
<embed class="embed" width="600px" height="700px" :src="pdfUrl" type="application/pdf"/>
</div>
<div>
<el-dialog title="产品概况" :visible.sync="productionDialogFormVisible" width="90%" center>
<el-card :body-style="{ padding: '0px' }">
<div style="padding: 14px;" v-for="(production, productionIndex) in productionDetail" :key="productionIndex">
<el-dialog title="产品概况" :visible.sync="productionDialogFormVisible" width="40%" center>
<div style="padding: 14px;" v-for="(production, productionIndex) in productionDetail" :key="productionIndex">
<el-card>
<div>
<span><strong>产品信息:</strong></span><span>{{ production.name }}</span>
</div>
......@@ -149,15 +149,14 @@
<br/>
</div>
</div>
<el-divider v-if="productionIndex < productionDetail.length - 1" content-position="right"></el-divider>
</div>
</el-card>
</el-card>
</div>
</el-dialog>
</div>
<div>
<el-dialog title="基金投资与净值表现" :visible.sync="fundDialogFormVisible" width="90%" center>
<el-card :body-style="{ padding: '0px' }">
<div style="padding: 14px;" v-for="(production, index) in fundDetail" :key="index">
<el-dialog title="基金投资与净值表现" :visible.sync="fundDialogFormVisible" width="40%" center>
<div style="padding: 14px;" v-for="(production, index) in fundDetail" :key="index">
<el-card>
<div>
<span><strong>产品信息:</strong></span><span>{{ production.name }}</span>
</div>
......@@ -168,15 +167,14 @@
<br/>
</div>
</div>
<el-divider v-if="index < fundDetail.length - 1" content-position="right"></el-divider>
</div>
</el-card>
</el-card>
</div>
</el-dialog>
</div>
<div>
<el-dialog title="投资本基金涉及的费用" :visible.sync="investDialogFormVisible" width="90%" center>
<el-card :body-style="{ padding: '0px' }">
<div style="padding: 14px;" v-for="(production, index) in investDetail" :key="index">
<el-dialog title="投资本基金涉及的费用" :visible.sync="investDialogFormVisible" width="40%" center>
<div style="padding: 14px;" v-for="(production, index) in investDetail" :key="index">
<el-card>
<div>
<span><strong>产品信息:</strong></span><span>{{ production.name }}</span>
</div>
......@@ -187,25 +185,24 @@
<br/>
</div>
</div>
<el-divider v-if="index < investDetail.length - 1" content-position="right"></el-divider>
</div>
</el-card>
</el-card>
</div>
</el-dialog>
</div>
<div>
<el-scrollbar style="height: 80%">
<el-drawer
title="创建案例"
:visible.sync="drawer"
:direction="direction"
:append-to-body="true"
:withHeader="true"
:before-close="handleClose"
ref="drawer"
size="50%">
title="创建案例"
:visible.sync="drawer"
:direction="direction"
:append-to-body="true"
:withHeader="true"
:before-close="handleClose"
ref="drawer"
size="50%">
<div class="demo-drawer__content">
<el-form :model="addForm" size="mini">
<el-form-item label="案例名称" :label-width="formLabelWidth">
<el-form-item label="案例名称" :label-width="formLabelWidth" style="margin-right: 5%">
<el-input v-model="addForm.name" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="案例等级" :label-width="formLabelWidth">
......@@ -217,37 +214,37 @@
</el-form-item>
<el-form-item label="案例分类" :label-width="formLabelWidth">
<el-cascader
v-model="addForm.category_id"
:options="options"
:show-all-levels="false"
filterable
:before-filter="searchCategory"
:props="{value: 'id', label: 'name', emitPath: false}"
placeholder="试试搜索:分类">
v-model="addForm.category_id"
:options="options"
:show-all-levels="false"
filterable
:before-filter="searchCategory"
:props="{value: 'id', label: 'name', emitPath: false}"
placeholder="试试搜索:分类">
</el-cascader>
</el-form-item>
<el-form-item label="产品说明书(pdf附件)" :label-width="formLabelWidth">
<el-upload
class="upload-pdf"
action="/api/opera/v1/file/upload"
:on-preview="handlePreview"
:on-remove="handleRemove"
:on-success="uploadSuccess"
:limit="1"
:on-exceed="handleExceed">
class="upload-pdf"
action="/api/opera/v1/file/upload"
:on-preview="handlePreview"
:on-remove="handleRemove"
:on-success="uploadSuccess"
:limit="1"
:on-exceed="handleExceed">
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">只能上传pdf文件</div>
</el-upload>
</el-form-item>
<el-form-item label="图片" :label-width="formLabelWidth">
<el-upload
action="/api/opera/v1/file/upload"
list-type="picture-card"
:limit="1"
:on-success="uploadUrlSuccess"
:multiple="false"
:data="{ type: 'image' }"
:on-preview="createPictureCardPreview">
action="/api/opera/v1/file/upload"
list-type="picture-card"
:limit="1"
:on-success="uploadUrlSuccess"
:multiple="false"
:data="{ type: 'image' }"
:on-preview="createPictureCardPreview">
<i class="el-icon-plus"></i>
</el-upload>
<el-dialog :visible.sync="visible" append-to-body>
......@@ -259,64 +256,88 @@
<el-divider content-position="left">产品概况配置</el-divider>
</el-form-item>
<div v-for="(item, index) in addForm.production_detail" :key="'production-'+index">
<div style="margin-left: 5%">
<div style="margin-left: 5%; margin-top: 2%">
<i class="el-icon-circle-plus-outline" @click="addNames('production_detail', index)">添加</i>
<i class="el-icon-remove-outline" @click="removeNames('production_detail', index)">删除</i>
</div>
<el-form-item style="margin-left: 5%; margin-top: 2%" label-width="formLabelWidth" label="二级标题">
<el-input v-model="item.name" placeholder="请输入内容" style="width: 50%"></el-input>
</el-form-item>
<div v-for="(keywrod, index1) in item.keywords" :key="'production-'+index1" style="margin-top: 2%">
<el-form-item style="margin-left: 2%" label="关键词" :label-width="formLabelWidth">
<el-input v-model="keywrod.name" placeholder="请输入关键词" style="width: 50%"></el-input>
<span>关键词得分:</span>
<el-input v-model.number="keywrod.score" placeholder="得分" style="width: 20%"></el-input>
<i class="el-icon-circle-plus-outline" @click="addKeywords('production_detail', index)"></i>
<i class="el-icon-remove-outline" @click="removeKeywords('production_detail', index, index1)"></i>
</el-form-item>
</div>
<el-card style="margin-left: 5%; margin-top: 2%; margin-right: 5%">
<div>
<span>
二级标题:
<el-input size="mini" v-model="item.name" placeholder="请输入内容" style="width: 50%"></el-input>
</span>
</div>
<div v-for="(keywrod, index1) in item.keywords" :key="'production-'+index1" style="margin-top: 2%">
<el-card>
<span>
<span>关键词</span>
<el-input size="mini" v-model="keywrod.name" placeholder="请输入关键词" style="width: 40%"></el-input>
<span style="margin-left: 2%">关键词得分:</span>
<el-input size="mini" v-model.number="keywrod.score" placeholder="得分" style="width: 20%"></el-input>
<i class="el-icon-circle-plus-outline" @click="addKeywords('production_detail', index)"></i>
<i class="el-icon-remove-outline" @click="removeKeywords('production_detail', index, index1)"></i>
</span>
</el-card>
</div>
</el-card>
</div>
<el-form-item>
<el-divider content-position="left">案例基金与净值表现配置</el-divider>
</el-form-item>
<div v-for="(fundItem, fundIndex) in addForm.fund_detail" :key="'fund-'+fundIndex">
<div style="margin-left: 5%">
<div style="margin-left: 5%; margin-top: 2%">
<i class="el-icon-circle-plus-outline" @click="addNames('fund_detail', fundIndex)">添加</i>
<i class="el-icon-remove-outline" @click="removeNames('fund_detail', fundIndex)">删除</i>
</div>
<el-form-item style="margin-left: 5%; margin-top: 2%" label-width="formLabelWidth" label="二级标题">
<el-input v-model="fundItem.name" placeholder="请输入内容" style="width: 50%"></el-input>
</el-form-item>
<div v-for="(fundKeywrod, fundIndex1) in fundItem.keywords" :key="'fund-'+fundIndex1" style="margin-top: 2%">
<el-form-item style="margin-left: 2%" label="关键词" :label-width="formLabelWidth">
<el-input v-model="fundKeywrod.name" placeholder="请输入关键词" style="width: 50%"></el-input>
<span>关键词得分:</span>
<el-input v-model.number="fundKeywrod.score" placeholder="得分" style="width: 20%"></el-input>
<i class="el-icon-circle-plus-outline" @click="addKeywords('fund_detail', fundIndex)"></i>
<i class="el-icon-remove-outline" @click="removeKeywords('fund_detail', fundIndex, fundIndex1)"></i>
</el-form-item>
</div>
<el-card style="margin-left: 5%; margin-top: 2%; margin-right: 5%">
<div>
<span>
二级标题:
<el-input size="mini" v-model="fundItem.name" placeholder="请输入内容" style="width: 50%"></el-input>
</span>
</div>
<div v-for="(fundKeywrod, fundIndex1) in fundItem.keywords" :key="'fund-'+fundIndex1" style="margin-top: 2%">
<el-card>
<span>
<span>关键词</span>
<el-input size="mini" v-model="fundKeywrod.name" placeholder="请输入关键词" style="width: 40%"></el-input>
<span style="margin-left: 2%">关键词得分:</span>
<el-input size="mini" v-model.number="fundKeywrod.score" placeholder="得分" style="width: 20%"></el-input>
<i class="el-icon-circle-plus-outline" @click="addKeywords('fund_detail', fundIndex)"></i>
<i class="el-icon-remove-outline" @click="removeKeywords('fund_detail', fundIndex, fundIndex1)"></i>
</span>
</el-card>
</div>
</el-card>
</div>
<el-form-item>
<el-divider content-position="left">案例投资本基金净值表现配置</el-divider>
</el-form-item>
<div v-for="(investItem, investIndex) in addForm.invest_detail" :key="'invest-'+investIndex">
<div style="margin-left: 5%">
<div style="margin-left: 5%; margin-top: 2%">
<i class="el-icon-circle-plus-outline" @click="addNames('invest_detail', investIndex)">添加</i>
<i class="el-icon-remove-outline" @click="removeNames('invest_detail', investIndex)">删除</i>
</div>
<el-form-item style="margin-left: 5%; margin-top: 2%" label-width="formLabelWidth" label="二级标题">
<el-input v-model="investItem.name" placeholder="请输入内容" style="width: 50%"></el-input>
</el-form-item>
<div v-for="(investKeyword, investIndex1) in investItem.keywords" :key="'invest-'+investIndex1" style="margin-top: 2%">
<el-form-item style="margin-left: 2%" label="关键词" :label-width="formLabelWidth">
<el-input v-model="investKeyword.name" placeholder="请输入关键词" style="width: 50%"></el-input>
<span>关键词得分:</span>
<el-input v-model.number="investKeyword.score" placeholder="得分" style="width: 20%"></el-input>
<i class="el-icon-circle-plus-outline" @click="addKeywords('invest_detail', investIndex)"></i>
<el-card style="margin-left: 5%; margin-top: 2%; margin-right: 5%">
<div>
<span>
二级标题:
<el-input size="mini" v-model="investItem.name" placeholder="请输入内容" style="width: 50%"></el-input>
</span>
</div>
<div v-for="(investKeyword, investIndex1) in investItem.keywords" :key="'invest-'+investIndex1" style="margin-top: 2%">
<el-card>
<span>
<span>关键词</span>
<el-input size="mini" v-model="investKeyword.name" placeholder="请输入关键词" style="width: 40%"></el-input>
<span style="margin-left: 2%">关键词得分:</span>
<el-input size="mini" v-model.number="investKeyword.score" placeholder="得分" style="width: 20%"></el-input>
<i class="el-icon-circle-plus-outline" @click="addKeywords('invest_detail', investIndex)"></i>
<i class="el-icon-remove-outline" @click="removeKeywords('invest_detail', investIndex, investIndex1)"></i>
</el-form-item>
</div>
</span>
</el-card>
</div>
</el-card>
</div>
<el-form-item>
<el-divider content-position="left"></el-divider>
......@@ -635,7 +656,6 @@ export default {
if (!this.addForm.accessory) {
this.addForm.accessory = file.url
}
this.visible = true
},
handleRemove(file, fileList) {
console.log(file, fileList)
......
......@@ -37,20 +37,30 @@
<el-upload
class="upload-pdf"
action="/api/opera/v1/file/upload"
:on-preview="handlePreview"
:on-remove="handleRemove"
:on-success="uploadSuccess"
:file-list="accessoryFiles"
:limit="1"
:on-preview="handlePreview"
:on-exceed="handleExceed">
<el-button size="small" type="primary">点击上传</el-button>
<div slot="tip" class="el-upload__tip">只能上传pdf文件</div>
</el-upload>
<el-popover
placement="right"
width="500"
trigger="click"
v-if="updateForm.accessory">
<embed class="embed" width="600px" height="700px" :src="updateForm.accessory" type="application/pdf"/>
<el-button slot="reference" size="mini" round>预览pdf</el-button>
</el-popover>
</el-form-item>
<el-form-item label="图片" :label-width="formLabelWidth">
<el-upload
action="/api/opera/v1/file/upload"
list-type="picture-card"
:limit="1"
:file-list="urlFiles"
:on-success="uploadUrlSuccess"
:multiple="false"
:data="{ type: 'image' }"
......@@ -62,6 +72,101 @@
<el-input :v-model="updateForm.url" :value="updateForm.url"></el-input>
</el-dialog>
</el-form-item>
<el-form-item>
<el-divider content-position="left">产品概况配置</el-divider>
</el-form-item>
<div v-for="(item, index) in updateForm.production_detail" :key="'production-'+index">
<div style="margin-left: 5%; margin-top: 2%">
<i class="el-icon-circle-plus-outline" @click="addNames('production_detail', index)">添加</i>
<i class="el-icon-remove-outline" @click="removeNames('production_detail', index)">删除</i>
</div>
<el-card style="margin-top: 2%">
<div>
<span>
二级标题:
<el-input size="mini" v-model="item.name" placeholder="请输入内容" style="width: 50%"></el-input>
</span>
</div>
<div v-for="(keywrod, index1) in item.keywords" :key="'production-'+index1" style="margin-top: 2%">
<el-card>
<span>
<span>关键词:</span>
<el-input size="mini" v-model="keywrod.name" placeholder="请输入关键词" style="width: 50%"></el-input>
<span style="margin-left: 2%">关键词得分:</span>
<el-input size="mini" v-model.number="keywrod.score" placeholder="得分" style="width: 10%"></el-input>
<i class="el-icon-circle-plus-outline" @click="addKeywords('production_detail', index)"></i>
<i class="el-icon-remove-outline" @click="removeKeywords('production_detail', index, index1)"></i>
</span>
</el-card>
</div>
</el-card>
</div>
<el-form-item>
<el-divider content-position="left">案例基金与净值表现配置</el-divider>
</el-form-item>
<div v-for="(fundItem, fundIndex) in updateForm.fund_detail" :key="'fund-'+fundIndex">
<div style="margin-left: 5%; margin-top: 2%">
<i class="el-icon-circle-plus-outline" @click="addNames('fund_detail', fundIndex)">添加</i>
<i class="el-icon-remove-outline" @click="removeNames('fund_detail', fundIndex)">删除</i>
</div>
<el-card style="margin-top: 2%">
<div>
<span>
二级标题:
<el-input size="mini" v-model="fundItem.name" placeholder="请输入内容" style="width: 50%"></el-input>
</span>
</div>
<div v-for="(fundKeywrod, fundIndex1) in fundItem.keywords" :key="'fund-'+fundIndex1" style="margin-top: 2%">
<el-card>
<span>
<span>关键词:</span>
<el-input size="mini" v-model="fundKeywrod.name" placeholder="请输入关键词" style="width: 50%"></el-input>
<span style="margin-left: 2%">关键词得分:</span>
<el-input size="mini" v-model.number="fundKeywrod.score" placeholder="得分" style="width: 10%"></el-input>
<i class="el-icon-circle-plus-outline" @click="addKeywords('fund_detail', fundIndex)"></i>
<i class="el-icon-remove-outline" @click="removeKeywords('fund_detail', fundIndex, fundIndex1)"></i>
</span>
</el-card>
</div>
</el-card>
</div>
<el-form-item>
<el-divider content-position="left">案例投资本基金净值表现配置</el-divider>
</el-form-item>
<div v-for="(investItem, investIndex) in updateForm.invest_detail" :key="'invest-'+investIndex">
<div style="margin-left: 5%; margin-top: 2%">
<i class="el-icon-circle-plus-outline" @click="addNames('invest_detail', investIndex)">添加</i>
<i class="el-icon-remove-outline" @click="removeNames('invest_detail', investIndex)">删除</i>
</div>
<el-card style="margin-top: 2%">
<div>
<span>
二级标题:
<el-input size="mini" v-model="investItem.name" placeholder="请输入内容" style="width: 50%"></el-input>
</span>
</div>
<div v-for="(investKeyword, investIndex1) in investItem.keywords" :key="'invest-'+investIndex1" style="margin-top: 2%">
<el-card>
<span>
<span>关键词:</span>
<el-input size="mini" v-model="investKeyword.name" placeholder="请输入关键词" style="width: 50%"></el-input>
<span style="margin-left: 2%">关键词得分:</span>
<el-input size="mini" v-model.number="investKeyword.score" placeholder="得分" style="width: 10%"></el-input>
<i class="el-icon-circle-plus-outline" @click="addKeywords('invest_detail', investIndex)"></i>
<i class="el-icon-remove-outline" @click="removeKeywords('invest_detail', investIndex, investIndex1)"></i>
</span>
</el-card>
</div>
</el-card>
</div>
<el-form-item>
<el-divider content-position="left"></el-divider>
</el-form-item>
<el-form-item>
<div class="demo-drawer__footer" style="margin-left: 60%">
<el-button type="primary" @click="save">保 存</el-button>
</div>
</el-form-item>
</el-form>
</el-card>
</div>
......@@ -70,6 +175,7 @@
<script>
import * as categoryApi from '@/api/categories'
import * as casesApi from '@/api/cases2'
export default {
name: 'update',
data() {
......@@ -78,6 +184,8 @@ export default {
formLabelWidth: '100px',
options: [],
visible: false,
accessoryFiles: [],
urlFiles: [],
updateForm: {
name: '',
level: '',
......@@ -121,9 +229,54 @@ export default {
}
},
mounted() {
this.id = this.$route.query.id
this.getInfo(this.id)
this.categoryList()
},
methods: {
save() {
casesApi.updateCase2(this.id, this.updateForm).then(res => {
if (res.code === 0) {
this.$message.success(res.message)
return true
} else {
this.$message.error(res.message)
return false
}
})
},
getInfo(id) {
casesApi.Case2(id).then(res => {
if (res.code === 0) {
var data = res.data
this.updateForm.name = data.name
this.updateForm.level = data.level
if (data.categories) {
this.updateForm.category_id = data.categories[0].id
}
this.updateForm.accessory = data.accessory
this.updateForm.url = data.url
if (data.production_detail) {
this.updateForm.production_detail = data.production_detail
}
if (data.invest_detail) {
this.updateForm.invest_detail = data.invest_detail
}
if (data.fund_detail) {
this.updateForm.fund_detail = data.fund_detail
}
if (data.accessory) {
this.accessoryFiles = [{ url: data.accessory, name: data.accessory }]
}
if (data.url) {
this.urlFiles = [{ url: data.url }]
}
} else {
this.$message.error(res.message)
return false
}
})
},
searchCategory(keyword) {
categoryApi.categories({ name: keyword, page: 1, limit: 10 }).then(res => {
if (res.code === 0) {
......@@ -175,7 +328,6 @@ export default {
if (!this.updateForm.accessory) {
this.updateForm.accessory = file.url
}
this.visible = true
},
handleRemove(file, fileList) {
console.log(file, fileList)
......@@ -209,7 +361,71 @@ export default {
if (!this.updateForm.url) {
this.updateForm.url = file.url
}
this.updateForm = true
this.visible = true
},
addNames(detailName, index) {
switch (detailName) {
case 'production_detail':
this.updateForm.production_detail.push({ name: '', keywords: [{ name: '', score: 0 }] })
break
case 'fund_detail':
this.updateForm.fund_detail.push({ name: '', keywords: [{ name: '', score: 0 }] })
break
case 'invest_detail':
this.updateForm.invest_detail.push({ name: '', keywords: [{ name: '', score: 0 }] })
break
}
},
removeNames (detailName, index) {
switch (detailName) {
case 'production_detail':
if (this.updateForm.production_detail.length > 1) {
this.updateForm.production_detail.splice(index, 1)
}
break
case 'fund_detail':
if (this.updateForm.fund_detail.length > 1) {
this.updateForm.fund_detail.splice(index, 1)
}
break
case 'invest_detail':
if (this.updateForm.invest_detail.length > 1) {
this.updateForm.invest_detail.splice(index, 1)
}
break
}
},
addKeywords(detailName, index) {
switch (detailName) {
case 'production_detail':
this.updateForm.production_detail[index].keywords.push({ name: '', score: 0 })
break
case 'fund_detail':
this.updateForm.fund_detail[index].keywords.push({ name: '', score: 0 })
break
case 'invest_detail':
this.updateForm.invest_detail[index].keywords.push({ name: '', score: 0 })
break
}
},
removeKeywords (detailName, index, index1) {
switch (detailName) {
case 'production_detail':
if (this.updateForm.production_detail[index].keywords.length > 1) {
this.updateForm.production_detail[index].keywords.splice(index1, 1)
}
break
case 'fund_detail':
if (this.updateForm.fund_detail[index].keywords.length > 1) {
this.updateForm.fund_detail[index].keywords.splice(index1, 1)
}
break
case 'invest_detail':
if (this.updateForm.invest_detail[index].keywords.length > 1) {
this.updateForm.invest_detail[index].keywords.splice(index1, 1)
}
break
}
}
}
}
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论