155 lines
5.0 KiB
Vue
155 lines
5.0 KiB
Vue
<template>
|
||
<div class="app-container">
|
||
<!--工具栏-->
|
||
<div class="head-container">
|
||
<!--如果想在工具栏加入更多按钮,可以使用插槽方式, slot = 'left' or 'right'-->
|
||
<crudOperation :permission="permission" />
|
||
<!--表单组件-->
|
||
<el-dialog append-to-body :close-on-click-modal="false" :before-close="crud.cancelCU" :visible.sync="crud.status.cu > 0" :title="crud.status.title" width="500px">
|
||
<el-form ref="form" :model="form" size="small" label-width="80px">
|
||
<el-form-item label="排序">
|
||
<el-input-number :min="1" v-model="form.sort" style="width: 370px;" />
|
||
</el-form-item>
|
||
<!-- 上传文件 -->
|
||
<el-form-item label="轮播图">
|
||
<el-upload
|
||
ref="upload"
|
||
:limit="1"
|
||
:before-upload="beforeUpload"
|
||
:auto-upload="false"
|
||
:headers="headers"
|
||
:on-success="handleSuccess"
|
||
:on-error="handleError"
|
||
:action="'/api/api/busCarousel/pictures?sort=' + form.sort"
|
||
>
|
||
<div class="eladmin-upload"><i class="el-icon-upload" /> 添加文件</div>
|
||
</el-upload>
|
||
</el-form-item>
|
||
</el-form>
|
||
<div slot="footer" class="dialog-footer">
|
||
<el-button type="text" @click="crud.cancelCU">取消</el-button>
|
||
<el-button :loading="loading" type="primary" @click="upload">确认</el-button>
|
||
</div>
|
||
</el-dialog>
|
||
|
||
<!--表格渲染-->
|
||
<el-table ref="table" v-loading="crud.loading" :data="crud.data" size="small" style="width: 100%;" @selection-change="crud.selectionChangeHandler">
|
||
<el-table-column type="selection" width="55" />
|
||
<el-table-column prop="id" label="编号" />
|
||
<el-table-column prop="path" label="轮播图" >
|
||
<template slot-scope="{row}">
|
||
<el-image
|
||
:src=" baseApi + row.path"
|
||
:preview-src-list="[baseApi + row.path]"
|
||
fit="contain"
|
||
lazy
|
||
class="el-avatar"
|
||
>
|
||
<div slot="error">
|
||
<i class="el-icon-document" />
|
||
</div>
|
||
</el-image>
|
||
</template>
|
||
</el-table-column>
|
||
<el-table-column prop="sort" label="排序" />
|
||
<el-table-column v-if="checkPer(['admin','busCarousel:del'])" label="操作" width="150px" align="center">
|
||
<template slot-scope="scope">
|
||
<udOperation
|
||
:data="scope.row"
|
||
:permission="permission"
|
||
/>
|
||
</template>
|
||
</el-table-column>
|
||
</el-table>
|
||
<!--分页组件-->
|
||
<pagination />
|
||
</div>
|
||
</div>
|
||
</template>
|
||
|
||
<script>
|
||
import crudBusCarousel from '@/api/bus/busCarousel/busCarousel'
|
||
import CRUD, { presenter, header, form, crud } from '@crud/crud'
|
||
import rrOperation from '@crud/RR.operation'
|
||
import crudOperation from '@crud/CRUD.operation'
|
||
import udOperation from '@crud/UD.operation'
|
||
import pagination from '@crud/Pagination'
|
||
import { mapGetters } from 'vuex'
|
||
import { getToken } from "@/utils/auth";
|
||
|
||
const defaultForm = { id: null, name: null, path: null, sort: null }
|
||
export default {
|
||
name: 'Carousel',
|
||
components: { pagination, crudOperation, rrOperation, udOperation },
|
||
mixins: [presenter(), header(), form(defaultForm), crud()],
|
||
cruds() {
|
||
return CRUD({ title: '', url: 'api/busCarousel', idField: 'id', sort: 'sort,asc', crudMethod: { ...crudBusCarousel }})
|
||
},
|
||
data() {
|
||
return {
|
||
permission: {
|
||
add: ['admin', 'busCarousel:add'],
|
||
edit: ['-1', 'busCarousel:edit'],
|
||
del: ['admin', 'busCarousel:del']
|
||
},
|
||
rules: {
|
||
path: [
|
||
{ required: true, message: '图片不能为空', trigger: 'blur' }
|
||
]
|
||
},
|
||
loading: false,
|
||
headers: { 'Authorization': getToken() },
|
||
}
|
||
},
|
||
created() {
|
||
this.crud.optShow = { add: true, del: true }
|
||
},
|
||
computed: {
|
||
...mapGetters([
|
||
'baseApi',
|
||
])
|
||
},
|
||
methods: {
|
||
// 钩子:在获取表格数据之前执行,false 则代表不获取数据
|
||
[CRUD.HOOK.beforeRefresh]() {
|
||
return true
|
||
},
|
||
// 上传文件
|
||
upload() {
|
||
this.$refs.upload.submit()
|
||
},
|
||
beforeUpload(file) {
|
||
let isLt2M = true
|
||
isLt2M = file.size / 1024 / 1024 < 100
|
||
if (!isLt2M) {
|
||
this.loading = false
|
||
this.$message.error('上传文件大小不能超过 100MB!')
|
||
}
|
||
this.form.name = file.name
|
||
return isLt2M
|
||
},
|
||
handleSuccess(response, file, fileList) {
|
||
this.crud.notify('上传成功', CRUD.NOTIFICATION_TYPE.SUCCESS)
|
||
this.$refs.upload.clearFiles()
|
||
this.crud.status.add = CRUD.STATUS.NORMAL
|
||
this.crud.resetForm()
|
||
this.crud.toQuery()
|
||
},
|
||
// 监听上传失败
|
||
handleError(e, file, fileList) {
|
||
const msg = JSON.parse(e.message)
|
||
this.$notify({
|
||
title: msg.message,
|
||
type: 'error',
|
||
duration: 2500
|
||
})
|
||
this.loading = false
|
||
}
|
||
}
|
||
}
|
||
</script>
|
||
|
||
<style scoped>
|
||
|
||
</style>
|