tanyanfei 5 年 前
コミット
9267f8a31f

BIN
src/images/dp.png


BIN
src/images/fz.png


BIN
src/images/zf.png


+ 36 - 5
src/router.js

@@ -10,6 +10,19 @@ export default new Router({
       component: () => import('./views/Login.vue'),
       show: 0
     },
+    {
+      path: '/data',
+      name: '概览',
+      icon: 'el-icon-s-data',
+      component: () => import('./views/Home.vue'),
+      show: 1,
+      isLeaf: 1,
+      children: [{
+        path: '/data',
+        component: () => import('./views/Data.vue'),
+        name: '概览'
+      }, ]
+    },
     {
       path: '/govermentData',
       name: '政府概览',
@@ -71,11 +84,7 @@ export default new Router({
         path: '/department',
         component: () => import('./views/company/Department.vue'),
         name: '部门管理'
-      },{
-        path: '/merterial',
-        component: () => import('./views/company/Merterial.vue'),
-        name: '资料管理'
-      },]
+      }]
     },
     {
       path: '/',
@@ -107,6 +116,28 @@ export default new Router({
         path: '/notice',
         component: () => import('./views/message/Index.vue'),
         name: '通知消息'
+      },{
+        path: '/system',
+        component: () => import('./views/message/System.vue'),
+        name: '系统消息'
+      },{
+        path: '/warning',
+        component: () => import('./views/message/Warning.vue'),
+        name: '告警消息'
+      }]
+    },
+    {
+      path: '/',
+      name: '资料管理',
+      change:1,
+      icon: 'el-icon-document-copy',
+      component: () => import('./views/Home.vue'),
+      show: 1,
+      isLeaf: 0,
+      children: [{
+        path: '/merterial',
+        component: () => import('./views/material/Index.vue'),
+        name: '资料管理'
       }]
     },
   ]

+ 97 - 0
src/views/Data.vue

@@ -0,0 +1,97 @@
+<style lang="scss">
+    .all_data{
+        li{
+            display: inline-block;
+            padding: 50px;
+            border: 1px solid #d9d9d9;
+            list-style: none;
+            margin-right: 20px;
+            text-align: center;
+            font-size: 14px;
+        }
+        h4{
+            margin: 20px 0;
+        }
+        .table thead th{
+            background: #fff;
+        }
+    }
+</style>
+<template>
+    <section>
+        <p>概览</p>
+        <div class="content all_data">
+            <ul>
+                <li>
+                    <img src="../images/zf.png" width="50" alt=""><br>
+                    政府数量 100
+                </li>
+                <li>
+                    <img src="../images/fz.png" width="50" alt=""><br>
+                    企业数量 100
+                </li>
+                <li>
+                    <img src="../images/dp.png" width="50" alt=""><br>
+                    风险点 100
+                </li>
+            </ul>
+            <h4>最新告警</h4>
+            <el-table
+                class="table"
+                :data="list" 
+                 v-loading="loading" 
+                style="width: 100%">
+                <el-table-column
+                prop="name"  width="300"
+                label="管辖单位">
+                </el-table-column>
+                <el-table-column
+                prop="area" 
+                label="企业名称">
+                </el-table-column>
+                <el-table-column
+                prop="parent_name" 
+                label="风险点">
+                </el-table-column>
+                <el-table-column
+                prop="category" 
+                label="告警详情">
+                </el-table-column>
+                <el-table-column
+                prop="ctime"  width="200"
+                label="告警时间">
+                </el-table-column>
+        </el-table>
+        </div>
+
+
+     
+    </section>
+</template>
+<script>
+export default {
+  data(){
+    return{
+      form:{name:'',page:1,page_size:20},
+      activeName:"1",
+      total:1,
+      list:[{name:'2333'}],
+      loading:false
+    }
+  },
+  methods:{
+        getData(){
+            var parm=this.form;
+            this.loading=true
+            // this.$api.getClass(parm).then(res=>{
+            //     this.list=res.data.data.list
+            //     this.total=res.data.data.total
+            //     this.loading=false
+            // })
+        }
+  },
+  created(){
+    //   this.getData()
+  }
+}
+</script>

+ 99 - 0
src/views/material/Index.vue

@@ -0,0 +1,99 @@
+<style lang="scss">
+    
+</style>
+<template>
+    <section>
+        <p>公司管理  >  资料列表</p>
+        <div class="filter">
+            <el-form label-width="70px" :inline="true" size="small" label-position="left">
+                <el-form-item label="名称">
+                        <el-input clearable placeholder="请输入名称" v-model="form.name"></el-input>
+                </el-form-item>
+                <el-form-item>
+                       <el-button @click="form.page=1,getData()" type="primary" icon="el-icon-search">搜索</el-button>
+                       <el-button icon="el-icon-plus" @click="$router.push({path:'/company/add'})"  type="primary">新增资料</el-button>
+                </el-form-item>
+            </el-form>
+        </div>
+
+
+        <el-table
+                class="table"
+                :data="list" height="64vh"
+                border  v-loading="loading"
+                style="width: 100%">
+                <el-table-column
+                type="selection" fixed="left"
+                width="40">
+                </el-table-column>
+                <el-table-column
+                prop="name" 
+                label="宣传资料名称">
+                </el-table-column>
+                <el-table-column
+                prop="ctime"  width="200"
+                label="时间">
+                </el-table-column>
+                <el-table-column fixed="right"
+                prop="zip"  width="170"
+                label="操作">
+                <template slot-scope="scope">
+                    <el-button icon="el-icon-edit" @click="$router.push({path:'/company/add',query:{id:scope.row.id}})" size="mini" type="warning">编辑</el-button>
+                    <el-button icon="el-icon-delete" @click="del(scope.row.id)" size="mini"  type="danger">删除</el-button>
+                </template>
+                </el-table-column>
+        </el-table>
+        <Page  ref="pageButton"  :total='total' @pageChange='gopage'/>
+    </section>
+</template>
+<script>
+import Page from '../../components/Page';
+export default {
+  components:{
+        Page
+  },
+  data(){
+    return{
+      form:{name:'',page:1,page_size:20},
+      activeName:"1",
+      total:1,
+      list:[{name:'2333'}],
+      loading:false
+    }
+  },
+  methods:{
+        gopage(size){
+            if(size){
+                this.form.page_size=size
+            }
+            this.form.page=this.$refs.pageButton.page
+            this.getData()
+        },
+        getData(){
+            var parm=this.form;
+            this.loading=true
+            // this.$api.getClass(parm).then(res=>{
+            //     this.list=res.data.data.list
+            //     this.total=res.data.data.total
+            //     this.loading=false
+            // })
+        },
+        del(id){
+                this.$confirm('确定删除吗', '提示', {
+                        type: 'warning'
+                    }).then(() => {
+                    this.$api.deleteClass({id:id}).then((res)=>{
+                            this.$message({
+                                message: '删除成功',
+                                type: 'success'
+                            })
+                            this.getData()
+                    })
+                })
+        },
+  },
+  created(){
+    //   this.getData()
+  }
+}
+</script>

+ 183 - 0
src/views/message/System.vue

@@ -0,0 +1,183 @@
+<style lang="scss">
+    
+</style>
+<template>
+    <section>
+        <p>消息管理  >  系统消息</p>
+        <div class="filter">
+            <el-form   :inline="true" size="small" label-position="left">
+                <el-form-item>
+                        <el-input clearable placeholder="请输入内容搜索" v-model="form.name"></el-input>
+                </el-form-item>
+                <el-form-item>
+                       <el-button @click="form.page=1,getData()" type="primary" icon="el-icon-search">搜索</el-button>
+                       <el-button @click="dialogFormVisible=true,message={send_type:1}" type="primary">发送消息</el-button>
+                </el-form-item>
+            </el-form>
+        </div>
+
+
+        <el-table
+                class="table"
+                :data="list" height="64vh"
+                border  v-loading="loading"
+                style="width: 100%">
+                <el-table-column
+                type="selection" fixed="left"
+                width="40">
+                </el-table-column>
+                <el-table-column
+                prop="sender_user_name" 
+                label="消息发送者">
+                </el-table-column>
+                <el-table-column
+                prop="title" 
+                label="消息标题">
+                </el-table-column>
+                <el-table-column
+                prop="content" 
+                label="消息内容">
+                </el-table-column>
+                <el-table-column
+                prop="ctime"  
+                label="发送时间">
+                <!-- <template>
+                    <el-tag type="success">启用</el-tag>
+                </template> -->
+                </el-table-column>
+                <el-table-column fixed="right"
+                prop="zip"  width="220"
+                label="操作">
+                <template slot-scope="scope">
+                    <el-button icon="el-icon-view" size="mini"  type="success">查看</el-button>
+                    <el-button icon="el-icon-delete" @click="del(scope.row.id)" size="mini"  type="danger">删除</el-button>
+                </template>
+                </el-table-column>
+        </el-table>
+        <Page  ref="pageButton"  :total='total' @pageChange='gopage'/>
+
+        <el-dialog title="发送消息" :visible.sync="dialogFormVisible" width="500px" :close-on-click-modal='false' :close-on-press-escape='false'>
+            <el-form  label-width="100px">
+                <el-form-item label="发送方式">
+                    <el-radio v-model="message.send_type" :label="1">群发</el-radio>
+                    <el-radio v-model="message.send_type" :label="2">单发</el-radio>
+                </el-form-item>
+                <el-form-item v-if="message.send_type==1" label="区域">
+                    <el-select clearable v-model="message.area" placeholder="请选择">
+                            <el-option v-for="(item,index) in area" :key="index" :label="item" :value="item"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item v-if="message.send_type==1" label="公司类型">
+                    <el-select clearable v-model="message.category" placeholder="请选择">
+                            <el-option v-for="(item,index) in category" :key="index" :label="item" :value="item"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item v-if="message.send_type==2" label="发送对象">
+                    <el-select clearable v-model="message.recever_ids" placeholder="请选择">
+                            <el-option v-for="(item,index) in company" :key="index" :label="item.name" :value="item.id"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="消息标题">
+                    <el-input clearable  v-model="message.title"></el-input>
+                </el-form-item>
+                <el-form-item label="消息内容">
+                    <el-input clearable type="textarea" v-model="message.content"></el-input>
+                </el-form-item>
+                <el-form-item label="附件">
+                    <input @change="upload('attach')" id='attach' type="file">
+                </el-form-item>
+            </el-form>
+            <div slot="footer" class="dialog-footer">
+                <el-button size="small" @click="dialogFormVisible = false">取 消</el-button>
+                <el-button size="small" type="primary" @click="send">确 定</el-button>
+            </div>
+        </el-dialog>
+    </section>
+</template>
+<script>
+import Page from '../../components/Page';
+export default {
+  components:{
+        Page
+  },
+  data(){
+    return{
+      dialogFormVisible:false,
+      form:{name:'',page:1,page_size:20,message_type:'sys'},
+      message:{send_type:1},
+      activeName:"1",
+      total:1,
+      list:[],
+      loading:false,
+      category:[],
+      area:[],
+      company:[]
+    }
+  },
+  methods:{
+        gopage(size){
+            if(size){
+                this.form.page_size=size
+            }
+            this.form.page=this.$refs.pageButton.page
+            this.getData()
+        },
+        getData(){
+            var parm=this.form;
+            this.loading=true
+            this.$api.getMessagesList(parm).then(res=>{
+                this.list=res.data.data.list
+                this.total=res.data.data.total
+                this.loading=false
+                this.area=this.store.area;
+                this.category=this.store.categorys;
+            })
+            this.$api.getEnterpriseAll().then(res=>{
+                this.company=res.data.data;
+            })
+        },
+        del(id){
+                this.$confirm('确定删除吗', '提示', {
+                        type: 'warning'
+                    }).then(() => {
+                    this.$api.deleteMessages({id:id}).then((res)=>{
+                            this.$message({
+                                message: '删除成功',
+                                type: 'success'
+                            })
+                            this.getData()
+                    })
+                })
+        },
+        upload(type){
+            var file=document.getElementById(type).files;
+            var data=new FormData();
+                data.append("file",file[0])
+            this.$api.uploadFile(data).then(res=>{
+                if(res.data.code==0){
+                        let form=this.message;
+                        this.$set(form,type,res.data.data.url)
+                        this.$message({message: '上传成功!',type: 'success'});
+                    }else{
+                        this.$message.error(res.data.message);
+                    }
+            })
+        },
+        send(){
+            let parm=this.message;
+            this.$api.sendMessage(parm).then(res=>{
+                    if(res.data.code==0){
+                        this.$message({message: '发送成功!',type: 'success'});
+                        this.getData();
+                        this.dialogFormVisible=false;
+                    }else{
+                        this.$message.error(res.data.message);
+                    }
+            })
+        }
+  },
+  created(){
+      this.getData()
+  }
+}
+</script>

+ 183 - 0
src/views/message/Warning.vue

@@ -0,0 +1,183 @@
+<style lang="scss">
+    
+</style>
+<template>
+    <section>
+        <p>消息管理  >  告警消息</p>
+        <div class="filter">
+            <el-form   :inline="true" size="small" label-position="left">
+                <el-form-item>
+                        <el-input clearable placeholder="请输入内容搜索" v-model="form.name"></el-input>
+                </el-form-item>
+                <el-form-item>
+                       <el-button @click="form.page=1,getData()" type="primary" icon="el-icon-search">搜索</el-button>
+                       <el-button @click="dialogFormVisible=true,message={send_type:1}" type="primary">发送消息</el-button>
+                </el-form-item>
+            </el-form>
+        </div>
+
+
+        <el-table
+                class="table"
+                :data="list" height="64vh"
+                border  v-loading="loading"
+                style="width: 100%">
+                <el-table-column
+                type="selection" fixed="left"
+                width="40">
+                </el-table-column>
+                <el-table-column
+                prop="sender_user_name" 
+                label="消息发送者">
+                </el-table-column>
+                <el-table-column
+                prop="title" 
+                label="消息标题">
+                </el-table-column>
+                <el-table-column
+                prop="content" 
+                label="消息内容">
+                </el-table-column>
+                <el-table-column
+                prop="ctime"  
+                label="发送时间">
+                <!-- <template>
+                    <el-tag type="success">启用</el-tag>
+                </template> -->
+                </el-table-column>
+                <el-table-column fixed="right"
+                prop="zip"  width="220"
+                label="操作">
+                <template slot-scope="scope">
+                    <el-button icon="el-icon-view" size="mini"  type="success">查看</el-button>
+                    <el-button icon="el-icon-delete" @click="del(scope.row.id)" size="mini"  type="danger">删除</el-button>
+                </template>
+                </el-table-column>
+        </el-table>
+        <Page  ref="pageButton"  :total='total' @pageChange='gopage'/>
+
+        <el-dialog title="发送消息" :visible.sync="dialogFormVisible" width="500px" :close-on-click-modal='false' :close-on-press-escape='false'>
+            <el-form  label-width="100px">
+                <el-form-item label="发送方式">
+                    <el-radio v-model="message.send_type" :label="1">群发</el-radio>
+                    <el-radio v-model="message.send_type" :label="2">单发</el-radio>
+                </el-form-item>
+                <el-form-item v-if="message.send_type==1" label="区域">
+                    <el-select clearable v-model="message.area" placeholder="请选择">
+                            <el-option v-for="(item,index) in area" :key="index" :label="item" :value="item"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item v-if="message.send_type==1" label="公司类型">
+                    <el-select clearable v-model="message.category" placeholder="请选择">
+                            <el-option v-for="(item,index) in category" :key="index" :label="item" :value="item"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item v-if="message.send_type==2" label="发送对象">
+                    <el-select clearable v-model="message.recever_ids" placeholder="请选择">
+                            <el-option v-for="(item,index) in company" :key="index" :label="item.name" :value="item.id"></el-option>
+                    </el-select>
+                </el-form-item>
+                <el-form-item label="消息标题">
+                    <el-input clearable  v-model="message.title"></el-input>
+                </el-form-item>
+                <el-form-item label="消息内容">
+                    <el-input clearable type="textarea" v-model="message.content"></el-input>
+                </el-form-item>
+                <el-form-item label="附件">
+                    <input @change="upload('attach')" id='attach' type="file">
+                </el-form-item>
+            </el-form>
+            <div slot="footer" class="dialog-footer">
+                <el-button size="small" @click="dialogFormVisible = false">取 消</el-button>
+                <el-button size="small" type="primary" @click="send">确 定</el-button>
+            </div>
+        </el-dialog>
+    </section>
+</template>
+<script>
+import Page from '../../components/Page';
+export default {
+  components:{
+        Page
+  },
+  data(){
+    return{
+      dialogFormVisible:false,
+      form:{name:'',page:1,page_size:20,message_type:'warning'},
+      message:{send_type:1},
+      activeName:"1",
+      total:1,
+      list:[],
+      loading:false,
+      category:[],
+      area:[],
+      company:[]
+    }
+  },
+  methods:{
+        gopage(size){
+            if(size){
+                this.form.page_size=size
+            }
+            this.form.page=this.$refs.pageButton.page
+            this.getData()
+        },
+        getData(){
+            var parm=this.form;
+            this.loading=true
+            this.$api.getMessagesList(parm).then(res=>{
+                this.list=res.data.data.list
+                this.total=res.data.data.total
+                this.loading=false
+                this.area=this.store.area;
+                this.category=this.store.categorys;
+            })
+            this.$api.getEnterpriseAll().then(res=>{
+                this.company=res.data.data;
+            })
+        },
+        del(id){
+                this.$confirm('确定删除吗', '提示', {
+                        type: 'warning'
+                    }).then(() => {
+                    this.$api.deleteMessages({id:id}).then((res)=>{
+                            this.$message({
+                                message: '删除成功',
+                                type: 'success'
+                            })
+                            this.getData()
+                    })
+                })
+        },
+        upload(type){
+            var file=document.getElementById(type).files;
+            var data=new FormData();
+                data.append("file",file[0])
+            this.$api.uploadFile(data).then(res=>{
+                if(res.data.code==0){
+                        let form=this.message;
+                        this.$set(form,type,res.data.data.url)
+                        this.$message({message: '上传成功!',type: 'success'});
+                    }else{
+                        this.$message.error(res.data.message);
+                    }
+            })
+        },
+        send(){
+            let parm=this.message;
+            this.$api.sendMessage(parm).then(res=>{
+                    if(res.data.code==0){
+                        this.$message({message: '发送成功!',type: 'success'});
+                        this.getData();
+                        this.dialogFormVisible=false;
+                    }else{
+                        this.$message.error(res.data.message);
+                    }
+            })
+        }
+  },
+  created(){
+      this.getData()
+  }
+}
+</script>

+ 2 - 2
src/views/task/Danger.vue

@@ -86,10 +86,10 @@
                 </el-form>
                 <el-tree  
                     :data="data" :props='props' 
-                    node-key="id"  default-expand-all 
+                    node-key="id"  
                     :expand-on-click-node="false">
                     <span class="custom-tree-node" slot-scope="{ node, data }" @click.stop="() => edit(data)" >
-                        <span v-if='data.type=="ent"' class="label_name"><i  class="el-icon-film"></i>{{ node.label }}</span> 
+                        <span v-if='data.type=="ent"' class="label_name"><i  class="el-icon-office-building"></i>  {{ node.label }}</span> 
                         <span v-if='data.type=="rsk"' class="label_name rsk"><img  width="15" src="../../images/rsk2.png" alt="">  {{ node.label }}</span>                           
                         <span v-if='!data.type' class="label_name rsk" style="color:#F49C0B;"><img  width="15" src="../../images/rsk1.png" alt="">  {{ node.label }}</span>  
                         <span class="edit">

+ 36 - 5
src/views/task/DangerTask.vue

@@ -99,16 +99,16 @@
                 </el-form>
                 <el-tree  
                     :data="data" :props='props'
-                    node-key="id"  default-expand-all 
+                    node-key="id" 
                     :expand-on-click-node="false">
                     <span  class="custom-tree-node" slot-scope="{ node, data }" @click="() => edit(data)" >
                         <span v-if='form.riskpoint_id==data.id' class="active">
-                            <span v-if='data.type=="ent"' class="label_name"><i  class="el-icon-film"></i> {{ node.label }}</span> 
+                            <span v-if='data.type=="ent"' class="label_name"><i  class="el-icon-office-building"></i> &nbsp;{{ node.label }}</span> 
                             <span v-if='data.type=="rsk"' class="label_name rsk"><img  width="15" src="../../images/rsk2.png" alt="">  {{ node.label }}</span>                           
                             <span v-if='!data.type' class="label_name rsk" style="color:#F49C0B;"><img  width="15" src="../../images/rsk1.png" alt="">  {{ node.label }}</span>  
                         </span>
                         <span v-else>
-                            <span v-if='data.type=="ent"' class="label_name"><i  class="el-icon-film"></i> {{ node.label }}</span> 
+                            <span v-if='data.type=="ent"' class="label_name"><i  class="el-icon-office-building"></i> &nbsp;{{ node.label }}</span> 
                             <span v-if='data.type=="rsk"' class="label_name rsk"><img  width="15" src="../../images/rsk2.png" alt="">  {{ node.label }}</span>                           
                             <span v-if='!data.type' class="label_name rsk" style="color:#F49C0B;"><img  width="15" src="../../images/rsk1.png" alt="">  {{ node.label }}</span>  
                         </span>
@@ -124,7 +124,7 @@
                         <el-form-item>
                             <el-button @click="form.page=1,getData()" type="primary" icon="el-icon-search">搜索</el-button>
                             <el-button  @click="addTask"  type="primary">创建任务</el-button>
-                            <el-button  @click="$router.push({path:'/company/add'})"  type="primary">批量导入任务</el-button>
+                            <el-button  @click="dialogVisible=true"  type="primary">批量导入任务</el-button>
                         </el-form-item>
                     </el-form>
                     <el-table
@@ -231,6 +231,22 @@
             <el-button size="small" type="primary" @click="add">确 定</el-button>
         </div>
     </el-dialog>
+
+    <el-dialog
+        title="批量导入任务" center
+        :visible.sync="dialogVisible"
+        width="40%">
+        <p style="text-align:center;">请先下载任务模板,按模板格式填充数据然后上传。
+            <a style="color:#409eff;" href="https://www.scxjc.club/paper.xlsx">点击下载模板</a> 
+            <br> <br>
+            <input style="width:160px" id='file' type="file">
+        </p>
+       
+        <span slot="footer" class="dialog-footer">
+            <el-button size="small" @click="dialogVisible = false">取 消</el-button>
+            <el-button size="small" type="primary" @click="upload('file')">确 定</el-button>
+        </span>
+        </el-dialog>
   </section>
 </template>
 <script>
@@ -243,6 +259,7 @@ export default {
 		return {
             filterText:'',
             dialogFormVisible:false,
+            dialogVisible:false,
             form:{name:'',page:1,page_size:20,riskpoint_id:''},
             rsk:{},
             list:[{name:'2333'}],
@@ -401,7 +418,21 @@ export default {
                 this.rsk={...data}
             })
             
-        }
+        },
+        upload(type){
+          var file=document.getElementById(type).files;
+          var data=new FormData();
+            data.append("file",file[0])
+          this.$api.uploadPaper(data).then(res=>{
+              if(res.data.code==0){
+                      this.dialogVisible=false
+                      this.getData();
+                      this.$message({message: '上传成功!',type: 'success'});
+                  }else{
+                      this.$message.error(res.data.message);
+                  }
+          })
+      },
     },
 	created(){
         this.getRisk()