From 44d7a737dc0d63ad1dd7c52d45fc2233d1950173 Mon Sep 17 00:00:00 2001
From: lyfO_o <764716047@qq.com>
Date: Thu, 09 Jun 2022 09:56:08 +0800
Subject: [PATCH] Merge remote-tracking branch 'remotes/origin/shf' into master
---
src/views/troubleshooting/index.vue | 655 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 655 insertions(+), 0 deletions(-)
diff --git a/src/views/troubleshooting/index.vue b/src/views/troubleshooting/index.vue
new file mode 100644
index 0000000..e2ca9bc
--- /dev/null
+++ b/src/views/troubleshooting/index.vue
@@ -0,0 +1,655 @@
+<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 == 2">
+ <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">
+ <template slot-scope="scope">
+ <el-popover trigger="hover" placement="top">
+ <p>{{ scope.row.meeting_content }}</p>
+ <div slot="reference" class="name-wrapper">{{
+ scope.row.meeting_content != null && scope.row.meeting_content.length > 20 ? scope.row.meeting_content.substring(0, 18) + "...." : scope.row.meeting_content
+ }}
+ </div>
+ </el-popover>
+ </template>
+ </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"
+ action="https://jsonplaceholder.typicode.com/posts/"
+ :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, upload_do} 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:2}],
+ 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 == 2){
+ 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 = {
+ CONFERENCE_PROFESSIONAL: '0'
+ };
+ 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 + "a62b";
+ }
+ 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(() => {
+ let data = {
+ id:ids
+ }
+ revoke(data).then(() => {
+ this.getPageList()
+ this.$notify({
+ title: "成功",
+ message: "撤销成功",
+ type: "success",
+ duration: 2000,
+ });
+ });
+ }).catch(error => {
+ });
+ },
+ //上报
+ putBatch() {
+ let data = {}
+ if (this.upType == 0){
+ 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(",")
+ data = {
+ type: this.upType,
+ id: ids,
+ }
+ }else {
+ data = {
+ type: this.upType,
+ time: this.upTimeStart+'至'+this.upTimeEnd,
+ }
+ }
+ this.$confirm('确认上报吗', '提示', {
+ confirmButtonText: '确认',
+ cancelButtonText: '取消',
+ type: 'warning'
+ }).then(() => {
+ upload_do(data).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>
--
Gitblit v1.9.2