Pārlūkot izejas kodu

报表新增工程类型属性(多选)

lishihao 1 gadu atpakaļ
vecāks
revīzija
aac70beb99

+ 25 - 0
web/maintain/report/css/main.css

@@ -294,3 +294,28 @@ body {
   bottom:0;
   left:0
 }
+.valuationSelector{
+     cursor: pointer;
+    position: absolute;
+    left: 105px;
+    top: 38px;
+    border: 1px solid #d9d9d9;
+    display: none;
+}
+.mutiSelector{
+    width: 130px;
+    margin: 0;
+    padding: 0 10px;
+}
+.mutiSelector li{
+    list-style: none;font-size: 16px;
+}
+.mutiSelector .checked{
+    background-color: #0275d8;
+    color: #fff;
+}
+.mutiSelector li:hover{
+    background-color: #0275d8;
+    color: #fff;
+    cursor: pointer;
+}

+ 18 - 13
web/maintain/report/html/rpt_tpl_dtl_info.html

@@ -80,20 +80,25 @@
                     <div class="input-group-addon">报表模板级别</div>
                     <select class="form-control input-sm" id="element_Flags_tplType" onchange="zTreeOprObj.onChangeFlag('rptTplType', this)"><option value ="NA">N/A</option><option value ="construct">建设项目级别</option><option value ="single">单项工程级别</option><option value ="unit">单位工程级别</option></select>
                 </div>
-                <div class="input-group col-2">
+                <div class="input-group col-4">
                     <div class="input-group-addon">工程类型</div>
-                    <select class="form-control input-sm" id="element_prjFlags_select"
-                        onchange="zTreeOprObj.onChangeFlag('valuationType', this)">
-                        <option value="NA">N/A</option>
-                        <option value="suggestion">建议估算</option>
-                        <option value="feasibility">可行性估算</option>
-                        <option value="rough">概算</option>
-                        <option value="bill">预算</option>
-                        <option value="three_bill_budget">三级清单预算</option>
-                        <option value="ration">清单预算</option>
-                        <option value="changeBudget">变更预算</option>
-                        <option value="settlement">结算</option>
-                    </select>
+                    <input class="form-control input-sm" id="element_prjFlags_select" 
+                        onchange="zTreeOprObj.onChangeFlag('valuationType', this)" style="display: none;">
+                    <input class="form-control input-sm" id="element_prjFlags_selectStr"
+                        readonly>
+                        <div id="valuationSelector" class="valuationSelector">
+                        <ul class="mutiSelector">
+                            <li id="valuationSelector_suggestion" value="suggestion">建议估算</li>
+                            <li id="valuationSelector_feasibility" value="feasibility">可行性估算</li>
+                            <li id="valuationSelector_rough" value="rough">概算</li>
+                            <li id="valuationSelector_bill" value="bill">预算</li>
+                            <li id="valuationSelector_three_bill_budget" value="three_bill_budget">三级清单预算</li>
+                            <li id="valuationSelector_ration" value="ration">清单预算</li>
+                            <li id="valuationSelector_changeBudget"  value="changeBudget">变更预算</li>
+                            <li id="valuationSelector_settlement" value="settlement">结算</li>
+                        </ul>
+                   
+                    </div>
                 </div>
             </div>
             <!--

+ 82 - 5
web/maintain/report/js/rpt_tpl_main.js

@@ -15,6 +15,19 @@ const
     NODE_LEVEL_COMPILATION_NEW = 1,
     NODE_LEVEL_USER = 0;
 
+// 工程类型枚举值
+const valuationSelectorMap = {
+    valuationSelector_NA: 'N/A',
+    valuationSelector_suggestion: '建议估算',
+    valuationSelector_feasibility: '可行性估算',
+    valuationSelector_rough: '概算',
+    valuationSelector_bill: '预算',
+    valuationSelector_three_bill_budget: '三级清单预算',
+    valuationSelector_ration: '清单预算',
+    valuationSelector_changeBudget: '变更预算',
+    valuationSelector_settlement: '结算'
+}
+
 let rptTplObj = {
     iniPage: function () {
         zTreeOprObj.getCompilationList();
@@ -839,7 +852,23 @@ let zTreeOprObj = {
             });
         }
     },
-
+    onMutiChangeFlag: function (flagProp, flagDom) {
+        let me = zTreeOprObj;
+        if (me.currentNode && me.currentNode.nodeType === RT.NodeType.TEMPLATE) {
+            if (!me.currentNode.hasOwnProperty("flags")) {
+                me.currentNode.flags = {};
+            }
+            me.currentNode.flags[flagProp] = flagDom[0].value.split(',');
+            let subTopNode = me.getParentNodeByNodeLevel(me.currentNode, NODE_LEVEL_COMPILATION_NEW + 1);
+            let topPNode = subTopNode.getParentNode();
+            let rawNode = me.buildSubRootNodeDoc(subTopNode);
+            me.updateSubNode(topPNode, rawNode, true, function (rst) {
+                if (!(rst)) {
+                    alert('修改标记:[' + flagProp + '] 失败!');
+                }
+            });
+        }
+    },
     createNewTpl: function () {
         let me = zTreeOprObj, params = {};
         if (me.currentNode && me.currentNode.nodeType === RT.NodeType.TEMPLATE) {
@@ -1016,12 +1045,26 @@ let zTreeOprObj = {
                         } else {
                             $("#element_Flags_budgetCalcType")[0].selectedIndex = 0;
                         }
+
                         if (me.currentNode.flags.hasOwnProperty('valuationType')) {
+                            $(".mutiSelector").find('li').removeClass('checked');
+                            let valuationTypeStr = '';
+                            let valuationTypeStrList = [];
                             let vType = me.currentNode.flags['valuationType'];
-                            let vtIdx = valuationTypes.indexOf(vType);
-                            $("#element_prjFlags_select")[0].selectedIndex = vtIdx + 1;
+                            if (vType instanceof Array) {
+                                for (let i = 0; i < vType.length; i++) {
+                                    $("#valuationSelector_" + vType[i]).addClass('checked');
+                                    valuationTypeStrList.push(valuationSelectorMap["valuationSelector_" + vType[i]]);
+                                }
+                                valuationTypeStr = valuationTypeStrList.join(',');
+                            } else if (vType) {
+                                $("#valuationSelector_" + vType).addClass('checked');
+                                valuationTypeStr = valuationSelectorMap["valuationSelector_" + vType];
+                            }
+                            $("#element_prjFlags_select")[0].value = vType;
+                            $("#element_prjFlags_selectStr")[0].value = valuationTypeStr;
                         } else {
-                            $("#element_prjFlags_select")[0].selectedIndex = 0;
+                            // $("#element_prjFlags_select")[0].selectedIndex = 0;
                         }
                         if (me.currentNode.flags.hasOwnProperty('rptTplType')) {
                             let val = me.currentNode.flags['rptTplType'];
@@ -1166,4 +1209,38 @@ function displayMessage(message, color, disappearTime, id) {
     setTimeout(function () {
         $("#" + domId)[0].innerHTML = "";
     }, disappearTime);
-}
+}
+
+$("#element_prjFlags_selectStr").on('click', function () {
+    if ($('#valuationSelector').visible) {
+        $('#valuationSelector').hide();
+    } else {
+        $('#valuationSelector').show();
+    }
+    return false;
+})
+
+$('#rpttplinfo').on('click', function () {
+    $('#valuationSelector').hide();
+
+})
+
+$('.mutiSelector').find('li').on('click', function (e) {
+    const hasChecked = $(this).hasClass('checked');
+    if (hasChecked) {
+        $(this).removeClass('checked');
+    } else {
+        $(this).addClass('checked');
+    }
+    const resultIDList = [];
+    const resultList = [];
+    $('.mutiSelector .checked').each(function (index, value) {
+        resultList.push(valuationSelectorMap[$(value).attr('id')]);
+        resultIDList.push($(value).attr('value'));
+    })
+    const result = resultList.join(',');
+    $('#element_prjFlags_selectStr').val(result);
+    $('#element_prjFlags_select').val(resultIDList);
+    zTreeOprObj.onMutiChangeFlag('valuationType', $('#element_prjFlags_select'));
+    return false;
+})