xjc 4 роки тому
батько
коміт
e578394352
9 змінених файлів з 593 додано та 33 видалено
  1. BIN
      public/favicon.ico
  2. 3 0
      src/api.js
  3. 56 5
      src/router.js
  4. 32 7
      src/views/Home.vue
  5. 16 19
      src/views/Login.vue
  6. 1 1
      src/views/Message.vue
  7. 242 0
      src/views/system/Account.vue
  8. 242 0
      src/views/system/Role.vue
  9. 1 1
      vue.config.js

BIN
public/favicon.ico


+ 3 - 0
src/api.js

@@ -49,6 +49,9 @@ export default {
 	//登录
 	login: params => {
 		return axios.post(`${baseURL}/api/account/login`, params);
+	},
+	getCode: params => {
+		return axios.get(`${baseURL}/api/account/imgcode`)
 	}
 
 }

+ 56 - 5
src/router.js

@@ -2,7 +2,6 @@ import Vue from 'vue'
 import Router from 'vue-router'
 
 Vue.use(Router)
-
 export default new Router({
   routes: [{
       path: '/login',
@@ -24,17 +23,69 @@ export default new Router({
       }, ]
     },
     {
-      path: '/message',
+      path: '/message/message',
       name: '消息管理',
       icon: 'el-icon-chat-dot-square',
       component: () => import('./views/Home.vue'),
-      show: 1,
+      show: 0,
+      isLeaf: 1,
+      children: [{
+        path: '/message/message',
+        component: () => import('./views/message/Message.vue'),
+        name: '消息管理'
+      }, ]
+    },
+    {
+      path: '/message/survey',
+      name: '调查问卷',
+      icon: 'el-icon-chat-dot-square',
+      component: () => import('./views/Home.vue'),
+      show: 0,
+      isLeaf: 1,
+      children: [{
+        path: '/message/survey',
+        component: () => import('./views/message/Message.vue'),
+        name: '调查问卷'
+      }, ]
+    },
+    {
+      path: '/message/template',
+      name: '表单模板',
+      icon: 'el-icon-chat-dot-square',
+      component: () => import('./views/Home.vue'),
+      show: 0,
+      isLeaf: 1,
+      children: [{
+        path: '/message/template',
+        component: () => import('./views/message/Message.vue'),
+        name: '表单模板'
+      }, ]
+    },
+    {
+      path: '/system/account',
+      name: '账号管理',
+      icon: 'el-icon-chat-dot-square',
+      component: () => import('./views/Home.vue'),
+      show: 0,
       isLeaf: 1,
       children: [{
-        path: '/message',
-        component: () => import('./views/Message.vue'),
+        path: '/system/account',
+        component: () => import('./views/system/Account.vue'),
         name: '消息管理'
       }, ]
     },
+    {
+      path: '/system/role',
+      name: '角色管理',
+      icon: 'el-icon-chat-dot-square',
+      component: () => import('./views/Home.vue'),
+      show: 0,
+      isLeaf: 1,
+      children: [{
+        path: '/system/role',
+        component: () => import('./views/system/Role.vue'),
+        name: '角色管理'
+      }, ]
+    },
   ]
 })

+ 32 - 7
src/views/Home.vue

@@ -6,17 +6,17 @@
 	<el-container>
 		<el-header>
 			<div class="header">
-				中科院期刊微信公众号管理系统
+				期刊微信公众号管理系统
 			</div>	
 			<div class="nav">
-				<router-link class="active" to="">首页</router-link>
+				<router-link class="active" to="/">首页</router-link>
 				<router-link to="">期刊管理</router-link>
 				<router-link to="">刊群导览</router-link>
 				<router-link to="">学术交流</router-link>
 				<router-link to="">精品导读</router-link>
 				<router-link to="">会议系统</router-link>
-				<router-link to="">信息管理</router-link>
-				<router-link to="">系统管理</router-link>
+				<router-link to="/message/message">信息管理</router-link>
+				<router-link to="/system/account">系统管理</router-link>
 
 				<div class="setting">
 					<i class="el-icon-message-solid"></i>
@@ -45,7 +45,7 @@
 								<i :class="item.icon"></i>
 								<span slot="title">{{item.name}}</span>
 							</el-menu-item>
-							<el-submenu   v-if='item.show&&!item.isLeaf' :index="'index_'+index"  :key='index'>
+							<!-- <el-submenu   v-if='item.show&&!item.isLeaf' :index="'index_'+index"  :key='index'>
 								<template slot="title" >
 								<i :class="item.icon"></i>
 								<span>{{item.name}}</span>
@@ -55,7 +55,7 @@
 									{{child.name}}
 									</el-menu-item>
 								</el-menu-item-group>
-							</el-submenu>
+							</el-submenu> -->
 					</template>
 				</el-menu>
 			</el-aside>
@@ -74,6 +74,7 @@
 </template>
 
 <script>
+import Router from 'vue-router'
 export default {
 	name: 'home',
 	data() {
@@ -114,10 +115,34 @@ export default {
 		},
 		getData(){
 		
+		},
+		toPath(e){
+			let mod = e.target.hash.split("/")[1];
+			this.$router.options.routes.forEach((element,i) => {
+				if(element.path.indexOf(mod)==-1){
+					this.$router.options.routes[i].show = 1
+					// element.show = 0
+				}else{
+					this.$router.options.routes[i].show = 0
+					// element.show = 1
+				}
+			});
 		}
 	},
 	created(){
-	
+		let mod = this.$route.path.split("/")[1];
+		this.$router.options.routes.forEach((element,i) => {
+			console.log(element.path,333333333333)
+			console.log(element.path.indexOf(mod))
+			if(element.path.indexOf(mod)==-1){
+				// this.$router.options.routes[i].show = 0
+				element.show = 0
+			}else{
+				// this.$router.options.routes[i].show = 1
+				element.show = 1
+			}
+		});
+
 	}
 };
 </script>

+ 16 - 19
src/views/Login.vue

@@ -59,7 +59,7 @@
       }
       
       .login-btn{
-        background: #FF694B;
+        background: #066fe6;
         width: 100%;
         height: 54px;
         margin-top: 36px;
@@ -77,8 +77,8 @@
       left:0;
       z-index: 9;
       text-align: center;
-      color:#333;
-      font-size: 12px;
+      color:#fff;
+      font-size: 14px;
     }
   }
 </style>
@@ -96,14 +96,15 @@
               <label>密&nbsp;&nbsp;码</label>
               <input type="password" v-model="logindata.password" placeholder="请输入密码">
             </div>
-            <div class="input_div">
-              <label>验证码</label>
-              <input type="password" v-model="logindata.password" placeholder="请输入验证码">
+            <div class="input_div code">
+              <img @click="getCode" :src="code" alt="">
+              <label>图形码</label>
+              <input type="text" v-model="logindata.imgcode" placeholder="请输入验证码">  
             </div>
             <el-button @click="login" @keyup.enter="login" class="login-btn" type="primary">登  录</el-button>
         </form>
       </div>
-      <p class="footer">中汇拍卖</p>
+      <p class="footer">Copyright © 2020 中科院 版权所有</p>
   </div>
 </template>
 
@@ -137,26 +138,22 @@ export default {
             this.$api.login(parms).then((res)=>{
                 let data=res.data
                   if(res.data.code == 0){
-                      if(data.data.utype == 0){
-                        window.location.hash='/';
-                      }
-                      if(data.data.utype == 1){
-                        window.location.hash='/govermentData';
-                      }
-                      if(data.data.utype == 2){
-                        window.location.hash='/companyData';
-                      }
-                      localStorage.setItem('utype',res.data.data.utype);
-                      localStorage.setItem('token',res.data.data.token);
+                      window.location.hash='/';
                   }else{
                       this.$message.error("账号或者密码有误");
                   } 
             })
       },
+      getCode(){
+        this.$api.getCode().then(res=>{
+          this.code=res.data.data.imgcode
+          this.logindata.imgcode_id=res.data.data.captcha_id
+        })
+      }
 
     },
   created(){
-  
+    this.getCode()
   }
 }
 </script>

+ 1 - 1
src/views/Message.vue

@@ -102,7 +102,7 @@
     </section>
 </template>
 <script>
-import Page from '../components/Page';
+import Page from '../../components/Page';
 export default {
   components:{
         Page

+ 242 - 0
src/views/system/Account.vue

@@ -0,0 +1,242 @@
+<style lang="scss">
+    .preview{
+        .el-form-item{
+            margin-bottom:15px;
+        }
+        label,p{
+            line-height: 25px !important;
+        }
+    }
+</style>
+<template>
+    <section>
+        <p>账号管理</p>
+        <div class="content">
+            <div class="filter">
+                <el-form size="small" label-width="70px" :inline="true"  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  type="primary">搜索</el-button>
+                    </el-form-item>
+                    <el-form-item style="float:right" >
+                        <el-button @click="dialogVisible=true,edit=0" type="primary">发送消息</el-button>
+                    </el-form-item>
+                </el-form>
+            </div>
+            <el-table
+                    class="table"
+                    :data="list" height="57vh"
+                    border  v-loading="loading"
+                    default-expand-all row-key="id"
+                    style="width: 100%">
+                    <el-table-column
+                    prop="name"  width="300"
+                    label="标题">
+                    </el-table-column>
+                    <el-table-column
+                    prop="username"  
+                    label="发送者">
+                    </el-table-column>
+                    <el-table-column
+                    prop="area" 
+                    label="接收者">
+                    </el-table-column>
+                    <el-table-column
+                    prop="area" 
+                    label="发送时间">
+                    </el-table-column>
+                    <el-table-column  
+                    prop="zip"  width="150"
+                    label="操作">
+                    <template slot-scope="">
+                        <el-button type="text" @click="dialogVisible=true,edit=1">查看</el-button>
+                        <el-button class="edit" type="text" @click="dialogVisible=true,edit=0">编辑</el-button>
+                        <el-button class="del" @click="del" type="text">删除</el-button>
+                    </template>
+                    </el-table-column>
+            </el-table>
+            <Page  ref="pageButton" :current='form.page' :page_size='form.page_size' :total='total' @pageChange='gopage'/>
+        </div>
+
+        <el-dialog
+        title="发送通知消息" :close-on-click-modal='false'
+        :visible.sync="dialogVisible">
+        <el-form size="small" class="preview" :inline='false' label-width="80px">
+                <el-form-item label="标题">
+                    <p v-if='edit'>关于集中使用期刊公众号的通知</p>
+                    <el-input v-else v-model="form.name"></el-input>
+                </el-form-item>
+                <el-form-item label="消息内容">
+                    <p v-if='edit'>
+                        关于集中使用期刊公众号的通知关于集中使用期刊公众号的通知
+                        关于集中使用期刊公众号的通知关于集中使用期刊公众号的通知
+                        关于集中使用期刊公众号的通知关于集中使用期刊公众号的通知
+                    </p>
+                    <el-input v-else v-model="form.name" type="textarea"></el-input>
+                </el-form-item>
+                <el-form-item label="文件">
+                    <p v-if='edit'>
+                        <el-link type="primary">关于集中使用期刊公众号的通知.docx</el-link><br>
+                        <el-link type="primary">关于集中使用期刊公众号的通知.docx</el-link>
+                    </p>
+                    <el-button v-else class="upload_btn" plain type="primary">选择文件 <input type="file"></el-button>
+                </el-form-item>
+                <el-form-item label="接收人">
+                    <el-input placeholder="请输入内容" v-model="input" class="input-with-select">
+                        <el-button slot="append" icon="el-icon-search"></el-button>
+                    </el-input>
+                    <el-tree
+                    :data="data"
+                    show-checkbox
+                    node-key="id" default-expand-all
+                    :props="defaultProps">
+                    </el-tree>
+                </el-form-item>
+        </el-form>
+        <span slot="footer" class="dialog-footer">
+            <el-button size="small" type="primary" @click="dialogVisible = false">确 定</el-button>
+        </span>
+        </el-dialog>
+    </section>
+</template>
+<script>
+import Page from '../../components/Page';
+export default {
+  components:{
+        Page
+  },
+  data(){
+    return{
+      edit:0,
+      form:{name:'',page:1,page_size:20},
+      total:1,
+      list:[{name:'2333'}],
+      loading:false,
+      input:'',
+      dialogVisible:false,
+      defaultProps:{},
+      data: [{
+          id: 1,
+          label: '一级 1'
+        }, {
+          id: 2,
+          label: '一级 2',
+          children: [{
+            id: 5,
+            label: '二级 2-1'
+          }, {
+            id: 6,
+            label: '二级 2-2'
+          }]
+        }],
+    }
+  },
+  methods:{
+        gopage(size){
+            if(size){
+                this.form.page_size=size
+            }
+            this.form.page=this.$refs.pageButton.page
+            this.getData()
+        },
+        handleSelectionChange(val) {
+            this.multipleSelection = val;
+        },
+        gopage1(size){
+            if(size){
+                this.form1.page_size=size
+            }
+            this.form1.page=this.$refs.pageButton1.page
+            this.getJl()
+        },
+        open(data) {
+            this.dialogFormVisible=true;
+            this.message={...data}
+        },
+        download(){
+            let array=this.multipleSelection,ids=[];
+            for(let i=0;i<array.length;i++){
+                ids.push(array[i].id)
+            }
+            ids=ids.join(',')
+            this.$api.downloadMon({ids:ids}).then(res=>{
+                        var elink = document.createElement('a');
+                        let blob=new Blob([res.data], {type: 'application/vnd.ms-excel'});
+                        let objUrl=URL.createObjectURL(blob);
+                        console.log(res.headers['content-disposition'])
+                        let file_name=res.headers['content-disposition'].split('=')[1];
+                        elink.download = file_name;
+                        elink.style.display = 'none';                
+                        elink.href = objUrl;
+                        document.body.appendChild(elink);
+                        elink.click();
+                        document.body.removeChild(elink);     
+            })
+        },
+        prview(id){
+            this.form1.enterprise_id=id;
+            this.getJl();
+            this.dialogFormVisible1=true
+        },
+        getJl(){
+            var parm=this.form1;
+            this.$api.getMonitjobList(parm).then(res=>{
+                this.data=res.data.data.list
+                this.total1=res.data.data.total
+                
+            })
+        },
+        detail(id){
+            this.$router.push({ path: '/company/detail', query: {  id: id,page:this.form.page,page_size:this.form.page_size  } });
+        },
+        getData(){
+            var parm=this.form;        
+            this.loading=true
+            this.$api.getEnterpriseList(parm).then(res=>{
+                this.list=res.data.data.list;
+                // list.forEach(item => {
+                //     if(item.children.length>0){
+                //         item.hasChildren=true
+                //     }else{
+                //         item.hasChildren=false
+                //     }
+                // });
+                this.total=res.data.data.total
+                this.loading=false
+                this.area=this.store.area;
+                this.category=this.store.categorys;
+            })
+        },
+        del(id){
+                this.$confirm('确定删除吗', '提示', {
+                        type: 'warning'
+                    }).then(() => {
+                    this.$api.deleteEnterprise({id:id}).then((res)=>{
+                            this.$message({
+                                message: '删除成功',
+                                type: 'success'
+                            })
+                            this.getData()
+                    })
+                })
+        },
+        permission(name){
+			let permissions=this.info.permissions||[];
+			let list=[];
+			for(let i=0;i<permissions.length;i++){
+				list.push(permissions[i].name)
+			}
+			if(list.indexOf(name)<0){
+				return false;
+			}else{
+				return true;
+			}	
+		},
+  },
+  created(){
+      
+  }
+}
+</script>

+ 242 - 0
src/views/system/Role.vue

@@ -0,0 +1,242 @@
+<style lang="scss">
+    .preview{
+        .el-form-item{
+            margin-bottom:15px;
+        }
+        label,p{
+            line-height: 25px !important;
+        }
+    }
+</style>
+<template>
+    <section>
+        <p>角色管理</p>
+        <div class="content">
+            <div class="filter">
+                <el-form size="small" label-width="70px" :inline="true"  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  type="primary">搜索</el-button>
+                    </el-form-item>
+                    <el-form-item style="float:right" >
+                        <el-button @click="dialogVisible=true,edit=0" type="primary">发送消息</el-button>
+                    </el-form-item>
+                </el-form>
+            </div>
+            <el-table
+                    class="table"
+                    :data="list" height="57vh"
+                    border  v-loading="loading"
+                    default-expand-all row-key="id"
+                    style="width: 100%">
+                    <el-table-column
+                    prop="name"  width="300"
+                    label="标题">
+                    </el-table-column>
+                    <el-table-column
+                    prop="username"  
+                    label="发送者">
+                    </el-table-column>
+                    <el-table-column
+                    prop="area" 
+                    label="接收者">
+                    </el-table-column>
+                    <el-table-column
+                    prop="area" 
+                    label="发送时间">
+                    </el-table-column>
+                    <el-table-column  
+                    prop="zip"  width="150"
+                    label="操作">
+                    <template slot-scope="">
+                        <el-button type="text" @click="dialogVisible=true,edit=1">查看</el-button>
+                        <el-button class="edit" type="text" @click="dialogVisible=true,edit=0">编辑</el-button>
+                        <el-button class="del" @click="del" type="text">删除</el-button>
+                    </template>
+                    </el-table-column>
+            </el-table>
+            <Page  ref="pageButton" :current='form.page' :page_size='form.page_size' :total='total' @pageChange='gopage'/>
+        </div>
+
+        <el-dialog
+        title="发送通知消息" :close-on-click-modal='false'
+        :visible.sync="dialogVisible">
+        <el-form size="small" class="preview" :inline='false' label-width="80px">
+                <el-form-item label="标题">
+                    <p v-if='edit'>关于集中使用期刊公众号的通知</p>
+                    <el-input v-else v-model="form.name"></el-input>
+                </el-form-item>
+                <el-form-item label="消息内容">
+                    <p v-if='edit'>
+                        关于集中使用期刊公众号的通知关于集中使用期刊公众号的通知
+                        关于集中使用期刊公众号的通知关于集中使用期刊公众号的通知
+                        关于集中使用期刊公众号的通知关于集中使用期刊公众号的通知
+                    </p>
+                    <el-input v-else v-model="form.name" type="textarea"></el-input>
+                </el-form-item>
+                <el-form-item label="文件">
+                    <p v-if='edit'>
+                        <el-link type="primary">关于集中使用期刊公众号的通知.docx</el-link><br>
+                        <el-link type="primary">关于集中使用期刊公众号的通知.docx</el-link>
+                    </p>
+                    <el-button v-else class="upload_btn" plain type="primary">选择文件 <input type="file"></el-button>
+                </el-form-item>
+                <el-form-item label="接收人">
+                    <el-input placeholder="请输入内容" v-model="input" class="input-with-select">
+                        <el-button slot="append" icon="el-icon-search"></el-button>
+                    </el-input>
+                    <el-tree
+                    :data="data"
+                    show-checkbox
+                    node-key="id" default-expand-all
+                    :props="defaultProps">
+                    </el-tree>
+                </el-form-item>
+        </el-form>
+        <span slot="footer" class="dialog-footer">
+            <el-button size="small" type="primary" @click="dialogVisible = false">确 定</el-button>
+        </span>
+        </el-dialog>
+    </section>
+</template>
+<script>
+import Page from '../../components/Page';
+export default {
+  components:{
+        Page
+  },
+  data(){
+    return{
+      edit:0,
+      form:{name:'',page:1,page_size:20},
+      total:1,
+      list:[{name:'2333'}],
+      loading:false,
+      input:'',
+      dialogVisible:false,
+      defaultProps:{},
+      data: [{
+          id: 1,
+          label: '一级 1'
+        }, {
+          id: 2,
+          label: '一级 2',
+          children: [{
+            id: 5,
+            label: '二级 2-1'
+          }, {
+            id: 6,
+            label: '二级 2-2'
+          }]
+        }],
+    }
+  },
+  methods:{
+        gopage(size){
+            if(size){
+                this.form.page_size=size
+            }
+            this.form.page=this.$refs.pageButton.page
+            this.getData()
+        },
+        handleSelectionChange(val) {
+            this.multipleSelection = val;
+        },
+        gopage1(size){
+            if(size){
+                this.form1.page_size=size
+            }
+            this.form1.page=this.$refs.pageButton1.page
+            this.getJl()
+        },
+        open(data) {
+            this.dialogFormVisible=true;
+            this.message={...data}
+        },
+        download(){
+            let array=this.multipleSelection,ids=[];
+            for(let i=0;i<array.length;i++){
+                ids.push(array[i].id)
+            }
+            ids=ids.join(',')
+            this.$api.downloadMon({ids:ids}).then(res=>{
+                        var elink = document.createElement('a');
+                        let blob=new Blob([res.data], {type: 'application/vnd.ms-excel'});
+                        let objUrl=URL.createObjectURL(blob);
+                        console.log(res.headers['content-disposition'])
+                        let file_name=res.headers['content-disposition'].split('=')[1];
+                        elink.download = file_name;
+                        elink.style.display = 'none';                
+                        elink.href = objUrl;
+                        document.body.appendChild(elink);
+                        elink.click();
+                        document.body.removeChild(elink);     
+            })
+        },
+        prview(id){
+            this.form1.enterprise_id=id;
+            this.getJl();
+            this.dialogFormVisible1=true
+        },
+        getJl(){
+            var parm=this.form1;
+            this.$api.getMonitjobList(parm).then(res=>{
+                this.data=res.data.data.list
+                this.total1=res.data.data.total
+                
+            })
+        },
+        detail(id){
+            this.$router.push({ path: '/company/detail', query: {  id: id,page:this.form.page,page_size:this.form.page_size  } });
+        },
+        getData(){
+            var parm=this.form;        
+            this.loading=true
+            this.$api.getEnterpriseList(parm).then(res=>{
+                this.list=res.data.data.list;
+                // list.forEach(item => {
+                //     if(item.children.length>0){
+                //         item.hasChildren=true
+                //     }else{
+                //         item.hasChildren=false
+                //     }
+                // });
+                this.total=res.data.data.total
+                this.loading=false
+                this.area=this.store.area;
+                this.category=this.store.categorys;
+            })
+        },
+        del(id){
+                this.$confirm('确定删除吗', '提示', {
+                        type: 'warning'
+                    }).then(() => {
+                    this.$api.deleteEnterprise({id:id}).then((res)=>{
+                            this.$message({
+                                message: '删除成功',
+                                type: 'success'
+                            })
+                            this.getData()
+                    })
+                })
+        },
+        permission(name){
+			let permissions=this.info.permissions||[];
+			let list=[];
+			for(let i=0;i<permissions.length;i++){
+				list.push(permissions[i].name)
+			}
+			if(list.indexOf(name)<0){
+				return false;
+			}else{
+				return true;
+			}	
+		},
+  },
+  created(){
+      
+  }
+}
+</script>

+ 1 - 1
vue.config.js

@@ -2,7 +2,7 @@ module.exports={
     devServer:{
         proxy:{
             '/api':{
-                target:'http://www.baianxi.com',
+                target:'https://test.scxjc.club',
                 changeOrigin: true,
             }
         }