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 ++++++++++++++++++++++++++++++++++++++++----------------
 1 files changed, 326 insertions(+), 132 deletions(-)

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