You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

235 lines
7.1 KiB

<template>
<div class="app-container">
<!--头部选项-->
<div class="head-container">
<div class="searchBox">
<el-input
v-model="query.filename"
placeholder="请输入文件名称"
style="width: 200px"
class="filter-item"
clearable
@keyup.enter.native="crud.toQuery"
/>
<query :crud="crud" />
<el-upload
ref="upload"
slot="right"
class="upload-demo"
:show-file-list="false"
:before-upload="beforeUpload"
accept=".pdf"
action=""
>
<el-button slot="trigger" size="middle" type="primary">
上传文件
</el-button>
</el-upload>
</div>
</div>
<!--表格内容-->
<CustomTable
ref="customTable"
:col-configs="colConfigs"
:columns="columns"
:crud="crud"
>
<el-table-column
slot="operation"
align="center"
width="200"
label="操作"
>
<template slot-scope="scope">
<el-button type="text" @click="downLoad(scope.row)">
预览
</el-button>
<el-button type="text" @click="downLoadFn(scope.row)">
下载
</el-button>
<el-button type="text" @click="checkHistory(scope.row)">
历史
</el-button>
</template>
</el-table-column>
</CustomTable>
<pagination />
<el-dialog title="查看历史版本" :visible.sync="dialogTableVisible">
<el-table :data="gridData">
<el-table-column :formatter="formatterFlowName" property="flowName" label="操作环节" width="80" />
<el-table-column property="filename" label="文件名称" />
<el-table-column :formatter="formatter.getChineseName" property="createBy" label="创建人" width="100" />
<el-table-column property="createTime" label="创建时间" width="150" />
<el-table-column label="操作" width="80">
<template v-slot="scope">
<el-button v-if="scope.row.flowName !== 0" type="text" @click="viewHistoryFile(scope.row)">
预览
</el-button>
</template>
</el-table-column>
</el-table>
<el-pagination
:page-size="params.pageSize"
layout="total,prev, pager, next"
:total="subTotal"
@current-change="handleCurrentChange"
/>
</el-dialog>
</div>
</template>
<script>
import CRUD, { header, presenter } from '@/components/Crud/crud'
import Query from '@/components/Crud/Query'
import CustomTable from '@/components/Crud/Table'
import Pagination from '@/components/Crud/Pagination'
import CrudDocumentArchives from '@/api/document_archives'
import { uploadFileFn, updateInspectionSystemFile } from '@/api/common'
import { downloadFileUrl } from '@/utils'
import preview from '@/utils/preview'
// crud交由presenter持有
const defaultCrud = presenter(
CRUD({
title: '检验机构体系文件管理',
url: '/inspectionSystemFile/list',
orderBy: ['id desc'],
api: preview,
crudMethod: { ...CrudDocumentArchives }
})
)
export default {
name: 'DocumentArchivesList',
components: { Pagination, Query, CustomTable },
mixins: [defaultCrud, header()],
data() {
return {
action: this.preview.baseURL + '/inspectionSystemFile',
fileList: [],
colConfigs: [
{ prop: 'filename', label: '文件名', align: 'center' },
{ prop: 'createBy', label: '创建人', align: 'center', formatter: this.formatter.getChineseName },
{ prop: 'createTime', label: '创建时间', align: 'center' },
{ prop: 'updateBy', label: '更新人', align: 'center', formatter: this.formatter.getChineseName },
{
prop: 'updateTime',
label: '更新时间',
align: 'center',
formatter: this.formatter.formatterDepartmentName
},
{ slot: 'operation' }
],
permission: {
add: ['documentArchives:add'],
edit: ['documentArchives:update'],
del: ['documentArchives:delete']
},
dialogTableVisible: false,
params: {
inspectionSystemFileId: '',
pageNum: 1,
pageSize: 10
},
gridData: [],
subTotal: 0,
url: process.env.VUE_APP_PREVIEW_API + process.env.VUE_APP_PROJECT_NAME + '/inspectionSystemFile'
}
},
mounted() {
},
methods: {
handleRemove(file, fileList) {
console.log(file, fileList)
},
handlePreview(file) {
console.log(file)
},
checkHistory(row) {
this.dialogTableVisible = true
this.params.inspectionSystemFileId = row.id
this.getSubList()
},
getSubList() {
this.preview({
url: '/inspectionSystemFileLog/list',
method: 'get',
params: this.params
}).then(res => {
this.gridData = res.list
this.subTotal = res.total
})
},
handleCurrentChange(val) {
this.params.pageNum = val
this.getSubList()
},
handleExceed(files, fileList) {
this.$message.warning(
`当前限制选择 3 个文件,本次选择了 ${files.length} 个文件,共选择了 ${
files.length + fileList.length
} 个文件`
)
},
// EXCEL上传方法
beforeUpload(file) {
if (this.$refs.customTable.$refs.table.selection.length > 1) {
this.$notify.warning('请选择单份体系文件进行更新上传!')
return false
}
const fd = new FormData()
fd.append('file', file)
if (this.$refs.customTable.$refs.table.selection.length) {
fd.append('id', this.$refs.customTable.$refs.table.selection[0].id)
updateInspectionSystemFile(fd).then(() => {
this.$notify.success('体系更新成功。')
this.crud.toQuery()
})
} else {
uploadFileFn(fd).then(() => {
this.$notify.success('体系上传成功。')
this.crud.toQuery()
})
}
return false
},
downLoad(item) {
window.open(this.url + '/' + item.id + item.suffix)
},
viewHistoryFile(item) {
downloadFileUrl(this.url + '/' + item.inspectionSystemFileId + '_' + item.id + item.suffix, item.filename, item.suffix)
},
downLoadFn(item) {
downloadFileUrl(this.url + '/' + item.id + item.suffix, item.filename, item.suffix)
},
beforeRemove(file, fileList) {
return this.$confirm(`确定移除 ${file.name}`)
},
closeReportDialog() {
this.$refs['reportForm'].resetFields()
},
formatterFlowName(row, column, cellValue) {
switch (cellValue) {
case 0:
return '保存'
case 1:
return '更新'
case 2:
return '删除'
default:
break
}
}
}
}
</script>
<style scoped>
.searchBox{
margin-bottom: 20px;
display: flex;
}
.upload-demo{
margin-left: 20px;
width: 200px;
}
</style>