浏览代码

Merge branch 'master' of http://smartcost.f3322.net:3000/SmartCost/YangHuCost

TonyKang 6 年之前
父节点
当前提交
96de86272b

+ 37 - 0
logs/online_logs.js

@@ -0,0 +1,37 @@
+/**
+ * Created by zhang on 2019/4/12.
+ */
+module.exports = {
+    saveOnlineTime:saveOnlineTime
+};
+
+let mongoose = require("mongoose");
+import moment from "moment";
+let logs_model = mongoose.model("online_logs");
+
+async function saveOnlineTime(req) {
+    let interval_time = 10 * 60 *1000;
+    let start = req.session.online_start_time;
+    let end = + new Date();
+    let online_times =  end - start;
+    //1秒内只记一次就好
+    if(online_times < 500) return;//如果间隔太短,则忽略
+    if(online_times > interval_time ){//如果间隔超过有效时长,则不累加这次时长,从头开始算
+        req.session.online_start_time = end;
+        return
+    }
+    if(!req.session.sessionUser&&!req.session.sessionCompilation) return;
+    let dataString = moment(end).format('YYYY-MM-DD');
+    let condition = {userID:req.session.sessionUser.id,compilationID:req.session.sessionCompilation._id,dateString:dataString};
+    let record = await logs_model.findOne(condition);
+    if(record){ //如果找到,则累加
+        await logs_model.update(condition,{$inc:{'online_times' : online_times }});
+    }else {//如果没找到,则新增一条记录
+        condition["online_times"] = online_times;
+        let today = moment(dataString).toDate();
+        condition["dataTime"] = +today;
+        await logs_model.create(condition);
+    }
+    req.session.online_start_time = end;
+    console.log(`登录时长累加-------${online_times}毫秒`);
+}

+ 17 - 0
modules/all_models/online_logs.js

@@ -0,0 +1,17 @@
+/**
+ * Created by zhang on 2019/4/12.
+ */
+//用户在线时长统计
+
+let mongoose = require("mongoose");
+let Schema = mongoose.Schema;
+
+// 表结构
+let schema = {
+    userID: String,
+    compilationID: String,
+    dateString: String,
+    dataTime:Number,//dateString转换回毫秒数对应的数值,方便查询
+    online_times: Number
+};
+mongoose.model("online_logs", new Schema(schema, {versionKey: false}),"online_logs");

+ 5 - 2
modules/ration_glj/facade/glj_calculate_facade.js

@@ -208,7 +208,8 @@ async function getMixRatioMap(glj,gljList,coeList,assList,mixRatioMap) {//生成
     for(let m of mixList){
         if(glj.createType ==  'replace'&& glj.mIndexObj){//如果是替换过的工料机,要造一条加的数据去补回下面的减数据
             //与下面的减相对应,如果有没被引用子组成物工料机,会少一条加的数据,这样,那条没被引用的消耗量会被减为0
-            addToMixMap(m,mixRatioMap,glj.rationItemQuantity,0);
+            addToMixMap(m,mixRatioMap,assCoeQuantity,0); //addToMixMap(m,mixRatioMap,glj.rationItemQuantity,0); -- 2019-04-15 和下面的减相对做修改
+
         }
         if(!noCustomQuantiyt(glj)) {//有自定义消耗量才做正常的计算处理
             addToMixMap(m,mixRatioMap,glj.customQuantity,assCoeQuantity);
@@ -218,7 +219,9 @@ async function getMixRatioMap(glj,gljList,coeList,assList,mixRatioMap) {//生成
         let t_con_key = gljUtil.getIndex(glj.mIndexObj);
         let tmixList = await mixRatioModel.find({"unit_price_file_id":unitPriceFileId,'connect_key':t_con_key});
         for(let tm of tmixList ){
-            addToMixMap(tm,mixRatioMap,0,glj.rationItemQuantity);
+             addToMixMap(tm,mixRatioMap,0,assCoeQuantity); //addToMixMap(tm,mixRatioMap,0,glj.rationItemQuantity);
+            // -- 2019-04-15 修改bugs 这里把glj.rationItemQuantity 改成assCoeQuantity。 定额下组成物的消耗量要减去父工料机经过辅助定额或者子目换算后的对应的增加量
+
         }
     }
     function addToMixMap(m,map,cust,ass,isReplace = false) {

+ 1 - 0
modules/users/controllers/login_controller.js

@@ -218,6 +218,7 @@ class LoginController {
             console.log(error);
             return response.json({error: 1, msg: error});
         }
+        request.session.online_start_time = +new Date();
         console.log(`${request.session.sessionUser.real_name}--id:${request.session.sessionUser.id}--登录了系统`);
         response.json({
             error: 0,

+ 2 - 0
public/web/common_util.js

@@ -58,9 +58,11 @@ function seqString(num,length){
 };
 
 function customRowHeader(sheet, dataLength) {
+    sheet.suspendPaint();   //提升焦点变换性能 2019年4月15日
     for (let i = 0; i < dataLength; i++) {
         sheet.setValue(i, 0, `F${i + 1}`, GC.Spread.Sheets.SheetArea.rowHeader);
     }
+    sheet.resumePaint();   //提升焦点变换性能 2019年4月12日
 };
 
 function changePropNames(object, oldNames, newNames) {

+ 5 - 4
public/web/slideResize.js

@@ -38,8 +38,8 @@ const SlideResize = (function() {
             otherPercentWidth = otherDecimalWidth * 100 + '%';
         resize.css('width', resizePercentWidth);
         other.css('width', otherPercentWidth);
-
-
+        console.log(other)
+        console.log(otherPercentWidth)
     }
 
     let mouseMoveCount = 0;
@@ -72,10 +72,10 @@ const SlideResize = (function() {
                 let moveSize = e.clientX - startPoint;
                 leftChange = leftWidth + moveSize;
                 leftChange = leftChange < limit.min ? limit.min : leftChange;
-                leftChange = leftChange > limitMax ? limitMax - 5 : leftChange;
+                leftChange = leftChange > limitMax ? limitMax  : leftChange; //2019-04-15  原先是 limitMax - 5,造成有部分空白
                 rightChange = rightWidth - moveSize;
                 rightChange = rightChange < limit.min ? limit.min : rightChange;
-                rightChange = rightChange > limitMax ? limitMax - 5 : rightChange;
+                rightChange = rightChange > limitMax ? limitMax  : rightChange;//2019-04-15  原先是 limitMax - 5,造成有部分空白
                 let leftPercentWidth = leftChange / eleObj.parent.width() * 100 + '%',
                     rightPercentWidth = rightChange / eleObj.parent.width() * 100 + '%';
                 eleObj.left.css('width', leftPercentWidth);
@@ -107,6 +107,7 @@ const SlideResize = (function() {
             let cache = getLocalCache(`${module}${ele.attr('id')}Width`);
             if (cache) {
                 ele.css('width', cache);
+                console.log(ele)
             }
         }
         for (let resize of resizes) {

+ 4 - 2
server.js

@@ -23,6 +23,8 @@ fileUtils.getGlobbedFiles('./modules/all_models/*.js').forEach(function(modelPat
 //config.setupCache();
 let cfgCacheUtil = require("./config/cacheCfg");
 cfgCacheUtil.setupDftCache();
+let online_logs = require("./logs/online_logs");
+
 
 let app = express();
 let _rootDir = __dirname;
@@ -54,7 +56,7 @@ app.use(session({
 }));
 
 // 登录状态全局判断
-app.use(function (req, res, next) {
+app.use(async function (req, res, next) {
     let url = req.originalUrl;
     // if (/^\/login/.test(url) || /\.map|\.ico$/.test(url) || /^\/sms/.test(url) || /^\/cld/.test(url) || /^\/captcha/.test(url)  || /^\/accountIsPro/.test(url)) {
     if (/^\/login/.test(url) || /\.map|\.ico$/.test(url) || /^\/sms/.test(url) || /^\/cld/.test(url) || /^\/captcha/.test(url)) {
@@ -87,10 +89,10 @@ app.use(function (req, res, next) {
             req.session.lastPage = url;
             return res.redirect('/login');
         }
+        //await online_logs.saveOnlineTime(req);//记录登录时长
         next();
     }
 });
-
 //加载路由文件
 fileUtils.getGlobbedFiles('./modules/**/routes/*.js').forEach(function(modelPath) {
     require(path.resolve(modelPath))(app);

+ 1 - 1
web/building_saas/main/js/controllers/material_controller.js

@@ -181,7 +181,7 @@ let MaterialController = {
         $("#subSpread").removeClass("ration_glj_spread");
         $("#subSpread").css("width",""); //左右拖动调整表格大小的时候会设置css属性,所以隐藏这个div的时候也要把这个属性给去掉
         $("#replaceM").hide();
-        refreshSubSpread();
+        //refreshSubSpread();   //提升焦点变换性能 2019年4月15日
     },
     showReplaceSpread:function(node){
         $("#replaceM").addClass("ovf-hidden");

+ 1 - 0
web/building_saas/main/js/views/glj_view.js

@@ -16,6 +16,7 @@ var gljOprObj = {
     GLJSelection: [],
     selectedGLJClass: null,
     parentNodeIds: {},
+    preActiveTab: '', //提升焦点变换性能 2019年4月15日
     activeTab: '#linkGLJ',
     rationTab:'#linkGLJ',
     billsTab:'#linkGCLMX',

+ 1 - 1
web/building_saas/main/js/views/material_calc_view.js

@@ -401,7 +401,7 @@ materialCalcObj = {
         if($("#mix_ratio_sheet").is(':visible')) return ;//如果是组成物计算界面,返回
         let mr_sideResizeEles = this.getSideResize();
         SlideResize.loadHorizonWidth(mr_sideResizeEles.eleObj.module,
-            [rg_sideResizeEles.eleObj.resize], [mr_sideResizeEles.eleObj.left, mr_sideResizeEles.eleObj.right],null,2);
+            [mr_sideResizeEles.eleObj.resize], [mr_sideResizeEles.eleObj.left, mr_sideResizeEles.eleObj.right],null,2);
         $("#spreadTabDiv").width( $('#calcDiv').width() - mr_sideResizeEles.eleObj.resize.width() - 32)
     }
 };

+ 18 - 4
web/building_saas/main/js/views/sub_view.js

@@ -9,6 +9,7 @@
 
 let subSpread = null;
 let subObj = {
+    fisrtLinked: true,  //提升焦点变换性能 2019年4月15日
     TZJNRrePercent:null,
     showGljSubTab:false,
     initSubSpread:function () {
@@ -124,7 +125,9 @@ let subObj = {
     showGljSubTabData:function () {
         this.initGljSubTab();
         zmhs_obj.showDatas();
-        refreshSubSpread();
+        if (gljOprObj.activeTab !== gljOprObj.preActiveTab) {   //提高焦点变换性能 2019年4月15日
+            refreshSubSpread();
+        }
     }
 };
 
@@ -134,13 +137,19 @@ $("#linkGLJ").click(function(){
     $("#subItems").children().hide();//控制显示subSpread,隐藏特征及内容spread
     //show
     //MaterialController.showReplaceDiv();
-    subObj.showGljSubTabData();
+    //subObj.showGljSubTabData();   //提升焦点变换性能 2019年4月15日
     $("#subSpread").show();
     $("#itemTextDiv").show();
     $("#gljItemTab").show();
     subSpread.options.allowUserDragFill = false;
-    refreshSubSpread();
+    //refreshSubSpread();   //提升焦点变换性能 2019年4月15日
     subSpread.setActiveSheetIndex(0);
+    //提高焦点变换性能 2019年4月15日--
+    if (!subObj.fisrtLinked) {
+        gljOprObj.preActiveTab = gljOprObj.activeTab;
+    }
+    subObj.fisrtLinked = false;
+    //--
     gljOprObj.activeTab='#linkGLJ';
     gljOprObj.setNodeShowTab();
 });
@@ -161,8 +170,9 @@ $("#linkGCLMX").click(function(){
     MaterialController.hideReplaceDiv();
     $("#subSpread").show();
     subSpread.options.allowUserDragFill = true;
-    refreshSubSpread();
+    //refreshSubSpread(); //提升焦点变换性能 2019年4月15日
     subSpread.setActiveSheetIndex(1);
+    gljOprObj.preActiveTab = gljOprObj.activeTab;   //提升焦点变换性能 2019年4月15日
     gljOprObj.activeTab='#linkGCLMX';
     gljOprObj.setNodeShowTab();
 });
@@ -179,6 +189,7 @@ $("#linkJSCX").click(function(){        // 计算程序
         projectObj.mainController.tree.selected = projectObj.mainController.tree.firstNode();
     let sel = projectObj.mainController.tree.selected;
     calcProgramObj.refreshCalcProgram(sel, 3);
+    gljOprObj.preActiveTab = gljOprObj.activeTab;   //提升焦点变换性能 2019年4月15日
     gljOprObj.activeTab='#linkJSCX';
     gljOprObj.setNodeShowTab();
 });
@@ -190,6 +201,7 @@ $("#linkZMHS").click(function(){        // 子目换算
     $("#tabZMHS").show();
     zmhs_obj.loadSideResize();
     refreshSubSpread();
+    gljOprObj.preActiveTab = gljOprObj.activeTab;   //提升焦点变换性能 2019年4月15日
     gljOprObj.activeTab='#linkZMHS';
     gljOprObj.setNodeShowTab();
 });
@@ -197,12 +209,14 @@ $("#linkMBZM").click(function(){        // 模板子目
     $("#subItems").children().hide();
     $("#tabMBZM").show();
     refreshSubSpread();
+    gljOprObj.preActiveTab = gljOprObj.activeTab;   //提升焦点变换性能 2019年4月15日
     gljOprObj.activeTab='#linkMBZM';
     gljOprObj.setNodeShowTab();
 });
 
 //清单精灵
 $('#linkQDJL').click(function () {
+    gljOprObj.preActiveTab = gljOprObj.activeTab;   //提升焦点变换性能 2019年4月15日
     gljOprObj.activeTab='#linkQDJL';
     $("#subItems").children().hide();
     $('#qdjl').show();