parent
9c448af60b
commit
06fbe7d4c7
5 changed files with 245 additions and 2 deletions
@ -0,0 +1,220 @@ |
||||
<template> |
||||
<div class="wrap"> |
||||
<el-card shadow="hover" class="mgb20"> |
||||
<div class="flex-between"> |
||||
<div class="per_title" v-preventReClick @click="$router.back()"> |
||||
<i class="el-icon-arrow-left"></i> |
||||
<span class="per_back">返回</span> |
||||
<span class="per_school" v-text="id ? '编辑更新日志' : '新增更新日志'"></span> |
||||
</div> |
||||
<div v-if="!isDetail"> |
||||
<el-button type="primary" round v-preventReClick @click="submit(1)">发布</el-button> |
||||
<el-button v-if="!postStatus" type="primary" round v-preventReClick @click="submit(0)">草稿</el-button> |
||||
</div> |
||||
</div> |
||||
</el-card> |
||||
|
||||
<el-card shadow="hover"> |
||||
<el-form ref="form" label-width="120px" :disabled="isDetail"> |
||||
<el-form-item label="版本标题"> |
||||
<el-input placeholder="请输入版本标题" v-model="form.modelName" maxlength="30" style="width: 400px"></el-input> |
||||
</el-form-item> |
||||
<el-form-item label="封面图片"> |
||||
<el-upload |
||||
class="avatar-uploader" |
||||
accept=".jpg,.png,.jpeg" |
||||
:on-remove="handleRemove" |
||||
:on-error="uploadError" |
||||
:on-success="uploadSuccess" |
||||
:before-remove="beforeRemove" |
||||
:limit="1" |
||||
:on-exceed="handleExceed" |
||||
:action="this.api.fileupload" |
||||
:headers="headers" |
||||
name="file" |
||||
> |
||||
<img v-if="coverUrl" :src="coverUrl" class="avatar"> |
||||
<div class="uploader-default" v-else> |
||||
<i class="el-icon-plus"></i> |
||||
<p>上传封面</p> |
||||
</div> |
||||
</el-upload> |
||||
</el-form-item> |
||||
<el-form-item label="更新内容"> |
||||
<ul class="contents"> |
||||
<li v-for="(item, i) in form.content" :key="i"> |
||||
<div class="action"> |
||||
<el-select v-model="value" size="small" placeholder="请选择版本"> |
||||
<el-option |
||||
v-for="item in vers" |
||||
:key="item.value" |
||||
:label="item.label" |
||||
:value="item.value"> |
||||
</el-option> |
||||
</el-select> |
||||
<div class="btns"> |
||||
<i v-if="i === form.content.length - 1" class="el-icon-circle-plus-outline" @click="add"></i> |
||||
<i class="el-icon-delete" @click="del"></i> |
||||
</div> |
||||
</div> |
||||
<el-input |
||||
type="textarea" |
||||
:rows="5" |
||||
placeholder="请输入" |
||||
v-model="textarea"> |
||||
</el-input> |
||||
</li> |
||||
</ul> |
||||
</el-form-item> |
||||
</el-form> |
||||
</el-card> |
||||
</div> |
||||
</template> |
||||
|
||||
<script> |
||||
export default { |
||||
data() { |
||||
return { |
||||
categoryId : this.$route.query.categoryId, |
||||
form: { |
||||
modelName: '', |
||||
modelDemo: '', |
||||
content: [{}] |
||||
} |
||||
}; |
||||
}, |
||||
mounted() { |
||||
this.id && this.getData() |
||||
}, |
||||
methods: { |
||||
// 获取详情 |
||||
getData() { |
||||
this.$post(`${this.api.modelFindById}?id=${this.id}`).then(res => { |
||||
const { data } = res |
||||
this.form.modelName = data.modelName |
||||
this.form.modelDemo = data.modelDemo |
||||
this.codeKey++ |
||||
}).catch(res => {}) |
||||
}, |
||||
// 新增内容 |
||||
add() { |
||||
this.form.content.push({}) |
||||
}, |
||||
// 删除内容 |
||||
del() { |
||||
|
||||
}, |
||||
// 保存 |
||||
submit(postStatus){ |
||||
const { modelName, modelDemo } = this.form |
||||
const id = this.id |
||||
if (!modelName) return this.$message.error('请输入模型名称') |
||||
if (!modelDemo) return this.$message.error('请输入模型代码') |
||||
const data = { |
||||
categoryId: this.categoryId, |
||||
modelName, |
||||
modelDemo, |
||||
postStatus |
||||
} |
||||
if (id) { |
||||
data.id = id |
||||
this.$post(this.api.updateSysModelDemo, data).then(res => { |
||||
this.$message.success('编辑成功') |
||||
this.$router.back() |
||||
}).catch(res => {}) |
||||
} else { |
||||
this.$post(this.api.saveSysModelDemo, data).then(res => { |
||||
this.$message.success('新增成功') |
||||
this.$router.back() |
||||
}).catch(res => {}) |
||||
} |
||||
}, |
||||
} |
||||
}; |
||||
</script> |
||||
|
||||
<style lang="scss" scoped> |
||||
$avatar-width: 104px; |
||||
/deep/ .avatar-uploader { |
||||
.el-upload { |
||||
position: relative; |
||||
width: $avatar-width; |
||||
height: auto; |
||||
border: 1px dashed #d9d9d9; |
||||
border-radius: 2px; |
||||
cursor: pointer; |
||||
overflow: hidden; |
||||
|
||||
&:hover { |
||||
border-color: #409EFF; |
||||
} |
||||
|
||||
.uploader-default { |
||||
display: flex; |
||||
flex-direction: column; |
||||
justify-content: center; |
||||
width: $avatar-width !important; |
||||
height: $avatar-width; |
||||
text-align: center; |
||||
background: rgba(0, 0, 0, 0.04); |
||||
|
||||
i { |
||||
font-size: 20px; |
||||
font-weight: bold; |
||||
color: #8c939d; |
||||
} |
||||
|
||||
p { |
||||
margin-top: 10px; |
||||
font-size: 14px; |
||||
color: rgba(0, 0, 0, 0.65); |
||||
line-height: 1; |
||||
} |
||||
} |
||||
|
||||
.avatar { |
||||
width: $avatar-width; |
||||
height: $avatar-width; |
||||
display: block; |
||||
} |
||||
} |
||||
|
||||
.el-upload__tip { |
||||
margin-top: 0; |
||||
|
||||
p { |
||||
font-size: 14px; |
||||
color: rgba(0, 0, 0, 0.45); |
||||
line-height: 1; |
||||
|
||||
&:first-child { |
||||
margin-bottom: 5px; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
.contents { |
||||
width: 700px; |
||||
li { |
||||
padding: 15px; |
||||
margin-bottom: 20px; |
||||
border: 1px dashed #e9e9e9; |
||||
border-radius: 8px; |
||||
} |
||||
.action { |
||||
display: flex; |
||||
justify-content: space-between; |
||||
margin-bottom: 15px; |
||||
} |
||||
.btns { |
||||
i { |
||||
margin-left: 10px; |
||||
color: #9076FF; |
||||
cursor: pointer; |
||||
&:hover { |
||||
opacity: .9; |
||||
} |
||||
} |
||||
} |
||||
} |
||||
</style> |
Loading…
Reference in new issue