New file |
| | |
| | | import axios from "axios"; |
| | | import {getToken} from '@/utils/helper' |
| | | const baseUrl = '/sccg/log_manage' |
| | | const token = { |
| | | 'Authorization':getToken() |
| | | } |
| | | export default { |
| | | // 获取日志列表 |
| | | getLogsList: (data) => axios({ |
| | | method: 'get', |
| | | url: baseUrl+'/query', |
| | | headers:{...token}, |
| | | params: data |
| | | }), |
| | | // 获取日志操作类型 |
| | | getLogsOperationType:() => axios({ |
| | | method:'get', |
| | | url:baseUrl+'/query_operationType', |
| | | headers:{...token}, |
| | | }), |
| | | // 导出日志 |
| | | exportLogs:(data)=>axios({ |
| | | method:'post', |
| | | url:baseUrl+'/export', |
| | | headers:{...token}, |
| | | params:data |
| | | }) |
| | | }; |
| | |
| | | component: () => import('@/views/operate/message/mycontrol'), |
| | | }, |
| | | ] |
| | | }, |
| | | { |
| | | path: 'log', |
| | | name: 'log', |
| | | component: () => import('@/views/operate/log'), |
| | | } |
| | | ] |
| | | }, |
| | |
| | | import Vue from 'vue' |
| | | import Vuex from 'vuex' |
| | | import users from "./users" |
| | | import logs from "./logs" |
| | | Vue.use(Vuex) |
| | | |
| | | export default new Vuex.Store({ |
| | |
| | | actions: { |
| | | }, |
| | | modules: { |
| | | users |
| | | users,logs |
| | | } |
| | | }) |
New file |
| | |
| | | import logsApi from "@/api/logs"; |
| | | // import { Message } from "element-ui"; |
| | | export default { |
| | | namespaced: true, |
| | | state: { |
| | | userInfo: {}, |
| | | }, |
| | | actions: { |
| | | async getLogsList({ state }, params) { |
| | | const res = await logsApi.getLogsList(params); |
| | | return res; |
| | | }, |
| | | async getLogsOperationType({ state }) { |
| | | const res = await logsApi.getLogsOperationType(); |
| | | return res; |
| | | }, |
| | | async exportLogs({ state },params) { |
| | | const res = await logsApi.exportLogs(params); |
| | | return res; |
| | | } |
| | | }, |
| | | }; |
| | |
| | | return filterTime(t2.getTime() - t1.getTime()); |
| | | } |
| | | // 获取字典表 |
| | | export async function getTypeList(level,code){ |
| | | export async function getTypeList(level, code) { |
| | | let arr; |
| | | await myrequest({ |
| | | method:'get', |
| | | url:`sccg/dict/query_type?level=${level}&typeCode=${code}` |
| | | method: 'get', |
| | | url: `sccg/dict/query_type?level=${level}&typeCode=${code}` |
| | | }) |
| | | .then(res=>{ |
| | | arr = res.data; |
| | | }) |
| | | .then(res => { |
| | | arr = res.data; |
| | | }) |
| | | return arr; |
| | | } |
| | | // 获取token |
| | | export function getToken() { |
| | | const token = sessionStorage.getItem('token'); |
| | | const tokenHead = sessionStorage.getItem('tokenHead'); |
| | | if (token && tokenHead) { |
| | | return tokenHead + token; |
| | | } |
| | | return; |
| | | } |
| | | function filterTime(time) { |
| | | if (time < 0) { |
| | | return '已逾期'; |
| | | } |
| | | let dd = Math.floor(time/24/60/60/1000), |
| | | hh = Math.floor(time/60/60/1000-dd*24), |
| | | mi = Math.floor(time/60/1000-dd*24*60-hh*60); |
| | | let dd = Math.floor(time / 24 / 60 / 60 / 1000), |
| | | hh = Math.floor(time / 60 / 60 / 1000 - dd * 24), |
| | | mi = Math.floor(time / 60 / 1000 - dd * 24 * 60 - hh * 60); |
| | | return addDay(fillTime(dd)) + addHour(fillTime(hh)) + addMin(fillTime(mi)); |
| | | } |
| | | function fillTime(num) { |
| | |
| | | } |
| | | function addDay(str) { |
| | | str = parseFloat(str); |
| | | if (str <0) { |
| | | if (str < 0) { |
| | | return; |
| | | } |
| | | return str + '天' |
| | | } |
| | | function addHour(str) { |
| | | str = parseFloat(str); |
| | | if (str <0) { |
| | | if (str < 0) { |
| | | return; |
| | | } |
| | | return str + '小时' |
| | |
| | | <el-menu-item index="/home/system/userSetting/department">部门管理</el-menu-item> |
| | | </el-submenu> |
| | | <!-- 平台设置 --> |
| | | <el-submenu index="/home/system/add" class="secondMenu"> |
| | | <el-submenu index="/home/system/platform" class="secondMenu"> |
| | | <template slot="title"> |
| | | <span class="secondSpan">门户管理</span> |
| | | </template> |
| | | <el-menu-item index="/home/system/mySetting">自定义菜单</el-menu-item> |
| | | <el-menu-item index="/home/system/portalSetting">logo管理</el-menu-item> |
| | | <el-menu-item index="/home/system/otherInterface">第三方接口管理</el-menu-item> |
| | | <el-menu-item index="/home/system/platform/mySetting">自定义菜单</el-menu-item> |
| | | <el-menu-item index="/home/system/platform/portalSetting">logo管理</el-menu-item> |
| | | <el-menu-item index="/home/system/platform/otherInterface">第三方接口管理</el-menu-item> |
| | | </el-submenu> |
| | | <!-- 设备管理 --> |
| | | <el-submenu index="/home/system/device" class="secondMenu"> |
| | |
| | | <el-menu-item index="/home/operate/message/mycontrol">栏目管理</el-menu-item> |
| | | </el-submenu> |
| | | <el-menu-item index="/home/operate">短信管理</el-menu-item> |
| | | <el-menu-item index="/home/operate">日志管理</el-menu-item> |
| | | <el-menu-item index="/home/operate/log">日志管理</el-menu-item> |
| | | </el-submenu> |
| | | <!-- 视频巡查模块 --> |
| | | <el-submenu index="/home/video" class="firstMenu"> |
| | |
| | | handleLogin() { |
| | | const { username, password } = this.loginForm; |
| | | const that = this; |
| | | console.log(this.login); |
| | | this.$axios |
| | | .post("sccg/admin/login", { |
| | | password, |
| | |
| | | <el-link @click="JumpView(scope.row)">{{scope.row.code}}</el-link> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="eventSource" label="问题来源" min-width="7"> |
| | | <el-table-column prop="eventSource" label="问题来源" min-width="8"> |
| | | <template slot-scope="scope"> |
| | | <span>{{scope.row.eventSource === 2 ? '人工上报' : '视频上传'}}</span> |
| | | </template> |
| | |
| | | <template slot-scope="scope"> |
| | | <div class="operation"> |
| | | <div class="btn"> |
| | | <span>调度</span> |
| | | <span class="line">|</span> |
| | | <span @click="opernDialog(scope.row)">上传处置结果</span> |
| | | </div> |
| | | </div> |
| | |
| | | <MyIllDetail :info=info v-else></MyIllDetail> |
| | | </el-dialog> |
| | | <!-- 上传页面 --> |
| | | <el-dialog :visible.sync="dialogUpload" width="60%" title="上传处置结果" v-if="dialogUpload" |
| | | <el-dialog :visible.sync="dialogUpload" width="80%" title="上传处置结果" v-if="dialogUpload" |
| | | :before-close="handleClose"> |
| | | <uploadVio v-if="mystatus === 1" :caseId="caseId" @closeDialog="closeDialog"></uploadVio> |
| | | <uploadIll v-else :caseId="caseId" @closeDialog="closeDialog"></uploadIll> |
| | |
| | | import MyMap from '@/components/map' |
| | | import { validateName, validatePhone, validateCarNum, validateCardId } from '@/utils/validate' |
| | | import {getTypeList} from '@/utils/helper' |
| | | import {parseTime} from "@/utils/index" |
| | | export default { |
| | | components: { |
| | | MyMap |
| | |
| | | this.$refs.user.validate((valid) => { |
| | | if (valid) { |
| | | const { vio } = this; |
| | | console.log(vio); |
| | | this.$axios({ |
| | | method: 'post', |
| | | url: 'sccg/base_case/addition_violation', |
| | | data: vio |
| | | data: { |
| | | ...vio, |
| | | alarmTime:parseTime(vio.alarmTime), |
| | | } |
| | | }) |
| | | .then(res => { |
| | | console.log(res); |
| | | if (res.code === 200) { |
| | | this.$message({ |
| | | type: 'success', |
New file |
| | |
| | | <template> |
| | | <div class="userList"> |
| | | <header> |
| | | <div class="header-nav"> |
| | | <span class="nav-left">数据筛选</span> |
| | | <span class="nav-right">高级搜索</span> |
| | | </div> |
| | | <div class="header-content"> |
| | | <div class="search"> |
| | | <span>输入查询:</span> |
| | | <el-input placeholder="内容信息" v-model="context"></el-input> |
| | | </div> |
| | | <div class="message-status"> |
| | | <span>操作类型:</span> |
| | | <el-select v-model="operationType" style="margin-left:20px"> |
| | | <el-option v-for="item in operationTypeList" :key="item.id" :label="item.operationType" |
| | | :value="item.operationType"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | <div class="message-kind"> |
| | | <span>时间范围:</span> |
| | | <el-input placeholder="选择时间范围" v-model="timeArea"></el-input> |
| | | </div> |
| | | <div class="find"> |
| | | <el-button type="primary" icon="el-icon-search" @click="setTableData">查询</el-button> |
| | | <el-button icon="el-icon-delete-solid">重置</el-button> |
| | | </div> |
| | | </div> |
| | | </header> |
| | | <main> |
| | | <div class="mainContent"> |
| | | <div class="main-nav"> |
| | | <span>数据列表</span> |
| | | <div class="main-nav-right"> |
| | | <el-button type="primary" icon="el-icon-upload2" @click="handleExport">导出</el-button> |
| | | <el-button class="el-icon-delete-solid">清空</el-button> |
| | | </div> |
| | | </div> |
| | | <!-- 数据展示 --> |
| | | <el-table ref="multipleTable" |
| | | :header-cell-style="{background:'#06122c','font-size':'12px',color:'#4b9bb7','font-weight':'650','line-height':'45px'}" |
| | | :data="tableData" style="width: 100%" :row-class-name="tableRowClassName" |
| | | @selection-change="tableChange"> |
| | | <el-table-column type="selection" min-width="5"> |
| | | </el-table-column> |
| | | <el-table-column prop="createTime" label="日志时间" min-width="10"> |
| | | <template slot-scope="scope"> |
| | | <span>{{changeTime(scope.row.createTime)}}</span> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="userAgent" label="终端设备" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="operationType" label="操作类型" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="adminId" label="操作人员" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="ip" label="IP地址" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="contain" label="内容" min-width="10"> |
| | | </el-table-column> |
| | | </el-table> |
| | | <!-- tools --> |
| | | <div class="tools"> |
| | | <div class="funs"> |
| | | <div class="funsItem funs-sp"> |
| | | <el-checkbox v-model="all" @change="selectAll()">全选</el-checkbox> |
| | | </div> |
| | | <div class="funsItem funs-sp"> |
| | | <el-checkbox v-model="unsame" @change="disSame(tableData)">反选</el-checkbox> |
| | | </div> |
| | | <div class="funsItem"> |
| | | <el-select v-model="myIdx" placeholder="批量操作" @change="selectChange"> |
| | | <el-option v-for="item in options" :key="item.value" :label="item.label" |
| | | :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | | </div> |
| | | </div> |
| | | <div class="pagination"> |
| | | <el-pagination background :current-page="currentPage" layout="prev, pager, next" |
| | | :total="totalNum" :page-size="pageSize" @current-change="changeCurrentPage" |
| | | @prev-click="handlePrev" @next-click="handleNext"> |
| | | </el-pagination> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </main> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import helper from '@/utils/mydate' |
| | | import { createNamespacedHelpers } from "vuex"; |
| | | const { mapActions } = createNamespacedHelpers("logs"); |
| | | export default { |
| | | components: { |
| | | }, |
| | | data() { |
| | | return { |
| | | tableData: [], |
| | | context: "", |
| | | totalNum: null, |
| | | pageSize: 10, |
| | | currentPage: 1, |
| | | all: false, |
| | | unsame: false, |
| | | myIdx: null, |
| | | preMyIdx: null, |
| | | options: [ |
| | | { |
| | | value: 1, |
| | | label: '批量启用', |
| | | }, |
| | | { |
| | | value: 2, |
| | | label: '批量禁用', |
| | | }, |
| | | { |
| | | value: 3, |
| | | label: '批量删除', |
| | | } |
| | | ], |
| | | tempList: [], |
| | | timeArea: '', |
| | | operationType: '全部', |
| | | operationTypeList: [], |
| | | } |
| | | }, |
| | | created() { |
| | | this.setTableData(); |
| | | this.setOperationType(); |
| | | }, |
| | | methods: { |
| | | ...mapActions(["getLogsList", 'getLogsOperationType', 'exportLogs']), |
| | | // 导出日志 |
| | | async handleExport() { |
| | | const { currentPage, pageSize, context, operationType } = this; |
| | | let arr = await this.exportLogs({ |
| | | content: context, |
| | | current: currentPage, |
| | | size: pageSize, |
| | | }); |
| | | const blob = new Blob([arr.data], { |
| | | type: 'application/octet-stream' |
| | | }) |
| | | // content-disposition |
| | | const downloadElement = document.createElement('a') |
| | | // 创建下载的链接 |
| | | const href = window.URL.createObjectURL(blob) |
| | | downloadElement.href = href |
| | | // // 下载后文件名 |
| | | // downloadElement.download = '日志报告'+'.xlsx' |
| | | document.body.appendChild(downloadElement) |
| | | // 点击下载 |
| | | downloadElement.click() |
| | | // 下载完成移除元素 |
| | | document.body.removeChild(downloadElement) |
| | | // 释放掉blob对象 |
| | | window.URL.revokeObjectURL(href) |
| | | }, |
| | | // 设置操作类型 |
| | | async setOperationType() { |
| | | this.operationTypeList = await this.getOperationType(); |
| | | }, |
| | | // 获取操作类型 |
| | | async getOperationType() { |
| | | let arr = await this.getLogsOperationType(); |
| | | console.log(arr); |
| | | arr.data.data.unshift({ id: 0, operationType: '全部' }) |
| | | return arr.data.data; |
| | | }, |
| | | // 批量删除 |
| | | handleDelete(idarr) { |
| | | this.$confirm('确认删除?') |
| | | .then(_ => { |
| | | this.$axios({ |
| | | method: 'post', |
| | | url: 'sccg/message/delete?ids=' + idarr, |
| | | }) |
| | | .then(res => { |
| | | if (res.code === 200) { |
| | | this.$message({ |
| | | type: 'success', |
| | | message: '删除成功', |
| | | }) |
| | | this.setTableData(); |
| | | } else { |
| | | this.$message({ |
| | | type: 'error', |
| | | message: res.message |
| | | }) |
| | | } |
| | | }) |
| | | }) |
| | | }, |
| | | // 设置表格数据 |
| | | async setTableData() { |
| | | const arr = await this.getLogList(); |
| | | this.tableData = arr.records; |
| | | this.totalNum = arr.total |
| | | }, |
| | | // 获取日志数据 |
| | | async getLogList() { |
| | | const { currentPage, pageSize, context, operationType } = this; |
| | | let arr = await this.getLogsList({ |
| | | content: context, |
| | | current: currentPage, |
| | | endTime: '', |
| | | id: '', |
| | | operationType: operationType === '全部' ? '' : operationType, |
| | | portEqulpment: '', |
| | | size: pageSize, |
| | | startTime: '', |
| | | }) |
| | | return arr.data.data; |
| | | }, |
| | | // 批量下拉框操作 |
| | | async selectChange(list) { |
| | | console.log(this.tempList); |
| | | if (this.tempList.length !== 0) { |
| | | this.preMyIdx = list; |
| | | if (list === 3) { |
| | | await this.handleDelete(this.tempList); |
| | | } else if (list === 2) { |
| | | await this.mulUpdateStatus(this.tempList, 0); |
| | | } else { |
| | | await this.mulUpdateStatus(this.tempList, 1); |
| | | } |
| | | this.myIdx = 0; |
| | | } else { |
| | | this.myIdx = this.preMyIdx; |
| | | this.$message({ |
| | | type: 'warning', |
| | | message: '您还没选中任何数据', |
| | | }) |
| | | } |
| | | }, |
| | | // 批量操作 |
| | | mulUpdateStatus(idArr, flag) { |
| | | this.$confirm(flag === 1 ? "您确定要进行批量启用角色吗?" : '您确定要进行批量禁用角色吗?') |
| | | .then(_ => { |
| | | this.$axios({ |
| | | method: 'post', |
| | | url: 'sccg/role/updateStatusBatch?ids=' + idArr + '&status=' + flag, |
| | | }) |
| | | .then(res => { |
| | | if (res.code === 200) { |
| | | this.$message({ |
| | | type: 'success', |
| | | message: '更改用户状态成功', |
| | | }) |
| | | this.getUserList(); |
| | | } else { |
| | | this.$message({ |
| | | type: 'error', |
| | | message: res.message |
| | | }) |
| | | } |
| | | console.log(res); |
| | | }) |
| | | }) |
| | | .catch(err => { console.log(err) }) |
| | | }, |
| | | // 表格监听 |
| | | tableChange(list) { |
| | | this.tempList = []; |
| | | list.forEach(item => { |
| | | this.tempList.push(item.id); |
| | | }) |
| | | if (list.length === this.tableData.length) { |
| | | this.all = true; |
| | | } else { |
| | | this.all = false |
| | | } |
| | | }, |
| | | // 修改时间格式 |
| | | changeTime(time) { |
| | | return helper(time); |
| | | }, |
| | | // 全选 |
| | | selectAll() { |
| | | this.$refs.multipleTable.toggleAllSelection(); |
| | | }, |
| | | // 反选 |
| | | disSame(list) { |
| | | list.forEach(row => { |
| | | this.$refs.multipleTable.toggleRowSelection(row) |
| | | }) |
| | | }, |
| | | // 设置表格斑马纹 |
| | | tableRowClassName({ row, rowIndex }) { |
| | | if ((rowIndex + 1) % 2 == 0) { |
| | | return 'warning-row'; |
| | | } else { |
| | | return 'success-row'; |
| | | } |
| | | return ''; |
| | | }, |
| | | // 当前页改变触发事件 |
| | | changeCurrentPage(page) { |
| | | this.currentPage = page; |
| | | this.setTableData(); |
| | | }, |
| | | // 上一页点击事件 |
| | | handlePrev(page) { |
| | | this.currentPage = page; |
| | | this.setTableData(); |
| | | }, |
| | | // 下一页点击事件 |
| | | handleNext(page) { |
| | | this.currentPage = page; |
| | | this.setTableData(); |
| | | }, |
| | | // 关闭弹窗 |
| | | handleClose(done) { |
| | | done(); |
| | | }, |
| | | // 确认关闭弹窗 |
| | | handleConfirmClose(done) { |
| | | this.$confirm('确认关闭?') |
| | | .then(_ => { |
| | | done(); |
| | | }) |
| | | .catch(err => { |
| | | console.log(err); |
| | | }) |
| | | }, |
| | | // 自定义关闭弹窗 |
| | | closeDialog({ flag, index }) { |
| | | if (index === 1) { |
| | | this.setTableData(); |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .userList { |
| | | text-align: left; |
| | | margin: 10px 20px; |
| | | color: #4b9bb7; |
| | | |
| | | header { |
| | | background-color: #09152f; |
| | | border: 1pox solid #fff; |
| | | |
| | | .header-nav { |
| | | line-height: 40px; |
| | | padding: 0 30px; |
| | | display: flex; |
| | | justify-content: space-between; |
| | | font-weight: 650; |
| | | } |
| | | |
| | | .header-content { |
| | | padding: 0 40px; |
| | | display: flex; |
| | | line-height: 100px; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | |
| | | .search, |
| | | .message-status, |
| | | .message-kind { |
| | | display: flex; |
| | | justify-content: flex-start; |
| | | |
| | | span { |
| | | flex: 1; |
| | | } |
| | | |
| | | .el-input { |
| | | flex: 2; |
| | | color: #1d3f57; |
| | | |
| | | &::v-deep .el-input__inner { |
| | | background-color: #09152f; |
| | | border: 1px solid #17324c; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | .findBtn { |
| | | line-height: 100px; |
| | | margin-left: 15px; |
| | | display: flex; |
| | | align-items: center; |
| | | margin-top: -2px; |
| | | |
| | | .el-button { |
| | | padding: 12px 25px; |
| | | border-radius: 20px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | main { |
| | | background-color: #09152f; |
| | | margin-top: 20px; |
| | | padding-bottom: 50px; |
| | | border: 1pox solid #fff; |
| | | |
| | | .el-link { |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | .leftPx { |
| | | margin-left: 10px; |
| | | } |
| | | |
| | | .mainTitle { |
| | | line-height: 60px; |
| | | } |
| | | |
| | | .main-nav { |
| | | line-height: 40px; |
| | | display: flex; |
| | | padding: 10px; |
| | | justify-content: space-between; |
| | | } |
| | | |
| | | .tools { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | align-items: center; |
| | | padding: 0 20px; |
| | | |
| | | .funs { |
| | | display: flex; |
| | | |
| | | .funs-sp { |
| | | border: 1px solid #17324c; |
| | | } |
| | | |
| | | .funsItem { |
| | | line-height: 28px; |
| | | display: flex; |
| | | align-items: center; |
| | | |
| | | border-radius: 4px; |
| | | font-size: 12px; |
| | | margin-left: 10px; |
| | | |
| | | .el-checkbox { |
| | | width: 80px; |
| | | padding: 0 10px; |
| | | } |
| | | |
| | | .el-select { |
| | | width: 120px; |
| | | } |
| | | |
| | | &::v-deep .el-input__inner { |
| | | border: none; |
| | | background-color: #09152f; |
| | | } |
| | | |
| | | &:hover { |
| | | border: 1px solid #4b9bb7; |
| | | } |
| | | |
| | | &:hover .el-checkbox { |
| | | color: #4b9bb7; |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | .pagination { |
| | | margin-top: 50px; |
| | | display: flex; |
| | | line-height: 50px; |
| | | justify-content: center; |
| | | |
| | | .el-pagination { |
| | | |
| | | &::v-deep li, |
| | | &::v-deep .btn-prev, |
| | | &::v-deep .btn-next { |
| | | background-color: #071f39; |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | &::v-deep .active { |
| | | background-color: #409eff; |
| | | color: #fff; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | |
| | | .el-table { |
| | | color: #4b9bb7; |
| | | font-size: 10px; |
| | | |
| | | &::v-deep .el-table__empty-block { |
| | | background-color: #09152f; |
| | | } |
| | | |
| | | &::v-deep .el-table__empty-block { |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | .operation { |
| | | display: flex; |
| | | |
| | | .line { |
| | | padding: 0 5px; |
| | | } |
| | | |
| | | span:hover { |
| | | cursor: pointer; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .el-table::v-deep .warning-row { |
| | | background: #06122c; |
| | | } |
| | | |
| | | .el-table::v-deep .success-row { |
| | | background: #071f39; |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | </div> |
| | | <MyProcess v-else-if="activeIndex === 1" :handlePassVo="handlePassVo" :baseCase="baseCase"></MyProcess> |
| | | <MyFilePicture v-else-if="activeIndex === 2" :baseCase="baseCase" :filesPictureVo="filesPictureVo"></MyFilePicture> |
| | | <MySovleProblem v-else-if="activeIndex === 3" :baseCase="baseCase" :problemProVo="problemProVo"></MySovleProblem> |
| | | <MySovleProblem v-else-if="activeIndex === 3" :handlePassVo="handlePassVo" :baseCase="baseCase"></MySovleProblem> |
| | | <MyScene v-else :baseCase="baseCase" :currentSitVo="currentSitVo"></MyScene> |
| | | </div> |
| | | </div> |
| | |
| | | if (valid) { |
| | | this.$axios({ |
| | | method: 'put', |
| | | url: 'sccg/base_case/end_case?caseId='+baseCase.id +'&result='+baseCase.finalOpinion, |
| | | url: 'sccg/base_case/end_case?caseId='+baseCase.id +'&opinion='+baseCase.finalOpinion +'&result='+'结案成功', |
| | | }) |
| | | .then(res => { |
| | | console.log(res); |
| | |
| | | <div class="show-wrap"> |
| | | <MyProcess v-if="activeIndex === 1" :handlePassVo="handlePassVo" :baseCase="baseCase"></MyProcess> |
| | | <MyFilePicture v-else-if="activeIndex === 2" :filesPictureVo="filesPictureVo" ></MyFilePicture> |
| | | <MySovleProblem v-else-if="activeIndex === 3" :baseCase="baseCase" :problemProVo="problemProVo"></MySovleProblem> |
| | | <MySovleProblem v-else-if="activeIndex === 3" :handlePassVo="handlePassVo" :baseCase="baseCase"></MySovleProblem> |
| | | <MyScene v-else :currentSitVo="currentSitVo" :baseCase="baseCase"></MyScene> |
| | | </div> |
| | | </div> |
| | |
| | | handlePassVo: {}, |
| | | currentSitVo: {}, |
| | | problemProVo: {}, |
| | | filesPictureVo: {} |
| | | |
| | | filesPictureVo: {}, |
| | | } |
| | | }, |
| | | created() { |
| | | const { info } = this; |
| | | const { info} = this; |
| | | this.baseCase = info.baseCase; |
| | | this.handlePassVo = info.handlePassVo; |
| | | this.currentSitVo = info.currentSitVo; |
| | |
| | | this.activeIndex = index; |
| | | }, |
| | | // 提交审核意见 |
| | | handleSubmit(mystatus) { |
| | | // this.getUserLoginInfo(); |
| | | handleSubmit(index) { |
| | | const { baseCase } = this; |
| | | this.$refs.viewForm.validate((valid) => { |
| | | if (valid) { |
| | |
| | | data: { |
| | | baseCaseId: baseCase.id, |
| | | checkOpinion: baseCase.auditOpinion, |
| | | currentUser: baseCase.createUser, |
| | | status: mystatus, |
| | | result:index === 0 ? '驳回':'通过', |
| | | } |
| | | }) |
| | | .then(res => { |
| | |
| | | if (res.code === 200) { |
| | | this.$message({ |
| | | type: 'success', |
| | | message: mystatus === 0 ? '驳回成功' : '审核通过' |
| | | message: index === 0 ? '驳回成功' : '审核通过' |
| | | }) |
| | | this.$emit('closeDialog', { flag: false }); |
| | | } |
| | |
| | | .then(res => { |
| | | console.log(res); |
| | | }) |
| | | } |
| | | }, |
| | | }, |
| | | props: ['info', 'closeDialog'] |
| | | } |
New file |
| | |
| | | <template> |
| | | <div class="view"> |
| | | <div class="view-data"> |
| | | <el-form :model="baseCase" label-position="right" ref="viewForm" :rules="Rules" label-width="160px"> |
| | | <div class="data-item"> |
| | | <el-form-item label="问题来源:"> |
| | | <span class="data-detail">{{baseCase.eventSource === 2 ? '人工上报' : '视频巡查'}}</span> |
| | | </el-form-item> |
| | | <el-form-item label="登记人员:"> |
| | | <span class="data-detail">{{baseCase.createUser}}</span> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="data-item"> |
| | | <el-form-item label="问题类型:"> |
| | | <span class="data-detail">{{baseCase.category === 1 ? '违规' : '违建'}}</span> |
| | | </el-form-item> |
| | | <el-form-item label="违建类别:"> |
| | | <span class="data-detail">{{baseCase.illegalBuilding.categoryId}}</span> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="data-item"> |
| | | <el-form-item label="事件等级:"> |
| | | <span class="data-detail">{{baseCase.illegalBuilding.baseCaseId}}</span> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="data-item"> |
| | | <el-form-item label="案由:"> |
| | | <span class="data-detail">{{baseCase.illegalBuilding.actionCause}}</span> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="data-item"> |
| | | <el-form-item label="违法建设长、宽、高:"> |
| | | <span class="data-detail">{{baseCase.illegalBuilding.buildingLength+'m、'+baseCase.illegalBuilding.buildingWidth+'m、'+ baseCase.illegalBuilding.buildingHigh + 'm '}}</span> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="data-item"> |
| | | <el-form-item label="违法建设面积:"> |
| | | <span class="data-detail">{{baseCase.illegalBuilding.buildingArea+'㎡ '}}</span> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="data-item"> |
| | | <el-form-item label="所属社区:"> |
| | | <span class="data-detail">{{baseCase.communityText}}</span> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="data-item"> |
| | | <el-form-item label="事发地点:"> |
| | | <span class="data-detail">{{baseCase.site}}</span> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="data-item"> |
| | | <el-form-item label="问题描述:"> |
| | | <span class="data-detail">{{baseCase.illegalBuilding.description}}</span> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="data-item"> |
| | | <el-form-item label="处置方式:"> |
| | | <span class="data-detail">xxxxxxx</span> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="data-item"> |
| | | <el-form-item label="处置手段:"> |
| | | <span class="data-detail">xxxxxxx</span> |
| | | </el-form-item> |
| | | </div> |
| | | <!-- 审核意见 --> |
| | | <el-form-item label="审核意见" prop="auditOpinion"> |
| | | <el-input type="textarea" placeholder="请输入审核意见" v-model="baseCase.auditOpinion"></el-input> |
| | | </el-form-item> |
| | | <div class="el-form-footer"> |
| | | <el-button @click.native.prevent="handleSubmit(0)">驳回</el-button> |
| | | <el-button type="primary" @click.native.prevent="handleSubmit(1)">通过</el-button> |
| | | </div> |
| | | </el-form> |
| | | </div> |
| | | <div class="view-process"> |
| | | <div class="process-header"> |
| | | <div class="process-title-item" v-for="item in titleList" :key="item.title" |
| | | @click="changeComponent(item.index)"> |
| | | <div :class="['process-title',activeIndex===item.index ? 'title-active' : '' ]">{{item.title}}</div> |
| | | <div :class="['under-line',activeIndex===item.index ? 'line-active' : '' ]"></div> |
| | | </div> |
| | | </div> |
| | | <div class="show-item"> |
| | | <div class="show-wrap"> |
| | | <MyProcess v-if="activeIndex === 1" :handlePassVo="handlePassVo" :baseCase="baseCase"></MyProcess> |
| | | <MyFilePicture v-else-if="activeIndex === 2" :filesPictureVo="filesPictureVo" ></MyFilePicture> |
| | | <MySovleProblem v-else-if="activeIndex === 3" :handlePassVo="handlePassVo" :baseCase="baseCase"></MySovleProblem> |
| | | <MyScene v-else :currentSitVo="currentSitVo" :baseCase="baseCase"></MyScene> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import MyProcess from '@/components/process' |
| | | import MyFilePicture from '@/components/filePictrue' |
| | | import MySovleProblem from '@/components/solveProblem' |
| | | import MyScene from '@/components/scene' |
| | | export default { |
| | | components: { |
| | | MyProcess, MyFilePicture, MySovleProblem, MyScene |
| | | }, |
| | | data() { |
| | | const checkOpinion = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error('审核意见不能为空')) |
| | | } |
| | | } |
| | | return { |
| | | myInfo: { |
| | | |
| | | }, |
| | | activeIndex: 1, |
| | | titleList: [ |
| | | { |
| | | title: '办理经过', |
| | | index: 1, |
| | | }, |
| | | { |
| | | title: '案卷图片', |
| | | index: 2, |
| | | }, |
| | | { |
| | | title: '问题处理', |
| | | index: 3, |
| | | }, |
| | | { |
| | | title: '现场情况', |
| | | index: 4, |
| | | }, |
| | | ], |
| | | Rules: { |
| | | auditOpinion: [ |
| | | { required: true, trigger: 'blur', validator: checkOpinion } |
| | | ] |
| | | }, |
| | | baseCase: {}, |
| | | handlePassVo: {}, |
| | | currentSitVo: {}, |
| | | problemProVo: {}, |
| | | filesPictureVo: {}, |
| | | } |
| | | }, |
| | | created() { |
| | | const { info } = this; |
| | | this.baseCase = info.baseCase; |
| | | this.handlePassVo = info.handlePassVo; |
| | | this.currentSitVo = info.currentSitVo; |
| | | this.problemProVo = info.problemProVo; |
| | | this.filesPictureVo = info.filesPictureVo; |
| | | }, |
| | | methods: { |
| | | changeComponent(index) { |
| | | this.activeIndex = index; |
| | | }, |
| | | // 提交审核意见 |
| | | handleSubmit(mystatus) { |
| | | // this.getUserLoginInfo(); |
| | | const { baseCase } = this; |
| | | this.$refs.viewForm.validate((valid) => { |
| | | if (valid) { |
| | | this.$axios({ |
| | | method: 'post', |
| | | url: 'sccg/check_handle/check', |
| | | data: { |
| | | baseCaseId: baseCase.id, |
| | | checkOpinion: baseCase.auditOpinion, |
| | | currentUser: baseCase.createUser, |
| | | status: mystatus, |
| | | } |
| | | }) |
| | | .then(res => { |
| | | console.log(res); |
| | | if (res.code === 200) { |
| | | this.$message({ |
| | | type: 'success', |
| | | message: mystatus === 0 ? '驳回成功' : '审核通过' |
| | | }) |
| | | this.$emit('closeDialog', { flag: false }); |
| | | } |
| | | |
| | | }) |
| | | .catch(err => { console.log(err) }); |
| | | }else{ |
| | | return false; |
| | | } |
| | | }) |
| | | }, |
| | | // 获取当前用户登录信息 |
| | | getUserLoginInfo() { |
| | | // 获取登录名; |
| | | const username = sessionStorage.getItem('name'); |
| | | this.$axios({ |
| | | method: 'get', |
| | | url: 'sccg/admin/info', |
| | | data: { |
| | | name: 'username' |
| | | } |
| | | }) |
| | | .then(res => { |
| | | console.log(res); |
| | | }) |
| | | }, |
| | | }, |
| | | props: ['info', 'closeDialog'] |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .view { |
| | | display: flex; |
| | | padding: 20px; |
| | | |
| | | .view-data { |
| | | color: #4b9bb7; |
| | | flex: 4; |
| | | padding: 20px; |
| | | |
| | | .data-item { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | line-height: 40px; |
| | | } |
| | | |
| | | :deep(.el-form-item__label) { |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | :deep(.el-textarea__inner) { |
| | | background-color: #17324c; |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | .el-form-footer { |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | } |
| | | |
| | | border: 1px solid #17324c; |
| | | } |
| | | |
| | | .view-process { |
| | | flex: 6; |
| | | margin-left: 20px; |
| | | |
| | | .process-header { |
| | | display: flex; |
| | | line-height: 40px; |
| | | |
| | | .process-title-item { |
| | | width: 120px; |
| | | text-align: center; |
| | | |
| | | .under-line { |
| | | height: 2px; |
| | | width: 100%; |
| | | } |
| | | |
| | | .title-active { |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | .line-active { |
| | | background-color: #4b9bb7; |
| | | border-radius: 20px; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .show-item { |
| | | overflow: hidden; |
| | | height: 600px; |
| | | position: relative; |
| | | |
| | | .show-wrap { |
| | | overflow: scroll; |
| | | height: 600px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
New file |
| | |
| | | <template> |
| | | <div class="view"> |
| | | <div class="view-data"> |
| | | <el-form :model="baseCase" label-position="right" ref="viewForm" :rules="Rules" label-width="160px"> |
| | | <div class="data-item"> |
| | | <el-form-item label="问题来源:"> |
| | | <span class="data-detail">{{baseCase.eventSource === 2 ? '人工上报' : '视频巡查'}}</span> |
| | | </el-form-item> |
| | | <el-form-item label="登记人员:"> |
| | | <span class="data-detail">{{baseCase.createUser}}</span> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="data-item"> |
| | | <el-form-item label="问题类型:"> |
| | | <span class="data-detail">{{baseCase.category === 1 ? '违规' : '违建'}}</span> |
| | | </el-form-item> |
| | | <el-form-item label="违建类别:"> |
| | | <span class="data-detail">{{baseCase.illegalBuilding.categoryId}}</span> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="data-item"> |
| | | <el-form-item label="事件等级:"> |
| | | <span class="data-detail">{{baseCase.illegalBuilding.baseCaseId}}</span> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="data-item"> |
| | | <el-form-item label="案由:"> |
| | | <span class="data-detail">{{baseCase.illegalBuilding.actionCause}}</span> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="data-item"> |
| | | <el-form-item label="违法建设长、宽、高:"> |
| | | <span class="data-detail">{{baseCase.illegalBuilding.buildingLength+'m、'+baseCase.illegalBuilding.buildingWidth+'m、'+ baseCase.illegalBuilding.buildingHigh + 'm '}}</span> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="data-item"> |
| | | <el-form-item label="违法建设面积:"> |
| | | <span class="data-detail">{{baseCase.illegalBuilding.buildingArea+'㎡ '}}</span> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="data-item"> |
| | | <el-form-item label="所属社区:"> |
| | | <span class="data-detail">{{baseCase.communityText}}</span> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="data-item"> |
| | | <el-form-item label="事发地点:"> |
| | | <span class="data-detail">{{baseCase.site}}</span> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="data-item"> |
| | | <el-form-item label="问题描述:"> |
| | | <span class="data-detail">{{baseCase.illegalBuilding.description}}</span> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="data-item"> |
| | | <el-form-item label="处置方式:"> |
| | | <span class="data-detail">xxxxxxx</span> |
| | | </el-form-item> |
| | | </div> |
| | | <div class="data-item"> |
| | | <el-form-item label="处置手段:"> |
| | | <span class="data-detail">xxxxxxx</span> |
| | | </el-form-item> |
| | | </div> |
| | | <!-- 审核意见 --> |
| | | <el-form-item label="审核意见" prop="auditOpinion"> |
| | | <el-input type="textarea" placeholder="请输入审核意见" v-model="baseCase.auditOpinion"></el-input> |
| | | </el-form-item> |
| | | <div class="el-form-footer"> |
| | | <el-button @click.native.prevent="handleSubmit(0)">驳回</el-button> |
| | | <el-button type="primary" @click.native.prevent="handleSubmit(1)">通过</el-button> |
| | | </div> |
| | | </el-form> |
| | | </div> |
| | | <div class="view-process"> |
| | | <div class="process-header"> |
| | | <div class="process-title-item" v-for="item in titleList" :key="item.title" |
| | | @click="changeComponent(item.index)"> |
| | | <div :class="['process-title',activeIndex===item.index ? 'title-active' : '' ]">{{item.title}}</div> |
| | | <div :class="['under-line',activeIndex===item.index ? 'line-active' : '' ]"></div> |
| | | </div> |
| | | </div> |
| | | <div class="show-item"> |
| | | <div class="show-wrap"> |
| | | <div class="closure-info" v-if="activeIndex === 0"> |
| | | <el-form :model="baseCase" label-position="right" ref="opinionForm" :rules="Rules" |
| | | label-width="100px"> |
| | | <el-form-item label="审核意见" class="op-item" prop="auditOpinion"> |
| | | <el-input type="textarea" placeholder="请输入审核意见" v-model="baseCase.auditOpinion" disabled> |
| | | </el-input> |
| | | </el-form-item> |
| | | <el-form-item label="结案意见" class="op-item" prop="finalOpinion"> |
| | | <el-input type="textarea" placeholder="请输入结案意见" v-model="baseCase.finalOpinion"> |
| | | </el-input> |
| | | </el-form-item> |
| | | </el-form> |
| | | <div class="form-footer"> |
| | | <el-button type="primary" @click.native.prevent="handleSubmit">结案</el-button> |
| | | <el-button @click.native.prevent="handleBack">返回</el-button> |
| | | </div> |
| | | </div> |
| | | <MyProcess v-else-if="activeIndex === 1" :handlePassVo="handlePassVo" :baseCase="baseCase"></MyProcess> |
| | | <MyFilePicture v-else-if="activeIndex === 2" :baseCase="baseCase" :filesPictureVo="filesPictureVo"></MyFilePicture> |
| | | <MySovleProblem v-else-if="activeIndex === 3" :handlePassVo="handlePassVo" :baseCase="baseCase"></MySovleProblem> |
| | | <MyScene v-else :baseCase="baseCase" :currentSitVo="currentSitVo"></MyScene> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </div> |
| | | </template> |
| | | <script> |
| | | import MyProcess from '@/components/process' |
| | | import MyFilePicture from '@/components/filePictrue' |
| | | import MySovleProblem from '@/components/solveProblem' |
| | | import MyScene from '@/components/scene' |
| | | export default { |
| | | components: { |
| | | MyProcess, MyFilePicture, MySovleProblem, MyScene |
| | | }, |
| | | data() { |
| | | const checkOpinion = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback() |
| | | } |
| | | } |
| | | const checkFinal = (rule, value, callback) => { |
| | | if (value) { |
| | | callback(); |
| | | } else { |
| | | callback(new Error('结案意见不能为空')) |
| | | } |
| | | } |
| | | return { |
| | | myInfo: { |
| | | |
| | | }, |
| | | activeIndex: 0, |
| | | titleList: [ |
| | | { |
| | | title: '结案信息', |
| | | index: 0, |
| | | }, |
| | | { |
| | | title: '办理经过', |
| | | index: 1, |
| | | }, |
| | | { |
| | | title: '案卷图片', |
| | | index: 2, |
| | | }, |
| | | { |
| | | title: '问题处理', |
| | | index: 3, |
| | | }, |
| | | { |
| | | title: '现场情况', |
| | | index: 4, |
| | | }, |
| | | ], |
| | | Rules: { |
| | | auditOpinion: [ |
| | | { trigger: 'blur', validator: checkOpinion } |
| | | ], |
| | | finalOpinion:[ |
| | | { |
| | | trigger:'blur',validator:checkFinal |
| | | } |
| | | ] |
| | | |
| | | }, |
| | | baseCase: {}, |
| | | handlePassVo: {}, |
| | | currentSitVo: {}, |
| | | problemProVo: {}, |
| | | filesPictureVo: {} |
| | | |
| | | } |
| | | }, |
| | | created() { |
| | | const { info } = this; |
| | | this.baseCase = info.baseCase; |
| | | this.handlePassVo = info.handlePassVo; |
| | | this.currentSitVo = info.currentSitVo; |
| | | this.problemProVo = info.problemProVo; |
| | | this.filesPictureVo = info.filesPictureVo; |
| | | }, |
| | | methods: { |
| | | changeComponent(index) { |
| | | this.activeIndex = index; |
| | | }, |
| | | handleBack(){ |
| | | this.$emit('closeDialog', { flag: false }); |
| | | }, |
| | | // 提交审核意见 |
| | | handleSubmit() { |
| | | const { baseCase } = this; |
| | | this.$refs.opinionForm.validate((valid) => { |
| | | if (valid) { |
| | | this.$axios({ |
| | | method: 'put', |
| | | url: 'sccg/base_case/end_case?caseId='+baseCase.id +'&opinion='+baseCase.finalOpinion+'&result='+'结案成功' , |
| | | }) |
| | | .then(res => { |
| | | console.log(res); |
| | | if (res.code === 200) { |
| | | this.$message({ |
| | | type: 'success', |
| | | message: '结案成功' |
| | | }) |
| | | this.$emit('closeDialog', { flag: false }); |
| | | }else{ |
| | | this.$message({ |
| | | type:'error', |
| | | message:'结案失败', |
| | | }) |
| | | } |
| | | |
| | | }) |
| | | .catch(err => { console.log(err) }); |
| | | } else { |
| | | return false; |
| | | } |
| | | }) |
| | | }, |
| | | // 获取当前用户登录信息 |
| | | getUserLoginInfo() { |
| | | // 获取登录名; |
| | | const username = sessionStorage.getItem('name'); |
| | | this.$axios({ |
| | | method: 'get', |
| | | url: 'sccg/admin/info', |
| | | data: { |
| | | name: 'username' |
| | | } |
| | | }) |
| | | .then(res => { |
| | | console.log(res); |
| | | }) |
| | | } |
| | | }, |
| | | props: ['info', 'closeDialog'] |
| | | } |
| | | </script> |
| | | <style lang="scss" scoped> |
| | | .view { |
| | | display: flex; |
| | | padding: 20px; |
| | | |
| | | .view-data { |
| | | color: #4b9bb7; |
| | | flex: 4; |
| | | padding: 20px; |
| | | |
| | | .data-item { |
| | | display: flex; |
| | | justify-content: space-between; |
| | | line-height: 40px; |
| | | } |
| | | |
| | | :deep(.el-form-item__label) { |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | :deep(.el-textarea__inner) { |
| | | background-color: #17324c; |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | .el-form-footer { |
| | | display: flex; |
| | | justify-content: flex-end; |
| | | } |
| | | |
| | | border: 1px solid #17324c; |
| | | } |
| | | :deep(.el-textarea__inner){ |
| | | background-color: #17324c; |
| | | color: #4b9bb7; |
| | | } |
| | | .closure-info{ |
| | | padding: 20px; |
| | | .op-item{ |
| | | padding-top: 20px; |
| | | } |
| | | .form-footer{ |
| | | display: flex; |
| | | margin-top: 50px; |
| | | justify-content: flex-end; |
| | | } |
| | | } |
| | | .view-process { |
| | | flex: 6; |
| | | margin-left: 20px; |
| | | |
| | | .process-header { |
| | | display: flex; |
| | | line-height: 40px; |
| | | |
| | | .process-title-item { |
| | | width: 120px; |
| | | text-align: center; |
| | | |
| | | .under-line { |
| | | height: 2px; |
| | | width: 100%; |
| | | } |
| | | |
| | | .title-active { |
| | | color: #4b9bb7; |
| | | } |
| | | |
| | | .line-active { |
| | | background-color: #4b9bb7; |
| | | border-radius: 20px; |
| | | } |
| | | } |
| | | } |
| | | |
| | | .show-item { |
| | | overflow: hidden; |
| | | height: 600px; |
| | | position: relative; |
| | | |
| | | .show-wrap { |
| | | overflow: scroll; |
| | | height: 600px; |
| | | } |
| | | } |
| | | } |
| | | } |
| | | </style> |
| | |
| | | <el-link @click="JumpView(scope.row)">{{scope.row.code}}</el-link> |
| | | </template> |
| | | </el-table-column> |
| | | <el-table-column prop="eventSource" label="问题来源" min-width="7"> |
| | | <el-table-column prop="eventSource" label="问题来源" min-width="8"> |
| | | <template slot-scope="scope"> |
| | | <span>{{scope.row.eventSource === 2 ? '人工上报' : '视频上传'}}</span> |
| | | </template> |
| | |
| | | <div class="btn"> |
| | | <!-- v-if="instatus===7 ? true : false" --> |
| | | <span @click="handleExamine(scope.row)" v-if="instatus===7">审核</span> |
| | | <!-- <span class="line" v-if="instatus===7 ? true : false">|</span> --> |
| | | <span @click="handleClosure(scope.row)" v-if="instatus===8">结案</span> |
| | | <span class="line" v-if="instatus !==9">|</span> |
| | | <span @click="JumpView(scope.row)">查看</span> |
| | | </div> |
| | | </template> |
| | | </el-table-column> |
| | |
| | | <!-- 审核页面 --> |
| | | <el-dialog :visible.sync="dialogExamine" width="80%" title="基础信息(人工)" v-if="dialogExamine" |
| | | :before-close="handleClose"> |
| | | <MyExamine :info="info" @closeDialog="closeDialog"></MyExamine> |
| | | <MyExamine :info="info" v-if="myproblem === 1" @closeDialog="closeDialog"></MyExamine> |
| | | <MyIllExamine :info="info" v-else @closeDialog="closeDialog"></MyIllExamine> |
| | | </el-dialog> |
| | | <!-- 结案页面 --> |
| | | <el-dialog :visible.sync="dialogClosure" width="80%" title="基础信息(人工)" v-if="dialogClosure" |
| | | :before-close="handleClose"> |
| | | <MyClosure :info="info" @closeDialog="closeDialog"></MyClosure> |
| | | <MyClosure :info="info" v-if="myproblem === 1" @closeDialog="closeDialog"></MyClosure> |
| | | <MyIllClosure :info="info" v-else @closeDialog="closeDialog"></MyIllClosure> |
| | | </el-dialog> |
| | | <!-- 详情页面 --> |
| | | <el-dialog :visible.sync="dialogView" width="80%" title="基础信息(人工)" v-if="dialogView" |
| | |
| | | <script> |
| | | import MyExamine from './components/examine' |
| | | import MyClosure from './components/closure' |
| | | import MyIllExamine from './components/illExamine' |
| | | import MyIllClosure from './components/illclosure' |
| | | import MyDetail from '@/components/detail' |
| | | import MyIllDetail from '@/components/illdetail' |
| | | import helper from '@/utils/mydate' |
| | | export default { |
| | | components: { |
| | | MyExamine,MyClosure,MyDetail,MyIllDetail |
| | | MyExamine,MyClosure,MyDetail,MyIllDetail,MyIllExamine,MyIllClosure |
| | | }, |
| | | data() { |
| | | return { |
| | |
| | | messageType: '', |
| | | head: '', |
| | | targetTo: '', |
| | | targetFrom:null, |
| | | body: '', |
| | | channelCode: 1, |
| | | }, |
| | |
| | | created() { |
| | | this.setColumnList(); |
| | | this.setDepartList(); |
| | | this.getLoginUserInfo(); |
| | | }, |
| | | methods: { |
| | | // 关闭弹窗 |
| | |
| | | url: 'sccg/message/sendMessage', |
| | | data: { |
| | | body: role.body, |
| | | channelCode: role.channelCode, |
| | | channelCode: `${role.channelCode}`, |
| | | head: role.head, |
| | | messageType: role.messageType, |
| | | sendTime: new Date(), |
| | | targetTo: checkedList.join(',') |
| | | targetTo: checkedList.join(','), |
| | | targetFrom:`${role.targetFrom}`, |
| | | } |
| | | }) |
| | | .then(res=>{ |
| | |
| | | // this.$refs.edit.wangEditor.txt.html('<p><br></p>') |
| | | this.setDepartList(); |
| | | this.$refs.user.resetFields(); |
| | | }, |
| | | // 获取当前登录用户信息 |
| | | getLoginUserInfo(){ |
| | | const name = sessionStorage.getItem('name'); |
| | | this.$axios({ |
| | | method:'get', |
| | | url:'sccg/admin/info?name='+name, |
| | | }) |
| | | .then(res=>{ |
| | | this.role.targetFrom = res.data.userId |
| | | }) |
| | | } |
| | | }, |
| | | props: ['closeMyDialog'] |
| | |
| | | }, |
| | | methods: { |
| | | handleDelete(idarr) { |
| | | this.$axios({ |
| | | method: 'post', |
| | | url: 'sccg/message/delete?ids=' + idarr, |
| | | }) |
| | | .then(res => { |
| | | if (res.code === 200) { |
| | | this.$message({ |
| | | type: 'success', |
| | | message: '删除成功', |
| | | this.$confirm('确认删除?') |
| | | .then(_ => { |
| | | this.$axios({ |
| | | method: 'post', |
| | | url: 'sccg/message/delete?ids=' + idarr, |
| | | }) |
| | | .then(res => { |
| | | if (res.code === 200) { |
| | | this.$message({ |
| | | type: 'success', |
| | | message: '删除成功', |
| | | }) |
| | | this.setTableData(); |
| | | } else { |
| | | this.$message({ |
| | | type: 'error', |
| | | message: res.message |
| | | }) |
| | | } |
| | | }) |
| | | this.setTableData(); |
| | | } else { |
| | | this.$message({ |
| | | type: 'error', |
| | | message: res.message |
| | | }) |
| | | } |
| | | }) |
| | | }, |
| | | // 设置表格数据 |
| | |
| | | </el-table-column> |
| | | <el-table-column prop="departName" label="部门名称" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="departTypeName" label="部门类型" min-width="10"> |
| | | <el-table-column prop="departType" label="部门类型" min-width="10"> |
| | | </el-table-column> |
| | | <el-table-column prop="departDes" label="部门描述" min-width="10"> |
| | | </el-table-column> |
| | |
| | | this.$refs.multipleTable.toggleAllSelection(); |
| | | }, |
| | | disSame(list) { |
| | | // console.log(this.$refs.multipleTable); |
| | | // const row = this.$refs.table.data |
| | | list.forEach((row) => { |
| | | this.$refs.multipleTable.toggleRowSelection(row); |
| | | }); |
| | |
| | | <header> |
| | | <div class="header-content"> |
| | | <div class="search"> |
| | | <span>筛选条件:</span> |
| | | <el-select v-model="value" placeholder="请选择"> |
| | | <span style="padding-right:20px">筛选条件:</span> |
| | | <el-select v-model="context" placeholder="请选择"> |
| | | <el-option v-for="item in options" :key="item.value" :label="item.label" :value="item.value"> |
| | | </el-option> |
| | | </el-select> |
| | |
| | | data() { |
| | | return { |
| | | tableData: [], |
| | | context: "", |
| | | context: 0, |
| | | dialogCreate: false, |
| | | totalNum: null, |
| | | pageSize: 10, |