<template>
|
<div class="warp">
|
<div class="search">
|
<el-form :inline="true" :model="searchForm" class="demo-form-inline">
|
<el-form-item label="主题">
|
<el-input v-model="searchForm.subject" size="small" placeholder="主题内容" clearable @clear="page"></el-input>
|
</el-form-item>
|
<el-form-item label="学习类型">
|
<el-select v-model="searchForm.belongType" clearable @clear="page" @change="page" placeholder="学习类型">
|
<el-option
|
v-for="type in typeList"
|
:key="type.id"
|
:label="type.typeName"
|
:value="type.id">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item>
|
<el-button type="primary" @click="page" size="small">查询</el-button>
|
</el-form-item>
|
</el-form>
|
<div>
|
<el-button type="primary" @click="handlerAdd" size="small">添加</el-button>
|
<el-button type="danger" @click="batchRemove" size="small" style="margin-left: 5px">删除</el-button>
|
</div>
|
</div>
|
<el-table
|
:data="tableData"
|
border
|
@selection-change="handleSelectionChange"
|
style="width: 100%">
|
<el-table-column
|
type="selection"
|
width="55">
|
</el-table-column>
|
<el-table-column
|
fixed
|
prop="subject"
|
label="主题 ">
|
</el-table-column>
|
<el-table-column
|
prop="typeName"
|
label="学习类型">
|
</el-table-column>
|
<el-table-column
|
prop="contentType"
|
:formatter="typeFormatter"
|
label="文件类型">
|
</el-table-column>
|
<el-table-column
|
label="文件内容"
|
>
|
<template slot-scope="scope">
|
<video v-if="scope.row.contentType === 'video'" :src="'/api/files/' + scope.row.contentUrl.url" class="showContent"/>
|
<img v-if="scope.row.contentType === 'img'" :src="'/api/files/' + scope.row.contentUrl.url" class="showContent"/>
|
<el-link type="primary" v-if="scope.row.contentType === 'pdf'" :src="'/api/files/' + scope.row.contentUrl.url" class="showContent">点击查看</el-link>
|
</template>
|
</el-table-column>
|
<el-table-column
|
prop="attachment"
|
label="附件">
|
<template slot-scope="scope">
|
<el-link type="primary" v-for="item in scope.row.attachment">{{item.name}}</el-link>
|
</template>
|
</el-table-column>
|
<el-table-column
|
fixed="right"
|
label="操作"
|
width="140">
|
<template slot-scope="scope">
|
<el-button @click="handleUpdate(scope.row)" type="primary" size="small" style="margin-right: 5px">修改</el-button>
|
|
<el-popconfirm
|
:title="getTitle(scope.row.typeName)"
|
@confirm="remove(scope.row.id)"
|
>
|
<el-button slot="reference" type="danger" size="small">删除</el-button>
|
</el-popconfirm>
|
</template>
|
</el-table-column>
|
</el-table>
|
<pagination v-show="total>0" :total="total" :page.sync="searchForm.pageNum" :limit.sync="searchForm.pageSize"
|
@pagination="page"/>
|
|
<el-dialog
|
title="添加学习内容"
|
:visible.sync="open"
|
width="600px"
|
:close-on-click-modal="false"
|
:before-close="handleClose">
|
<el-form label-position="left" label-width="120px" ref="form" :rules="rules" :model="form">
|
<el-form-item label="主题" prop="subject">
|
<el-input v-model="form.subject" placeholder="主题内容"></el-input>
|
</el-form-item>
|
<el-form-item label="学习类型" prop="belongType">
|
<el-select v-model="form.belongType" placeholder="学习类型">
|
<el-option
|
v-for="type in typeList"
|
:key="type.id"
|
:label="type.typeName"
|
:value="type.id">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="文件类型" prop="contentType">
|
<el-select v-model="form.contentType" placeholder="不同类型的文件阅览方式不同,多余文件请以附件形式上传">
|
<el-option label="视频" value="video"></el-option>
|
<el-option label="PDF" value="pdf"></el-option>
|
<el-option label="图片" value="img"></el-option>
|
</el-select>
|
</el-form-item>
|
<el-form-item label="上传文件(一个)" prop="contentUrl">
|
<upload v-show="form.contentType" ref="upload" :fileUrl="fileContentUrl" :fileType="form.contentType" :fileSizeLimitM="1024" :uploadNum="1" @getUploadUrl="getUploadUrl" @removeFile="removeFile"/>
|
</el-form-item>
|
<el-form-item label="附件(最多3个)" prop="attachment">
|
<upload :fileSizeLimitM="1024" :uploadNum="3" :fileUrl="form.attachment" @getUploadUrl="getUploadAttachmentUrl" @removeFile="removeAttachmentFile"/>
|
</el-form-item>
|
</el-form>
|
<span slot="footer" class="dialog-footer">
|
<el-button @click="open = false">取 消</el-button>
|
<el-button type="primary" @click="handlerSubmit">保 存</el-button>
|
</span>
|
</el-dialog>
|
</div>
|
</template>
|
|
<script>
|
import Pagination from '@/components/Pagination'
|
import OnlineStudyAPI from '@/api/online-study'
|
import StudyTypeAPI from '@/api/study-type'
|
import Upload from '@/components/UploadC'
|
export default {
|
name: 'type',
|
components: {Upload, Pagination},
|
computed: {
|
fileContentUrl: function () {
|
return this.form ? this.form.contentUrl ? [this.form.contentUrl] : [] : []
|
}
|
},
|
data () {
|
return {
|
ids: [],
|
typeList: [],
|
searchForm: {
|
pageNum: 1,
|
pageSize: 10,
|
typeName: ''
|
},
|
total: 0,
|
tableData: [],
|
open: false,
|
form: {
|
contentType: 'video'
|
},
|
rules: {
|
contentUrl: [
|
{ required: true, message: '请上传文件', trigger: 'blur' },
|
],
|
subject: [
|
{ required: true, message: '请输入主题内容', trigger: 'blur' },
|
],
|
belongType: [
|
{ required: true, message: '请选择学习分类', trigger: 'change' }
|
],
|
contentType: [
|
{ required: true, message: '请选择文件类型', trigger: 'change' }
|
]
|
}
|
}
|
},
|
methods: {
|
handleSelectionChange(val) {
|
this.ids = val.map(item => item.id);
|
},
|
typeFormatter(row) {
|
if (row.contentType === 'video') {
|
return "视频"
|
}
|
if (row.contentType === 'img') {
|
return "图片"
|
}
|
if (row.contentType === 'pdf') {
|
return "PDF"
|
}
|
},
|
clearFile() {
|
this.form.contentUrl = null
|
this.$refs.upload.clearFile()
|
},
|
removeFile() {
|
this.form.contentUrl = null
|
},
|
removeAttachmentFile(fileList, fileName) {
|
console.log(fileList, fileName, "dddddddd")
|
this.form.attachment = fileList.filter(item => item.name !== fileName)
|
},
|
getUploadAttachmentUrl (uploadData) {
|
this.form.attachment = uploadData
|
},
|
getUploadUrl(uploadData) {
|
this.form.contentUrl = uploadData[0]
|
},
|
remove (id) {
|
OnlineStudyAPI.remove([id]).then(res => {
|
if (res.code === 1) {
|
this.$message.success('删除成功')
|
}
|
})
|
},
|
batchRemove () {
|
if (this.ids.length < 1) {
|
this.$message.warning("请选择要删除的数据")
|
}
|
OnlineStudyAPI.remove(this.ids).then(res => {
|
if (res.code === 1) {
|
this.$message.success('删除成功')
|
this.ids = []
|
}
|
})
|
},
|
getTitle (typeName) {
|
return '确定要删除' + typeName + '这个文件吗?'
|
},
|
handlerSubmit () {
|
this.$refs['form'].validate((valid) => {
|
if (valid) {
|
if (this.form.id) {
|
OnlineStudyAPI.update(this.form).then(res => {
|
if (res.code === 1) {
|
this.$message.success('修改成功')
|
this.open = false
|
this.page()
|
}
|
})
|
} else {
|
OnlineStudyAPI.add(this.form).then(res => {
|
if (res.code === 1) {
|
this.$message.success('添加成功')
|
this.open = false
|
this.page()
|
}
|
})
|
}
|
}
|
})
|
},
|
handleClose () {
|
this.open = false
|
this.form = {}
|
},
|
handlerAdd () {
|
this.form = {}
|
this.open = true
|
},
|
page () {
|
OnlineStudyAPI.page(this.searchForm).then(res => {
|
if (res.code === 1) {
|
this.tableData = res.response
|
this.total = res.total
|
}
|
})
|
},
|
handleUpdate (row) {
|
this.form.id = row.id
|
this.form.contentType = row.contentType
|
this.form.contentUrl = row.contentUrl
|
this.form.attachment = row.attachment
|
this.form.subject = row.subject
|
this.form.belongType = row.belongType
|
console.log(row, "dfddddddd")
|
this.open = true
|
}
|
},
|
mounted () {
|
this.page()
|
StudyTypeAPI.list().then(res => {
|
if (res.code === 1) {
|
this.typeList = res.response
|
}
|
})
|
}
|
}
|
</script>
|
|
<style scoped>
|
.showContent {
|
width: 200px;
|
height: 100px;
|
}
|
.warp {
|
margin: 40px 10px;
|
}
|
.search {
|
margin-top: 10px;
|
}
|
</style>
|