瀏覽代碼

可配置化完成

hbchen 1 年之前
父節點
當前提交
2ae9c93a8c

+ 0 - 12
src/config/setting.js

@@ -1,12 +0,0 @@
-//全局配置
-export default {
-  name: '后台管理系统',
-  company_name: '**公司',
-  g_logo: require('@/assets/img/home/logo.png'), //主页菜单栏logo
-  g_mini_logo: require('@/assets/img/home/eta_mini.png'), //主页菜单栏mini-logo
-  theme_color: '',
-  menu_bg:'#FFFFFF',//菜单栏背景色
-  login_title: '',//登录页标题
-  login_logo: require('@/assets/img/home/login_logo.png'),//登录页logo
-  login_bg: require('@/assets/img/login_bg.png')
-}

+ 24 - 34
src/main.js

@@ -18,21 +18,8 @@ Vue.use(ElementUI);
 Vue.use(VueRouter);
 Vue.use(Vuex);
 
-import {
-  getBusinessCode
-} from "api/api.js";
-import global from '@/config/setting';
-import{endCalc,optionTimeCalc,doPageEventListener}from'@/utils/TimeOnPage.js';
-
-// 获取商家code
-getBusinessCode().then(res=>{
-  if(res.Ret!==200) return 
-  let bus_code = res.Data||''
-  if(stores.state.TRIAL_CODE == bus_code){
-    doPageEventListener()
-  }
-  stores.mutations.SET_BUSINESS_CODE(stores.state,bus_code) 
-})
+import{endCalc,optionTimeCalc,init}from'@/utils/TimeOnPage.js';
+
 
 import setting from '@/mixins/theme.js'
 Vue.prototype.$setting = setting;
@@ -192,28 +179,31 @@ router.beforeEach(async(to, from, next) => {
 
 router.afterEach((to, from, next) => {
   // 改变页面标题
-  if(stores.state.TRIAL_CODE == stores.state.businessCode){
-    // 试用ETA
-    document.title = to.matched[to.matched.length-1].name ?
-    `${global.company_name}-${to.matched[to.matched.length-1].name}`: global.name
-  }else{
-    document.title = to.matched[to.matched.length - 1].name
-    ? `ETA-${to.matched[to.matched.length - 1].name}`
-    : "ETA";
-  }
+  document.title = to.matched[to.matched.length - 1].name
+  ? `${setting.name}-${to.matched[to.matched.length - 1].name}`
+  : setting.name;
 
   window.scrollTo(0, 0);
-  
-  sessionStorage.setItem('preTitle',from.name||'')
-  const routerChangeType = sessionStorage.getItem('routerChangeType')
-  if(routerChangeType==='popstate'){
-    const IsActive = sessionStorage.getItem('IsActive')
-    if(IsActive=='1'){
-      endCalc('popstate',Number(sessionStorage.getItem('popStayTime')||0))
+  if(stores.state.hasTrialUserPermisson){
+
+    sessionStorage.setItem('preTitle',from.name||'')
+
+    if(!stores.state.hasDoPageListening){
+      // 初始化需要放在 页面设置标题后,才能拿到正确的标题
+      init()
+      stores.mutations.SET_PAGE_EVENT_LISTENER(stores.state,true)
+    }
+
+    const routerChangeType = sessionStorage.getItem('routerChangeType')
+    if(routerChangeType==='popstate'){
+      const IsActive = sessionStorage.getItem('IsActive')
+      if(IsActive=='1'){
+        endCalc('popstate',Number(sessionStorage.getItem('popStayTime')||0))
+      }
+      optionTimeCalc()
+      sessionStorage.removeItem('routerChangeType')
+      sessionStorage.removeItem('popStayTime')
     }
-    optionTimeCalc()
-    sessionStorage.removeItem('routerChangeType')
-    sessionStorage.removeItem('popStayTime')
   }
 });
 

+ 1 - 1
src/mixins/theme.js

@@ -2,7 +2,7 @@
 一些动态配置和一些全局自定义东西 
 */
 export default {
-	name: '后台管理系统',
+	name: 'ETA',
   theme_color: '#0052D9',
   menu_bg:'#fff',//菜单栏背景色
   //跳转外部系统

+ 38 - 20
src/utils/TimeOnPage.js

@@ -1,13 +1,12 @@
 //计算账号累计活跃时长
-import global from '@/config/setting';
+import setting from '@/mixins/theme.js'
+
 import {timeOnPage} from '@/api/api.js';
 //活跃时间间隔 (s)
 const TimeInterval = 60*10
 //页面停留时间 (s)
 let stayTime = 0
 
-
-
 let timer = null
 
 //打开计时器
@@ -64,7 +63,7 @@ export const sendTOPInfo = (type,intervalT)=>{
   const Part = Title.split('-').length>1?Title.split('-')[1]:Title
   const ActiveTime = type==='timeup'?stayTime:Number(intervalT)/1000
   //发送数据
-  if(!Part.length||Part==global.name) return
+  if(!Part.length||Part==setting.name) return
   if(ActiveTime>TimeInterval*12) return
   console.log("ActiveTime:",ActiveTime,"Part:",Part)
   timeOnPage({
@@ -91,28 +90,47 @@ let rewriteHis = function(type){
   }
 }
 
+export function init(){
+  const unloadT = sessionStorage.getItem('unloadT')
+  const IsActive = sessionStorage.getItem('IsActive')
+  if(unloadT){
+    //console.log('刷新该页呆了时长',unloadT)
+    sessionStorage.removeItem('unloadT')
+    sessionStorage.setItem('preTitle',document.title)
+    if(Number(IsActive)){
+      endCalc('unload',unloadT)
+    }
+  }
+  timeStr = new Date().getTime()
+  optionTimeCalc()
+}
 
 export const doPageEventListener=function(){
+
+  // init() 放在router.afterEach中实现,不然一开始拿不到正确的页面标题
+
   window.history.pushState = rewriteHis('pushState')
 
   window.history.replaceState = rewriteHis('replaceState')
   
-  //刷新加载完成
-  window.addEventListener('load',(e)=>{
-    const unloadT = sessionStorage.getItem('unloadT')
-    const IsActive = sessionStorage.getItem('IsActive')
-    if(unloadT){
-      //console.log('刷新该页呆了时长',unloadT)
-      sessionStorage.removeItem('unloadT')
-      sessionStorage.setItem('preTitle',document.title)
-      if(Number(IsActive)){
-        endCalc('unload',unloadT)
-      }
-    }
-    console.log('onload')
-    timeStr = new Date().getTime()
-    optionTimeCalc()
-  })
+
+  //刷新加载完成 
+  // 因为监听改位置了,每次路由刷新时,由于需要等待接口返回,需要先判断是否有 权限才能监听,这时候onload已经执行了,根本监听不到
+  // window.addEventListener('load',(e)=>{
+  //   const unloadT = sessionStorage.getItem('unloadT')
+  //   const IsActive = sessionStorage.getItem('IsActive')
+  //   if(unloadT){
+  //     //console.log('刷新该页呆了时长',unloadT)
+  //     sessionStorage.removeItem('unloadT')
+  //     sessionStorage.setItem('preTitle',document.title)
+  //     if(Number(IsActive)){
+  //       endCalc('unload',unloadT)
+  //     }
+  //   }
+  //   console.log('onload')
+  //   timeStr = new Date().getTime()
+  //   optionTimeCalc()
+  // })
   //刷新离开页面
   window.addEventListener('beforeunload',(e)=>{
     console.log('unload')

+ 24 - 26
src/views/Home.vue

@@ -7,13 +7,13 @@
           <img
             class="logo"
             v-if="!isCollapse"
-            :src="isTrail?global.g_logo:$setting.g_logo"
+            :src="$setting.g_logo"
           />
           <!-- 折叠侧边栏logo尺寸 -->
           <img
             class="logo_coll"
             v-else
-            :src="isTrail?global.g_mini_logo:$setting.g_mini_logo"
+            :src="$setting.g_mini_logo"
           />
         </div>
         <div
@@ -23,7 +23,7 @@
           <aside class="menu-expanded">
             <!--导航菜单-->
             <el-menu
-              :background-color="isTrail?global.menu_bg:$setting.menu_bg"
+              :background-color="$setting.menu_bg"
               text-color="#333"
               :collapse-transition="false"
               :active-text-color="$setting.theme_color"
@@ -316,7 +316,6 @@ import PwdDlg from "@/components/pwdDlg.vue";
 import questionMsgDia from "@/components/questionMsgDia.vue";
 import questionnaireDia from "../components/questionnaireDia.vue";
 import EventBus from "@/api/bus.js";
-import global from '@/config/setting';
 
 export default {
   components: {
@@ -385,7 +384,7 @@ export default {
     },
 		// 是否是eta试用
     isTrail(){
-			return this.$store.state.businessCode == this.$store.state.TRIAL_CODE
+			return this.$store.state.hasTrialUserPermisson
 		}
   },
   data() {
@@ -464,7 +463,6 @@ export default {
       //链接系统
       linkSystems: this.$setting.linkSystems,
       bus_code:"",
-      global
     };
   },
   created() {
@@ -478,7 +476,7 @@ export default {
       this.isShowApprovalNotice = true;
     }
     this.resetLinkSys()
-    // this.getBusinessCodeFun()
+    this.getBusinessCodeFun()
     
     this.getQuestionStaus()
   },
@@ -493,13 +491,12 @@ export default {
   },
   methods: {
     // 获取商家Code
-    // getBusinessCodeFun(){
-      // getBusinessCode().then(res=>{
-      //   if(res.Ret!==200) return 
-      //   this.bus_code = res.Data||''
-      //   this.$store.commit("SET_BUSINESS_CODE", this.bus_code);
-      // })
-    // },
+    getBusinessCodeFun(){
+      getBusinessCode().then(res=>{
+        if(res.Ret!==200) return 
+        this.bus_code = res.Data||''
+      })
+    },
     //判断是否为初始密码
     async isInitialPwd() {
       const res = await checkPwd();
@@ -678,7 +675,6 @@ export default {
         this.questionList=[]
         return 
       }
-      // console.log(this.isTrail,'isTrail');
       homeInterface.getQuestionnaireDetail().then(res=>{
         // console.log(res);
         if(res.Ret == 200){
@@ -701,8 +697,7 @@ export default {
       // });
       // window.open(href, "_blank");
       //打开帮助文档
-      const href = `${process.env.VUE_APP_ETA_HELP_DOCS}?bus_code=${this.$store.state.businessCode}`
-      // console.log(href);
+      const href = `${process.env.VUE_APP_ETA_HELP_DOCS}?bus_code=${this.bus_code}`
       // const href = `http://192.168.77.13:3033/help/index?bus_code=${this.bus_code}`
       window.open(href, "_blank");
     },
@@ -785,21 +780,24 @@ export default {
         type: "warning",
       })
         .then(() => {
-          localStorage.setItem("auth", "");
-          localStorage.setItem("userName", "");
-          localStorage.setItem("Role", "");
-          localStorage.setItem("RoleType", "");
-          localStorage.setItem("AdminId", "");
-          localStorage.setItem("AdminName", "");
-          localStorage.setItem("ManageType", "");
-          localStorage.setItem("RoleIdentity", "");
+
           that.$router.push("/login");
+          setTimeout(() => {
+            localStorage.setItem("auth", "");
+            localStorage.setItem("userName", "");
+            localStorage.setItem("Role", "");
+            localStorage.setItem("RoleType", "");
+            localStorage.setItem("AdminId", "");
+            localStorage.setItem("AdminName", "");
+            localStorage.setItem("ManageType", "");
+            localStorage.setItem("RoleIdentity", "");
+          }, 10);
         })
         .catch(() => {});
     },
     toDoc(){
       //打开更新日志项目
-      const href = `${process.env.VUE_APP_ETA_DOCS}?bus_code=${this.$store.state.businessCode}`
+      const href = `${process.env.VUE_APP_ETA_DOCS}?bus_code=${this.bus_code}`
       window.open(href, "_blank");
     },
     collapseHandle () {

+ 2 - 10
src/views/Login.vue

@@ -2,8 +2,8 @@
   <div id="login">
 		<div id="login_wrapper">
       
-			<img class="login-bg" :src="isTrail?global.login_bg:$setting.login_bg" alt />
-      <img class="login-icon" :src="isTrail?global.login_logo:$setting.login_logo" v-if="isTrail?global.login_logo:$setting.login_logo">
+			<img class="login-bg" :src="$setting.login_bg" alt />
+      <img class="login-icon" :src="$setting.login_logo" />
 			<el-form
 				:model="ruleForm"
 				:rules="rules"
@@ -72,11 +72,9 @@
 import { userLogin, departInterence } from "@/api/api.js";
 import http from "@/api/http.js";
 import md5 from "@/utils/md5.js";
-import global from '@/config/setting'
 export default {
   data() {
     return {
-			global,
       b: new http.Base64(),
       logining: false, //登录loadding
       ruleForm: {
@@ -102,12 +100,6 @@ export default {
       checked: false, //是否保持登录状态
       visible: true, //密码输入类型
     };
-  },
-	computed: {
-		// 是否是eta试用
-    isTrail(){
-			return this.$store.state.businessCode == this.$store.state.TRIAL_CODE
-		}
   },
   created() {
     this.keyupSubmit(); //回车登录

+ 1 - 7
src/views/dataEntry_manage/databaseComponents/addTargetDiaBase.vue

@@ -110,15 +110,9 @@ export default {
 			search_company_txt: ''
 		};
 	},
-	computed: {
-		// 是否是eta试用
-    isTrail(){
-			return this.$store.state.businessCode == this.$store.state.TRIAL_CODE
-		}
-  },
 	methods: {
 		init() {
-			this.fromType = this.isTrail?'同花顺':'wind'
+			this.fromType = 'wind'
 			this.status = ''
 			this.tableData = []
 			this.dataList = []

+ 3 - 9
src/views/system_manage/departManage.vue

@@ -3,7 +3,7 @@
 		<div class="left_cont">
 			<div class="company_top" @click="initDepart">
 				<img src="~@/assets/img/set_m/home_ico.png" alt="" style="width:30px;height:30px;">
-				<span :class="!defaultGroup&&!defaultDepart?'act':''">{{isTrail?global.company_name:'弘则研究'}}</span>
+				<span :class="!defaultGroup&&!defaultDepart?'act':''">弘则研究</span>
 			</div>
 			<el-tree
 				ref="departTree"
@@ -112,7 +112,6 @@
 						<template slot-scope="scope">
 							<div style="color:#4099ef; font-size:24px;display: flex;gap:0 10px;">
 								<span  v-permission="permissionBtn.sysDepartPermission.sysDepart_saveUser"
-								v-if="!isTrail || (!(scope.row.DepartmentGroup=='ETA试用客户'&&scope.row.Enabled===0))"
 									class="editsty" @click.stop="editUser(scope.row)">编辑</span>
 								<span v-permission="permissionBtn.sysDepartPermission.sysDepart_resetPass"
 									class="editsty" @click.stop="resetPassWord(scope.row)">重置密码</span>
@@ -506,7 +505,6 @@ import { departInterence } from '@/api/api.js';
 import http from '@/api/http.js'
 import md5 from '@/utils/md5.js';
 import mixin from './mixin/departManageMixin.js';
-import global from '@/config/setting'
 //自定义省市数据
 import{province_sorce,city_sorce} from '@/utils/distpicker'; 
 export default {
@@ -534,7 +532,6 @@ export default {
         }
 		}
 		return {
-			global,
 			isAddDepart:false,//添加部门弹窗
 			departForm:{
 				title:"添加部门",
@@ -711,11 +708,8 @@ export default {
     }
 	},
 	computed:{
-		// 有些是试用平台独有的内容和判断
-		// 是否是eta试用
 		isTrail(){
-			// console.log(this.$store.state.businessCode,this.$store.state.TRIAL_CODE,'this.$store.state.businessCode == this.$store.state.TRIAL_CODE');
-			return this.$store.state.businessCode == this.$store.state.TRIAL_CODE
+			return this.$store.state.hasTrialUserPermisson
 		}
 	},
 	created() {
@@ -760,7 +754,7 @@ export default {
 					this.departArr = res.Data.List || []
 					if(this.isTrail){
 						this.departArr = this.departArr.map(item=>{
-							//如果部门为ETA试用客户,则屏蔽所有操作
+							//如果部门为ETA试用客户,则屏蔽所有操作 CRM12.4
 							if(item.DepartmentName==='ETA试用客户'){
 								item.disabled = true
 								item.canEdit = false

+ 4 - 0
src/vuex/index.js

@@ -27,6 +27,10 @@ const state = {
   breadSelfName: '',//面包屑自定义当前页面name
 
   dynamicOutLinks:{},//外部动态链接配置 iframe链接 研报详情分享link
+  // 是否执行过页面监听
+  hasDoPageListening:false,
+  // 是否有 试用用户行为权限
+  hasTrialUserPermisson:false,
   businessCode:"", //商家code
   TRIAL_CODE:"e069d0a024e09636a1225e72a964b4b6", //试用平台的 商家code
 };

+ 10 - 0
src/vuex/modules/permissionButton.js

@@ -1,4 +1,6 @@
 import {departInterence} from '@/api/api.js';
+import{doPageEventListener}from'@/utils/TimeOnPage.js';
+
 // 权限配置按钮
 const permissionButtons = {
     state:()=>({
@@ -15,6 +17,14 @@ const permissionButtons = {
                 departInterence.getRoleBtnAuth().then(res=>{
                     const buttons = res.Data || []
                     commit('SET_PERMISSION_BUTTONS',buttons)
+                    
+                    let trialUserPermisson = !!buttons.find(item => item.ButtonCode =="trialUserAction")
+                    commit('SET_ETRIAL',trialUserPermisson)
+
+                    if(!this.state.hasDoPageListening && trialUserPermisson){
+                        //有ETA用户行为记录权限 而且没有执行过页面监听
+                        doPageEventListener()
+                    }
                     resolve('获取权限按钮成功')
                 })
 /*                 const buttons = [

+ 6 - 0
src/vuex/mutations.js

@@ -30,6 +30,12 @@ const mutations = {
     setting.dynamicOutLinks = state.dynamicOutLinks;
 
   },
+  SET_PAGE_EVENT_LISTENER:(state,flag)=>{
+    state.hasDoPageListening = flag
+  },
+  SET_ETRIAL(state,flag){
+    state.hasTrialUserPermisson = flag
+  },
   //设置商家code
   SET_BUSINESS_CODE(state,code) {
     state.businessCode = code || ""