“dzb”
2022-09-22 ab36c0c3dbaa95fa3f94268cfc8b8bb7aae22b80
新增案件池问题登记
6个文件已修改
2个文件已添加
14748 ■■■■■ 已修改文件
package-lock.json 14143 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package.json 1 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/components/map/index.vue 32 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/router/index.js 53 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/layout/components/Menu/index.vue 4 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/disposal/casepool/compenents/checkIn/index.vue 185 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/disposal/casepool/index.vue 63 ●●●● 补丁 | 查看 | 原始文档 | blame | 历史
src/views/operate/disposal/escalation/index.vue 267 ●●●●● 补丁 | 查看 | 原始文档 | blame | 历史
package-lock.json
Diff too large
package.json
@@ -9,6 +9,7 @@
    "build:stage": "vue-cli-service build --mode staging"
  },
  "dependencies": {
    "@amap/amap-jsapi-loader": "^1.0.1",
    "axios": "^0.27.2",
    "core-js": "^3.8.3",
    "normalize.css": "^8.0.1",
src/components/map/index.vue
New file
@@ -0,0 +1,32 @@
<template>
    <div id="container"></div>
</template>
<script>
import AMapLoader from "@amap/amap-jsapi-loader";
export default {
    data() {
        return {
            map: null,
        }
    },
    mounted() {
        AMapLoader.load({
            key: "091ade377d4db40f68cc78cb9658ce8d", // 申请好的Web端开发者Key,首次调用 load 时必填
            version: "2.0", // 指定要加载的 JSAPI 的版本,缺省时默认为 1.4.15
            plugins: [], // 需要使用的的插件列表,如比例尺'AMap.Scale'等
        })
            .then((AMap) => {
                this.map = new AMap.Map("container");
            })
            .catch((e) => {
                console.log(e);
            });
    }
}
</script>
<style lang="scss" scoped>
#container {
    width: 100%;
    height: 100%;
}
</style>
src/router/index.js
@@ -3,9 +3,9 @@
Vue.use(VueRouter)
const routes = [
  {
    path:"/",
    name:'index',
    redirect:'/home'
    path: "/",
    name: 'index',
    redirect: '/home'
  },
  {
    path: '/home',
@@ -23,33 +23,33 @@
            component: () => import('@/views/systemSetting/baseSetting/user')
          },
          {
            path:'role',
            name:'role',
            path: 'role',
            name: 'role',
            component: () => import('@/views/systemSetting/baseSetting/role')
          },
          {
            path:'authority',
            name:'authority',
            path: 'authority',
            name: 'authority',
            component: () => import('@/views/systemSetting/baseSetting/authority')
          },
          {
            path:'department',
            name:'department',
            path: 'department',
            name: 'department',
            component: () => import('@/views/systemSetting/baseSetting/department')
          },
          {
            path:'portalSetting',
            name:'portalSetting',
            path: 'portalSetting',
            name: 'portalSetting',
            component: () => import('@/views/systemSetting/platform/portalSetting')
          },
          {
            path:'otherInterface',
            name:'otherInterface',
            path: 'otherInterface',
            name: 'otherInterface',
            component: () => import('@/views/systemSetting/platform/otherInterface')
          },
          {
            path:'mySetting',
            name:'mySetting',
            path: 'mySetting',
            name: 'mySetting',
            component: () => import('@/views/systemSetting/platform/mySetting')
          }
        ]
@@ -58,16 +58,23 @@
        path: "operate",
        name: 'operate',
        component: () => import('@/views/operate'),
        children:[
        children: [
          {
            path:'baseSetting',
            name:'baseSetting',
            component:()=> import('@/views/operate/baseSetting'),
            path: 'baseSetting',
            name: 'baseSetting',
            component: () => import('@/views/operate/baseSetting'),
          },
          {
            path:'casepool',
            name:'casepool',
            component:() => import('@/views/operate/disposal/casepool')
            path: 'casepool',
            name: 'casepool',
            component: () => import('@/views/operate/disposal/casepool'),
            children: [
              {
                path: 'escalation',
                name: 'escalation',
                component: () => import('@/views/operate/disposal/escalation'),
              }
            ]
          }
        ]
      },
@@ -123,6 +130,6 @@
})
const originalPush = router.push
router.push = function push(location) {
    return originalPush.call(this, location).catch(err => err);
  return originalPush.call(this, location).catch(err => err);
}
export default router
src/views/layout/components/Menu/index.vue
@@ -77,6 +77,10 @@
                <span class="secondSpan">事项处理管理</span>
              </template>
              <el-menu-item index="/home/operate/casepool">案件池</el-menu-item>
              <el-menu-item index="/home/operate/casepool">上报管理</el-menu-item>
              <el-menu-item index="/home/operate/casepool">调度管理</el-menu-item>
              <!-- <el-menu-item index="/home/operate/casepool">再学习管理</el-menu-item> -->
              <el-menu-item index="/home/operate/casepool">暂不处理</el-menu-item>
            </el-submenu>
            <el-menu-item index="/home/operate/myWait">我的待办</el-menu-item>
            <el-menu-item index="/home/operate/rectification">专项整治</el-menu-item>
src/views/operate/disposal/casepool/compenents/checkIn/index.vue
@@ -4,98 +4,129 @@
            <!-- :rules="createRoleRules" -->
            <el-form ref="user" label-width="140px" autoComplete="on" :model="role" label-position="right">
                <div class="things">
                    <div>填写基础信息</div>
                    <div class="title">填写基础信息</div>
                    <!-- 问题类型 -->
                    <el-form-item class="optionItem" label="角色名称:" prop="name">
                        <el-input v-model="role.name" placeholder="请填写角色名称"></el-input>
                    <el-form-item class="optionItem" label="问题类型:" prop="name">
                        <el-select v-model="role.type" placeholder="违规">
                            <el-option v-for="item in typeList" :key="item.name" :label="item.name" :value="item.value"
                                :disabled="item.disabled">
                            </el-option>
                        </el-select>
                    </el-form-item>
                    <!-- 大类名称 -->
                    <el-form-item class="optionItems" label="角色类型:" prop="status">
                        <el-select v-model="role.type" placeholder="请选择角色类型">
                    <el-form-item class="optionItems" label="大类名称:" prop="status">
                        <el-select v-model="role.type" placeholder="请选择大类名称">
                            <el-option v-for="item in typeList" :key="item.name" :label="item.name" :value="item.value"
                                :disabled="item.disabled">
                            </el-option>
                        </el-select>
                    </el-form-item>
                    <!-- 小类名称 -->
                    <el-form-item class="optionItem" label="角色描述:" prop="description">
                        <el-input v-model="role.description" placeholder="请输入描述内容200字以内"></el-input>
                    </el-form-item>
                    <!-- 事件等级 -->
                    <el-form-item class="optionItem" label="角色名称:" prop="name">
                        <el-input v-model="role.name" placeholder="请填写角色名称"></el-input>
                    </el-form-item>
                    <!-- 案由 -->
                    <el-form-item class="optionItem" label="角色名称:" prop="name">
                        <el-input v-model="role.name" placeholder="请填写角色名称"></el-input>
                    </el-form-item>
                    <!-- 所属县区 -->
                    <el-form-item class="optionItem" label="角色名称:" prop="name">
                        <el-input v-model="role.name" placeholder="请填写角色名称"></el-input>
                    </el-form-item>
                    <!-- 所属社区 -->
                    <el-form-item class="optionItem" label="角色名称:" prop="name">
                        <el-input v-model="role.name" placeholder="请填写角色名称"></el-input>
                    </el-form-item>
                    <!-- 所属街道 -->
                    <el-form-item class="optionItem" label="角色名称:" prop="name">
                        <el-input v-model="role.name" placeholder="请填写角色名称"></el-input>
                    </el-form-item>
                    <!-- 事发地点 -->
                    <el-form-item class="optionItem" label="角色名称:" prop="name">
                        <el-input v-model="role.name" placeholder="请填写角色名称"></el-input>
                    </el-form-item>
                    <!-- 是否关联商铺 -->
                    <el-form-item class="optionItem" label="角色名称:" prop="name">
                        <el-input v-model="role.name" placeholder="请填写角色名称"></el-input>
                    </el-form-item>
                    <!-- 关联商铺名称 -->
                    <el-form-item class="optionItem" label="角色名称:" prop="name">
                        <el-input v-model="role.name" placeholder="请填写角色名称"></el-input>
                    </el-form-item>
                    <!-- 填写车牌号 -->
                    <el-form-item class="optionItem" label="角色名称:" prop="name">
                        <el-input v-model="role.name" placeholder="请填写角色名称"></el-input>
                    </el-form-item>
                    <!-- 问题描述 -->
                    <el-form-item class="optionItem" label="角色名称:" prop="name">
                        <el-input v-model="role.name" placeholder="请填写角色名称"></el-input>
                    </el-form-item>
                </div>
                <div class="person">
                    <div>填写反映人信息</div>
                    <!-- 反映人 -->
                    <el-form-item class="optionItem" label="角色名称:" prop="name">
                        <el-input v-model="role.name" placeholder="请填写角色名称"></el-input>
                    </el-form-item>
                    <!-- 联系方式 -->
                    <el-form-item class="optionItems" label="角色类型:" prop="status">
                        <el-select v-model="role.type" placeholder="请选择角色类型">
                    <el-form-item class="optionItem" label="小类名称:" prop="description">
                        <el-select v-model="role.type" placeholder="请选择小类名称">
                            <el-option v-for="item in typeList" :key="item.name" :label="item.name" :value="item.value"
                                :disabled="item.disabled">
                            </el-option>
                        </el-select>
                    </el-form-item>
                    <!-- 事件等级 -->
                    <el-form-item class="optionItem" label="事件等级:" prop="name">
                        <el-select v-model="role.type" placeholder="请选择案件等级">
                            <el-option v-for="item in typeList" :key="item.name" :label="item.name" :value="item.value"
                                :disabled="item.disabled">
                            </el-option>
                        </el-select>
                    </el-form-item>
                    <!-- 案由 -->
                    <el-form-item class="optionItem" label="案由:" prop="name">
                        <el-input v-model="role.name" placeholder="请输入案由"></el-input>
                    </el-form-item>
                    <!-- 所属县区 -->
                    <el-form-item class="optionItem" label="所属县区:" prop="name">
                        <el-select v-model="role.type" placeholder="请选择所属县区">
                            <el-option v-for="item in typeList" :key="item.name" :label="item.name" :value="item.value"
                                :disabled="item.disabled">
                            </el-option>
                        </el-select>
                    </el-form-item>
                    <!-- 所属社区 -->
                    <el-form-item class="optionItem" label="所属社区:" prop="name">
                        <el-select v-model="role.type" placeholder="请选择所属社区">
                            <el-option v-for="item in typeList" :key="item.name" :label="item.name" :value="item.value"
                                :disabled="item.disabled">
                            </el-option>
                        </el-select>
                    </el-form-item>
                    <!-- 所属街道 -->
                    <el-form-item class="optionItem" label="所属街道:" prop="name">
                        <el-select v-model="role.type" placeholder="请选择所属街道">
                            <el-option v-for="item in typeList" :key="item.name" :label="item.name" :value="item.value"
                                :disabled="item.disabled">
                            </el-option>
                        </el-select>
                    </el-form-item>
                    <!-- 事发地点 -->
                    <el-form-item class="optionItem" label="事发地点:" prop="name">
                        <el-input v-model="role.name" placeholder="请输入事发地点详细位置"></el-input>
                    </el-form-item>
                    <!-- 是否关联商铺 -->
                    <el-form-item class="optionItem" label="是否关联商铺:" prop="name">
                        <el-radio v-model="role.name">
                            是
                        </el-radio>
                        <el-radio v-model="role.name">
                            否
                        </el-radio>
                    </el-form-item>
                    <!-- 关联商铺名称 -->
                    <el-form-item class="optionItem" label="关联商铺名称:" prop="name">
                        <el-input v-model="role.name" placeholder="请填写关联商铺名称"></el-input>
                    </el-form-item>
                    <!-- 填写车牌号 -->
                    <el-form-item class="optionItem" label="填写车牌号:" prop="name">
                        <el-input v-model="role.name" placeholder="请填写车牌号"></el-input>
                    </el-form-item>
                    <!-- 问题描述 -->
                    <el-form-item class="optionItem" label="问题描述:" prop="name">
                        <el-input v-model="role.name" placeholder="请填写内容200字以内"></el-input>
                    </el-form-item>
                </div>
                <div class="person">
                    <div class="title">填写反映人信息</div>
                    <!-- 反映人 -->
                    <el-form-item class="optionItem" label="反映人:" prop="name">
                        <el-input v-model="role.name"></el-input>
                    </el-form-item>
                    <!-- 联系方式 -->
                    <el-form-item class="optionItems" label="联系方式:" prop="status">
                        <el-input v-model="role.name"></el-input>
                    </el-form-item>
                    <!-- 身份证号 -->
                    <el-form-item class="optionItem" label="角色描述:" prop="description">
                        <el-input v-model="role.description" placeholder="请输入描述内容200字以内"></el-input>
                    <el-form-item class="optionItem" label="身份证号:" prop="description">
                        <el-input v-model="role.description"></el-input>
                    </el-form-item>
                </div>
                <el-form-item>
                    <div class="optionBtn">
                        <el-button class="btn cancel">取消</el-button>
                        <el-button type="primary" class="btn submit" @click.native.prevent="handleUser">提交
                        <!-- @click.native.prevent="handleUser" -->
                        <el-button type="primary" class="btn submit">提交
                        </el-button>
                    </div>
                </el-form-item>
            </el-form>
        </div>
        <div class="map">地图</div>
        <div class="map">
            <myMap></myMap>
        </div>
    </div>
</template>
<script>
import myMap from '@/components/map'
export default {
    components: {
        myMap,
    },
    data() {
        return {
            role: {
@@ -110,5 +141,33 @@
}
</script>
<style lang="scss" scoped>
.checkIn {
    display: flex;
    .form {
        flex: 1;
        color: #4b9bb7;
        .title {
            line-height: 40px;
        }
        &::v-deep .el-form-item__label {
            color: #4b9bb7;
        }
        .el-form{
            .el-input{
                &::v-deep .el-input__inner{
                    width: 60%;
                }
            }
        }
        &::v-deep .el-input__inner {
            background-color: #09152f;
            border: 1px solid #17324c;
        }
    }
    .map{
        flex: 1;
    }
}
</style>
src/views/operate/disposal/casepool/index.vue
@@ -7,7 +7,7 @@
                <el-input placeholder="请输入问题来源"></el-input>
            </div>
            <div class="add">
                <el-button type="primary" icon="el-icon-plus">添加</el-button>
                <el-button type="primary" icon="el-icon-plus" @click="handleOpenDialog">添加</el-button>
            </div>
        </header>
        <!-- 主体展示 -->
@@ -63,16 +63,16 @@
        </main>
        <!-- 组件区 -->
        <footer>
            <el-dialog :visible.async="visible" width="45%">
            <el-dialog v-if="visible" :visible.async="visible" title="问题登记" width="60%" :before-close="handleClose">
                <checkIn></checkIn>
            </el-dialog>
        </footer>
    </div>
</template>
<script>
    import checkIn from './compenents/checkIn';
import checkIn from './compenents/checkIn';
export default {
    components:{
    components: {
        checkIn,
    },
    data() {
@@ -111,10 +111,10 @@
                {
                    id: 13413114,
                    source: '人工上报/视频巡查',
                    appendTime:'2022-01-09 14:52'
                    appendTime: '2022-01-09 14:52'
                }
            ],
            visible:true
            visible: false,
        }
    },
    methods: {
@@ -127,6 +127,19 @@
            }
            return '';
        },
        // 打开添加页
        handleOpenDialog() {
            this.visible = true;
        },
        // 关闭对话框
        handleClose(done) {
        this.$confirm('确认关闭?')
          .then(_ => {
            this.visible = false;
            done();
          })
          .catch(_ => {});
      }
    }
}
</script>
@@ -196,10 +209,11 @@
                    border: none;
                }
                .el-table{
                .el-table {
                    font-size: 12px;
                    color:#4b9bb7;
                    .line{
                    color: #4b9bb7;
                    .line {
                        padding: 0 5px;
                    }
                }
@@ -208,6 +222,7 @@
                    background-color: #09152f;
                    color: #4b9bb7;
                }
                .el-table::v-deep .warning-row {
                    background: #06122c;
                }
@@ -218,5 +233,35 @@
            }
        }
    }
    footer {
        &::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;
        }
    }
}
</style>
src/views/operate/disposal/escalation/index.vue
New file
@@ -0,0 +1,267 @@
<template>
    <div class="casepool">
        <!-- 查询添加 -->
        <header>
            <div class="search">
                <span>来源查询:</span>
                <el-input placeholder="请输入问题来源"></el-input>
            </div>
            <div class="add">
                <el-button type="primary" icon="el-icon-plus" @click="handleOpenDialog">添加</el-button>
            </div>
        </header>
        <!-- 主体展示 -->
        <main>
            <div class="mainContent">
                <!-- 导航状态标签 -->
                <div class="nav">
                    <el-tabs type="border-card">
                        <el-tab-pane :label="item.name" v-for="item in tagList" :key="item.name">
                            <!-- 数据渲染 -->
                            <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 type="selection" min-width="5">
                                </el-table-column>
                                <el-table-column label="事件编号" min-width="6">
                                    <template slot-scope="scope">{{ scope.row.id }}</template>
                                </el-table-column>
                                <el-table-column prop="source" label="问题来源" min-width="10">
                                </el-table-column>
                                <el-table-column prop="bigKind" label="大类名称" min-width="6">
                                </el-table-column>
                                <el-table-column prop="samllKind" label="小类名称" min-width="6">
                                </el-table-column>
                                <el-table-column prop="reson" label="案由" min-width="10">
                                </el-table-column>
                                <el-table-column prop="location" label="报警点位" min-width="10">
                                </el-table-column>
                                <el-table-column prop="area" label="所属区域" min-width="10">
                                </el-table-column>
                                <el-table-column prop="appendTime" label="报警时间" min-width="10">
                                </el-table-column>
                                <el-table-column prop="duration" label="持续时间" min-width="6">
                                </el-table-column>
                                <el-table-column prop="operation" label="操作" min-width="15">
                                    <template slot-scope="scope">
                                        <div class="operation">
                                            <span @click="handleFind(scope.row)">上报</span>
                                            <span class="line">|</span>
                                            <span @click="handleUpdate(scope.row)">调度</span>
                                            <span class="line">|</span>
                                            <span>再学习</span>
                                            <span class="line">|</span>
                                            <span>暂不处理</span>
                                        </div>
                                    </template>
                                </el-table-column>
                            </el-table>
                        </el-tab-pane>
                    </el-tabs>
                </div>
            </div>
        </main>
        <!-- 组件区 -->
        <footer>
            <!-- <el-dialog v-if="visible" :visible.async="visible" title="问题登记" width="60%" :before-close="handleClose">
                <checkIn></checkIn>
            </el-dialog> -->
        </footer>
    </div>
</template>
<script>
// import checkIn from './compenents/checkIn';
export default {
    components: {
        checkIn,
    },
    data() {
        return {
            tagList: [
                {
                    name: '待处理',
                    value: 0,
                },
                {
                    name: '已上报',
                    value: 0,
                },
                {
                    name: '已调度',
                    value: 0,
                },
                {
                    name: '在学习',
                    value: 0,
                },
                {
                    name: '暂不处理',
                    value: 0,
                },
                {
                    name: '违规',
                    value: 0,
                },
                {
                    name: '违建',
                    value: 0,
                },
            ],
            tableData: [
                {
                    id: 13413114,
                    source: '人工上报/视频巡查',
                    appendTime: '2022-01-09 14:52'
                }
            ],
            visible: false,
        }
    },
    methods: {
        // 设置表格斑马纹
        tableRowClassName({ row, rowIndex }) {
            if ((rowIndex + 1) % 2 == 0) {
                return 'warning-row';
            } else {
                return 'success-row';
            }
            return '';
        },
        // 打开添加页
        handleOpenDialog() {
            this.visible = true;
        },
        // 关闭对话框
        handleClose(done) {
        this.$confirm('确认关闭?')
          .then(_ => {
            this.visible = false;
            done();
          })
          .catch(_ => {});
      }
    }
}
</script>
<style lang="scss" scoped>
.casepool {
    text-align: left;
    color: #4b9bb7;
    header {
        display: flex;
        justify-content: space-between;
        padding: 0 20px;
        line-height: 60px;
        .search {
            display: flex;
            span {
                flex: 2;
            }
            .el-input {
                flex: 5;
                &::v-deep .el-input__inner {
                    background-color: #09152f;
                    border: 1px solid #17324c;
                }
            }
        }
        .add {
            .el-button {
                background-color: #eb5d01;
                border: none;
                border-radius: 20px;
            }
        }
    }
    main {
        .mainContent {
            .nav {
                &::v-deep .el-tabs--border-card {
                    border: none;
                }
                &::v-deep .el-tabs--border-card>.el-tabs__content {
                    background-color: #09152f;
                }
                &::v-deep .el-tabs__nav-scroll {
                    background-color: #09152f;
                }
                &::v-deep .el-tabs__header {
                    line-height: 60px;
                }
                &::v-deep .el-tabs--border-card>.el-tabs__header .el-tabs__item {
                    color: #fff;
                }
                &::v-deep .el-tabs--border-card>.el-tabs__header .el-tabs__item.is-active {
                    color: #4b9bb7;
                    background-color: #071f39;
                    border: none;
                }
                .el-table {
                    font-size: 12px;
                    color: #4b9bb7;
                    .line {
                        padding: 0 5px;
                    }
                }
                &::v-deep .el-table__empty-block {
                    background-color: #09152f;
                    color: #4b9bb7;
                }
                .el-table::v-deep .warning-row {
                    background: #06122c;
                }
                .el-table::v-deep .success-row {
                    background: #071f39;
                }
            }
        }
    }
    footer {
        &::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;
        }
    }
}
</style>