소스 검색

添加主页权限

sunjh 6 년 전
부모
커밋
b30e789617

+ 26 - 3
src/components/Home.vue

@@ -4,7 +4,7 @@
       <el-carousel height="400px" :interval="10000" arrow="always">
         <el-carousel-item v-for="(img,index) in imgList" :key="index">
           <img class="banner_back banner_back_1" v-bind:src="img">
-          <router-link :to="{ name: 'ProjectCreate'}">
+          <router-link v-if="user != null &&( rolesPermissions.isAgency || rolesPermissions.isIndividualUser || rolesPermissions.isSystemAdministrator || rolesPermissions.isEnterpriseUser)" :to="{ name: 'ProjectCreate'}">
             <div class="btn btn-medium btn-home-apply">申请项目</div>
           </router-link>
         </el-carousel-item>
@@ -49,20 +49,35 @@ import PersonRank from '@/components/PersonRank'
 import Http from '@/js/http.js'
 import Apis from '@/js/api.js'
 import {notify} from '@/constants/index'
+import {getRolesPermissions, storageGet} from '@/js/index'
 
 export default {
   name: 'Home',
   components: {TaskCard, InstitutionRank, PersonRank},
   data () {
     return {
+      user: {},
       hotTaskList: [],
       institutionRank: [],
       personRank: [],
       imgList: [],
-
+      rolesPermissions: {}
     }
   },
+  mounted () {
+    console.log('mine mount')
+    this.$nextTick(() => {
+      this.init()
+    })
+  },
   methods: {
+    init () {
+      this.setUserInfo()
+      console.log(this.user)
+      if (this.user != null)
+        this.setRolesPermissions(this.user.userVO.roleList)
+      this.loadData()
+    },
     //加载数据
     loadData: function () {
       console.log('loadData')
@@ -74,13 +89,21 @@ export default {
         this.imgList = res.imgList
       })
     },
+    setUserInfo () {
+      this.user = storageGet('user')
+    },
+    setRolesPermissions () {
+      console.log('2start')
+      this.rolesPermissions = getRolesPermissions(this.user.userVO.roleList)
+    }
   },
   created: function () {
+    console.log('home create')
     //notify('info', 'info')
     //notify('success', 'success')
     //notify('error', 'error')
     //notify('warning', 'warning')
-    this.loadData()
+    //this.loadData()
   }
 }
 </script>

+ 49 - 22
src/components/Mine.vue

@@ -13,13 +13,13 @@
           <div class="user-banner">
             <p class="head">
               <a href="javascript:;" class="login-link">
-                <img src="http://www.mooctest.net/assets/img/mooctest.png" class="user-img">
+                <img :src="user.userVO.photo" class="user-img">
                 <span class="vertify hide"></span>
               </a>
             </p>
             <div class="username_box">
               <div class="username_icon username_"></div>
-              <span class="username">{{user.name}}</span>
+              <span class="username">{{user.userVO.name}}</span>
             </div>
             <!--<p class="name">-->
             <!--<a href="javascript:;" class="login-btn btn btn-medium btn-info">登录</a>-->
@@ -29,20 +29,20 @@
             <!--target="_blank"-->
             <!--&gt;注册</a>-->
             <!--</p>-->
-            <p class="scores">
-              <a href="/rule/merit" target="_blank">
-                积分
-                <em class="num1">{{user.score}}</em>
-              </a>
-              <span class="line">|</span>
-              <a href="/rule/merit" target="_blank">
-                威望
-                <em class="num2">{{user.prestige}}</em>
-              </a>
-            </p>
+            <!--<p class="scores">-->
+            <!--<a href="/rule/merit" target="_blank">-->
+            <!--积分-->
+            <!--<em class="num1">{{user.score}}</em>-->
+            <!--</a>-->
+            <!--<span class="line">|</span>-->
+            <!--<a href="/rule/merit" target="_blank">-->
+            <!--威望-->
+            <!--<em class="num2">{{user.prestige}}</em>-->
+            <!--</a>-->
+            <!--</p>-->
             <p>
-              <router-link :to="{ name: 'ProjectCreate'}">
-                <div class="btn btn-medium">申请项目</div>
+              <router-link :to="{ name: 'AuthenticationIndex'}">
+                <div class="btn btn-medium">实名认证</div>
               </router-link>
             </p>
           </div>
@@ -51,17 +51,24 @@
     </div>
     <div class="mine-body">
       <el-tabs tabPosition="top" type="card">
-        <el-tab-pane label="未完成任务">
+        <el-tab-pane v-if="rolesPermissions.isAgency" label="未完成任务">
           <span v-if="unFinishedTaskList == null || unFinishedTaskList.length == 0"> 暂无任务 </span>
           <task-item v-if="unFinishedTaskList != null || unFinishedTaskList.length > 0"
                      v-for="(item,index) in unFinishedTaskList" :key="index" :task="item"/>
         </el-tab-pane>
-        <el-tab-pane label="已完成任务">
+        <el-tab-pane v-if="rolesPermissions.isAgency" label="已完成任务">
           <span v-if="finishedTaskList == null || finishedTaskList.length == 0"> 暂无任务 </span>
           <task-item v-if="finishedTaskList != null || finishedTaskList.length > 0"
                      v-for="(item,index) in finishedTaskList" :key="index" :task="item"/>
         </el-tab-pane>
-        <el-tab-pane label="已申请项目">
+        <el-tab-pane v-if="rolesPermissions.isRegionManager" label="我的项目">
+
+          <span v-if="appliedProjectList == null || appliedProjectList.length == 0"> 暂无项目 </span>
+          <project-item v-if="appliedProjectList != null || appliedProjectList.length > 0"
+                        v-for="(item,index) in appliedProjectList" :key="index" :projectItem="item"/>
+        </el-tab-pane>
+        <el-tab-pane v-if="rolesPermissions.isRegionManager" label="历史项目">
+
           <span v-if="appliedProjectList == null || appliedProjectList.length == 0"> 暂无项目 </span>
           <project-item v-if="appliedProjectList != null || appliedProjectList.length > 0"
                         v-for="(item,index) in appliedProjectList" :key="index" :projectItem="item"/>
@@ -77,7 +84,7 @@ import ProjectItem from '@/components/commons/ProjectItem'
 import Http from '@/js/http.js'
 import Apis from '@/js/api.js'
 import {notify} from '@/constants/index'
-import {storageGet} from '@/js/index'
+import {getRolesPermissions, storageGet} from '@/js/index'
 
 export default {
   name: 'Mine',
@@ -87,7 +94,21 @@ export default {
       unFinishedTaskList: [],
       finishedTaskList: [],
       appliedProjectList: [],
-      user: {}
+      rolesPermissions: {
+        isRegionManager: false,
+        isIndividualUser: false,
+        isEnterpriseUser: false,
+        isAgency: false,
+        isSystemAdministrator: false
+      },
+      user: {
+        userVO: {
+          id: '',
+          name: '',
+          photo: '',
+          roleList: []
+        }
+      }
     }
   },
   mounted () {
@@ -98,9 +119,11 @@ export default {
   methods: {
     init () {
       this.setUserInfo()
+      this.setRolesPermissions()
+      this.loadData()
     },
     loadData () {
-      Http.get(Apis.PAGE.MY_CROWD_TEST_PAGE.replace('{userId}', 1), {}).then((res) => {
+      Http.get(Apis.PAGE.MY_CROWD_TEST_PAGE.replace('{userId}', this.user.userVO.id)).then((res) => {
         if (res.unfinishedTasks != null && res.unfinishedTasks.length > 0) {
           this.unFinishedTaskList = res.unfinishedTasks
         }
@@ -117,10 +140,14 @@ export default {
     },
     setUserInfo () {
       this.user = storageGet('user')
+    },
+    setRolesPermissions () {
+      this.rolesPermissions = getRolesPermissions(this.user.userVO.roleList)
     }
+
   },
   created: function () {
-    this.loadData()
+
   }
 }
 </script>

+ 1 - 1
src/components/authen/AgencyAuthentication.vue

@@ -27,7 +27,7 @@
           <el-input v-if="isModifyMode" v-model="authentication.mobile"></el-input>
           <!--<span v-if="!isModifyMode">{{authentication.name}}</span>-->
         </el-form-item>
-        <el-form-item label="银行卡账户" prop="name">
+        <el-form-item label="对公账户" prop="name">
           <el-input v-if="isModifyMode" v-model="authentication.bankAccount"></el-input>
           <!--<span v-if="!isModifyMode">{{authentication.bankAccount}}</span>-->
         </el-form-item>

+ 5 - 1
src/components/authen/EnterpriseAuthentication.vue

@@ -27,7 +27,10 @@
           <el-input v-if="isModifyMode" v-model="authentication.enterpriseBossName"></el-input>
           <!--<span v-if="!isModifyMode">{{authentication.name}}</span>-->
         </el-form-item>
-
+        <el-form-item label="对公账户" prop="name">
+          <el-input v-if="isModifyMode" v-model="authentication.bankAccount"></el-input>
+          <!--<span v-if="!isModifyMode">{{authentication.name}}</span>-->
+        </el-form-item>
         <el-form-item label="统一社会信用代码" prop="name">
           <el-input v-if="isModifyMode" v-model="authentication.USCC"></el-input>
           <!--<span v-if="!isModifyMode">{{authentication.bankAccount}}</span>-->
@@ -66,6 +69,7 @@ export default {
       authentication: {
         enterpriseName: '',
         enterpriseBossName: '',
+        bankAccount:'',
         businessLicense: '',
         USCC: '',
         enterpriseAddress: ''

+ 2 - 2
src/components/cheat/AgencyAdd.vue

@@ -18,7 +18,7 @@
           <el-input v-if="isModifyMode" v-model="agency.name"></el-input>
           <!--<span v-if="!isModifyMode">{{agency.name}}</span>-->
         </el-form-item>
-        <el-form-item label="机构电话" prop="phone">
+        <el-form-item label="机构电话" prop="mobile">
           <el-input v-if="isModifyMode" v-model="agency.mobile"></el-input>
           <!--<span v-if="!isModifyMode">{{agency.name}}</span>-->
         </el-form-item>
@@ -223,7 +223,7 @@ export default {
           {required: true, message: '请输入测评机构名称', trigger: 'blur'}
           // { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" }
         ],
-        phone: [
+        mobile: [
           {required: true, message: '请输入手机号', trigger: 'blur'}
           // { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" }
         ],

+ 10 - 2
src/components/commons/Header.vue

@@ -62,7 +62,7 @@
         </ul>
       </div>
     </div>
-    
+
   </nav>
 </template>
 
@@ -74,6 +74,7 @@ export default {
   name: 'header-container',
   data () {
     return {
+      loading:true,
       openNavBar: false,
       userIdentity: '',
       isLogin: false
@@ -81,7 +82,7 @@ export default {
   },
   mounted () {
     this.$nextTick(() => {
-      this.setUserInfo()
+
     })
   },
   methods: {
@@ -93,6 +94,7 @@ export default {
         getCurrentUser().then((res) => {
           storageSave('user', res)
           this.isLogin = true;
+
         }).catch(error => {
           console.log(error)
           if (error.status == 401) {
@@ -110,6 +112,12 @@ export default {
       this.isLogin = false
     }
   },
+  created (){
+    console.log('HEAD create')
+  },
+  beforeMount (){
+    this.setUserInfo()
+  }
 }
 </script>
 

+ 49 - 31
src/components/project/ProjectCreate.vue

@@ -6,25 +6,11 @@
         <el-form-item label="项目名称" prop="name">
           <el-input v-model="project.name"></el-input>
         </el-form-item>
-        <el-form-item label="联系方式" prop="contact">
-          <div>
-            <el-row :gutter="2">
-              <el-col :span="2">
-                <span>联系人</span>
-              </el-col>
-              <el-col :span="10">
-                <el-input v-model="project.contactName" placeholder="请输入联系人姓名"></el-input>
-              </el-col>
-            </el-row>
-            <el-row :gutter="2">
-              <el-col :span="2">
-                <span>联系人电话</span>
-              </el-col>
-              <el-col :span="10">
-                <el-input v-model="project.contactPhone" placeholder="请输入联系人电话"></el-input>
-              </el-col>
-            </el-row>
-          </div>
+        <el-form-item label="联系人" prop="contactName">
+          <el-input v-model="project.contactName" placeholder="请输入联系人姓名"></el-input>
+        </el-form-item>
+        <el-form-item label="手机号" prop="contactPhone">
+          <el-input v-model="project.contactPhone" placeholder="请输入联系人电话"></el-input>
         </el-form-item>
         <el-form-item label="平台" prop="platform">
           <el-checkbox-group v-model="project.platform">
@@ -48,9 +34,6 @@
             </span>
           </el-checkbox-group>
         </el-form-item>
-        <!--<el-form-item label="用途" prop="usage">-->
-        <!--<el-input v-model="project.usage"></el-input>-->
-        <!--</el-form-item>-->
         <el-form-item label="预算" prop="budget">
           <el-input type="number" v-model="project.budget">
             <template slot="append">¥</template>
@@ -228,6 +211,14 @@ export default {
           {required: true, message: '请输入项目名称', trigger: 'blur'}
           // { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" }
         ],
+        contactName: [
+          {required: true, message: '请输入联系人姓名', trigger: 'blur'}
+          // { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" }
+        ],
+        contactPhone: [
+          {required: true, message: '请输入手机号', trigger: 'blur'}
+          // { min: 3, max: 5, message: "长度在 3 到 5 个字符", trigger: "blur" }
+        ],
         type: [
           {
             type: 'array',
@@ -244,15 +235,16 @@ export default {
             trigger: 'change'
           }
         ],
-        desc: [{required: true, message: '请填写活动形式', trigger: 'blur'}],
-        contact: [{validator: validatePass, trigger: 'blur'}],
-        resource: [
-          {
-            required: true,
-            message: '请选择项目可见性',
-            trigger: 'change'
-          }
-        ]
+        desc: [{required: false, message: '请填写描述', trigger: 'blur'}],
+        price: [{required: true, message: '请填写价格', trigger: 'blur'}],
+        budget: [{required: true, message: '请填写预算', trigger: 'blur'}],
+        // resource: [
+        //   {
+        //     required: true,
+        //     message: '请选择项目可见性',
+        //     trigger: 'change'
+        //   }
+        // ]
       }
     }
   },
@@ -485,3 +477,29 @@ export default {
   }
 </style>
 
+<!--<el-form-item label="联系方式" prop="contact">-->
+<!--<div>-->
+<!--<el-row :gutter="2">-->
+<!--<el-col :span="2">-->
+<!--<span>联系人</span>-->
+<!--</el-col>-->
+<!--<el-col :span="10">-->
+<!--<el-input v-model="project.contactName" placeholder="请输入联系人姓名"></el-input>-->
+<!--</el-col>-->
+<!--</el-row>-->
+<!--<el-row :gutter="2">-->
+<!--<el-col :span="2">-->
+<!--<span>联系人电话</span>-->
+<!--</el-col>-->
+<!--<el-col :span="10">-->
+<!--<el-input v-model="project.contactPhone" placeholder="请输入联系人电话"></el-input>-->
+<!--</el-col>-->
+<!--</el-row>-->
+<!--</div>-->
+<!--</el-form-item>-->
+
+
+
+<!--<el-form-item label="用途" prop="usage">-->
+<!--<el-input v-model="project.usage"></el-input>-->
+<!--</el-form-item>-->

+ 48 - 13
src/js/index.js

@@ -19,19 +19,54 @@ export const getUserIdentity = () => {
 
 //获取用户信息
 export const getCurrentUser = () => {
-  // const data = {
-  //   userVO: {
-  //     id: 3,
-  //     name: '郭超',
-  //     mobile: '110',
-  //     email: '12345@qq.com',
-  //   },
-  //   agency: '',
-  // }
-  // return new Promise((resolve) => {
-  //   resolve(data)
-  // })
-  return Http.get(Apis.USER.GET_CURRENT_USER)
+  const data = {
+    userVO: {
+      id: 3,
+      photo: 'http://www.mooctest.net/assets/img/mooctest.png',
+      name: '郭超',
+      roleList: ['区域管理员', '个人用户', '个人用户', '测评机构', '系统管理员'],
+      mobile: '110',
+      email: '12345@qq.com',
+    },
+    agency: '',
+  }
+  return new Promise((resolve) => {
+    resolve(data)
+  })
+  // return Http.get(Apis.USER.GET_CURRENT_USER)
+}
+//
+export const getRolesPermissions = (roleList) => {
+  const roles = {
+    regionManager: '区域管理员',
+    individualUser: '个人用户',
+    enterpriseUser: '个人用户',
+    agency: '测评机构',
+    systemAdministrator: '系统管理员'
+  }
+  const permissions = {
+    isRegionManager: false,
+    isIndividualUser: false,
+    isEnterpriseUser: false,
+    isAgency: false,
+    isSystemAdministrator: false
+  }
+  if (roleList.includes(roles.regionManager)) {
+    permissions.isRegionManager = true
+  }
+  if (roleList.includes(roles.agency)) {
+    permissions.isAgency = true
+  }
+  if (roleList.includes(roles.enterpriseUser)) {
+    permissions.isEnterpriseUser = true
+  }
+  if (roleList.includes(roles.individualUser)) {
+    permissions.isIndividualUser = true
+  }
+  if (roleList.includes(roles.systemAdministrator)) {
+    permissions.isSystemAdministrator = true
+  }
+  return permissions
 }
 
 export const logout = () => {