From 0bbc5abeab6a1cb504b36bcd620fcb55e496d989 Mon Sep 17 00:00:00 2001
From: Your Name <123456>
Date: 星期一, 21 三月 2022 10:32:50 +0800
Subject: [PATCH] '登录页'

---
 src/components/Tab/Plot.vue                                           |  460 ++++++++++----------
 src/assets/icon_visible.png                                           |    0 
 src/views/login/index.vue                                             |  202 +++-----
 src/views/doublePreventAction/riskLevelManage/fourColorMap/index.vue  |   10 
 config/prod.env.js                                                    |    4 
 src/router/index.js                                                   |   17 
 src/views/doublePreventAction/riskLevelManage/index.vue               |   13 
 src/views/login/components/login-form.vue                             |  276 ++++++-----
 src/api/riskLevelManage.js                                            |   46 ++
 src/assets/bg_login.png                                               |    0 
 src/views/doublePreventAction/riskLevelManage/controlAction/index.vue |   13 
 config/dev.env.js                                                     |    6 
 src/views/doublePreventAction/riskLevelManage/event/index.vue         |   13 
 src/views/dashboard/index.vue                                         |    2 
 src/components/Map/libs/Map.js                                        |    6 
 index.html                                                            |    2 
 src/components/Tab/Model.vue                                          |    2 
 src/views/doublePreventAction/riskLevelManage/analyseUnit/index.vue   |  285 ++++++++++++
 src/assets/img_bg_login.png                                           |    0 
 19 files changed, 862 insertions(+), 495 deletions(-)

diff --git a/config/dev.env.js b/config/dev.env.js
index 2ce3471..f26d779 100644
--- a/config/dev.env.js
+++ b/config/dev.env.js
@@ -16,8 +16,10 @@
   // IMG_API: '"https://sinanoaq.com:8100/upload/"',
   //   BASE_API: '"http://220.171.99.118:4100"',
   //   IMG_API: '"http://220.171.99.118:4100/upload/"',
-      BASE_API: '"http://192.168.0.35:8006"',
-      IMG_API: '"http://192.168.0.35:8006/upload/"',
+  //     BASE_API: '"http://192.168.0.35:8006"',
+  //     IMG_API: '"http://192.168.0.35:8006/upload/"',
+    BASE_API: '"http://222.92.213.21:8006/zhongtai"',
+    IMG_API: '"http://222.92.213.21:8006/zhongtai/upload/"',
     // BASE_API: '"http://220.171.99.118:4101/api"',
     // IMG_API: '"http://220.171.99.118:4101/api/upload/"',
 };
diff --git a/config/prod.env.js b/config/prod.env.js
index c2ed52c..087ec5b 100644
--- a/config/prod.env.js
+++ b/config/prod.env.js
@@ -8,8 +8,8 @@
     // BASE_API: '"https://sinanoaq.cn:8100"',
     // IMG_API: '"https://sinanoaq.cn:8100/upload/"',
 
-    BASE_API: '"http://220.171.99.118:4100"',
-    IMG_API: '"http://220.171.99.118:4100/upload/"',
+    BASE_API: '"http://222.92.213.21:8006/zhongtai"',
+    IMG_API: '"http://222.92.213.21:8006/zhongtai/upload/"',
 
     // BASE_API: '"http://220.171.99.118:4101/api"',
     // IMG_API: '"http://220.171.99.118:4101/api/upload/"',
diff --git a/index.html b/index.html
index 966474a..e0ff05f 100644
--- a/index.html
+++ b/index.html
@@ -27,7 +27,7 @@
         }
 
         .popup-wrapper {
-            background-image: url("./images/popup_bg.png");
+            background-image: url("./public/images/popup_bg.png");
             background-size: auto 100%;
             background-repeat: no-repeat;
             background-position: center center;
diff --git a/src/api/riskLevelManage.js b/src/api/riskLevelManage.js
new file mode 100644
index 0000000..d04612a
--- /dev/null
+++ b/src/api/riskLevelManage.js
@@ -0,0 +1,46 @@
+import {getToken} from "../utils/auth";
+import request from '@/utils/request'
+
+export function getAnalyseUnitList(data) {
+    return request({
+        headers: {
+            'Authorization': getToken()
+        },
+        url: process.env.BASE_API + '/riskAnaUnit/page',
+        method: 'post',
+        data:data
+    })
+}
+
+export function addAnalyseUnit(data) {
+    return request({
+        headers: {
+            'Authorization': getToken()
+        },
+        url: process.env.BASE_API + '/riskAnaUnit/add',
+        method: 'post',
+        data:data
+    })
+}
+
+export function updateAnalyseUnit(data) {
+    return request({
+        headers: {
+            'Authorization': getToken()
+        },
+        url: process.env.BASE_API + '/riskAnaUnit/mod',
+        method: 'post',
+        data:data
+    })
+}
+
+export function deleteAnalyseUnit(data) {
+    return request({
+        headers: {
+            'Authorization': getToken()
+        },
+        url: process.env.BASE_API + '/riskAnaUnit/del',
+        method: 'post',
+        data:data
+    })
+}
diff --git a/src/assets/bg_login.png b/src/assets/bg_login.png
new file mode 100644
index 0000000..1f5723b
--- /dev/null
+++ b/src/assets/bg_login.png
Binary files differ
diff --git a/src/assets/icon_visible.png b/src/assets/icon_visible.png
new file mode 100644
index 0000000..0904fbb
--- /dev/null
+++ b/src/assets/icon_visible.png
Binary files differ
diff --git a/src/assets/img_bg_login.png b/src/assets/img_bg_login.png
new file mode 100644
index 0000000..bd10eb6
--- /dev/null
+++ b/src/assets/img_bg_login.png
Binary files differ
diff --git a/src/components/Map/libs/Map.js b/src/components/Map/libs/Map.js
index 6148960..6ebbb4f 100644
--- a/src/components/Map/libs/Map.js
+++ b/src/components/Map/libs/Map.js
@@ -1414,8 +1414,8 @@
     this.measureTool.clearMeasure();
     this.clearAllPlots();
     this.removeModels();
-    // this.viewer.destroy();
-    // this.viewer = null;
-    // this.fire(UI_CHANGE_EVENT);
+    this.viewer.destroy();
+    this.viewer = null;
+    this.fire(UI_CHANGE_EVENT);
   }
 }
diff --git a/src/components/Tab/Model.vue b/src/components/Tab/Model.vue
index 42b606e..7b613e7 100644
--- a/src/components/Tab/Model.vue
+++ b/src/components/Tab/Model.vue
@@ -216,4 +216,4 @@
     box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.15);
 }
 
-</style>
\ No newline at end of file
+</style>
diff --git a/src/components/Tab/Plot.vue b/src/components/Tab/Plot.vue
index 798c15d..1082c5a 100644
--- a/src/components/Tab/Plot.vue
+++ b/src/components/Tab/Plot.vue
@@ -1,250 +1,250 @@
 <template>
-  <div class="container">
-    <div class="model-panel-list">
-      <el-row :gutter="10">
-        <el-col :span="6">
-          <el-button
-            icon="el-icon-plus"
-            size="small"
-            type="primary"
-            @click="showCreateHandle"
-          >
-            创建
-          </el-button>
-        </el-col>
-        <el-col :span="6">
-          <el-button
-            icon="el-icon-delete"
-            size="small"
-            type="danger"
-            @click="clearHandle"
-          >
-            清空
-          </el-button>
-        </el-col>
-        <el-col :span="6">
-          <el-button
-            icon="el-icon-view"
-            size="small"
-            :type="showPlot ? 'success' : 'info'"
-            @click="toggleVisible"
-          >
-            {{ showPlot ? '隐藏' : '显示' }}
-          </el-button>
-        </el-col>
-      </el-row>
-      <el-row :gutter="10" v-for="label in labels" :key="label.attr.id">
-        <el-col :span="14">
-          {{ label.attr.name || ' ' }}
-        </el-col>
-        <el-col :span="10" style="textalign: right">
-          <el-button
-            icon="el-icon-s-promotion"
-            size="mini"
-            circle
-            @click="() => focusHandle(label.attr.id)"
-          />
-          <el-button
-            icon="el-icon-edit"
-            size="mini"
-            circle
-            @click="() => editHandle(label)"
-          />
-          <el-button
-            icon="el-icon-delete"
-            type="danger"
-            size="mini"
-            circle
-            @click="() => removeHandle(label.attr.id)"
-          />
-        </el-col>
-      </el-row>
-    </div>
-    <el-dialog
-      :visible="showCreatePanel"
-      width="380px"
-      title="创建标注"
-      :append-to-body="true"
-      :close-on-click-modal="false"
-      :before-close="closeCreateHandle"
-    >
-      <p>请输入内容:</p>
-      <el-input v-model="label.name" placeholder="请输入内容" />
-      <span slot="footer" class="dialog-footer">
+    <div class="container">
+        <div class="model-panel-list">
+            <el-row :gutter="10">
+                <el-col :span="6">
+                    <el-button
+                        icon="el-icon-plus"
+                        size="small"
+                        type="primary"
+                        @click="showCreateHandle"
+                    >
+                        创建
+                    </el-button>
+                </el-col>
+                <el-col :span="6">
+                    <el-button
+                        icon="el-icon-delete"
+                        size="small"
+                        type="danger"
+                        @click="clearHandle"
+                    >
+                        清空
+                    </el-button>
+                </el-col>
+                <el-col :span="6">
+                    <el-button
+                        icon="el-icon-view"
+                        size="small"
+                        :type="showPlot ? 'success' : 'info'"
+                        @click="toggleVisible"
+                    >
+                        {{ showPlot ? '隐藏' : '显示' }}
+                    </el-button>
+                </el-col>
+            </el-row>
+            <el-row :gutter="10" v-for="label in labels" :key="label.attr.id">
+                <el-col :span="14">
+                    {{ label.attr.name || ' ' }}
+                </el-col>
+                <el-col :span="10" style="textalign: right">
+                    <el-button
+                        icon="el-icon-s-promotion"
+                        size="mini"
+                        circle
+                        @click="() => focusHandle(label.attr.id)"
+                    />
+                    <el-button
+                        icon="el-icon-edit"
+                        size="mini"
+                        circle
+                        @click="() => editHandle(label)"
+                    />
+                    <el-button
+                        icon="el-icon-delete"
+                        type="danger"
+                        size="mini"
+                        circle
+                        @click="() => removeHandle(label.attr.id)"
+                    />
+                </el-col>
+            </el-row>
+        </div>
+        <el-dialog
+            :visible="showCreatePanel"
+            width="380px"
+            title="创建标注"
+            :append-to-body="true"
+            :close-on-click-modal="false"
+            :before-close="closeCreateHandle"
+        >
+            <p>请输入内容:</p>
+            <el-input v-model="label.name" placeholder="请输入内容" />
+            <span slot="footer" class="dialog-footer">
         <el-button @click="closeCreateHandle">取 消</el-button>
         <el-button type="primary" @click="createHandle">确 定</el-button>
       </span>
-    </el-dialog>
-  </div>
+        </el-dialog>
+    </div>
 </template>
 
 <script>
-import { global } from '../../global';
+    import { global } from '../../global';
 
-// 默认样式
-const LABEL_STYLE = {
-  opacity: 1,
-  color: '#FFFFFF',
-  font_family: '黑体',
-  font_size: 18,
-  font_style: 'normal',
-  font_weight: 'normal',
-  border: false,
-  border_color: '#ffffff',
-  border_width: 2,
-  background: true,
-  background_color: 'rgba(0, 0, 0, .8)',
-};
-
-export default {
-  components: {},
-  data() {
-    return {
-      label: {
-        id: null,
-        name: '',
-      },
-      showCreatePanel: false,
-      showPlot: true,
+    // 默认样式
+    const LABEL_STYLE = {
+        opacity: 1,
+        color: '#FFFFFF',
+        font_family: '黑体',
+        font_size: 18,
+        font_style: 'normal',
+        font_weight: 'normal',
+        border: false,
+        border_color: '#ffffff',
+        border_width: 2,
+        background: true,
+        background_color: 'rgba(0, 0, 0, .8)',
     };
-  },
-  computed: {
-    timestamp() {
-      return this.$store.state.map.timestamp;
-    },
-    labels() {
-      return this.entities.map(entity => entity.attribute);
-    },
-    entities() {
-      let entities =
-        this.timestamp && global.map
-          ? global.map.plotDrawTool.getEntitys()
-          : [];
-      return entities.filter(entity => entity.attribute.type === 'polygon');
-    },
-  },
-  methods: {
-    editHandle(label) {
-      if (!global.map) return;
-      this.label = {
-        id: label.attr.id,
-        name: label.attr.name,
-      };
-      this.showCreatePanel = true;
-    },
-    removeHandle(id) {
-      if (!global.map) return;
-      global.map.deletePlot(id);
-      this.$store.dispatch('map/updateTimestamp');
-    },
-    closeCreateHandle() {
-      this.showCreatePanel = false;
-    },
-    showCreateHandle() {
-      this.showCreatePanel = true;
-    },
-    _initLabel() {
-      this.label = {
-        id: null,
-        name: '',
-      };
-    },
-    createHandle() {
-      if (!global.map) return;
-      let map = global.map;
-      const { id, name } = this.label;
-      const entity = id && map.getPlotById(id);
-      this.closeCreateHandle();
-      if (entity) {
-        map.updatePlotStyle(id, { text: name });
-        map.updatePlotAttribute(id, { name });
-        this._initLabel();
-        this.$store.dispatch('map/updateTimestamp');
-      } else {
-        map.startDraw(
-          {
-            type: 'polygon',
-            style: { text: name },
-            attr: {
-              name,
+
+    export default {
+        components: {},
+        data() {
+            return {
+                label: {
+                    id: null,
+                    name: '',
+                },
+                showCreatePanel: false,
+                showPlot: true,
+            };
+        },
+        computed: {
+            timestamp() {
+                return this.$store.state.map.timestamp;
             },
-          },
-          () => {
-            this._initLabel();
-            this.$store.dispatch('map/updateTimestamp');
-          }
-        );
-      }
-    },
-    toggleVisible() {
-      this.showPlot = !this.showPlot;
-      if (global.map) {
-        this.entities.forEach(entity => {
-          entity.show = this.showPlot;
-        });
-      }
-      this.$store.dispatch('map/updateTimestamp');
-    },
-    focusHandle(markerId) {
-      if (global.map) {
-        const entity = global.map.getPlotById(markerId);
-        if (entity) {
-          global.map.viewer.flyTo(entity, { duration: 1 });
-        }
-      }
-    },
-    clearHandle() {
-      if (global.map) {
-        this.entities.forEach(entity => {
-          global.map.plotDrawTool.deleteEntity(entity);
-        });
-      }
-      this.$store.dispatch('map/updateTimestamp');
-    },
-  },
-};
+            labels() {
+                return this.entities.map(entity => entity.attribute);
+            },
+            entities() {
+                let entities =
+                    this.timestamp && global.map
+                        ? global.map.plotDrawTool.getEntitys()
+                        : [];
+                return entities.filter(entity => entity.attribute.type === 'polygon');
+            },
+        },
+        methods: {
+            editHandle(label) {
+                if (!global.map) return;
+                this.label = {
+                    id: label.attr.id,
+                    name: label.attr.name,
+                };
+                this.showCreatePanel = true;
+            },
+            removeHandle(id) {
+                if (!global.map) return;
+                global.map.deletePlot(id);
+                this.$store.dispatch('map/updateTimestamp');
+            },
+            closeCreateHandle() {
+                this.showCreatePanel = false;
+            },
+            showCreateHandle() {
+                this.showCreatePanel = true;
+            },
+            _initLabel() {
+                this.label = {
+                    id: null,
+                    name: '',
+                };
+            },
+            createHandle() {
+                if (!global.map) return;
+                let map = global.map;
+                const { id, name } = this.label;
+                const entity = id && map.getPlotById(id);
+                this.closeCreateHandle();
+                if (entity) {
+                    map.updatePlotStyle(id, { text: name });
+                    map.updatePlotAttribute(id, { name });
+                    this._initLabel();
+                    this.$store.dispatch('map/updateTimestamp');
+                } else {
+                    map.startDraw(
+                        {
+                            type: 'polygon',
+                            style: { text: name },
+                            attr: {
+                                name,
+                            },
+                        },
+                        () => {
+                            this._initLabel();
+                            this.$store.dispatch('map/updateTimestamp');
+                        }
+                    );
+                }
+            },
+            toggleVisible() {
+                this.showPlot = !this.showPlot;
+                if (global.map) {
+                    this.entities.forEach(entity => {
+                        entity.show = this.showPlot;
+                    });
+                }
+                this.$store.dispatch('map/updateTimestamp');
+            },
+            focusHandle(markerId) {
+                if (global.map) {
+                    const entity = global.map.getPlotById(markerId);
+                    if (entity) {
+                        global.map.viewer.flyTo(entity, { duration: 1 });
+                    }
+                }
+            },
+            clearHandle() {
+                if (global.map) {
+                    this.entities.forEach(entity => {
+                        global.map.plotDrawTool.deleteEntity(entity);
+                    });
+                }
+                this.$store.dispatch('map/updateTimestamp');
+            },
+        },
+    };
 </script>
 
 <style scoped>
-.images img {
-  width: 36px;
-  height: auto;
-  margin: 0px 5px;
-  cursor: pointer;
-}
+    .images img {
+        width: 36px;
+        height: auto;
+        margin: 0px 5px;
+        cursor: pointer;
+    }
 
-.model-panel-list > div {
-  margin-bottom: 5px;
-  padding: 5px 0 5px 0;
-  border-bottom: 1px solid rgba(0, 0, 0, 0.1);
-}
+    .model-panel-list > div {
+        margin-bottom: 5px;
+        padding: 5px 0 5px 0;
+        border-bottom: 1px solid rgba(0, 0, 0, 0.1);
+    }
 
-.image-list {
-  margin: 20px 0;
-}
+    .image-list {
+        margin: 20px 0;
+    }
 
-.image-list ul,
-.image-list li {
-  margin: 0;
-  padding: 0;
-  list-style: none;
-}
+    .image-list ul,
+    .image-list li {
+        margin: 0;
+        padding: 0;
+        list-style: none;
+    }
 
-.image-list li {
-  display: inline-block;
-  margin: 0 5px 5px 5px;
-  cursor: pointer;
-  padding: 5px 8px;
-  border-radius: 3px;
-}
+    .image-list li {
+        display: inline-block;
+        margin: 0 5px 5px 5px;
+        cursor: pointer;
+        padding: 5px 8px;
+        border-radius: 3px;
+    }
 
-.image-list li img {
-  width: 32px;
-  height: 32px;
-}
+    .image-list li img {
+        width: 32px;
+        height: 32px;
+    }
 
-.image-list li:hover,
-.image-list li.active {
-  box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.15);
-}
+    .image-list li:hover,
+    .image-list li.active {
+        box-shadow: 0 0 2px 1px rgba(0, 0, 0, 0.15);
+    }
 </style>
diff --git a/src/router/index.js b/src/router/index.js
index cee1087..64bca8a 100644
--- a/src/router/index.js
+++ b/src/router/index.js
@@ -53,7 +53,22 @@
         hidden: true
     },
     {
-        path: '',
+        path: '/',
+        component: Layout,
+        redirect: '/doublePreventAction/doublePreventAction/riskLevelManage/index/doublePreventAction/riskLevelManage/analyseUnit/index',
+        children: [
+            {
+                path: 'dashboard',
+                component: () => import('@/views/doublePreventAction/riskLevelManage/analyseUnit/index'),
+                name: 'Dashboard1',
+                meta: { title: '首页', icon: 'el-icon-dash', noCache: true, affix: true }
+            }
+
+        ],
+        hidden: true
+    },
+    {
+        path: 'dashboard',
         component: Layout,
         redirect: 'dashboard',
         children: [
diff --git a/src/views/dashboard/index.vue b/src/views/dashboard/index.vue
index 4f89e81..0a0706f 100644
--- a/src/views/dashboard/index.vue
+++ b/src/views/dashboard/index.vue
@@ -7,7 +7,7 @@
 
 <script>
 import { mapGetters } from 'vuex'
-import menuIndex from '../mapManage/map/index'
+import menuIndex from '../doublePreventAction/riskLevelManage/analyseUnit/index'
 
 export default {
   name: 'Dashboard',
diff --git a/src/views/doublePreventAction/riskLevelManage/analyseUnit/index.vue b/src/views/doublePreventAction/riskLevelManage/analyseUnit/index.vue
new file mode 100644
index 0000000..81a0abf
--- /dev/null
+++ b/src/views/doublePreventAction/riskLevelManage/analyseUnit/index.vue
@@ -0,0 +1,285 @@
+<template>
+    <div class="app-container">
+        <div class="filter-container">
+            <div class="basic_search">
+                <span>单位名称:</span>
+                <el-input v-model="listQuery.filter.riskUintName" style="width:200px">
+                </el-input>
+            </div>
+            <el-button class="filter-item" style="margin-left: 10px;margin-top: 10px" type="primary" icon="el-icon-refresh" @click="refreshHandle">搜索</el-button>
+            <el-button class="filter-item" style="margin-left: 10px;margin-top: 10px" type="primary" icon="el-icon-plus" @click="showUnitForm('','新增')">新增</el-button>
+        </div>
+        <div class="table_content">
+            <el-table
+                v-loading="listLoading"
+                :key="tableKey"
+                :data="analyseUnitData"
+                border
+                fit
+                highlight-current-row
+                style="width: 100%;"
+            >
+                <el-table-column label="安全风险分析单元ID" prop="hazardLiablePersonId" align="center">
+                </el-table-column>
+                <el-table-column label="安全风险分析对象编码" prop="hazardCode" align="center">
+                </el-table-column>
+                <el-table-column label="责任部门" prop="hazardDep" align="center">
+                </el-table-column>
+                <el-table-column label="责任人" prop="hazardLiablePerson" align="center">
+                </el-table-column>
+                <el-table-column label="安全风险分析单元名称" prop="riskUintName" align="center">
+                </el-table-column>
+                <el-table-column label="创建人" prop="createBy" align="center">
+                </el-table-column>
+                <el-table-column label="创建时间" prop="createTime" align="center">
+                </el-table-column>
+                <el-table-column label="最后修改人" prop="updateBy" align="center">
+                </el-table-column>
+                <el-table-column label="最后修改时间" prop="updateTime" align="center">
+                </el-table-column>
+                <el-table-column label="操作" align="center" width="280" class-name="small-padding fixed-width">
+                    <template slot-scope="scope">
+                        <el-button type="text" @click="showUnitForm(scope.row,'编辑')">编辑</el-button>
+                        <el-button type="text" style="color: red" @click="deleteById(scope.row)">删除</el-button>
+                    </template>
+                </el-table-column>
+            </el-table>
+            <br>
+            <el-pagination
+                v-show="recordTotal>0"
+                :current-page="currentPage"
+                :page-sizes="[10, 20, 30, 50]"
+                :page-size="pageSize"
+                :total="recordTotal"
+                layout="total, sizes, prev, pager, next, jumper"
+                background
+                style="float:right;"
+                @size-change="handleSizeChange"
+                @current-change="handleCurrentChange"
+            />
+            <br>
+        </div>
+        <el-dialog :title="title" :visible.sync="analyseUnitVisible" :modal-append-to-body="false" :close-on-click-modal="false" width="600px">
+            <el-form ref="dataForm" :rules="analyseUnitFormRules" :model="analyseUnitForm" label-position="right" label-width="160px">
+                <el-form-item label="责任部门">
+                    <el-select v-model="analyseUnitForm.hazardDep" class="analyseUnit_input">
+                        <el-option
+                        v-for="item in departmentList"
+                        :key="item.id"
+                        :value="item.department"
+                        :label="item.department"
+                        ></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="责任人">
+                    <el-input v-model="analyseUnitForm.hazardLiablePerson" class="analyseUnit_input"></el-input>
+                </el-form-item>
+                <el-form-item label="安全风险分析对象编码">
+                    <el-input v-model="analyseUnitForm.hazardCode" class="analyseUnit_input"></el-input>
+                </el-form-item>
+                <el-form-item label="安全分线分析单元名称">
+                    <el-input v-model="analyseUnitForm.riskUintName" class="analyseUnit_input"></el-input>
+                </el-form-item>
+            </el-form>
+            <div  align="right">
+                <el-button @click="unitFormVisible = false">取消</el-button>
+                <el-button type="primary" @click="submitUnit()">确认</el-button>
+            </div>
+        </el-dialog>
+    </div>
+</template>
+
+<script>
+    import { mapGetters } from 'vuex'
+    import { computePageCount } from '@/utils'
+    import { addAnalyseUnit, deleteAnalyseUnit, getAnalyseUnitList, updateAnalyseUnit } from '@/api/riskLevelManage'
+    import {getAllDepartment, getDepartmentList} from "../../../../api/departmentManage";
+    export default {
+        name: 'index',
+        filters: {
+            parseMain(type){
+                if(type === 1){
+                    return "是"
+                }else if(type === 0){
+                    return "否"
+                }
+            },
+        },
+        computed: {
+            ...mapGetters([
+                'userType'
+            ])
+        },
+        data() {
+            return {
+                tableKey: 0,
+                analyseUnitData: [],
+                departmentList:[],
+                listLoading: false,
+                pageSize: 10,
+                recordTotal: 0,
+                currentPage: 1,
+                pageTotal: 0,
+                title:'',
+                company:'',
+                code:'',
+                analyseUnitVisible:false,
+                analyseUnitFormRules:{},
+                analyseUnitForm:{
+                    id: null,
+                    hazardCode: "",
+                    hazardDep: "",
+                    hazardLiablePerson: "",
+                    riskUintName: "",
+                    createTime: "",
+                    updateTime: "",
+                    createBy: "",
+                    updateBy: "",
+                    validFlag: null,
+                    hazardLiablePersonId: null,
+                    hazardDepId: 1
+                },
+                listQuery:{
+                    pageIndex:1,
+                    pageSize:10,
+                    filter:{
+                        riskUnitName:'',
+                    }
+                },
+            }
+        },
+        created() {
+            this.getAnalyseUnitData()
+            this.getDepartment()
+        },
+        methods: {
+            async getAnalyseUnitData(){
+                this.listLoading = true
+                let res = await getAnalyseUnitList(this.listQuery)
+                if(res.data.code === '200'){
+                    this.recordTotal = res.data.result.total
+                    this.pageSize = res.data.result.size
+                    this.pageTotal = computePageCount(res.data.result.total, res.data.result.size)
+                    this.currentPage = res.data.result.current
+                    this.analyseUnitData = res.data.result.records
+                }else{
+                    this.$message({
+                        message:res.data.message,
+                        type:'warning'
+                    })
+                }
+                this.listLoading = false
+            },
+            async getDepartment(){
+                let res = await getDepartmentList({pageSize:1000,pageIndex:1})
+                if(res.data.code === '200'){
+                    this.departmentList = res.data.result.result
+                }else{
+                    this.$message({
+                        message:res.data.message,
+                        type:'warning'
+                    })
+                }
+            },
+            showUnitForm(value,type){
+                this.analyseUnitVisible = true
+                if(type === '新增'){
+                    this.title = '新增'
+                    this.analyseUnitForm = {
+                        id: null,
+                        hazardCode: "",
+                        hazardDep: "",
+                        hazardLiablePerson: "",
+                        riskUintName: "",
+                        createTime: "",
+                        updateTime: "",
+                        createBy: "",
+                        updateBy: "",
+                        validFlag: null,
+                        hazardLiablePersonId: null,
+                        hazardDepId: 1
+                    }
+                }else{
+                    this.title = '修改'
+                    this.analyseUnitForm = value
+                }
+            },
+            submitUnit(){
+                if(this.title === '新增'){
+                    addAnalyseUnit(this.analyseUnitForm).then((res)=>{
+                        if(res.data.code === '200'){
+                            this.analyseUnitVisible = false
+                            this.getAnalyseUnitData()
+                            this.$notify({
+                                type:'success',
+                                duration:2000,
+                                message:'新增成功',
+                                title:'成功'
+                            })
+                        }else{
+                            this.$message({
+                                type:'warning',
+                                message:res.data.message
+                            })
+                        }
+                    })
+                }else{
+                    updateAnalyseUnit(this.analyseUnitForm).then((res)=>{
+                        if(res.data.code === '200'){
+                            this.analyseUnitVisible = false
+                            this.getAnalyseUnitData()
+                            this.$notify({
+                                type:'success',
+                                duration:2000,
+                                title:'成功',
+                                message:'编辑成功'
+                            })
+                        }else{
+                            this.$message({
+                                type:'warning',
+                                message:res.data.message
+                            })
+                        }
+                    })
+                }
+            },
+            deleteById(val){
+                this.$confirm('删除此条信息,是否继续','提示',{
+                    confirmButtonText:'确定',
+                    cancelButtonText:'取消',
+                    type:'warning',
+                }).then(()=> {
+                    deleteAnalyseUnit({id:val.id}).then( ()=>{
+                        this.getAnalyseUnitData()
+                        this.$notify({
+                            title:'成功',
+                            message:'删除成功',
+                            type:'success',
+                            duration:2000,
+                        })
+                    })
+                })
+            },
+            refreshHandle(){
+                this.getAnalyseUnitData()
+            },
+            handleSizeChange(val){
+                this.listQuery.pageSize = val
+                this.getAnalyseUnitData()
+            },
+            handleCurrentChange(val){
+                this.listQuery.pageIndex = val
+                this.getAnalyseUnitData()
+            },
+        }
+    }
+</script>
+<style scoped>
+    .basic_search{
+        display:inline-block;
+        padding-bottom: 10px;
+    }
+    .analyseUnit_input{
+        width:320px;
+    }
+</style>
diff --git a/src/views/doublePreventAction/riskLevelManage/controlAction/index.vue b/src/views/doublePreventAction/riskLevelManage/controlAction/index.vue
new file mode 100644
index 0000000..db27c8a
--- /dev/null
+++ b/src/views/doublePreventAction/riskLevelManage/controlAction/index.vue
@@ -0,0 +1,13 @@
+<template>
+
+</template>
+
+<script>
+    export default {
+        name: "index"
+    }
+</script>
+
+<style scoped>
+
+</style>
diff --git a/src/views/doublePreventAction/riskLevelManage/event/index.vue b/src/views/doublePreventAction/riskLevelManage/event/index.vue
new file mode 100644
index 0000000..db27c8a
--- /dev/null
+++ b/src/views/doublePreventAction/riskLevelManage/event/index.vue
@@ -0,0 +1,13 @@
+<template>
+
+</template>
+
+<script>
+    export default {
+        name: "index"
+    }
+</script>
+
+<style scoped>
+
+</style>
diff --git a/src/views/mapManage/map/index.vue b/src/views/doublePreventAction/riskLevelManage/fourColorMap/index.vue
similarity index 97%
rename from src/views/mapManage/map/index.vue
rename to src/views/doublePreventAction/riskLevelManage/fourColorMap/index.vue
index 8c48f79..3d87881 100644
--- a/src/views/mapManage/map/index.vue
+++ b/src/views/doublePreventAction/riskLevelManage/fourColorMap/index.vue
@@ -6,13 +6,13 @@
 </template>
 
 <script>
-    import Map from '../../../components/Map';
-    import Tab from '../../../components/Tab';
-    import { global } from '../../../global';
+    import Map from '../../../../components/Map';
+    import Tab from '../../../../components/Tab';
+    import { global } from '../../../../global';
     import {
         getCatesian3FromPX,
         Cartesian3_to_WGS84,
-    } from '../../../components/Map/libs/Point';
+    } from '../../../../components/Map/libs/Point';
 
     export default {
         name: 'App',
@@ -66,7 +66,7 @@
                 this.loaded = true;
 
                 map.addModel({
-                    link: 'http://model.szwutu.cn:8100/data1/namisoub3dm/tileset.json',
+                    link: 'http://model.szwutu.cn:8100/data1/namiso-ub3dm/tileset.json',
                     name: '商业园区',
                     callback: tileset => {
                         var boundingSphere = tileset.boundingSphere;
diff --git a/src/views/doublePreventAction/riskLevelManage/index.vue b/src/views/doublePreventAction/riskLevelManage/index.vue
new file mode 100644
index 0000000..f50c54d
--- /dev/null
+++ b/src/views/doublePreventAction/riskLevelManage/index.vue
@@ -0,0 +1,13 @@
+<template>
+    <router-view />
+</template>
+
+<script>
+    export default {
+        name: "index"
+    }
+</script>
+
+<style scoped>
+
+</style>
diff --git a/src/views/login/components/login-form.vue b/src/views/login/components/login-form.vue
index 62e50d5..2aeede9 100644
--- a/src/views/login/components/login-form.vue
+++ b/src/views/login/components/login-form.vue
@@ -1,43 +1,89 @@
 <template>
-    <el-form ref="loginForm" :model="loginForm" :rules="loginRules" :inline="false" class="loginForm" @keydown.enter.native="handleSubmit">
-        <div class="title-container">
-            <h3 class="title">登录</h3>
+    <div class="login-form">
+        <div class="login-form-title"><span>登录</span></div>
+        <div class="login-form-main">
+            <el-form ref="loginForm" :model="loginForm" :rules="loginRules" :inline="false" class="loginForm" @keydown.enter.native="handleSubmit">
+                <div class="login-form-main-user"><span>用户名</span></div>
+                <div class="login-form-main-user_input">
+                <el-form-item prop="username">
+                    <el-input
+                        v-model="loginForm.username"
+                        placeholder="请输入用户名"
+                        name="username"
+                        type="text"
+                        auto-complete="on"
+                    />
+                </el-form-item>
+                </div>
+                <div class="login-form-main-password"><span>密码</span></div>
+                <div class="login-form-main-password_input">
+                    <el-row>
+                        <el-col :span="21">
+                            <el-form-item prop="password">
+                                <el-input
+                                    v-model="loginForm.password"
+                                    :type="loginPasswordType"
+                                    placeholder="请输入密码"
+                                    name="password"
+                                    auto-complete="on"
+                                    @keyup.enter.native="handleSubmit"
+                                />
+                            </el-form-item>
+                        </el-col>
+                        <el-col :span="3">
+                            <img src="../../../assets/icon_visible.png" style="margin:0 auto;padding-top: 9px;padding-left: 10px;" @click="showLoginPwd"></img>
+                        </el-col>
+                    </el-row>
+                </div>
+            </el-form>
         </div>
-        <el-form-item prop="username">
-      <span class="svg-container">
-        <svg-icon icon-class="user" />
-      </span>
-            <el-input
-                v-model="loginForm.username"
-                placeholder="请输入用户名"
-                name="username"
-                type="text"
-                auto-complete="on"
-            />
-        </el-form-item>
-        <el-form-item prop="password">
-      <span class="svg-container">
-        <svg-icon icon-class="password" />
-      </span>
-            <el-input
-                v-model="loginForm.password"
-                :type="loginPasswordType"
-                placeholder="请输入密码"
-                name="password"
-                auto-complete="on"
-                @keyup.enter.native="handleSubmit"
-            />
-            <span class="show-pwd" @click="showLoginPwd">
-        <svg-icon :icon-class="loginPasswordType === 'password' ? 'eye' : 'eye-open'" />
-      </span>
-        </el-form-item>
-        <div style="text-align:center;">
-            <el-button :loading="logingLoading" class="login-button" type="primary" @click.native.prevent="handleSubmit">
-                登录
+        <div class="login-form-button">
+            <el-button class="login-form-login-button" :loading="logingLoading" :disabled="submitLoading" type="primary" @click.native.prevent="handleSubmit">
+                  <span>
+                      登录
+                  </span>
             </el-button>
-            <br>
         </div>
-    </el-form>
+    </div>
+    <!--    <el-form ref="loginForm" :model="loginForm" :rules="loginRules" :inline="false" class="loginForm" @keydown.enter.native="handleSubmit">-->
+<!--        <div class="title-container">-->
+<!--            <h3 class="title">登录</h3>-->
+<!--        </div>-->
+<!--        <el-form-item prop="username">-->
+<!--      <span class="svg-container">-->
+<!--        <svg-icon icon-class="user" />-->
+<!--      </span>-->
+<!--            <el-input-->
+<!--                v-model="loginForm.username"-->
+<!--                placeholder="请输入用户名"-->
+<!--                name="username"-->
+<!--                type="text"-->
+<!--                auto-complete="on"-->
+<!--            />-->
+<!--        </el-form-item>-->
+<!--        <el-form-item prop="password">-->
+<!--      <span class="svg-container">-->
+<!--        <svg-icon icon-class="password" />-->
+<!--      </span>-->
+<!--            <el-input-->
+<!--                v-model="loginForm.password"-->
+<!--                :type="loginPasswordType"-->
+<!--                placeholder="请输入密码"-->
+<!--                name="password"-->
+<!--                auto-complete="on"-->
+<!--                @keyup.enter.native="handleSubmit"-->
+<!--            />-->
+<!--            <span class="show-pwd" @click="showLoginPwd">-->
+<!--        <svg-icon :icon-class="loginPasswordType === 'password' ? 'eye' : 'eye-open'" />-->
+<!--      </span>-->
+<!--        </el-form-item>-->
+<!--        <div style="text-align:center;">-->
+<!--            <el-button :loading="logingLoading" class="login-button" type="primary" @click.native.prevent="handleSubmit">-->
+<!--                登录-->
+<!--            </el-button>-->
+<!--            <br>-->
+<!--        </div>-->
+<!--    </el-form>-->
 </template>
 <script>
     import Cookies from "js-cookie";
@@ -85,7 +131,6 @@
 
         },
         created(){
-            this.test()
         },
         methods: {
             showLoginPwd() {
@@ -123,95 +168,72 @@
     }
 </script>
 
-<style rel="stylesheet/scss" lang="scss">
-    $cursor: #fff;
-    $bg:#2d3a4b;
-    $dark_gray:#889aa4;
-    $light_gray:#eee;
-    .loginForm {
-        .el-input {
-            display: inline-block;
-            height: 47px;
-            width: 85%;
-            input {
-                background: transparent;
-                background-color: #eee;
-                border: 0px;
-                -webkit-appearance: none;
-                border-radius: 0px;
-                padding: 12px 5px 12px 15px;
-                color: #333333;
-                height: 47px;
-                caret-color:#333333;
-                &:-webkit-autofill {
-                    -webkit-box-shadow: 0 0 0px 1000px #cfd5da inset !important;
-                    -webkit-text-fill-color: #fff !important;
-                }
-            }
-        }
-        .el-form-item {
-            border: 1px solid rgba(255, 255, 255, 0.1);
-            background: rgba(0, 0, 0, 0.1);
-            border-radius: 5px;
-            color: #454545;
-        }
-        .tips {
-            font-size: 14px;
-            color: #fff;
-            margin-bottom: 10px;
-            span {
-                &:first-of-type {
-                    margin-right: 16px;
-                }
-            }
-        }
-        .svg-container {
-            padding: 6px 5px 6px 15px;
-            color: $dark_gray;
-            vertical-align: middle;
-            width: 30px;
-            display: inline-block;
-        }
-        .title-container {
-            position: relative;
-            .title {
-                font-size: 26px;
-                color: #333333;
-                margin: 0px auto 40px auto;
-                text-align: center;
-                font-weight: bold;
-            }
-            .set-language {
-                color: #fff;
-                position: absolute;
-                top: 3px;
-                font-size:18px;
-                right: 0px;
-                cursor: pointer;
-            }
-        }
-        .show-pwd {
-            position: absolute;
-            right: 10px;
-            top: 7px;
-            font-size: 16px;
-            color: $dark_gray;
-            cursor: pointer;
-            user-select: none;
-        }
-        .thirdparty-button {
-            position: absolute;
-            right: 0;
-            bottom: 6px;
-        }
-        .login-button {
-            height:36px;
-            margin-bottom:30px;
-            margin-top:10px;
-            width:100px;
-            border-radius:25px;
-            background-color: #034EA2;
-        }
+<style scoped>
+    .login-form{
+        min-height: 100%;
+        width:100%;
     }
-
+    .login-form-main{
+        margin-left:50px;
+    }
+    .login-form-title{
+        width: 60px;
+        height: 143px;
+        font-size: 30px;
+        font-family: PingFangSC-Medium, PingFang SC;
+        font-weight: 600;
+        color: #1851DC;
+        line-height: 42px;
+        padding-top: 53px;
+        margin:0 auto;
+    }
+    .login-form-main-user{
+        height: 20px;
+        font-size: 16px;
+        font-family: PingFangSC-Regular, PingFang SC;
+        font-weight: 500;
+        color: #333333;
+        line-height: 20px;
+    }
+    .login-form-main-password{
+        height: 20px;
+        font-size: 16px;
+        font-family: PingFangSC-Regular, PingFang SC;
+        font-weight: 500;
+        color: #333333;
+        line-height: 20px;
+        margin-top: 24px;
+    }
+    /deep/.el-input__inner{
+        height: 40px;
+        border:0px;
+        background: #F0F0F0;
+    }
+    .login-form-main-user_input{
+        margin-top: 8px;
+        width: 364px;
+        height: 40px;
+        background: #FFFFFF !important;
+        border-radius: 4px;
+        border: 0px solid;
+    }
+    .login-form-main-password_input{
+        margin-top: 8px;
+        width: 364px;
+        height: 40px;
+        background: #F0F0F0;
+        border-radius: 4px;
+        border: 0px solid;
+    }
+    .login-form-button{
+        width:100%;
+        text-align: center;
+        padding-top: 40px;
+    }
+    .login-form-login-button {
+        width: 364px;
+        height: 48px;
+        background: #4778FF;
+        border-radius: 4px;
+    }
 </style>
diff --git a/src/views/login/index.vue b/src/views/login/index.vue
index f1194f9..d35ac25 100644
--- a/src/views/login/index.vue
+++ b/src/views/login/index.vue
@@ -1,41 +1,36 @@
 <template>
-    <div :class="logincontainer">
-        <div v-title :data-title="titleName" class="main"/>
-        <el-row>
-            <el-col :xs="24" :sm="24" :lg="12">
-                <div class="login-logo">
-                    <div>
-                        <i class="el-icon-logo" />
-                    </div>
-                </div>
-                <div class="login-font">
-                    <div v-if="isSafe">
-            <span>
-              {{ safeLoginTitle }}
-            </span>
-                    </div>
-                    <div v-else>
-            <span>
-              特殊作业综合监管平台
-            </span>
-                    </div>
-                </div>
-            </el-col>
-            <el-col :xs="24" :sm="24" :lg="12">
-                <div class="left-container">
-                    <div v-if="action==='login'" class="login-component">
-                        <login-form
-                            @on-success-valid="handleLogin"
-                        />
-                    </div>
-                </div>
-            </el-col>
-        </el-row>
-        <el-col :xs="24" :sm="24" :lg="12">
-            <div class="bottom-container">
-                <span>Copyright©2017 中国科学院苏州纳米技术与纳米仿生研究所 苏ICP备10220403号-6</span>
+    <div class="login-container">
+        <div class="title-one">
+            <span>拜城县众泰煤焦化有限公司</span>
+        </div>
+        <div class="title-two">
+            <span>智能化安全管理技术平台</span>
+        </div>
+        <div class="login-main">
+            <div class="login-main-pic"></div>
+            <div class="login-main-form">
+                <login-form
+                    @on-success-valid="handleLogin"
+                />
             </div>
-        </el-col>
+        </div>
+        <div class="bottom-container">
+            <span style="text-align: center">Copyright©2022 新疆阿克苏拜城众泰煤焦化有限公司 版权所有</span>
+        </div>
+<!--        <el-row>-->
+<!--            <el-col :xs="24" :sm="24" :lg="12">-->
+<!--                <div class="left-container">-->
+<!--                    <div v-if="action==='login'" class="login-component">-->
+
+<!--                    </div>-->
+<!--                </div>-->
+<!--            </el-col>-->
+<!--        </el-row>-->
+<!--        <el-col :xs="24" :sm="24" :lg="12">-->
+<!--            <div class="bottom-container">-->
+<!--                <span>Copyright©2017 中国科学院苏州纳米技术与纳米仿生研究所 苏ICP备10220403号-6</span>-->
+<!--            </div>-->
+<!--        </el-col>-->
     </div>
 </template>
 
@@ -138,7 +133,7 @@
                             _this.$store.commit('SET_USER_TYPE', data.type)
                             // 加载菜单
                             initRouter(_this)
-                            _this.$router.replace('/mapManage/mapManage/map/index')
+                            _this.$router.replace('/')
                         } else {
                             _this.$message({
                                 showClose: true,
@@ -172,100 +167,63 @@
     .login-container {
         min-height: 100%;
         width: 100%;
-        background: url("../../assets/bg_pic.png") center no-repeat;
+        background: url("../../assets/bg_login.png") center no-repeat;
         //background-size: auto 100%;
-        background-size: cover;
-        background-position: center;
-        position: relative;
-        background-color: #fff;
         // background-color: #2d3a4b;
         overflow: hidden;
-        .login-logo {
-            position: relative;
-            color: #fff;
-            text-align: center;
-            padding: 0 35px 0 35px;
-            margin: 0 auto;
-            margin-top: 25%;
-            margin-left: -100px;
-        }
-        .login-font {
-            position: relative;
-            text-align: center;
-            margin-left: -10%;
-            margin-top: -20%;
-        }
-
-        .login-font span {
-            display: inline-block;
-            width: 500px;
-            height: 72px;
-            font-size: 45px;
-            font-family: PingFangSC-Semibold;
+        background-size:cover;
+        .title-one{
+            width: 360px;
+            height: 42px;
+            font-size: 30px;
+            font-family: PingFangSC-Semibold, PingFang SC;
             font-weight: 600;
-            color: white;
-            line-height: 60px;
-            vertical-align: middle;
-            margin-top:50px;
-            //padding: 20px 0; /* 撑开高度 */
-        }
-        .login-logo span {
-            display: inline-block;
-            width: 500px;
-            height: 72px;
-            font-size: 45px;
-            font-family: PingFangSC-Semibold;
-            font-weight: 600;
-            color: rgba(51, 51, 51, 1);
-            line-height: 60px;
-            vertical-align: middle;
-            margin-top: 50px;
-            //padding: 20px 0; /* 撑开高度 */
-        }
-        //使用图片来替换
-        //before属性中的content文本是用来占位的,必须有
-        //可以设置字体大小来确定大小
-        //使用visibility: hidden;来隐藏文字
-        .el-icon-logo {
-            /*background: url("../../assets/logo.png") center no-repeat;*/
-            background-size: cover;
-            height: 10px;
-            width: 128px;
-            color: #fff;
-            vertical-align: middle;
-        }
-        .el-icon-logo:before {
-            content: "替";
-            font-size: 25px;
-            visibility: hidden;
-        }
-        .left-container {
+            color: #FFFFFF;
+            line-height: 42px;
+            text-shadow: 0px 8px 10px rgba(16, 57, 193, 0.3);
             margin: 0 auto;
-            margin-top: 8%;
-            .login-component {
-                background-color: white;
-                position: relative;
-                width: 600px;
-                max-width: 100%;
-                padding: 40px 35px 0 30px;
-                margin: 0 auto;
-                margin-top: 25%;
-                overflow: hidden;
+            margin-top: 120px;
+        }
+        .title-two{
+            width: 473px;
+            height: 61px;
+            font-size: 43px;
+            font-family: PingFangSC-Semibold, PingFang SC;
+            font-weight: 600;
+            color: #FFFFFF;
+            line-height: 61px;
+            text-shadow: 0px 8px 10px rgba(16, 57, 193, 0.3);
+            margin: 0 auto;
+            margin-top: 5px;
+        }
+        .login-main{
+            display: flex;
+            background: linear-gradient(270deg, #FFFFFF 0%, #FFFFFF 100%);
+            box-shadow: 0px 20px 40px 0px rgba(34, 0, 255, 0.7);
+            width:1036px;
+            min-height: 474px;
+            margin:0 auto;
+            margin-top: 60px;
+            .login-main-pic{
+                display: inline-block;
+                height: 474px;
+                width: 572px;
+                background: url("../../assets/img_bg_login.png") center no-repeat;
             }
-            .register-component {
-                position: relative;
-                width: 600px;
-                max-width: 100%;
-                padding: 40px 35px 0 35px;
-                margin: 0 auto;
-                overflow: hidden;
-                background-color: #fff;
+            .login-main-form{
+                display: inline-block;
+                height:100%;
+                width:464px;
             }
         }
         .bottom-container{
-            position: absolute;
-            bottom: 0;
-            left: 30%;
+            width:600px;
+            height: 42px;
+            font-family: PingFangSC-Semibold, PingFang SC;
+            line-height: 42px;
+            text-shadow: 0px 8px 10px rgba(16, 57, 193, 0.3);
+            margin: 0 auto;
+            margin-top: 150px;
         }
     }
 

--
Gitblit v1.9.2