zhuliu 9 months ago
parent
commit
f58c6e164d

+ 7 - 0
src/api/personnel.js

@@ -42,4 +42,11 @@ export default {
      editPersonnel(data) {
         return axios.post('/permission/qiaoBi/personnel/update', data)
     },
+
+    /**
+     * 查询本租户快要过期人员
+     */
+    getExpirePersons(data) {
+        return axios.post('/permission/qiaoBi/personnel/getExpirePersons', data)
+    },
 }

+ 3 - 4
src/main.js

@@ -13,7 +13,6 @@ import Particles from 'vue-particles'
 import { formatTableDate } from "./utils";
 import Config from './config'
 import Storage from './utils/storage'
-import { hasRole } from './utils/permissions'
 require('./assets/css/fix.scss')
 require('./assets/css/layout.less')
 require('./assets/css/theme.css')
@@ -22,8 +21,9 @@ import '@/icons'
 import '@/styles/index.scss'
 import lodash from 'lodash'
 
-import {hasPermission} from './directives/permission';
-Vue.prototype.$permission = hasPermission
+//功能权限
+import permission from '@/utils/permissions';
+Vue.prototype.$permission = permission
 // import Directives from './directives/index'
 // Vue.use(Directives)
 
@@ -47,7 +47,6 @@ Vue.prototype.$p = Config.staticURL
 Vue.prototype.$c = Config
 Vue.prototype.$s = Storage
 Vue.prototype.$_ = lodash
-Vue.prototype.$r = hasRole
 // Vue.use(Charts)
 Vue.use(Particles)
 Vue.use(Element)

+ 2 - 1
src/router/index.js

@@ -281,7 +281,7 @@ export const defaultBackStageManageRouterItem = [
         path: 'examine',
         name: 'Administrator_examine',
         component: () => import('@/views/backStageManage/examine/examine/index.vue'),
-        meta: {title: '账号审核', icon: '审核'},
+        meta: {title: '审核任务', icon: '审核'},
         sign:'administrator/examine'
       },
     ]
@@ -340,6 +340,7 @@ router.beforeEach((to, from, next) => {
   if (to.path == '/administrator/login'|| routeExists(routes,to.path) || to.meta.notLogin) {
     Cookies.remove("token")
     localStorage.removeItem('vuex')
+    localStorage.removeItem('showMessage')
     next()
   }
   else {

+ 17 - 7
src/utils/permissions.js

@@ -1,10 +1,20 @@
 import Store from '@/store'
 
-export const hasRole = (projectId, roles) => {
-  if (!projectId) {
-    return true
-  }
-  const permissions = Store.getters && Store.getters.permissions
-  const p = permissions[projectId]
-  return p === 0 || roles.indexOf(p) !== -1
+export default{
+  /**
+   * 功能权限
+   * @param {String} str 
+   */
+  FunPermissions(str){
+    // return true
+    const user = Store.state.admin.userinfo
+    if(user.roleType == 1){
+      return true
+    }
+    const permissionList = Store.state.permission.permission
+    if(!permissionList){
+      return false
+    }
+    return permissionList.includes(str)
+  },
 }

+ 1 - 1
src/views/backStageManage/application/vision/vision.vue

@@ -11,7 +11,7 @@
               <el-input v-model="queryParams.versionNum" placeholder="请输入版本号"/>
             </el-form-item>
             <el-form-item label="版本状态" prop="status">
-              <el-select v-model="queryParams.status" placeholder="请选择版本状态">
+              <el-select v-model="queryParams.status" placeholder="请选择版本状态" clearable >
                 <el-option v-for="(item, key) in status" :key="key" :label="item" :value="key"></el-option>
               </el-select>
             </el-form-item>

+ 45 - 55
src/views/backStageManage/examine/examine/components/examine.vue

@@ -4,17 +4,17 @@
         <el-header>
             <el-form :model="queryParams" ref="queryForm" size="small" :inline="true"  label-width="68px">
                 <el-form-item label="审核类型" prop="type">
-                    <el-select v-model="queryParams.type" placeholder="请选择">
+                    <el-select v-model="queryParams.type" placeholder="请选择" clearable >
                         <el-option v-for="(item, key) in examineType" :key="key" :label="item" :value="key"></el-option>
                     </el-select>
                 </el-form-item>
                 <el-form-item label="任务状态" prop="status">
-                    <el-select v-model="queryParams.status" placeholder="请选择">
-                        <el-option v-for="(item, key) in status" :key="key" :label="item" :value="key"></el-option>
+                    <el-select v-model.number="queryParams.status" placeholder="请选择" clearable >
+                        <el-option v-for="(item, key) in status" :key="key" :label="item" :value="Number(key)"></el-option>
                     </el-select>
                 </el-form-item>
                 <el-form-item label="审核结果" prop="auditResult">
-                    <el-select v-model="queryParams.auditResult" placeholder="请选择">
+                    <el-select v-model="queryParams.auditResult" placeholder="请选择" clearable >
                         <el-option v-for="(item, key) in auditResult" :key="key" :label="item" :value="key"></el-option>
                     </el-select>
                 </el-form-item>
@@ -43,6 +43,15 @@
                         <div v-if="item.field == 'type'" v-html="examineType[scope.row.type]"></div>
                         <div v-else-if="item.field == 'status'" v-html="status[scope.row.status]"></div>
                         <div v-else-if="item.field == 'auditResult'" v-html="auditResult[scope.row.auditResult]"></div>
+                        <div v-else-if="item.field == 'content'" >
+                            <template>
+                                <p v-if="scope.row.personnelName">姓名:{{ scope.row.personnelName }}</p>
+                                <p v-if="scope.row.personnelPhone">电话:{{ scope.row.personnelPhone }}</p>
+                                <p v-if="scope.row.personnelEmail">邮箱:{{ scope.row.personnelEmail }}</p>
+                                <p v-if="scope.row.departmentName">部门:{{ scope.row.departmentName }}</p>
+                                <p v-if="scope.row.positionName">职位:{{ scope.row.positionName }}</p>
+                            </template>
+                        </div>
                         <div v-else v-html="$commonJS.getColumnData(scope.row,item)"></div>
                     </template>
                 </el-table-column>
@@ -78,82 +87,55 @@
 const that = this
 const defaultColumn = [
     {
-        field:'personnelName',
-        name:'姓名',
+        field:'type',
+        name:'审核类型',
         ifSort:false,
-        width:'120px'
-    },
-    {
-        field:'personnelPhone',
-        name:'电话',
-        ifSort:false
-    },
-    {
-        field:'personnelEmail',
-        name:'邮箱',
-        ifSort:false
+        width:'150px',
     },
     {
-        field:'personnelUserName',
-        name:'账号',
-        ifSort:false
+        field:'content',
+        name:'待审核内容',
+        ifSort:false,
     },
-    // {
-    //     field:'password',
-    //     name:'密码',
-    //     ifSort:false
-    // },
     {
-        field:'departmentalPosition',
-        name:'部门职位',
+        field:'createName',
+        name:'发起人',
         ifSort:false,
+        width:'150px',
         type:"function",
         useFunction:(data)=>{
-            return `部门:${data.departmentName}<br>职位:${data.positionName}`
+            return data.createName || data.personnelName
         }
     },
-    // {
-    //     field:'enterprise',
-    //     name:'所属企业',
-    //     ifSort:false,
-    //     type:"function",
-    //     useFunction:(data)=>{
-    //         return `名称:${data.enterpriseName}<br>地址:${data.enterpriseAddress}<br>类型:${data.enterpriseType}`
-    //     }
-    // },
     {
-        field:'type',
-        name:'审核类型',
+        field:'createTime',
+        name:'发起时间时间',
         ifSort:false,
-        width:'120px',
+        width:'180px',
     },
     {
         field:'status',
         name:'任务状态',
         ifSort:false,
-        width:'120px',
+        width:'150px',
     },
     {
         field:'auditResult',
         name:'审核结果',
         ifSort:false,
-        width:'120px',
-
+        width:'150px',
     },
     {
-        field:'createName',
-        name:'发起人',
+        field:'handleName',
+        name:'审核人',
         ifSort:false,
-        width:'120px',
-        type:"function",
-        useFunction:(data)=>{
-            return data.createName || data.personnelPhone
-        }
+        width:'150px',
     },
     {
-        field:'createTime',
-        name:'创建时间',
-        ifSort:false
+        field:'auditResultTime',
+        name:'审核时间',
+        ifSort:false,
+        width:'180px',
     },
 ]
 const defaultSearchForm = {
@@ -165,13 +147,21 @@ import commonData from './mixins/commonData'
 export default {
   components: {},
   mixins:[commonData],
-  props: {},
+  props: {
+    searchQuery:{
+        type:Object,
+        default:()=>{
+            return {}
+        }
+    }
+  },
   data() {
     return {
         queryParams:{
             current:1,
             size:10,
-            ...defaultSearchForm
+            ...defaultSearchForm,
+            ...this.searchQuery
         },
         total:0,
         tableData:[],

+ 7 - 3
src/views/backStageManage/examine/examine/index.vue

@@ -1,6 +1,6 @@
 <template>
   <div class="height_100">
-    <examine></examine>
+    <examine :searchQuery="searchQuery"></examine>
   </div>
 </template>
 
@@ -13,11 +13,15 @@ export default {
   props: {},
   data() {
     return {
-
+      
     };
   },
   watch: {},
-  computed: {},
+  computed: {
+    searchQuery(){
+        return this.$route.params
+    }
+  },
   created() {},
   mounted() {},
   methods: {},

+ 92 - 5
src/views/backStageManage/layout/Layout.vue

@@ -44,15 +44,102 @@ export default {
 
   },
   created(){
-    // this.getUserinfo()
+    this.showMessage()
     this.getDict()
   },
+  deactivated(){
+    this.$s.setStr('showMessage',false)
+  },
   methods:{
-    getUserinfo(){
-      this.$api.getUserInfo().then(response => {
-        localStorage.tenant = response.data.tenantId
-        this.$store.commit('SET_ADMIN_USERINFO', response.data)
+    showMessage(){
+      var showMessage = this.$s.getStr('showMessage')
+      if(showMessage){
+        return
+      }
+      this.$s.setStr('showMessage',true)
+      setTimeout(()=>{
+        this.expirationNotice()
+      },2000)
+      setTimeout(()=>{
+        this.taskReminder()
+      },4000)
+      
+    },
+    //到期通知
+    expirationNotice(){
+      if(!this.$permission.FunPermissions('administrator/personnel')){
+        return
+      }
+      var params = {
+      }
+      this.$api.getExpirePersons(params).then(response=>{
+        if(response.code == 200 && response.data.total){
+          var num = response.data.total
+          var html = `<div>您所在企业下有<span style="color:red;">${num}</span>个账号即将到期,具体详情请前往人员管理查看<div>`
+          var that = this
+          var message = this.$notify({
+            title: '到期通知',
+            dangerouslyUseHTMLString: true,
+            message: html,
+            duration:0,
+            position: 'bottom-right',
+            customClass:"notify_overlap",
+            onClick:()=>{
+              message.close()
+              that.$router.push(
+                {
+                  path:'/administrator/personnel',
+                  query:{
+
+                  }
+                }
+              )
+            }
+          });
+        }
       })
+      
+    },
+    //任务提醒
+    taskReminder(){
+      if(!this.$permission.FunPermissions('administrator/examine')){
+        return
+      }
+      var params = {
+        status:0,
+        current:1,
+        size:1
+      }
+      this.$api.queryAuditTask(params).then(response=>{
+            if(response.code == 200){
+              var num = response.data.total
+              var html = `<div>您还有<span style="color:red;">${num}</span>个任务待处理,具体详情请前往任务中心查看<div>`
+              var that = this
+              var message =  this.$notify({
+                title: '任务提醒',
+                dangerouslyUseHTMLString: true,
+                message: html,
+                duration:0,
+                position: 'bottom-right',
+                customClass:"notify_overlap",
+                onClick:()=>{
+                  message.close()
+                  that.$router.push(
+                    {
+                      // path:'/administrator/examine',
+                      name:'Administrator_examine',
+                      params:{
+                        status:0,
+                      }
+                    }
+                  )
+                }
+              });
+            }
+        }).catch(error=>{
+            
+        })
+      
     },
     getDict() {
       var params = {

+ 1 - 1
src/views/backStageManage/organization/personnel/components/personnel.vue

@@ -8,7 +8,7 @@
                 <el-input v-model="queryParams.name" placeholder="请输入"/>
               </el-form-item>
               <el-form-item label="所属租户:" class="tenant">
-        		<el-select v-model="queryParams.tenant" @change="getList" clearable placeholder="根据租户查询">
+        		<el-select v-model="queryParams.tenant" clearable placeholder="根据租户查询" >
 					<el-option
 						v-for="item in tenantList"
 						:key="item.id"

+ 1 - 1
src/views/backStageManage/paymentCode/paymentCode/components/paymentCode.vue

@@ -5,7 +5,7 @@
           <div class="header">
             <el-form :model="queryParams" ref="queryForm" size="small" :inline="true" label-width="100px">
               <el-form-item label="付费码状态" prop="status">
-                <el-select v-model="queryParams.status" placeholder="请选择">
+                <el-select v-model="queryParams.status" placeholder="请选择" clearable >
                     <el-option v-for="(item, key) in status" :key="key" :label="item" :value="key"></el-option>
                 </el-select>
               </el-form-item>