<template>
|
<div class="app-container">
|
<div class="filter-container">
|
<el-row>
|
<el-col :span="1.5">
|
<el-button class="filter-item" style="margin-left: 10px;" type="primary" @click="openFeedBackForm('新增','')">添加</el-button>
|
</el-col>
|
<el-col :span="1.5">
|
<el-upload
|
class="upload"
|
:action="actionUrlPrefixx+ '/enterprise/import/feed/'+this.enterpriseId"
|
:headers="headers"
|
:on-preview="handlePreview"
|
:on-remove="handleRemove"
|
:before-remove="beforeRemove"
|
:limit="1"
|
:before-upload="beforeUpload"
|
:on-exceed="handleExceed"
|
:on-success="handleSuccess"
|
:on-error="handleError"
|
:show-file-list="false"
|
:file-list="fileList">
|
<el-button class="filter-item" style="margin-left: 10px;" type="primary" >导入</el-button>
|
</el-upload>
|
</el-col>
|
<el-col :span="1.5">
|
<el-button class="filter-item" style="margin-left: 10px;" type="primary" @click="viewHandle">下载导入模板</el-button>
|
</el-col>
|
<el-col :span="1.5">
|
<el-button class="filter-item" style="margin-left: 10px;" type="primary" @click="exportHandle">导出</el-button>
|
</el-col>
|
</el-row>
|
|
|
|
</div>
|
<div class="table_content">
|
<el-table
|
v-loading="listLoading"
|
:key="tableKey"
|
:data="feedListData"
|
border
|
fit
|
highlight-current-row
|
style="width: 100%;"
|
>
|
<el-table-column label="序号" type="index" align="center" width="60"/>
|
<el-table-column label="反馈内容" prop="content" align="center">
|
</el-table-column>
|
<el-table-column label="发现时间" prop="findtime" align="center">
|
</el-table-column>
|
<el-table-column label="上传人" prop="createbyname" align="center">
|
</el-table-column>
|
<el-table-column label="上传时间" prop="createtime" align="center">
|
</el-table-column>
|
<el-table-column label="操作" align="center" width="180" class-name="small-padding fixed-width">
|
<template slot-scope="scope">
|
<el-button type="text" @click="openFeedBackForm('查看',scope.row)">查看</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
<br>
|
<el-pagination
|
v-show="recordTotal>0"
|
:current-page="currentPage"
|
:page-sizes="[10, 20, 30, 50]"
|
:page-size="pageSize"
|
:total="recordTotal"
|
layout="total, sizes, prev, pager, next, jumper"
|
background
|
style="float:right;"
|
@size-change="handleSizeChange"
|
@current-change="handleCurrentChange"
|
/>
|
</div>
|
<feedForm ref="feedFormRef" @getinfo="getFeedBackListData"></feedForm>
|
</div>
|
</template>
|
|
<script>
|
import feedForm from "./components/feedForm";
|
import { parseTime,computePageCount } from '@/utils'
|
import { getFeedBackList ,exportOne} from '@/api/Feed'
|
const exampleFile = require('@/assets/example/feedback.xlsx')
|
import { getToken } from '@/utils/auth'
|
|
export default {
|
name: "publicSecurityDepartment",
|
props:["enterpriseId"],
|
data(){
|
return{
|
fileList:[],
|
actionUrlPrefixx:process.env.BASE_API,
|
headers:{ 'Authorization':getToken()},
|
tableKey:0,
|
listLoading:false,
|
pageSize: 10,
|
recordTotal: 0,
|
currentPage: 1,
|
pageIndex:0,
|
pageTotal: 0,
|
searchContent:'',
|
feedListData:[],
|
}
|
},
|
components:{
|
feedForm
|
},
|
created(){
|
this.getFeedBackListData()
|
},
|
methods:{
|
async getFeedBackListData(){
|
const params = {}
|
params['pageIndex'] = this.currentPage
|
params['pageSize'] = this.pageSize
|
this.listLoading = true
|
let res = await getFeedBackList(params,this.enterpriseId)
|
if(res.data.code === "200"){
|
this.recordTotal = res.data.result.total
|
this.pageSize = res.data.result.size
|
this.pageTotal = computePageCount(res.data.result.total, res.data.result.size)
|
this.currentPage = res.data.result.current
|
this.feedListData = res.data.result.records
|
}else{
|
this.$message({
|
type:'warning',
|
message:res.data.message
|
})
|
}
|
this.listLoading = false
|
},
|
|
openFeedBackForm(title,value){
|
this.$refs.feedFormRef.showFeedBack(title,value,this.enterpriseId)
|
},
|
|
|
|
|
queryHandle(){
|
this.getFeedBackListData()
|
},
|
handleSizeChange(val) {
|
this.pageSize = val
|
this.currentPage = 1
|
this.getFeedBackListData()
|
},
|
handleCurrentChange(val) {
|
this.currentPage = val
|
this.getFeedBackListData()
|
},
|
viewHandle(){
|
window.open(exampleFile,'_blank')
|
},
|
exportHandle(){
|
let _this =this
|
exportOne({id:this.enterpriseId}).then(function(res) {
|
if(res.data.code === '200'){
|
if(res.data.result === null ||res.data.result === [] || res.data.result.length === 0){
|
_this.$message({
|
type:'warning',
|
message:'无数据可导出'
|
})
|
}else {
|
let allData = res.data.result
|
import('@/vendor/Export2Excel').then((excel) => {
|
const tHeader = [
|
'企业名称',
|
'上传时间',
|
'上传人',
|
'发现时间',
|
'内容',
|
]
|
const filterVal = [
|
'enterprisename',
|
'createtime',
|
'createbyname',
|
'findtime',
|
'content',
|
]
|
const data = allData.map(v =>
|
filterVal.map(j => {
|
if (j == 'createtime' || j == 'findtime') {
|
return parseTime(v[j], '{y}-{m}-{d}')
|
}
|
return v[j];
|
})
|
);
|
excel.export_json_to_excel({
|
header: tHeader,
|
data,
|
filename: '企业信息反馈'
|
})
|
})
|
}
|
}else{
|
_this.$message({
|
message:res.data.message,
|
type:'warning'
|
})
|
}
|
|
})
|
},
|
handleRemove(file, fileList) {
|
if (file && file.status==="success") {
|
return this.$confirm(`已清空信息`);
|
}
|
},
|
handlePreview(file) {
|
},
|
handleExceed(files, fileList) {
|
this.$message.warning(`当前限制选择 1个文件,本次选择了 ${files.length} 个文件`);
|
},
|
beforeRemove(file, fileList) {
|
|
},
|
handleSuccess(response, file, fileList) {
|
if (response.code == '200') {
|
this.getFeedBackListData()
|
this.$notify({
|
title: '成功',
|
duration: 2000,
|
message: '上传成功',
|
type: 'success'
|
})
|
this.fileList = []
|
}else{
|
this.$message.warning(response.message);
|
this.fileList = []
|
}
|
},
|
handleError(response, file, fileList) {
|
this.fileList = []
|
},
|
beforeUpload(file){
|
const fileSuffix = file.name.substring(file.name.lastIndexOf(".") + 1);
|
|
const whiteList = ["xls", "xlsx"];
|
|
if (whiteList.indexOf(fileSuffix) === -1) {
|
this.$message.warning("上传文件只能是 xls、xlsx格式", "error");
|
return false;
|
}
|
},
|
}
|
}
|
</script>
|
|
<style scoped>
|
|
</style>
|