cqf
2022-05-21 a7301af282fd45501b73431747e52c96999816de
隐患排查会议-上传下载增删改
已修改3个文件
505 ■■■■ 文件已修改
src/api/sgyhpczl/troubleshooting.js 68 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/oneFromanotherN/index.vue 7 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/troubleshooting/index.vue 430 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
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',
    });
}
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(){
src/views/troubleshooting/index.vue
@@ -28,7 +28,7 @@
      </el-form-item>
    </el-form>
    <el-row class="title-center">
      <el-col :span="10">
        <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>
@@ -36,42 +36,39 @@
        </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 :span="5">
                    <el-date-picker type="date" placeholder="选择日期" v-model="upTimeEnd" style="width: 100%" value-format="yyyy-MM-dd"></el-date-picker>
            </el-col>
          </el-row>
            </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,43 +272,19 @@
          })
      },
      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 != ""
        ) {
          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;
        }
      }
      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;
                  this.$message({type:'error', message:"请选择检查结束时间", duration:3000})
                  return
        }
      }
    },
@@ -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,
                  });
              } else {
              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: res.data.msg,
                            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) {
          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) {
      // 获取单元格数据