zhanghua
2022-12-05 1f5ed9769113223526a190d243e8834524e3554d
样式修改
1个文件已修改
853 ■■■■ 已修改文件
src/views/operate/viewEvent/index.vue 853 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/viewEvent/index.vue
@@ -1,429 +1,512 @@
<template>
    <div class="userList">
        <header>
            <div class="headerTitle">运营管理 >> 案卷查询</div>
            <div class="headerContent">
                <div class="contentItem">
                    <div style="width: 80px;">按编号: </div>
                    <div>
                        <el-input placeholder=" 请输入编号" v-model="searchData.number"></el-input>
                    </div>
                </div>
                <div class="contentItem">
                    <div style="width: 80px;">按类型: </div>
                    <div class="search">
                        <el-input placeholder=" 请输入类型" v-model="searchData.categories"></el-input>
                    </div>
                </div>
                <div class="contentItem">
                    <div style="width: 80px;">按社区: </div>
                    <div class="search">
                        <el-input placeholder=" 请输入社区" v-model="searchData.communityId"></el-input>
                    </div>
                </div>
                <div class="contentItem">
                    <div style="width: 150px;">按事发地点: </div>
                    <div class="search">
                        <el-input placeholder=" 请输入事发地点" v-model="searchData.site"></el-input>
                    </div>
                </div>
              <div class="btn">
                <el-button type="primary" @click="getList">搜索</el-button>
              </div>
            </div>
            <div class="headerContent">
                <div style="width: 60px;">时间: </div>
                <el-date-picker
                    v-model="datepick"
                    type="daterange"
                    @change="datepickChange"
                    value-format="yyyy-MM-dd HH:mm:ss"
                    range-separator="至"
                    start-placeholder="开始日期"
                    end-placeholder="结束日期">
                </el-date-picker>
            </div>
        </header>
        <main>
            <div class="mainContent">
                <!-- 数据展示 -->
                <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">
                    <el-table-column prop="code" label="事件编号" min-width="18">
                        <template slot-scope="scope">
                            <el-link>{{ scope.row.code }}</el-link>
                        </template>
                    </el-table-column>
                    <el-table-column prop="category" label="问题类别" min-width="8">
                        <template v-if="scope.row.category" slot-scope="scope">
                            <span>{{ getCategoryLabel(scope.row.category) }}</span>
                        </template>
                    </el-table-column>
                    <el-table-column prop="eventSource" label="问题来源" min-width="8">
                        <template v-if="scope.row.eventSource" slot-scope="scope">
                            <span>{{ scope.row.eventSource === 2 ? '人工上报' : '视频上传' }}</span>
                        </template>
                    </el-table-column>
                    <el-table-column prop="communityText" label="社区" min-width="8">
                    </el-table-column>
                    <el-table-column prop="alarmTime" label="报警时间" min-width="15" v-if="myproblem === 1">
                        <template slot-scope="scope">
                            <span>{{ filterTime(scope.row.alarmTime) }}</span>
                        </template>
                    </el-table-column>
                </el-table>
                <!-- 审核页面 -->
                <el-dialog :visible.sync="dialogExamine" width="80%" title="基础信息(人工)"
                    :before-close="handleClose">
                    <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="基础信息(人工)"
                    :before-close="handleClose">
                    <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="基础信息(人工)"
                    :before-close="handleNoClose">
                    <MyDetail :info=info v-if="myproblem === 1" :mycode='number'></MyDetail>
                    <MyIllDetail :info=info v-else :mycode="number"></MyIllDetail>
                </el-dialog>
                <!-- tools -->
                <div class="tools">
                    <div class="pagination">
                        <el-pagination background :current-page="currentPage" layout="prev, pager, next"
                            :total="totalNum" :page-size="pageSize" @current-change="changeCurrentPage">
                        </el-pagination>
                    </div>
                </div>
            </div>
        </main>
    </div>
  <div class="userList">
    <header>
      <div class="headerTitle">运营管理 >> 案卷查询</div>
      <div class="headerContent">
        <div class="contentItem">
          <div style="width: 80px">按编号:</div>
          <div>
            <el-input
              placeholder=" 请输入编号"
              v-model="searchData.number"
            ></el-input>
          </div>
        </div>
        <div class="contentItem">
          <div style="width: 80px">按类型:</div>
          <div class="search">
            <el-input
              placeholder=" 请输入类型"
              v-model="searchData.categories"
            ></el-input>
          </div>
        </div>
        <div class="contentItem">
          <div style="width: 80px">按社区:</div>
          <div class="search">
            <el-input
              placeholder=" 请输入社区"
              v-model="searchData.communityId"
            ></el-input>
          </div>
        </div>
        <div class="contentItem">
          <div style="width: 150px">按事发地点:</div>
          <div class="search">
            <el-input
              placeholder=" 请输入事发地点"
              v-model="searchData.site"
            ></el-input>
          </div>
        </div>
        <div class="btn">
          <el-button type="primary" @click="getList">搜索</el-button>
        </div>
      </div>
      <div class="headerContent">
        <div class="contentItem">
          <div style="width: 60px">时间:</div>
          <div class="search">
            <el-date-picker
              v-model="datepick"
              type="daterange"
              @change="datepickChange"
              value-format="yyyy-MM-dd HH:mm:ss"
              range-separator="至"
              start-placeholder="开始日期"
              end-placeholder="结束日期"
            >
            </el-date-picker>
          </div>
        </div>
      </div>
    </header>
    <main>
      <div class="mainContent">
        <!-- 数据展示 -->
        <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"
        >
          <el-table-column prop="code" label="事件编号" min-width="18">
            <template slot-scope="scope">
              <el-link>{{ scope.row.code }}</el-link>
            </template>
          </el-table-column>
          <el-table-column prop="category" label="问题类别" min-width="8">
            <template v-if="scope.row.category" slot-scope="scope">
              <span>{{ getCategoryLabel(scope.row.category) }}</span>
            </template>
          </el-table-column>
          <el-table-column prop="eventSource" label="问题来源" min-width="8">
            <template v-if="scope.row.eventSource" slot-scope="scope">
              <span>{{
                scope.row.eventSource === 2 ? "人工上报" : "视频上传"
              }}</span>
            </template>
          </el-table-column>
          <el-table-column prop="communityText" label="社区" min-width="8">
          </el-table-column>
          <el-table-column
            prop="alarmTime"
            label="报警时间"
            min-width="15"
            v-if="myproblem === 1"
          >
            <template slot-scope="scope">
              <span>{{ filterTime(scope.row.alarmTime) }}</span>
            </template>
          </el-table-column>
        </el-table>
        <!-- 审核页面 -->
        <el-dialog
          :visible.sync="dialogExamine"
          width="80%"
          title="基础信息(人工)"
          :before-close="handleClose"
        >
          <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="基础信息(人工)"
          :before-close="handleClose"
        >
          <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="基础信息(人工)"
          :before-close="handleNoClose"
        >
          <MyDetail
            :info="info"
            v-if="myproblem === 1"
            :mycode="number"
          ></MyDetail>
          <MyIllDetail :info="info" v-else :mycode="number"></MyIllDetail>
        </el-dialog>
        <!-- tools -->
        <div class="tools">
          <div class="pagination">
            <el-pagination
              background
              :current-page="currentPage"
              layout="prev, pager, next"
              :total="totalNum"
              :page-size="pageSize"
              @current-change="changeCurrentPage"
            >
            </el-pagination>
          </div>
        </div>
      </div>
    </main>
  </div>
</template>
<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'
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";
import casequery from "@/api/operate/basecase";
import { CATEGOTY } from "@/utils/helper";
export default {
    components: {
        MyExamine, MyClosure, MyDetail, MyIllDetail, MyIllExamine, MyIllClosure
  components: {
    MyExamine,
    MyClosure,
    MyDetail,
    MyIllDetail,
    MyIllExamine,
    MyIllClosure,
  },
  data() {
    return {
      datepick: null,
      tableData: [],
      dialogExamine: false,
      dialogClosure: false,
      dialogView: false,
      info: {},
      totalNum: null,
      pageSize: 10,
      currentPage: 1,
      typeList: [
        {
          name: "违规",
          value: 1,
          checked: true,
        },
        {
          name: "违建",
          value: 2,
          checked: false,
        },
      ],
      myproblem: 1,
      number: "",
      searchData: {
        categories: null,
        number: null,
        communityId: null,
        endTime: null,
        site: null,
        startTime: null,
      },
    };
  },
  created() {
    this.getList();
  },
  methods: {
    // 获取列表
    getList() {
      casequery
        .baseCaseQuery({
          current: this.currentPage,
          pageSize: this.pageSize,
          ...this.searchData,
        })
        .then((res) => {
          this.tableData = res.records;
          this.totalNum = res.total;
        })
        .catch((err) => {
          this.tableData = [];
        });
    },
    data() {
        return {
            datepick: null,
            tableData: [],
            dialogExamine: false,
            dialogClosure: false,
            dialogView: false,
            info: {},
            totalNum: null,
            pageSize: 10,
            currentPage: 1,
            typeList: [
                {
                    name: '违规',
                    value: 1,
                    checked: true
                },
                {
                    name: '违建',
                    value: 2,
                    checked: false,
                },
            ],
            myproblem: 1,
            number: '',
          searchData: {
            categories: null,
            number: null,
            communityId: null,
            endTime: null,
            site: null,
            startTime: null
          }
        }
    },
    created() {
        this.getList();
    },
    methods: {
        // 获取列表
        getList() {
          casequery.baseCaseQuery({  current: this.currentPage, pageSize: this.pageSize, ...this.searchData })
              .then((res) => {
                this.tableData = res.records;
                this.totalNum=res.total;
              })
              .catch(err => {
                    this.tableData = [];
                })
        },
        // 设置表格斑马纹
        tableRowClassName({ row, rowIndex }) {
            if ((rowIndex + 1) % 2 === 0) {
                return 'warning-row';
            } else {
                return 'success-row';
            }
        },
        // 当前页改变触发事件
        changeCurrentPage(page) {
            this.currentPage = page;
            this.getList();
        },
        datepickChange() {
          this.searchData.startTime = this.datepick[0];
          this.searchData.endTime = this.datepick[1].replace('00:00:00', '23:59:59');
        },
        handleClose(done) {
            this.$confirm('确认关闭?')
                .then(_ => {
                    this.dialogExamine = false;
                    done();
                })
                .catch(_ => { });
        },
        handleNoClose(done) {
            done();
        },
        // 关闭dialog
        closeDialog({ flag }) {
            this.dialogExamine = flag;
            this.dialogClosure = flag;
            this.getList();
        },
        filterTime(time) {
            return helper(time);
        },
      getCategoryLabel(data) {
        return CATEGOTY.find(item => item.value === data).label;
    // 设置表格斑马纹
    tableRowClassName({ row, rowIndex }) {
      if ((rowIndex + 1) % 2 === 0) {
        return "warning-row";
      } else {
        return "success-row";
      }
    }
}
    },
    // 当前页改变触发事件
    changeCurrentPage(page) {
      this.currentPage = page;
      this.getList();
    },
    datepickChange() {
      this.searchData.startTime = this.datepick[0];
      this.searchData.endTime = this.datepick[1].replace(
        "00:00:00",
        "23:59:59"
      );
    },
    handleClose(done) {
      this.$confirm("确认关闭?")
        .then((_) => {
          this.dialogExamine = false;
          done();
        })
        .catch((_) => {});
    },
    handleNoClose(done) {
      done();
    },
    // 关闭dialog
    closeDialog({ flag }) {
      this.dialogExamine = flag;
      this.dialogClosure = flag;
      this.getList();
    },
    filterTime(time) {
      return helper(time);
    },
    getCategoryLabel(data) {
      return CATEGOTY.find((item) => item.value === data).label;
    },
  },
};
</script>
<style lang="scss" scoped>
.userList {
    text-align: left;
    margin: 10px 20px;
  text-align: left;
  margin: 10px 20px;
  color: #4b9bb7;
  header {
    display: flex;
    line-height: 60px;
    flex-direction: column;
    padding: 0 20px;
    color: #4b9bb7;
    header {
    .headerContent {
      display: flex;
      .contentItem {
        display: flex;
        line-height: 60px;
        flex-direction: column;
        padding: 0 20px;
        color: #4b9bb7;
        margin-right: 5%;
      }
        .headerContent {
            display: flex;
      .mydate {
        flex: 1;
      }
    }
  }
            .contentItem {
                display: flex;
                margin-right: 5%;
            }
  main {
    background-color: #09152f;
    margin-top: 20px;
    padding-bottom: 50px;
            .mydate {
                flex: 1;
            }
        }
    .btn span:hover {
      cursor: pointer;
    }
    main {
        background-color: #09152f;
        margin-top: 20px;
        padding-bottom: 50px;
    .tools {
      display: flex;
      justify-content: space-between;
      align-items: center;
      padding: 0 20px;
        .btn span:hover {
            cursor: pointer;
      .funs {
        display: flex;
        .funs-sp {
          border: 1px solid #17324c;
        }
        .tools {
            display: flex;
            justify-content: space-between;
            align-items: center;
            padding: 0 20px;
        .funsItem {
          line-height: 28px;
          display: flex;
          align-items: center;
          border-radius: 4px;
          font-size: 12px;
          margin-left: 10px;
            .funs {
                display: flex;
          .el-checkbox {
            width: 80px;
            padding: 0 10px;
          }
                .funs-sp {
                    border: 1px solid #17324c;
                }
          .el-select {
            width: 120px;
          }
                .funsItem {
                    line-height: 28px;
                    display: flex;
                    align-items: center;
                    border-radius: 4px;
                    font-size: 12px;
                    margin-left: 10px;
          &::v-deep .el-input__inner {
            border: none;
            background-color: #09152f;
          }
                    .el-checkbox {
                        width: 80px;
                        padding: 0 10px;
                    }
          &:hover {
            border: 1px solid #4b9bb7;
          }
                    .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 {
          &:hover .el-checkbox {
            color: #4b9bb7;
            font-size: 10px;
            &::v-deep .cell {
                text-overflow: ellipsis;
                white-space: nowrap;
                overflow: hidden;
            }
            &::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;
        }
        &::v-deep .switchStyle .el-switch__label {
            position: absolute;
            display: none;
            color: #fff;
        }
        &::v-deep .el-switch__core {
            background-color: rgba(166, 166, 166, 1);
        }
        &::v-deep .switchStyle .el-switch__label--left {
            z-index: 9;
            left: 20px;
        }
        &::v-deep .switchStyle .el-switch__label--right {
            z-index: 9;
            left: 4px;
        }
        &::v-deep .switchStyle .el-switch__label.is-active {
            display: block;
        }
        &::v-deep .switchStyle.el-switch .el-switch__core,
        &::v-deep .el-switch .el-switch__label {
            width: 50px !important;
        }
    }
    .line {
        padding: 0 5px;
    }
    &::v-deep .el-dialog__header,
    &::v-deep .el-dialog__body {
        background-color: #06122c;
    }
    &::v-deep .el-dialog__header {
      .pagination {
        margin-top: 50px;
        display: flex;
        align-items: center;
        background-color: #fff;
        padding: 20px;
        line-height: 60px;
        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;
          }
        }
      }
    }
    &::v-deep .el-dialog__title {
    .el-table {
      color: #4b9bb7;
      font-size: 10px;
      &::v-deep .cell {
        text-overflow: ellipsis;
        white-space: nowrap;
        overflow: hidden;
      }
      &::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;
        }
      }
    }
    &::v-deep .el-dialog__close {
        width: 20px;
        height: 20px;
        // color: #fff;
    .el-table::v-deep .warning-row {
      background: #06122c;
    }
    &::v-deep .el-dialog__body {
        padding: 0;
    .el-table::v-deep .success-row {
      background: #071f39;
    }
    &::v-deep .el-range-input {
      background-color: #06122c;
    &::v-deep .switchStyle .el-switch__label {
      position: absolute;
      display: none;
      color: #fff;
    }
    &::v-deep .el-switch__core {
      background-color: rgba(166, 166, 166, 1);
    }
    &::v-deep .switchStyle .el-switch__label--left {
      z-index: 9;
      left: 20px;
    }
    &::v-deep .switchStyle .el-switch__label--right {
      z-index: 9;
      left: 4px;
    }
    &::v-deep .switchStyle .el-switch__label.is-active {
      display: block;
    }
    &::v-deep .switchStyle.el-switch .el-switch__core,
    &::v-deep .el-switch .el-switch__label {
      width: 50px !important;
    }
  }
  .line {
    padding: 0 5px;
  }
  &::v-deep .el-dialog__header,
  &::v-deep .el-dialog__body {
    background-color: #06122c;
  }
  &::v-deep .el-dialog__header {
    display: flex;
    align-items: center;
    background-color: #fff;
    padding: 20px;
    line-height: 60px;
  }
  &::v-deep .el-dialog__title {
    color: #4b9bb7;
  }
  &::v-deep .el-dialog__close {
    width: 20px;
    height: 20px;
    // color: #fff;
  }
  &::v-deep .el-dialog__body {
    padding: 0;
  }
  &::v-deep .el-range-input {
    background-color: #06122c;
  }
}
</style>