Browse Source

Merge branch 'master' into eta1.2.0

Karsa 1 year ago
parent
commit
e3566e3958

+ 1 - 0
src/api/http.js

@@ -52,6 +52,7 @@ function checkStatus(response) {
       bus.$message.error(res.Msg);
     } else if (res.Ret === 408) {
       localStorage.setItem("auth", "")
+      localStorage.setItem("loginTime", "")
       bus
         .$alert(res.Msg, "提示", {
           showClose: false,

+ 1 - 0
src/components/pwdDlg.vue

@@ -117,6 +117,7 @@ export default {
                 localStorage.setItem('AdminName',"");
                 localStorage.setItem("RoleIdentity", "");
                 localStorage.setItem("ManageType", "");
+                localStorage.setItem("loginTime", "");
                 this.$router.push({ path: "/login" });
               }, 1000);
             }

+ 38 - 49
src/utils/TimeOnPage.js

@@ -11,16 +11,13 @@ let stayTime = 0
 let intervalTimer=null
 
 export const openLoginTimer=()=>{
-  // 登录时间
-  localStorage.setItem("loginTime",new Date())
 
   clearInterval(intervalTimer)
   intervalTimer = setInterval(()=>{
-    // let inactiveTime = time || new Date()
     let ActiveTime=0
     if(localStorage.getItem('loginTime')){
       ActiveTime = (new Date()-new Date(localStorage.getItem('loginTime')))/1000
-      console.log("1分钟间隔记录时长",ActiveTime+'s');
+      console.log("间隔记录时长",ActiveTime+'s');
       recordActiveLogin({ActiveTime:Math.round(ActiveTime)}).then(res=>{
         if(res.Ret!==200) return
       })
@@ -39,7 +36,7 @@ export const recordActiveLoginFun=(time)=>{
     }).finally(()=>{
       // 清除工作
       clearInterval(intervalTimer)
-      localStorage.removeItem('loginTime')
+      // localStorage.removeItem('loginTime')
     })
   }
 }
@@ -49,6 +46,7 @@ let timer = null
 //打开计时器
 export const optionTimeCalc = ()=>{
   const IsActive = sessionStorage.getItem('IsActive')
+  // console.log(IsActive,'IsActive');
   if(Number(IsActive)===0){
     //console.log('打开计时器')
     sessionStorage.setItem('IsActive',1)
@@ -62,7 +60,6 @@ export const startCalc = ()=>{
   sessionStorage.setItem('preTitle',document.title)
   timer = setInterval(()=>{
     stayTime++
-    
     if(stayTime>=TimeInterval){
       endCalc('timeup',0)
     }
@@ -137,24 +134,25 @@ 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()
+  // const unloadT = sessionStorage.getItem('unloadT')
+  // console.log("init",unloadT,IsActive);
+  // if(unloadT){
+  //   //console.log('刷新该页呆了时长',unloadT)
+  //   sessionStorage.removeItem('unloadT')
+  //   sessionStorage.setItem('preTitle',document.title)
+  //   if(Number(IsActive)){
+  //     endCalc('unload',unloadT)
+  //   }
+  // }
+  // timeStr = new Date().getTime()
+  sessionStorage.setItem('IsActive',0)
   optionTimeCalc()
+  // const IsActive = sessionStorage.getItem('IsActive')
 
-  if((!localStorage.getItem("loginTime")) && localStorage.getItem('auth')){
-    // 初始化的时候 先重置最近登录时长
-    recordActiveLogin({ActiveTime:0}).then(res=>{
-      if(res.Ret!==200) return
-    })
+  // if(Number(IsActive)){
+  //   sessionStorage.setItem('unloadT',t)
+  // }
+  if(localStorage.getItem("loginTime") && localStorage.getItem('auth')){
     openLoginTimer()
   }
 }
@@ -195,10 +193,23 @@ export const doPageEventListener=function(){
   window.addEventListener('beforeunload',(e)=>{
     console.log('beforeunload')
     let t = new Date().getTime() - timeStr
+    // const unloadT = sessionStorage.getItem('unloadT')
     const IsActive = sessionStorage.getItem('IsActive')
-    if(Number(IsActive)){
-      sessionStorage.setItem('unloadT',t)
-    }
+    console.log("init",IsActive);
+    // if(unloadT){
+      //console.log('刷新该页呆了时长',unloadT)
+      // sessionStorage.removeItem('unloadT')
+      // sessionStorage.setItem('preTitle',document.title)
+      if(Number(IsActive)){
+        endCalc('unload',t)
+      }
+    // }
+    // timeStr = new Date().getTime()
+    // optionTimeCalc()
+    // const IsActive = sessionStorage.getItem('IsActive')
+    // if(Number(IsActive)){
+      // sessionStorage.setItem('unloadT',t)
+    // }
   })
 
   //刷新离开页面
@@ -207,7 +218,7 @@ export const doPageEventListener=function(){
     recordActiveLoginFun()
     // 猜测在unload这里 浏览器不会等待异步返回 清除工作在这进行
     clearInterval(intervalTimer)
-    localStorage.removeItem('loginTime')
+    // localStorage.removeItem('loginTime')
   })
 
   //popstate会在router.before/afterEach 之前触发,所以这里不对计时操作,操作放到before/afterEach
@@ -242,29 +253,6 @@ export const doPageEventListener=function(){
     optionTimeCalc()
   })
   
-  //页面监听
-  /* document.addEventListener('visibilitychange', function () {
-    // 用户离开了当前页面
-    if (document.visibilityState === 'hidden') {
-      console.log('hidden')
-      const IsActive = sessionStorage.getItem('IsActive')
-      if(Number(IsActive)){
-        let t = new Date().getTime() - timeStr
-        timeStr = new Date().getTime()
-        endCalc('hidden',t)
-      }
-    }
-  
-    // 用户打开或回到页面
-    if (document.visibilityState === 'visible') {
-      console.log('visible')
-      const IsActive = sessionStorage.getItem('IsActive')
-      if(IsActive==='0'){
-        timeStr = new Date().getTime()
-        optionTimeCalc()
-      }
-    }
-  }); */
   document.addEventListener('click',(e)=>{
 
     //console.log('click',e,e.composedPath())
@@ -274,6 +262,7 @@ export const doPageEventListener=function(){
     if(contentIndex===-1) return 
     //console.log('合法的click')
     const IsActive = sessionStorage.getItem('IsActive')
+    console.log(IsActive,'IsActive');
     if(Number(IsActive)===0){
       optionTimeCalc()
     }else{

+ 1 - 0
src/views/Home.vue

@@ -799,6 +799,7 @@ export default {
             localStorage.setItem("AdminName", "");
             localStorage.setItem("ManageType", "");
             localStorage.setItem("RoleIdentity", "");
+            localStorage.setItem("loginTime", "");
 
             that.$router.push("/login");
           }, 10);

+ 5 - 0
src/views/Login.vue

@@ -443,6 +443,11 @@ export default {
             localStorage.setItem("ManageType", res.Data.Authority);
             localStorage.setItem("AdminId", res.Data.AdminId);
             localStorage.setItem("AdminName", res.Data.AdminName);
+            localStorage.setItem("loginTime",new Date())
+            // 清除最近登录时长
+            recordActiveLogin({ActiveTime:0}).then(res=>{
+                if(res.Ret!==200) return
+            })
         },
         //根据角色判断应该进入系统的哪个页面,进入系统
         async loginSys(res){

+ 17 - 7
src/views/dataEntry_manage/databaseComponents/batchComptedDialog.vue

@@ -15,7 +15,7 @@
 				:src="$icons.computed"
 				style="color: #fff; width: 16px; height: 16px; margin-right: 5px"
 			/>
-			<span style="font-size: 16px">{{ switchType.get(type) }}</span>
+			<span style="font-size: 16px">{{ titleMap.get(type) }}</span>
 		</div>
 
     <div class="cont">
@@ -84,7 +84,7 @@
 					<selectUnit 
 						v-model="list.unit" 
 						style="width: 15%;margin: 0 10px" 
-						:disabled="[6,7,32,33].includes(type)"
+						:disabled="[6,7,32,33,75].includes(type)"
 					/>
           <el-input
             v-if="[8,12,13,39,43,44].includes(type)"
@@ -99,7 +99,7 @@
 						placeholder="请选择频率"
 						style="width: 20%"
 						clearable
-            :disabled="[6,7,32,33,5,42,61,64,63,66].includes(type)"
+            :disabled="[6,7,32,33,5,42,61,64,63,66,75].includes(type)"
 					>
 						<el-option
 							v-for="item in frequencyArr"
@@ -119,7 +119,7 @@
 				style="margin-right: 20px"
 				@click="saveHandle"
 				:loading="loading"
-				>{{loading ? '计算中...' : save_txts.get(type)}}</el-button
+				>{{loading ? '计算中...' : saveBtnMap.get(type)}}</el-button
 			>
 			<el-button type="primary" plain @click="cancelHandle('cancel')">取消</el-button>
 		</div>
@@ -199,7 +199,7 @@ export default {
 				},
       ],
 
-			switchType: new Map([
+			titleMap: new Map([
 				[6,'同比值'],
 				[7,'同差值'],
 				[8,'N数值移动平均计算'],
@@ -220,8 +220,9 @@ export default {
 				[64,'累计值转月/季值'],
 				[65,'累计值'],
 				[66,'累计值'],
+				[75,'日均值']
 			]),//标题
-			save_txts: new Map([
+			saveBtnMap: new Map([
 				[6,'同比值计算'],
 				[7,'同差值计算'],
 				[8,'移动平均计算'],
@@ -242,6 +243,7 @@ export default {
 				[64,'转季值计算'],
 				[65,'累计值计算'],
 				[66,'年初至今计算'],
+				[75,'日均值计算']
 			]),//保存文案
 			unitArr,
 			options: [],
@@ -327,6 +329,7 @@ export default {
             list.targetName = default_opt.targetName;
             list.unit = default_opt.unit;
             list.frequency = default_opt.frequency;
+						list.menu = default_opt.menu||0
 					}
 				});
 
@@ -436,7 +439,7 @@ export default {
       let params = filterArr.map(item => ({
         CalculateId: item.tag,
         CalculateInfo: {
-          ClassifyId: item.menu[item.menu.length - 1],
+          ClassifyId: Array.isArray(item.menu)?item.menu[item.menu.length - 1]:item.menu,
           EdbName: item.targetName,
           Formula: String(item.n_num),
           Frequency:item.frequency,
@@ -583,6 +586,13 @@ export default {
 						unit: '无',
 						frequency: obj.Frequency
 					}
+				case 75: 
+					return {
+						targetName: `${obj.EdbName}日均值`,
+						unit: obj.Unit,
+						frequency: obj.Frequency,
+						menu: obj.ClassifyId,
+					}
 			}
     }  
 	},

+ 19 - 10
src/views/dataEntry_manage/databaseComponents/operationDialog.vue

@@ -15,7 +15,7 @@
 				:src="$icons.computed"
 				style="color: #fff; width: 16px; height: 16px; margin-right: 5px"
 			/>
-			<span style="font-size: 16px">{{ (operationForm.edb_id ? (operationForm.view ? '查看' : '编辑') : '') + switchType.get(type) }}</span>
+			<span style="font-size: 16px">{{ (operationForm.edb_id ? (operationForm.view ? '查看' : '编辑') : '') + titleMap.get(type) }}</span>
 		</div>
 		<div class="dialog-main">
 
@@ -163,7 +163,7 @@
 							<selectUnit 
 								v-model="formData.unit" 
 								style="width: 340px" 
-								:disabled="!operationForm.edb_id&&[6,7].includes(type)"
+								:disabled="!operationForm.edb_id&&[6,7,75].includes(type)"
 							/>
 						</el-form-item>
 						<el-form-item label="指标目录" prop="menu">
@@ -181,7 +181,7 @@
 								placeholder="请选择频度"
 								style="width: 340px"
 								clearable
-								:disabled="[5,14,61,63].includes(type)||(!operationForm.edb_id&&[6,7].includes(type))"
+								:disabled="[5,14,61,63].includes(type)||(!operationForm.edb_id&&[6,7,75].includes(type))"
 							>
 								<el-option
 									v-for="item in frequencyArr"
@@ -237,7 +237,7 @@
 				style="margin-right: 20px"
 				@click="saveHandle"
 				:loading="loading"
-				>{{loading ? '计算中...' : operationForm.edb_id ? '保存' : save_txts.get(type)}}</el-button
+				>{{loading ? '计算中...' : operationForm.edb_id ? '保存' : saveBtnMap.get(type)}}</el-button
 			>
 			<el-button type="primary" plain @click="cancelHandle('cancel')">取消</el-button>
 		</div>
@@ -359,7 +359,7 @@ export default {
 					key: 'SourceName',
 				},
 			],
-			switchType: new Map([
+			titleMap: new Map([
 				[5,'累计值转月/季值'],
 				[6,'同比值'],
 				[7,'同差值'],
@@ -375,8 +375,9 @@ export default {
 				[61,'累计值转月/季值'],
 				[62,'累计值'],
 				[63,'累计值'],
+				[75,'日均值']
 			]),//标题
-			save_txts: new Map([
+			saveBtnMap: new Map([
 				[5,'转月值计算'],
 				[6,'同比值计算'],
 				[7,'同差值计算'],
@@ -391,6 +392,7 @@ export default {
 				[61,'转季值计算'],
 				[62,'累计值计算'],
 				[63,'年初至今计算'],
+				[75,'日均值计算'],
 			]),//保存文案
 			formData: {
 				targetName:'',
@@ -605,7 +607,7 @@ export default {
 					Source: this.type,
 					EdbName: this.formData.targetName,
 					Unit: this.formData.unit,
-					ClassifyId: this.formData.menu[this.formData.menu.length - 1],
+					ClassifyId: Array.isArray(this.formData.menu)?this.formData.menu[this.formData.menu.length - 1]:this.formData.menu,
 					Frequency: this.formData.frequency,
 					Formula: valueMap[this.type] ? String(this.formData[valueMap[this.type]]) : String(this.formData.n_num),
 					FromEdbInfoId: this.select_target,
@@ -688,13 +690,20 @@ export default {
 				61:  obj.EdbName,
 				62:  obj.EdbName,
 				63:  obj.EdbName,
+				75: `${obj.EdbName}日均值`
+			}
+			
+			let frequerncyMap = {
+				14: '日度',
+				61: '季度',
+				62: ''
 			}
 
 			this.formData = {
 				targetName: name_map[this.type] || '',
-				frequency: this.type === 14 ? '日度' : this.type === 61 ? '季度' : this.type === 62 ? '' : obj.Frequency,
-				unit: [5,8,14,7,35].includes(this.type) ? obj.Unit : '无',
-				menu:'',
+				frequency: frequerncyMap[this.type] || obj.Frequency,
+				unit: [5,8,14,7,35,75].includes(this.type) ? obj.Unit : '无',
+				menu: this.type===75 ? obj.ClassifyId : '',
 				n_num: 1,
 				moveType: 1,
 				moveUnit: '天',

+ 16 - 1
src/views/dataEntry_manage/databaseComponents/util.js

@@ -102,6 +102,10 @@ export const computedTypes = [
 	{
 		name:'指数修匀',
 		type:'alpha'
+	},
+	{
+		name:'日均值',
+		type: 75
 	}
 ]
 
@@ -142,6 +146,10 @@ export const computedBatchTypes = [
 	{
 		name:'指数修匀',
 		type:'alpha'
+	},
+	{
+		name:'日均值',
+		type: 75
 	}
 ]
 
@@ -418,5 +426,12 @@ export const formulaTip = new Map([
 	['alpha',`指数修匀计算公式:<br>
 	1、设定指数修匀值序列的初始值=原来时间序列的初始值 <br>
 	2、选择平滑系数alpha值:在0-1之间,开区间 <br>
-	3、本期指数修匀值=alpha*本期实际值+(1-alpha)*上期指数修匀值`]
+	3、本期指数修匀值=alpha*本期实际值+(1-alpha)*上期指数修匀值`],
+	[75,`日均值计算公式:<br>
+	1、年度值转日均值=年度值/对应年份天数 <br>
+	2、半年度值转日均值=半年度值/对应半年度天数 <br>
+	3、季度值转日均值=季度值/对应季度天数 <br>
+	4、月度值转日均值=月度值/对应月度天数 <br>
+	5、旬度值转日均值=旬度值/对应旬度天数 <br>
+	6、周度值转日均值=周度值/7`]
 ])

+ 2 - 2
src/views/dataEntry_manage/databaseList.vue

@@ -364,7 +364,7 @@
 		</el-dialog>
 		<!-- 转月值 同比 同差 平均值弹窗 -->
 		<operationDialog
-			:isOperation="([5,6,7,8,12,13,14,22,35,51,52,61,62,63].includes(computed_type) || (computed_type===40&&operationForm.view)) && computed_source===1"
+			:isOperation="([5,6,7,8,12,13,14,22,35,51,52,61,62,63,75].includes(computed_type) || (computed_type===40&&operationForm.view)) && computed_source===1"
 			:type="computed_type"
 			:operationForm="operationForm"
 			@cancel="computed_type=0"
@@ -416,7 +416,7 @@
 
 		<!-- 批量计算弹窗 -->
 		<batchComputedDialog
-			:isBatchComputed="[6,7,8,12,13,14,5,61,62,63].includes(computed_type) && computed_source===2"
+			:isBatchComputed="[6,7,8,12,13,14,5,61,62,63,75].includes(computed_type) && computed_source===2"
 			:type="computed_type"
 			@cancel="computed_type=0"
 			@addCallBack="addComputedCallBack"

+ 1 - 1
src/views/mychart_manage/index.vue

@@ -434,7 +434,7 @@ export default {
     getClassify() {
       mychartInterface.classifyList().then((res) => {
         if (res.Ret !== 200) return;
-        this.chart_lang = res.Data.Language === 'EN' ? 'en' : 'ch';
+        this.chart_lang = res.Data&&res.Data.Language === 'EN' ? 'en' : 'ch';
 
         this.classifyList = res.Data ? res.Data.List.map(item => ({
           ...item,

+ 4 - 4
src/views/predictEdb_manage/components/operationDialog.vue

@@ -15,7 +15,7 @@
 				:src="$icons.computed"
 				style="color: #fff; width: 16px; height: 16px; margin-right: 5px"
 			/>
-			<span style="font-size: 16px">{{ (operationForm.edb_id ? (operationForm.view ? '查看' : '编辑') : '') + switchType.get(type) }}</span>
+			<span style="font-size: 16px">{{ (operationForm.edb_id ? (operationForm.view ? '查看' : '编辑') : '') + titleMap.get(type) }}</span>
 		</div>
 		<div class="dialog-main">
 			
@@ -264,7 +264,7 @@
 				style="margin-right: 20px"
 				@click="saveHandle"
 				:loading="loading"
-				>{{loading ? '计算中...' : operationForm.edb_id ? '保存' : save_txts.get(type)}}</el-button
+				>{{loading ? '计算中...' : operationForm.edb_id ? '保存' : saveBtnMap.get(type)}}</el-button
 			>
 			<el-button type="primary" plain @click="cancelHandle('cancel')">取消</el-button>
 		</div>
@@ -372,7 +372,7 @@ export default {
 					key: 'SourceName',
 				},
 			],
-			switchType: new Map([
+			titleMap: new Map([
 				[42,'累计值转月/季值'],
 				[32,'同比值'],
 				[33,'同差值'],
@@ -390,7 +390,7 @@ export default {
 				[69,'标准差'],
 				[70,'百分比'],
 			]),//标题
-			save_txts: new Map([
+			saveBtnMap: new Map([
 				[42,'转月值计算'],
 				[32,'同比值计算'],
 				[33,'同差值计算'],

+ 3 - 3
src/views/predictEdb_manage/predictEdb.vue

@@ -692,10 +692,10 @@ export default {
 		search_txt(newval) {
 			if(newval) {
 				let search_obj = this.searchOptions.find(_ => _.EdbInfoId === newval);
-				let deep_arr = _.cloneDeep(this.treeData);
+				// let deep_arr = _.cloneDeep(this.treeData);
 				// 查找图表的分类父级id
-				let arr = this.findParentNodeHandle(deep_arr, search_obj.ClassifyId).reverse(); // 父的父的父-父的父-父
-				this.defaultShowNodes = arr;
+				// let arr = this.findParentNodeHandle(deep_arr, search_obj.ClassifyId).reverse(); // 父的父的父-父的父-父
+				// this.defaultShowNodes = arr;
 				this.select_node = search_obj.UniqueCode;
 				this.$refs.treeRef.setCurrentKey(this.select_node);
 				// 重置筛选状态

+ 1 - 0
src/views/resetpassword.vue

@@ -183,6 +183,7 @@ export default {
                 localStorage.setItem("AdminName", "");
                 localStorage.setItem("RoleIdentity", "");
                 localStorage.setItem("ManageType", "");
+                localStorage.setItem("loginTime", "");
                 that.$router.push({ path: "/login" });
               }, 1000);
             }