From a7301af282fd45501b73431747e52c96999816de Mon Sep 17 00:00:00 2001
From: cqf
Date: 星期六, 21 五月 2022 16:23:36 +0800
Subject: [PATCH] 隐患排查会议-上传下载增删改
---
src/views/troubleshooting/index.vue | 458 ++++++++++++++++++++++++++++++++++++--------------
src/views/oneFromanotherN/index.vue | 7
src/api/sgyhpczl/troubleshooting.js | 68 +++++-
3 files changed, 377 insertions(+), 156 deletions(-)
diff --git a/src/api/sgyhpczl/troubleshooting.js b/src/api/sgyhpczl/troubleshooting.js
index 7d26f49..610645a 100644
--- a/src/api/sgyhpczl/troubleshooting.js
+++ b/src/api/sgyhpczl/troubleshooting.js
@@ -32,21 +32,7 @@
data
});
}
-//导出
-export function analogy_export_do(data) {
- return request({
- headers: {
- 'token': getTokenAndVerify().token,
- 'verify': getTokenAndVerify().verify
- },
- url: '/taboi/excel/analogy_export_do',
- method: 'POST',
- responseType: 'arraybuffer',
- data
- });
-}
-
-//添加/取消关注
+//下载文件
export function dowloand_do(params) {
return request({
headers: {
@@ -56,8 +42,56 @@
url: '/taboi/file/dowloand_do',
method: 'GET',
contentType: "multipart/form-data",
+ responseType:'blob',
params:params?params:{}
});
}
-
-
+//新增/编辑
+export function addOrEdit(data) {
+ return request({
+ headers:{
+ 'token': getTokenAndVerify().token,
+ 'verify':getTokenAndVerify().verify
+ },
+ url: "/taboi/conference/save_do",
+ contentType: "application/json",
+ method: 'POST',
+ data
+ });
+}
+//删除
+export function del(data) {
+ return request({
+ headers:{
+ 'token': getTokenAndVerify().token,
+ 'verify':getTokenAndVerify().verify
+ },
+ url: "/taboi/conference/del_do?id=" + data,
+ contentType: "multipart/form-data",
+ method: 'POST'
+ });
+}
+//上报
+export function put(id) {
+ return request({
+ headers:{
+ 'token': getTokenAndVerify().token,
+ 'verify':getTokenAndVerify().verify
+ },
+ contentType: "application/json",
+ method: 'POST',
+ data
+ });
+}
+//撤销
+export function revoke(id) {
+ return request({
+ headers:{
+ 'token': getTokenAndVerify().token,
+ 'verify':getTokenAndVerify().verify
+ },
+ contentType: "multipart/form-data",
+ url: "/taboi/analogy/revoke_do?id="+id,
+ method: 'GET',
+ });
+}
diff --git a/src/views/oneFromanotherN/index.vue b/src/views/oneFromanotherN/index.vue
index ebb7b92..9cccf29 100644
--- a/src/views/oneFromanotherN/index.vue
+++ b/src/views/oneFromanotherN/index.vue
@@ -447,13 +447,6 @@
}
}
- if(this.listQuery.form.check_dateEnd!=null && this.listQuery.form.check_dateEnd!=''){
- if(this.listQuery.form.check_dateStart!=null && this.listQuery.form.check_dateStart!=''){
- }else {
- this.$message({type:'error', message:"请选择检查开始时间", duration:3000})
- return
- }
- }
},
//搜索
getPageList(){
diff --git a/src/views/troubleshooting/index.vue b/src/views/troubleshooting/index.vue
index 7117eef..88d9cb1 100644
--- a/src/views/troubleshooting/index.vue
+++ b/src/views/troubleshooting/index.vue
@@ -28,50 +28,47 @@
</el-form-item>
</el-form>
<el-row class="title-center">
- <el-col :span="10">
- <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 :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="10">
- <el-row>
- <el-col :span="7" :offset="7" style="text-align: right;">
+ <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="10">
- <el-select v-model="listQuery.form.check_main_branch" placeholder="请选择" @change="changeUpType">
+ <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>
- <el-col :span="6">
- <el-date-picker type="date" placeholder="选择日期" v-model="listQuery.form.Conference_TimeStart" style="width: 100%" value-format="yyyy-MM-dd"></el-date-picker>
+ <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="2">至</el-col>
- <el-col :span="6">
- <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 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="10">
- <el-button type="primary" class="btns" size="small">上报</el-button>
- </el-col>
- </el-row>
+ <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">添加</el-button>
- <el-button class="btns" type="primary" size="small" icon="el-icon-close" @click="sendBath()">批量删除</el-button>
+ <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="14" style="text-align: right">
- <el-button
- class="btns"
- type="primary"
- size="small"
- >撤销</el-button
- >
+ <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>
@@ -100,20 +97,8 @@
<el-table-column prop="meeting_content" label="会议摘要" align="center"></el-table-column>
<el-table-column prop="realFileName" label="会议纪要" align="center">
<template slot-scope="scope" >
- <el-upload
- class="upload-demo"
- ref="upload"
- v-if="listQuery.type==0"
- :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>
- <div v-else
- v-for="item in scope.row.realFileName">
+
+ <div v-for="item in scope.row.realFileName">
<el-link type="primary" @click="downloadFile(subFile(item))">
{{subFile(item)}}
</el-link>
@@ -122,9 +107,9 @@
</el-table-column>
<el-table-column prop="date" v-if="listQuery.type==0" label="基本操作" align="center">
<template slot-scope="scope">
- <el-button @click="updateClick(scope.row)" type="text" size="small">编辑</el-button>
- <el-button @click="updateClick(scope.row)" type="text" size="small">保存</el-button>
- <el-button @click="deleteClick(scope.row)" type="text" size="small">删除</el-button>
+ <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>
@@ -141,11 +126,93 @@
>
</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, dowloand_do} from "@/api/sgyhpczl/troubleshooting";
+import {getPageList, dowloand_do, addOrEdit, del, revoke, put} from "@/api/sgyhpczl/troubleshooting";
import {uploadFile} from "@/api/sgyhpczl/hiddenDangerRectification";
+import {deepClone} from '@/utils'
import {
initYHLX,
@@ -162,9 +229,7 @@
CONFERENCE_PROFESSIONAL: '0'
},
},
- table1: true,
- table2: false,
-
+ form: {},
currentPage: 1,
pageSize: 10,
recordTotal: 0,
@@ -172,9 +237,24 @@
tableData: [],
selectedList: [],
listLoading: false,
+ // fileList:[{name:'aa.doc',url:'sssss.doc'}],
fileList:[],
upTypeList:[{label:"按勾选上报",value:0},{label:"按时间上报",value:1}],
- upTimeShow: false,
+ 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() {
@@ -182,30 +262,6 @@
this.initYHLX();
},
methods: {
- sendBath() {
- this.$router.push({
- path: "/existN",
- });
- },
- handleClick(data, val) {
- if (val == "存在") {
- this.$router.push({
- path: "/exist",
- });
- }
- },
- handoff(index) {
- if (index == 1) {
- this.table1 = false;
- this.table2 = true;
- this.listQuery.type = 2;
- console.log(this.listQuery.type);
- this.getPageList();
- } else {
- this.table1 = true;
- this.table2 = false;
- }
- },
initYHLX(){
initYHLX().then(res=>{
if (res.data.ok==1){
@@ -216,46 +272,22 @@
})
},
changeUpType(val){
+ this.upType = val;
if (val == 1){
- this.upTimeShow = true
+ this.offset = 2;
+ }else {
+ this.offset = 14;
}
},
- checkTime() {
- if (
- this.listQuery.form.check_dateStart != null &&
- this.listQuery.form.check_dateStart != ""
- ) {
- if (
- this.listQuery.form.check_dateEnd != null &&
- this.listQuery.form.check_dateEnd != ""
- ) {
- } else {
- this.$message({
- type: "error",
- message: "请选择检查结束时间",
- duration: 3000,
- });
- return;
- }
- }
- if (
- this.listQuery.form.check_dateEnd != null &&
- this.listQuery.form.check_dateEnd != ""
- ) {
- if (
- this.listQuery.form.check_dateStart != null &&
- this.listQuery.form.check_dateStart != ""
- ) {
- } else {
- this.$message({
- type: "error",
- message: "请选择检查开始时间",
- duration: 3000,
- });
- return;
- }
- }
- },
+ 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;
@@ -319,10 +351,8 @@
},
uploadSectionFile(param) {
let form = new FormData();
- var that = this;
form.append('file', param.file);
- //隐患延期申请附件
- form.append('type', "0");
+ form.append('type', "1");
uploadFile(form).then(res => {
var data = res.data;
if (data.ok) {
@@ -330,7 +360,7 @@
if (!fileName.endsWith("a62b")) {
fileName = fileName + param.file.realFileName;
}
- that.ruleForm.realFileName = that.ruleForm.realFileName + "," + fileName;
+ this.fileList.push({name:fileName,url:fileName})
}
}).error(res => {
this.$message({
@@ -345,41 +375,205 @@
fileName: path,
};
dowloand_do(params).then((res) => {
- if (res.data.ok == 1) {
- this.$notify({
- title: "成功",
- message: res.data,
- type: "success",
- duration: 2000,
- });
+ 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 {
- this.$message({
- type: "error",
- message: res.data.msg,
- duration: 3000,
- });
+ 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) {
- console.log(file, fileList)
+ this.fileList = fileList;
},
+ //点击上传组件-文件列表
handlePreview(file) {
- console.log(file)
+ this.downloadFile(file.url)
},
beforeUpload(file) {
var FileExt = file.name.replace(/.+\./, "");
- if (['jpg', 'png', 'bmp', 'gif', 'jpeg'].indexOf(FileExt.toLowerCase()) === -1) {
+ if (['doc', 'docx', 'pdf', 'ppt', 'pptx','xls','xlsx','rar','zip'].indexOf(FileExt.toLowerCase()) === -1) {
this.$message({
type: 'warning',
- message: '请上传后缀名为jpg、png、bmp、gif、jpeg的图片!'
+ 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) {
// 获取单元格数据
--
Gitblit v1.9.2