瀏覽代碼

Merge branch '1.0.0_online' of http://smartcost.f3322.net:3000/SmartCost/ConstructionOperation into 1.0.0_online

zhongzewei 6 年之前
父節點
當前提交
751fe2e9a0

+ 2 - 2
Dockerfile

@@ -1,8 +1,8 @@
-FROM operationbase:latest
+FROM operationbase:2.0
 
 WORKDIR /ConstructionOperation
 
-RUN git pull http://192.168.1.12:3000/SmartCost/ConstructionOperation master
+COPY . /ConstructionOperation
 
 RUN mkdir tmp
 

+ 3 - 2
Dockerfile_pp

@@ -1,9 +1,10 @@
-FROM operationbase:latest
+FROM operationbase:2.0
 
 WORKDIR /ConstructionOperation
 
-RUN git pull http://192.168.1.12:3000/SmartCost/ConstructionOperation master
+COPY . /ConstructionOperation
 
+RUN mkdir tmp
 
 RUN cnpm install
 

+ 4 - 2
Dockerfile_qa

@@ -1,8 +1,10 @@
-FROM operationbase:latest
+FROM operationbase:2.0
 
 WORKDIR /ConstructionOperation
 
-RUN git pull http://192.168.1.12:3000/SmartCost/ConstructionOperation master
+COPY .  /ConstructionOperation
+
+RUN mkdir tmp
 
 RUN cnpm install
 

文件差異過大導致無法顯示
+ 4 - 1
config/config.js


+ 3 - 1
config/db/db_manager.js

@@ -49,7 +49,9 @@ module.exports = {
     connect:function (env="local") {
         var config = require("../config.js");
         var dbURL = 'mongodb://' + config[env].server + ":" + config[env].port + '/scConstruct';
-        if(config[env].options){
+        if(config[env].dbURL){
+            mg.connect(config[env].dbURL,{connectTimeoutMS: 20000,useMongoClient: true});
+        } else if(config[env].options){
             mg.connect(dbURL,config[env].options);
         }else {
             mg.connect(dbURL,{connectTimeoutMS: 20000,useMongoClient: true});//useMongoClient': true*! //报 DeprecationWarning: `open()` is deprecated in mongoose这个错

+ 9 - 1
modules/reports/facade/rpt_tpl_data_facade.js

@@ -14,6 +14,7 @@ module.exports = {
 
 function prepareProjectData(userId, prjId, filter, callback) {
     let rawDataObj = null;
+    let basicInformation = prjMdl.project.getBasicInfo(prjId);
     prjMdl.project.getUserProject(userId, prjId, function(err, msg, rst){
         if (!err) {
             rawDataObj = {};
@@ -21,7 +22,14 @@ function prepareProjectData(userId, prjId, filter, callback) {
             projectDataMdl.getFilterData(prjId, filter, function (results) {
                 if (results) {
                     rawDataObj.prjData = results;
-                    callback(false, 'Succeeded!', rawDataObj);
+                    basicInformation.then(function(basicRst) {
+                        if (basicRst !== null && basicRst !== undefined) {
+                            let doc = (rawDataObj.prj._doc)?rawDataObj.prj._doc:rawDataObj.prj;
+                            doc.property.basicInformation = basicRst;
+                        }
+                        callback(false, 'Succeeded!', rawDataObj);
+                    });
+                    // callback(false, 'Succeeded!', rawDataObj);
                 } else {
                     callback(true, 'No data were found!', null);
                 }

+ 22 - 0
modules/reports/rpt_component/jpc_rte.js

@@ -92,6 +92,28 @@ let JE = {
             }
         }
         return rst;
+    },
+    removeFieldValue: function (field, dataObj, valIdx) {
+        if (field.DataNodeName === "NA") {
+            if (field[JV.PROP_AD_HOC_DATA].length > valIdx && valIdx >= 0) {
+                field[JV.PROP_AD_HOC_DATA].splice(valIdx, 1);
+            }
+        } else {
+            if (dataObj[field.DataNodeName][field.DataSeq].length > valIdx && valIdx >= 0) {
+                dataObj[field.DataNodeName][field.DataSeq].splice(valIdx, 1);
+            }
+        }
+    },
+    insertFieldValue: function (field, dataObj, valIdx, newValue) {
+        if (field.DataNodeName === "NA") {
+            if (field[JV.PROP_AD_HOC_DATA].length > valIdx && valIdx >= 0) {
+                field[JV.PROP_AD_HOC_DATA].splice(valIdx, 0, newValue);
+            }
+        } else {
+            if (dataObj[field.DataNodeName][field.DataSeq].length > valIdx && valIdx >= 0) {
+                dataObj[field.DataNodeName][field.DataSeq].splice(valIdx, 0, newValue);
+            }
+        }
     }
 };
 

+ 23 - 5
modules/reports/util/rpt_excel_util.js

@@ -9,6 +9,7 @@ let jpcCmnHelper = require('../rpt_component/helper/jpc_helper_common');
 let DPI = jpcCmnHelper.getScreenDPI()[0];
 let fsUtil = require('../../../public/fsUtil');
 const dftHeadXml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>';
+const uuidV1 = require('uuid/v1');
 
 function writeContentTypes(sheets, isSinglePage) {
     let rst = [];
@@ -157,6 +158,9 @@ function writeStyles(stylesObj){
         if (strUtil.convertStrToBoolean(font[JV.FONT_PROPS[3]])) {
             rst.push('<b/>');
         }
+        if (strUtil.convertStrToBoolean(font[JV.FONT_PROPS[4]])) {
+            rst.push('<i/>');
+        }
         if (strUtil.convertStrToBoolean(font[JV.FONT_PROPS[5]])) {
             rst.push('<u/>');
         }
@@ -342,7 +346,8 @@ function writeSheets(pageData, paperSize, sharedStrList, stylesObj, isSinglePage
     return rst;
 }
 function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj, appointedMergeBand){
-    let rst = [], xPos = [], yPos = [], yMultiPos = [], headerStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
+    let rst = [], xPos = [], yPos = [], yMultiPos = [], currentMergeBorder = null,
+        headerStr = 'ABCDEFGHIJKLMNOPQRSTUVWXYZ';
     let currentPageMergePos = null; //在 JV.PAGING_OPTION_INFINITY 场合应用
     let private_pre_analyze_pos = function(){
         let cell, pos;
@@ -443,7 +448,8 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj, ap
             if (sheetFont) {
                 // if (font[JV.FONT_PROPS[0]] === sheetFont[JV.FONT_PROPS[0]] && font.size === Math.round(sheetFont[JV.FONT_PROPS[1]] * 3 / 4)
                 if (font[JV.FONT_PROPS[0]] === sheetFont[JV.FONT_PROPS[0]] && font.size === Math.floor(sheetFont[JV.FONT_PROPS[1]] * 3 / 4)
-                    && font[JV.FONT_PROPS[3]] === sheetFont[JV.FONT_PROPS[3]] && font[JV.FONT_PROPS[5]] === sheetFont[JV.FONT_PROPS[5]]) {
+                    && font[JV.FONT_PROPS[3]] === sheetFont[JV.FONT_PROPS[3]] && font[JV.FONT_PROPS[4]] === sheetFont[JV.FONT_PROPS[4]]
+                    && font[JV.FONT_PROPS[5]] === sheetFont[JV.FONT_PROPS[5]] ) {
                     hasFont = true;
                     rst = i;
                     break;
@@ -460,6 +466,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj, ap
             font.charset = 134;
             font.colorIdx = "8";
             font[JV.FONT_PROPS[3]] = sheetFont[JV.FONT_PROPS[3]]; //font bold
+            font[JV.FONT_PROPS[4]] = sheetFont[JV.FONT_PROPS[4]]; //font italic
             font[JV.FONT_PROPS[5]] = sheetFont[JV.FONT_PROPS[5]]; //font underline
             stylesObj.fonts.push(font);
             rst = stylesObj.fonts.length - 1;
@@ -502,7 +509,8 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj, ap
     };
     let private_chkAndGetMergeLine = function(cell, sheetBorder, borderStr, needFurtherChk) {
         let rst = 0,
-            mergeBorder = (sheetData)?sheetData[JV.PROP_PAGE_MERGE_BORDER]:pageData[JV.BAND_PROP_MERGE_BAND],
+            // mergeBorder = (sheetData)?sheetData[JV.PROP_PAGE_MERGE_BORDER]:pageData[JV.BAND_PROP_MERGE_BAND],
+            mergeBorder = currentMergeBorder,
             mergeBand = pageData[JV.BAND_PROP_MERGE_BAND]
         ;
         if (appointedMergeBand !== null) {
@@ -752,6 +760,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj, ap
         if (sheetData) {
             //current sheet data
             currentPageMergePos = sheetData[JV.PAGE_SPECIAL_MERGE_POS];
+            currentMergeBorder = sheetData[JV.PROP_PAGE_MERGE_BORDER];
             self_setDataEx(sheetData, yPos, 0);
         } else {
             //total data in one sheet
@@ -759,6 +768,7 @@ function writeSheet(pageData, sheetData, paperSize, sharedStrList, stylesObj, ap
             for (let i = 0; i < pageData.items.length; i++) {
                 let shtItemData = pageData.items[i];
                 currentPageMergePos = shtItemData[JV.PAGE_SPECIAL_MERGE_POS];
+                currentMergeBorder = shtItemData[JV.PROP_PAGE_MERGE_BORDER];
                 let tmpPos = yMultiPos[i];
                 cellIdx = 0;
                 self_setDataEx(shtItemData, tmpPos, cnt);
@@ -818,7 +828,7 @@ function mergeProperties(orgObj, newObj) {
 module.exports = {
     exportExcel: function (pageData, paperSize, fName, options, custSheetNames, custSheetMergeBands, callback) {
         let rptOptions = ({singlePage: false, fileName: 'report'});
-        if (options === 'true') {
+        if (options === 'true' || options === true) {
             rptOptions.singlePage = true;
         }
         let isSinglePage = rptOptions.singlePage;
@@ -891,7 +901,9 @@ module.exports = {
         zip_xl.file(file, data.join(''), {compression: 'DEFLATE'});
 
         if (fName) {
-            let newName = '' + (new Date()).valueOf();
+            // let newName = '' + (new Date()).valueOf();
+            let newName = uuidV1();
+
             zip.generateNodeStream({type:'nodebuffer',streamFiles:true})
                 .pipe(fs.createWriteStream(__dirname.slice(0, __dirname.length - 21) + '/tmp/' + newName + '.xlsx'))
                 .on('finish', function () {
@@ -931,6 +943,7 @@ module.exports = {
                 let offsetY = 0;
                 let mergeBand = {};
                 custMergeBands.push(pageDataArray[i][JV.BAND_PROP_MERGE_BAND]);
+                //备注:不同的报表有可能有不同的边框,如封面表就是无边框的
                 mergeBand[JV.PROP_LEFT] = [];
                 mergeBand[JV.PROP_RIGHT] = [];
                 mergeBand[JV.PROP_TOP] = [];
@@ -947,6 +960,11 @@ module.exports = {
                         mergeBand[JV.PROP_TOP].push(pos);
                         pos = pageDataArray[i].items[j][JV.PAGE_SPECIAL_MERGE_POS][JV.PROP_BOTTOM][0] + offsetY;
                         mergeBand[JV.PROP_BOTTOM].push(pos);
+                    } else if (pageDataArray[i].items[j][JV.PROP_PAGE_MERGE_BORDER]) {
+                        let pos = pageDataArray[i].items[j][JV.PROP_PAGE_MERGE_BORDER][JV.PROP_TOP] + offsetY;
+                        mergeBand[JV.PROP_TOP].push(pos);
+                        pos = pageDataArray[i].items[j][JV.PROP_PAGE_MERGE_BORDER][JV.PROP_BOTTOM] + offsetY;
+                        mergeBand[JV.PROP_BOTTOM].push(pos);
                     } else {
                         mergeBand[JV.PROP_TOP].push(pageDataArray[i][JV.BAND_PROP_MERGE_BAND][JV.PROP_TOP] + offsetY);
                         mergeBand[JV.PROP_BOTTOM].push(pageDataArray[i][JV.BAND_PROP_MERGE_BAND][JV.PROP_BOTTOM] + offsetY);

+ 53 - 0
modules/reports/util/rpt_tmp_file_sweep.js

@@ -0,0 +1,53 @@
+/**
+ * Created by Tony on 2018/7/27.
+ */
+
+let fs = require('fs');
+let cron = require('node-schedule');
+let remove_file_types = [".xlsx", ".pdf", ".jsp"];
+function chkIsRemoveType(file) {
+    let rst = false;
+    for (let fType of remove_file_types) {
+        if (file.indexOf(fType) === (file.length - fType.length)) {
+            rst = true;
+            break;
+        }
+    }
+    return rst;
+}
+let jobObj = {
+    createJob: function (rule, rootPath) {
+        let localRule = rule;
+        if (!localRule) {
+            // setup schedule rule
+            localRule = new cron.RecurrenceRule();
+            // 3:15AM, everyday
+            localRule.dayOfWeek = [1,2,3,4,5,6,0];
+            localRule.hour = 3;
+            localRule.minute = 15;
+        }
+        cron.scheduleJob(localRule, function(){
+            let path = rootPath;
+            fs.exists(path, function (exists) {
+                if (exists) {
+                    fs.readdir(path, function (err, files) {
+                        let currentTime = (new Date()).valueOf();
+                        let timeGap = currentTime - (1000 * 60 * 60 * 24 * 0.5); //half day before
+                        files.forEach(function(file,index){
+                            if (chkIsRemoveType(file)) {
+                                let curPath = path + "/" + file;
+                                fs.stat(curPath,function(err,data){
+                                    if (timeGap > data.mtime) {
+                                        fs.unlink(curPath);
+                                    }
+                                });
+                            }
+                        });
+                    })
+                }
+            })
+        });
+    }
+};
+
+export default jobObj;

+ 44 - 1
web/maintain/report/js/jpc_output.js

@@ -268,6 +268,33 @@ let JpcCanvasOutput = {
             }
         }
     },
+    highlightConflictArea: function (pageObj, pageIdx) {
+        if (pageObj && pageObj.items.length > 0 && pageObj.items.length >= pageIdx) {
+            let private_create_conflict_line = function () {
+                return {"LineWeight": "1", "DashStyle": "SOLID", "Color": "RED"};
+            };
+            let page = pageObj.items[pageIdx - 1],
+                styleConflict = {"Left": private_create_conflict_line(), "Right": private_create_conflict_line(), "Top": private_create_conflict_line(), "Bottom": private_create_conflict_line()}
+            ;
+            pageObj[JV.NODE_STYLE_COLLECTION]["ConflictCell"] = styleConflict;
+            let conflictIds = [];
+            for (let j = 0; j < page.cells.length; j++) {
+                if (conflictIds.indexOf(j) < 0) {
+                    let cell1 = page.cells[j];
+                    for (let k = j + 1; k < page.cells.length; k++) {
+                        let cell2 = page.cells[k];
+                        //判断area是否有交叉
+                        if (areaConflict(cell1[JV.PROP_AREA], cell2[JV.PROP_AREA])) {
+                            conflictIds.push(j);
+                            conflictIds.push(k);
+                            cell1[JV.PROP_STYLE] = "ConflictCell";
+                            cell2[JV.PROP_STYLE] = "ConflictCell";
+                        }
+                    }
+                }
+            }
+        }
+    },
     drawPageBorder: function(rptTpl, canvas, resolution) {
         let me = this;
         let size = me.getReportSizeInPixel(rptTpl, resolution);
@@ -295,4 +322,20 @@ let JpcCanvasOutput = {
         rst[1] = Math.round(resolution[0] * rst[1]);
         return rst;
     }
-};
+};
+
+function areaConflict(area1,area2) {
+    let maxX,maxY,minX,minY,
+        w1 = area1[JV.PROP_RIGHT] - area1[JV.PROP_LEFT],
+        w2 = area2[JV.PROP_RIGHT] - area2[JV.PROP_LEFT],
+        h1 = area1[JV.PROP_BOTTOM] - area1[JV.PROP_TOP],
+        h2 = area2[JV.PROP_BOTTOM] - area2[JV.PROP_TOP]
+    ;
+    //1. 求2个矩形的最小外包矩形
+    minX = (area1[JV.PROP_LEFT] <= area2[JV.PROP_LEFT]) ? area1[JV.PROP_LEFT] : area2[JV.PROP_LEFT];
+    minY = (area1[JV.PROP_TOP] <= area2[JV.PROP_TOP]) ? area1[JV.PROP_TOP] : area2[JV.PROP_TOP];
+    maxX = (area1[JV.PROP_RIGHT] >= area2[JV.PROP_RIGHT]) ? area1[JV.PROP_RIGHT] : area2[JV.PROP_RIGHT];
+    maxY = (area1[JV.PROP_BOTTOM] >= area2[JV.PROP_BOTTOM]) ? area1[JV.PROP_BOTTOM] : area2[JV.PROP_BOTTOM];
+    //2. 判断外包矩形与高与宽是否小于俩矩形的高与宽之和(这里的边界条件是小于,等于的话不算;而且是高与宽都得符合条件!)
+    return (maxX - minX < w1 + w2 && maxY - minY < h1 + h2);
+}

+ 39 - 17
web/maintain/report/js/rpt_tpl_helper.js

@@ -34,9 +34,40 @@ let tplHelper = {
         return rst;
     },
 
-    confirmAndCreateTpl: function(treeNode) {
-        if (zTreeOprObj.currentNode && zTreeOprObj.currentNode.nodeType == RT.NodeType.TEMPLATE) {
-            //
+    getJsTxt: function(destDom) {
+        let me = this;
+        if (destDom && me.reCombineRptTpl()) {
+            let rptTpl = zTreeOprObj.currentNode.rptTpl;
+            destDom.value = JSON.stringify(rptTpl, null, 4);
+        }
+    },
+
+    setFromJsTxt: function (srcDom) {
+        if (srcDom && zTreeOprObj.currentNode && zTreeOprObj.currentNode.refId > 0 &&
+            confirm("导入将覆盖原模板所有信息,请确认!")) {
+            try {
+                let rptTpl = JSON.parse(srcDom.value);
+                // JSON.format()
+                delete rptTpl["__v"];
+                delete rptTpl["_id"];
+                rptTpl["ID"] = zTreeOprObj.currentNode.rptTpl["ID"];
+                //以下从zTreeOprObj.chkAndRreshRefTpl中参考
+                zTreeOprObj.currentNode.rptTpl = rptTpl;
+                zTreeOprObj.currentNode.rptTpl[JV.NODE_MAIN_INFO][JV.NODE_MAIN_INFO_RPT_NAME] = zTreeOprObj.currentNode.name;
+                if (zTreeOprObj.currentNode.rptTpl["GROUP_KEY"]) {
+                    let grp_keys = zTreeOprObj.currentNode.rptTpl["GROUP_KEY"].split('_');
+                    if (grp_keys.length > 0) {
+                        grp_keys[1] = zTreeOprObj.currentNode.name;
+                    }
+                    zTreeOprObj.currentNode.rptTpl["GROUP_KEY"] = grp_keys.join("_");
+                }
+                tplHelper.refreshTplView(zTreeOprObj.currentNode.rptTpl);
+                displayMessage("导入成功!", "green", 1000, "id_after_js_load_lbl");
+            } catch (ex) {
+                console.log(ex);
+                // alert("导入失败!请仔细检查JS对象的正确性");
+                displayMessage("导入失败!请仔细检查JS对象的正确性!", "red", 3000, "id_after_js_load_lbl");
+            }
         }
     },
 
@@ -73,6 +104,8 @@ let tplHelper = {
             preHandleObj.hide_all_dom();
             //6. 计算式
             calculationTreeOprObj.iniTree(rptTpl);
+            //7. 刷白js对象text区域
+            document.getElementById('tplScriptTextContent').value = "";
             //9. 刷白预览区域
             let canvas = $('#tplCanvas')[0];
             JpcCanvasOutput.cleanCanvas(canvas);
@@ -84,26 +117,15 @@ let tplHelper = {
     saveRptTpl: function () {
         let me = this, params = null;
         if (me.reCombineRptTpl()) {
-            $("#id_after_saved_lbl")[0].style.color = "yellow";
-            $("#id_after_saved_lbl")[0].innerHTML = "正在保存...";
+            displayMessage("正在保存...", "yellow", 1000);
             let rptTpl = zTreeOprObj.currentNode.rptTpl;
             params = {};
             params.rptTpl = JSON.stringify(rptTpl);
             CommonAjax.postEx("report_tpl_api/updateRptTpl", params, 20000, true, function(result){
                     if (result) {
-                        //alert('update succeeded!')
-                        $("#id_after_saved_lbl")[0].style.color = "green";
-                        $("#id_after_saved_lbl")[0].innerHTML = "保存成功!";
-                        setTimeout(function(){
-                            $("#id_after_saved_lbl")[0].innerHTML = "";
-                        }, 1000);
+                        displayMessage("保存成功!", "green", 1000);
                     } else {
-                        // alert('update failed!');
-                        $("#id_after_saved_lbl")[0].style.color = "red";
-                        $("#id_after_saved_lbl")[0].innerHTML = "保存失败!";
-                        setTimeout(function(){
-                            $("#id_after_saved_lbl")[0].innerHTML = "";
-                        }, 2000);
+                        displayMessage("保存失败!", "red", 1000);
                     }
                 }, null, null
             );

+ 6 - 4
web/maintain/report/js/rpt_tpl_main.js

@@ -865,10 +865,12 @@ let userListObj = {
     }
 };
 
-function displayMessage(message, color, disappearTime) {
-    $("#id_after_saved_lbl")[0].style.color = color;
-    $("#id_after_saved_lbl")[0].innerHTML = message;
+function displayMessage(message, color, disappearTime, id) {
+    let domId = id;
+    if (!domId) domId = "id_after_saved_lbl";
+    $("#" + domId)[0].style.color = color;
+    $("#" + domId)[0].innerHTML = message;
     setTimeout(function(){
-        $("#id_after_saved_lbl")[0].innerHTML = "";
+        $("#" + domId)[0].innerHTML = "";
     }, disappearTime);
 }

+ 1 - 0
web/maintain/report/js/rpt_tpl_preview_util.js

@@ -192,6 +192,7 @@ let preview_util = {
                         }
                         JpcCanvasOutput.cleanCanvas(canvas);
                         JpcCanvasOutput.drawPageBorder(result, canvas, [96,96]);
+                        JpcCanvasOutput.highlightConflictArea(result, 1);
                         JpcCanvasOutput.drawToCanvas(result, canvas, 1);
                     } else {
                         alert('preview error!');

+ 6 - 0
web/maintain/report/rpt_tpl_detail.html

@@ -19,6 +19,10 @@
             <li class="nav-item">
                 <a class="nav-link p-1" data-toggle="tab" href="#rpttplformula" role="tab">计算式</a>
             </li>
+            <li class="nav-item">
+                <a class="nav-link p-1" data-toggle="tab" href="#rpttplscripttxt" role="tab">模板JS对象</a>
+            </li>
+
         </ul>
         <div class="tab-content">
             <!--模板信息-->
@@ -33,6 +37,8 @@
             <%include ./rpt_tpl_detail_pre_handle.html %>
             <!--计算式-->
             <%include ./rpt_tpl_detail_calculation.html %>
+            <!--java script 对象-->
+            <%include ./rpt_tpl_script_text.html %>
         </div>
     </div>
 </div>

+ 14 - 0
web/maintain/report/rpt_tpl_script_text.html

@@ -0,0 +1,14 @@
+<div class="tab-pane" id="rpttplscripttxt" role="tabpanel">
+    <div class="sub-button p-2">
+        <button class="btn btn-primary" onclick="tplHelper.getJsTxt(document.getElementById('tplScriptTextContent'))">生成JS文本</button>
+        <button class="btn btn-primary" onclick="tplHelper.setFromJsTxt(document.getElementById('tplScriptTextContent'))">导入JS文本</button>
+        <label id="id_after_js_load_lbl" style="color:yellowgreen;font-weight:bold">...</label>
+    </div>
+    <div class="main-data">
+        <div class="p-2" id="exprDetail">
+            <div class="form-group">
+                <textarea rows="35" cols="106" id="tplScriptTextContent"></textarea>
+            </div>
+        </div>
+    </div>
+</div>

+ 1 - 1
web/users/views/login/index.html

@@ -33,7 +33,7 @@
                 <div class="form-group">
                     <div class="input-group">
                         <div class="input-group-addon"><i class="glyphicon glyphicon-lock"></i></div>
-                        <input type="password" class="form-control input-lg"  placeholder="输入密码" id="password" name="password" value="admin1234">
+                        <input type="password" class="form-control input-lg"  placeholder="输入密码" id="password" name="password" value="">
                     </div>
                 </div>
                 <a class="btn btn-primary btn-lg btn-block" href="javascript:void(0);" id="login">登录</a>