<template>
|
<div class="app-container">
|
<el-form
|
ref="form"
|
:inline="true"
|
class="inquire"
|
:model="listQuery.form"
|
label-width="100px"
|
>
|
<el-form-item label="地点">
|
<el-input v-model="listQuery.form.ADDRESS" style="width: 202px" placeholder="请输入内容"></el-input>
|
</el-form-item>
|
<el-form-item label="主持人">
|
<el-input v-model="listQuery.form.HOST" style="width: 202px" placeholder="请输入内容"></el-input>
|
</el-form-item>
|
<el-form-item label="召开时间">
|
<el-col :span="11">
|
<el-date-picker type="date" placeholder="选择日期" v-model="listQuery.form.Conference_TimeStart" style="width: 100%" value-format="yyyy-MM-dd"></el-date-picker>
|
</el-col>
|
<el-col style="text-align: center" :span="2">-</el-col>
|
<el-col :span="11">
|
<el-date-picker type="date" placeholder="选择日期" v-model="listQuery.form.Conference_TimeEnd" style="width: 100%" value-format="yyyy-MM-dd"></el-date-picker>
|
</el-col>
|
</el-form-item>
|
<el-form-item style="text-align: center; padding: 0 50px">
|
<el-button type="primary" class="btns" size="small" icon="el-icon-search" @click="getPageList()">查询</el-button>
|
<el-button type="primary" class="btns" size="small" icon="el-icon-refresh-right" @click="reset()">重置</el-button>
|
</el-form-item>
|
</el-form>
|
<el-row class="title-center">
|
<el-col :span="5">
|
<el-radio-group v-model="listQuery.type" @change="typeChange">
|
<el-radio-button label="0">未上报</el-radio-button>
|
<el-radio-button label="1">已上报</el-radio-button>
|
<el-radio-button label="2">上级公司会议</el-radio-button>
|
</el-radio-group>
|
</el-col>
|
<div v-if="listQuery.type==0">
|
<el-col :span="15">
|
<el-col :span="4" :offset="offset" style="text-align: right;">
|
<span style="line-height: 36px; font-size: 14px; color: #606266;margin-right:10px;font-weight: bold;">请选择上报方式</span>
|
</el-col>
|
<el-col :span="4">
|
<el-select v-model="upType" placeholder="请选择" @change="changeUpType">
|
<el-option v-for="item in upTypeList" :key="item.value" :label="item.label" :value="item.value">
|
</el-option>
|
</el-select>
|
</el-col>
|
<div v-if="upType == 1">
|
<el-col :span="5" :offset="1">
|
<el-date-picker type="date" placeholder="选择日期" v-model="upTimeStart" style="width: 100%" value-format="yyyy-MM-dd"></el-date-picker>
|
</el-col>
|
<el-col style="text-align: center" :span="1">
|
<span style="line-height: 36px; font-size: 14px; color: #606266;font-weight: bold;">至</span>
|
</el-col>
|
<el-col :span="5">
|
<el-date-picker type="date" placeholder="选择日期" v-model="upTimeEnd" style="width: 100%" value-format="yyyy-MM-dd"></el-date-picker>
|
</el-col>
|
</div>
|
<el-col :span="2" style="text-align: right">
|
<el-button type="primary" class="btns" size="small" @click="putBatch">上报</el-button>
|
</el-col>
|
</el-col>
|
<el-col :span="4" style="text-align: right">
|
<el-button class="btns" type="primary" size="small" icon="el-icon-plus" @click="addMeeting">添加</el-button>
|
<el-button class="btns" type="primary" size="small" icon="el-icon-close" @click="deleteBatch()">批量删除</el-button>
|
</el-col>
|
</div>
|
<div v-if="listQuery.type==1">
|
<el-col :span="18" style="text-align: right">
|
<el-button class="btns" type="primary" size="small" @click="revokeBatch">撤销</el-button>
|
</el-col>
|
</div>
|
</el-row>
|
<el-row class="title-center">
|
<el-col :span="10">
|
<el-radio-group v-model="listQuery.form.CONFERENCE_PROFESSIONAL" @change="changeType2">
|
<el-radio-button label="0">全部</el-radio-button>
|
<el-radio-button label="综合">综合</el-radio-button>
|
<el-radio-button label="生产">生产</el-radio-button>
|
<el-radio-button label="设备">设备</el-radio-button>
|
<el-radio-button label="电器">电器</el-radio-button>
|
<el-radio-button label="仪表">仪表</el-radio-button>
|
<el-radio-button label="消防">消防</el-radio-button>
|
<el-radio-button label="安全管理">安全管理</el-radio-button>
|
<el-radio-button label="其他">其他</el-radio-button>
|
</el-radio-group>
|
</el-col>
|
</el-row>
|
<el-table :data="tableData" style="width: 100%" @selection-change="handleSelectionChange" v-loading="listLoading">
|
<el-table-column type="selection" width="55" align="center"></el-table-column>
|
<el-table-column v-if="listQuery.type==2" prop="communityname" label="会议单位" align="center" width="120"></el-table-column>
|
<el-table-column prop="CONFERENCE_TIME" label="召开时间" :formatter="formatColumnDate" align="center" width="120"></el-table-column>
|
<el-table-column prop="ADDRESS" label="地点" align="center" width="120"></el-table-column>
|
<el-table-column prop="HOST" label="主持人" align="center" width="120"></el-table-column>
|
<el-table-column prop="CONFERENCE_PROFESSIONAL" label="会议专业" align="center" width="120"></el-table-column>
|
<el-table-column prop="meeting_content" label="会议摘要" align="center"></el-table-column>
|
<el-table-column prop="realFileName" label="会议纪要" align="center">
|
<template slot-scope="scope" >
|
|
<div v-for="item in scope.row.realFileName">
|
<el-link type="primary" @click="downloadFile(subFile(item))">
|
{{subFile(item)}}
|
</el-link>
|
</div>
|
</template>
|
</el-table-column>
|
<el-table-column prop="date" v-if="listQuery.type==0" label="基本操作" align="center">
|
<template slot-scope="scope">
|
<el-button @click="editMeeting(scope.row)" type="text" size="small">编辑</el-button>
|
<!-- <el-button @click="updateClick(scope.row)" type="text" size="small">保存</el-button>-->
|
<el-button @click="deleteMeeting(scope.row)" type="text" size="small">删除</el-button>
|
</template>
|
</el-table-column>
|
</el-table>
|
<div style="text-align: right">
|
<el-pagination
|
v-show="recordTotal > 0"
|
@size-change="handleSizeChange"
|
@current-change="handleCurrentChange"
|
:current-page="currentPage"
|
:page-sizes="[10, 20, 30, 50]"
|
:page-size="pageSize"
|
layout="total, sizes, prev, pager, next, jumper"
|
:total="recordTotal"
|
>
|
</el-pagination>
|
</div>
|
|
<el-dialog
|
:title="title"
|
:visible.sync="dialogVisible"
|
:close-on-click-modal="false"
|
width="40%">
|
<el-form ref="form" :rules="meetingRules" :model="meetingForm" label-width="100px">
|
<el-row>
|
<el-col :span="9">
|
<el-form-item label="召开时间" prop="CONFERENCE_TIME">
|
<el-date-picker type="date" placeholder="选择日期"
|
v-model="meetingForm.CONFERENCE_TIME"
|
style="width: 100%" value-format="yyyy-MM-dd"
|
></el-date-picker>
|
</el-form-item>
|
</el-col>
|
<el-col :span="9" :offset="4">
|
<el-form-item label="会议专业" prop="CONFERENCE_PROFESSIONAL">
|
<el-select v-model="meetingForm.CONFERENCE_PROFESSIONAL" placeholder="请选择">
|
<el-option
|
v-for="item in YHLXList"
|
:key="item.value"
|
:label="item.label"
|
:value="item.value">
|
</el-option>
|
</el-select>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="9">
|
<el-form-item label="地点" prop="ADDRESS">
|
<el-input v-model="meetingForm.ADDRESS" rows="3" type="textarea" class="multiline"></el-input>
|
</el-form-item>
|
</el-col>
|
<el-col :span="9" :offset="4">
|
<el-form-item label="主持人" prop="HOST">
|
<el-input v-model="meetingForm.HOST" rows="3" type="textarea" class="multiline"></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<el-row>
|
<el-col :span="22">
|
<el-form-item label="会议摘要" prop="meeting_content">
|
<el-input v-model="meetingForm.meeting_content" rows="3" type="textarea" class="multiline"></el-input>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
|
<el-row>
|
<el-col :span="22" >
|
<el-form-item label="会议纪要" prop="realFileName">
|
<el-upload
|
class="upload-demo"
|
ref="upload"
|
:http-request="uploadSectionFile"
|
:on-preview="handlePreview"
|
:on-remove="handleRemove"
|
:file-list="fileList"
|
:before-upload="beforeUpload"
|
:auto-upload="true">
|
<el-button slot="trigger" size="small" type="primary" class="btns">上传附件</el-button>
|
</el-upload>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
<el-row>
|
<el-col :span="22">
|
<el-form-item style="text-align: center">
|
<el-button type="primary" class="btns" @click="submitFrom('form')">
|
保存
|
</el-button>
|
<el-button @click="dialogVisible=false">关闭</el-button>
|
</el-form-item>
|
</el-col>
|
</el-row>
|
</el-form>
|
</el-dialog>
|
|
|
</div>
|
</template>
|
<script>
|
import {getPageList,addOrEdit, del, revoke, put} from "@/api/sgyhpczl/troubleshooting";
|
import {uploadFile} from "@/api/sgyhpczl/hiddenDangerRectification";
|
import {deepClone} from '@/utils'
|
import {downloadFile} from "@/api/sgyhpczl/fileUtils";
|
|
import {
|
initYHLX,
|
} from "@/api/sgyhpczl/initSelect";
|
|
export default {
|
data() {
|
return {
|
listQuery: {
|
page: 1,
|
limit: 10,
|
type: 0,//type=0 待上报 type=1 已上报 type=2 上级公司会议
|
form: {
|
CONFERENCE_PROFESSIONAL: '0'
|
},
|
},
|
form: {},
|
currentPage: 1,
|
pageSize: 10,
|
recordTotal: 0,
|
YHLXList:[],
|
tableData: [],
|
selectedList: [],
|
listLoading: false,
|
// fileList:[{name:'aa.doc',url:'sssss.doc'}],
|
fileList:[],
|
upTypeList:[{label:"按勾选上报",value:0},{label:"按时间上报",value:1}],
|
upType:0,
|
upTimeStart:'',
|
upTimeEnd:'',
|
offset: 14,
|
|
title:'',
|
dialogVisible:false,
|
meetingForm:{},
|
meetingRules:{
|
CONFERENCE_TIME: [{ required: true, message: '不能为空', trigger: 'blur' },],
|
ADDRESS: [{ required: true, message: '不能为空', trigger: 'blur' },],
|
HOST: [{ required: true, message: '不能为空', trigger: 'blur' },],
|
meeting_content: [{ required: true, message: '不能为空', trigger: 'blur' },],
|
CONFERENCE_PROFESSIONAL: [{ required: true, message: '不能为空', trigger: 'blur' },],
|
},
|
};
|
},
|
mounted() {
|
this.getPageList();
|
this.initYHLX();
|
},
|
methods: {
|
initYHLX(){
|
initYHLX().then(res=>{
|
if (res.data.ok==1){
|
this.YHLXList=res.data.data
|
} else{
|
this.$message({type:'error', message:res.data.msg, duration:3000})
|
}
|
})
|
},
|
changeUpType(val){
|
this.upType = val;
|
if (val == 1){
|
this.offset = 2;
|
}else {
|
this.offset = 14;
|
}
|
},
|
checkTime(){
|
if(this.listQuery.form.Conference_TimeStart!=null && this.listQuery.form.Conference_TimeStart!=''){
|
if(this.listQuery.form.Conference_TimeEnd!=null && this.listQuery.form.Conference_TimeEnd!=''){
|
}else {
|
this.$message({type:'error', message:"请选择检查结束时间", duration:3000})
|
return
|
}
|
}
|
},
|
//搜索
|
getPageList() {
|
this.listQuery.page = 1;
|
this.checkTime();
|
this.listLoading = true
|
getPageList(this.listQuery).then((res) => {
|
this.listLoading = false
|
if (res.data.ok == 1) {
|
this.tableData = res.data.data.items;
|
this.recordTotal = res.data.data.total;
|
} else {
|
this.$message({
|
type: "error",
|
message: res.data.msg,
|
duration: 3000,
|
});
|
}
|
});
|
},
|
//重置
|
reset() {
|
this.listQuery.form = {};
|
this.getPageList();
|
},
|
handleSizeChange(val) {
|
this.listQuery.limit = val;
|
this.getPageListForPagination();
|
},
|
handleCurrentChange(val) {
|
this.listQuery.page = val;
|
this.getPageListForPagination();
|
},
|
getPageListForPagination() {
|
this.checkTime();
|
getPageList(this.listQuery).then((res) => {
|
if (res.data.ok == 1) {
|
this.tableData = res.data.data.items;
|
this.recordTotal = res.data.data.total;
|
} else {
|
this.$message({
|
type: "error",
|
message: res.data.msg,
|
duration: 3000,
|
});
|
}
|
});
|
},
|
typeChange(val) {
|
this.listQuery.type = val;
|
this.getPageList();
|
},
|
changeType2(val){
|
this.listQuery.form.CONFERENCE_PROFESSIONAL = val;
|
this.getPageList();
|
},
|
handleSelectionChange(val) {
|
this.selectedList = [];
|
val.forEach((item) => {
|
this.selectedList.push(item);
|
});
|
},
|
uploadSectionFile(param) {
|
let form = new FormData();
|
form.append('file', param.file);
|
form.append('type', "1");
|
uploadFile(form).then(res => {
|
var data = res.data;
|
if (data.ok) {
|
var fileName = data.data.fileName[0];
|
if (!fileName.endsWith("a62b")) {
|
fileName = fileName + param.file.realFileName;
|
}
|
this.fileList.push({name:fileName,url:fileName})
|
}
|
}).error(res => {
|
this.$message({
|
type: 'error',
|
message: '附件上传失败,请重试!'
|
});
|
})
|
},
|
downloadFile(path){
|
let params = {
|
type: 1,
|
fileName: path,
|
};
|
downloadFile(params).then((res) => {
|
if(res.data.type=='text/json'){
|
const reader = new FileReader(); //创建一个FileReader实例
|
reader.readAsText(res.data, 'utf-8'); //读取文件,结果用字符串形式表示
|
//读取完成后,**获取reader.result**
|
reader.onload = e => {
|
this.$message({
|
type: "error",
|
message: JSON.parse(reader.result).msg,
|
duration: 3000,
|
});
|
}
|
} else {
|
let blob = new Blob([res.data], {type: 'application/octet-stream'})
|
console.log(blob)
|
// 创建下载的链接
|
let blobUrl = window.URL.createObjectURL(blob)
|
let downloadElement = document.createElement('a')
|
downloadElement.href = blobUrl
|
//下载后文件名
|
downloadElement.download = path
|
document.body.appendChild(downloadElement)
|
//点击下载
|
downloadElement.click()
|
//下载完成移除元素
|
document.body.removeChild(downloadElement)
|
// 释放掉blob对象
|
window.URL.revokeObjectURL(blobUrl)
|
}
|
});
|
},
|
subFile(fileName){
|
return fileName.substring(fileName.indexOf("fileName=")+9)
|
},
|
//删除上传组件文件
|
handleRemove(file, fileList) {
|
this.fileList = fileList;
|
},
|
//点击上传组件-文件列表
|
handlePreview(file) {
|
this.downloadFile(file.url)
|
},
|
beforeUpload(file) {
|
var FileExt = file.name.replace(/.+\./, "");
|
if (['doc', 'docx', 'pdf', 'ppt', 'pptx','xls','xlsx','rar','zip'].indexOf(FileExt.toLowerCase()) === -1) {
|
this.$message({
|
type: 'warning',
|
message: '请上传正确格式的文件!(.doc,.docx,.pdf,.ppt,.pptx,.xls,.xlsx,.rar,.zip)'
|
});
|
return false;
|
}
|
},
|
editMeeting(row, index) {
|
this.meetingForm = deepClone(row);
|
this.rowIndex = index;
|
this.dialogVisible = true;
|
this.title = '编辑';
|
this.fileList = [];
|
const arr = this.meetingForm.realFileName;
|
for (let i = 0; i < arr.length; i++) {
|
this.fileList.push({name:this.subFile(arr[i]),url:this.subFile(arr[i])})
|
}
|
},
|
addMeeting(){
|
this.fileList = [];
|
this.meetingForm={}
|
this.title="新增"
|
this.dialogVisible=true
|
},
|
//提交表单
|
submitFrom(formName){
|
let fileStr = '';
|
if (this.fileList.length != 0){
|
this.fileList.forEach((item,index,arr)=>{
|
if (item.url.endsWith("a62b")) {
|
fileStr = fileStr + item.url;
|
}else {
|
fileStr = fileStr + item.url + "a62b";
|
}
|
})
|
}
|
this.meetingForm.realFileName = fileStr;
|
console.log(this.meetingForm)
|
this.$refs[formName].validate((valid) => {
|
if (valid) {
|
|
addOrEdit(this.meetingForm).then(res=>{
|
if (res.data.ok==1) {
|
this.dialogVisible=false
|
this.$message({type:'success', message:res.data.msg, duration:3000})
|
this.getPageList()
|
}else{
|
this.$message({type:'error', message:res.data.msg, duration:3000})
|
}
|
})
|
} else {
|
console.log("error submit!!");
|
return false;
|
}
|
});
|
},
|
deleteBatch() {
|
if (this.selectedList == null || this.selectedList.length == 0) {
|
this.$message({type: 'warning', message: '至少选中一条数据', duration: 3000})
|
return
|
}
|
var ids = this.selectedList.map((obj) => {
|
return obj.id
|
}).join(",")
|
this.$confirm('确认删除吗', '提示', {
|
confirmButtonText: '确认',
|
cancelButtonText: '取消',
|
type: 'warning'
|
}).then(() => {
|
del(ids).then(() => {
|
this.getPageList()
|
this.$notify({
|
title: "成功",
|
message: "删除成功",
|
type: "success",
|
duration: 2000,
|
});
|
});
|
})
|
.catch(error => {
|
});
|
},
|
deleteMeeting(row) {
|
this.$confirm('确认删除吗', '提示', {
|
confirmButtonText: '确认',
|
cancelButtonText: '取消',
|
type: 'warning'
|
}).then(() => {
|
console.log(row.id)
|
del(row.id).then(() => {
|
this.getPageList()
|
this.$notify({
|
title: "成功",
|
message: "删除成功",
|
type: "success",
|
duration: 2000,
|
});
|
});
|
}).catch(error => {
|
});
|
},
|
//撤销
|
revokeBatch() {
|
if (this.selectedList == null || this.selectedList.length == 0) {
|
this.$message({type: 'warning', message: '至少选中一条数据', duration: 3000})
|
return
|
}
|
var ids = this.selectedList.map((obj) => {
|
return obj.id
|
}).join(",")
|
this.$confirm('确认撤销吗', '提示', {
|
confirmButtonText: '确认',
|
cancelButtonText: '取消',
|
type: 'warning'
|
}).then(() => {
|
// revoke(ids).then(() => {
|
// this.getPageList()
|
// this.$notify({
|
// title: "成功",
|
// message: "撤销成功",
|
// type: "success",
|
// duration: 2000,
|
// });
|
// });
|
}).catch(error => {
|
});
|
},
|
//上报
|
putBatch() {
|
if (this.selectedList == null || this.selectedList.length == 0) {
|
this.$message({type: 'warning', message: '至少选中一条数据', duration: 3000})
|
return
|
}
|
var ids = this.selectedList.map((obj) => {
|
return obj.id
|
}).join(",")
|
this.$confirm('确认上报吗', '提示', {
|
confirmButtonText: '确认',
|
cancelButtonText: '取消',
|
type: 'warning'
|
}).then(() => {
|
// put(ids).then(() => {
|
// this.getPageList()
|
// this.$notify({
|
// title: "成功",
|
// message: "上报成功",
|
// type: "success",
|
// duration: 2000,
|
// });
|
// });
|
}).catch(error => {
|
});
|
},
|
|
|
//日期格式转换
|
formatColumnDate(row, column) {
|
// 获取单元格数据
|
let data = row[column.property];
|
if (data == null) {
|
return null;
|
}
|
let dt = new Date(data);
|
return (
|
dt.getFullYear() + "-" + (dt.getMonth() + 1) + "-" + dt.getDate() + " "
|
);
|
},
|
},
|
};
|
</script>
|
<style scoped>
|
.inquire {
|
display: flex;
|
justify-content: left;
|
flex-wrap: wrap;
|
}
|
.inquire .el-form-item {
|
padding: 0 20px;
|
}
|
.title-center {
|
padding: 20px 0;
|
}
|
|
.btns {
|
background-color: #034ea2;
|
border: 1px solid #034ea2;
|
}
|
|
.title-center /deep/ .el-radio-button:first-child .el-radio-button__inner {
|
border: none;
|
}
|
|
.title-center /deep/ .el-radio-button__inner {
|
border: none;
|
border-radius: 0px;
|
}
|
|
.title-center
|
/deep/
|
.el-radio-button__orig-radio:checked
|
+ .el-radio-button__inner {
|
background-color: #034ea2;
|
background-color: #034ea2;
|
}
|
</style>
|