| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301 | 
							- 'use strict';
 
- /**
 
-  *
 
-  *
 
-  * @author Mai
 
-  * @date 2018/4/23
 
-  * @version
 
-  */
 
- $(document).ready(function () {
 
-     /**
 
-      * 判断是否是 加减乘除 符号
 
-      * @param value
 
-      * @returns {boolean}
 
-      */
 
-     const isOperate1 = function (value) {
 
-         const operatorString = "+-*/";
 
-         return operatorString.indexOf(value) > -1;
 
-     };
 
-     // 删除规则计算参数按钮是否显示
 
-     const refreshDelParamVisible = function () {
 
-         if ($('#rule').children().length > 1) {
 
-             $('#delParam').show();
 
-         } else {
 
-             $('#delParam').hide();
 
-         }
 
-     };
 
-     // 合成新增参数的html
 
-     const addParamHtml = function (html, param) {
 
-         if (!param || param.length === 0) { return; }
 
-         html.push('<span class="badge badge-light" title="' + param.text() + '"');
 
-         html.push(' name="' + param.text() + '"');
 
-         html.push(' code="' + param.attr('value') + '">');
 
-         html.push(param.text());
 
-         html.push('</span>');
 
-     };
 
-     // 弹窗设置指标计算规则
 
-     $('a[name=setRule]').click(function () {
 
-         const isOperator = function (value) {
 
-             const operatorString = "+-*/()";
 
-             return operatorString.indexOf(value) > -1;
 
-         };
 
-         const splitByOperator = function (expr) {
 
-             const exprStack = [];
 
-             const result = [];
 
-             for(let i = 0, len = expr.length; i < len; i++){
 
-                 const cur = expr[i];
 
-                 if(cur !== ' ' ){
 
-                     exprStack.push(cur);
 
-                 }
 
-             }
 
-             let param = '', isParamBefore = false;
 
-             while(exprStack.length > 0){
 
-                 const cur = exprStack.shift();
 
-                 if (isOperator(cur)) {
 
-                     if (isParamBefore) {
 
-                         result.push(param);
 
-                         param = '';
 
-                     }
 
-                     result.push(cur);
 
-                     isParamBefore = false;
 
-                 } else {
 
-                     param = param + cur;
 
-                     isParamBefore = true;
 
-                     if (exprStack.length === 0) {
 
-                         result.push(param);
 
-                         param = '';
 
-                     }
 
-                 }
 
-             }
 
-             return result;
 
-         };
 
-         const rule = $(this).attr('value');
 
-         const index = this.parentNode.parentNode;
 
-         $('#rule').attr('curIndex', index.attributes['index_id'].nodeValue);
 
-         $('span', $('#rule')).remove();
 
-         const html = [];
 
-         const params = splitByOperator(rule);
 
-         for (let i = 0, iLen = params.length; i < iLen; i++) {
 
-             if (isOperator(params[i])) {
 
-                 html.push('<span class="badge badge-light" title="' + params[i] + '" code="' + params[i] + '" name="' + params[i] + '">' + params[i] + '</span>');
 
-             } else {
 
-                 const p = $('option[value='+ params[i] +']:first');
 
-                 addParamHtml(html, p);
 
-             }
 
-         }
 
-         $('#delParam').before(html.join(''));
 
-         refreshDelParamVisible();
 
-         $('#set-count').modal('show');
 
-     });
 
-     // 编辑计算规则,选择要添加的计算参数类型
 
-     $('#paramType').change(function () {
 
-         const param = this.selectedIndex === 0 ? 'globalParams' : (this.selectedIndex === 1 ? 'nodeParams' : 'calcParams');
 
-         $('div[name=param]').hide();
 
-         $('#' + param).show();
 
-     });
 
-     // 编辑计算规则,添加计算参数到规则
 
-     $('#addParam').click(function () {
 
-         const lastParam = $('#delParam').prev();
 
-         const paramType = $('#paramType')[0];
 
-         const addParam = function () {
 
-             const paramId = paramType.selectedIndex === 0 ? 'globalParams' : (paramType.selectedIndex === 1 ? 'nodeParams' : 'calcParams');
 
-             const paramSelect = $('select', $('#' + paramId))[0];
 
-             if (paramSelect.children.length > 0 && paramSelect.selectedIndex >= 0) {
 
-                 const param = paramSelect.children[paramSelect.selectedIndex];
 
-                 const html = [];
 
-                 addParamHtml(html, $(param));
 
-                 $('#delParam').before(html.join(''));
 
-                 $('#paramAlert').hide();
 
-             } else {
 
-                 $('#paramAlert').text('无选定参数').show();
 
-             }
 
-         };
 
-         if (lastParam && lastParam.length > 0) {
 
-             const calcSelect = $('select', $('#calcParams'))[0];
 
-             if (isOperate1(lastParam.attr('code'))) {
 
-                 if (paramType.selectedIndex === 2) {
 
-                     if (calcSelect.selectedIndex !== 4) {
 
-                         $('#paramAlert').text('计算式后请输入参数').show();
 
-                     } else {
 
-                         addParam();
 
-                     }
 
-                 } else {
 
-                     addParam();
 
-                 }
 
-             } else if (lastParam.attr('code') === '(') {
 
-                 if (paramType.selectedIndex === 2) {
 
-                     $('#paramAlert').text('左括号后请输入参数').show();
 
-                 } else {
 
-                     addParam();
 
-                 }
 
-             } else if (lastParam.attr('code') === ')') {
 
-                 if (paramType.selectedIndex === 2) {
 
-                     if (calcSelect.selectedIndex < 4) {
 
-                         addParam();
 
-                     } else {
 
-                         $('#paramAlert').text('右括号后请输入计算式').show();
 
-                     }
 
-                 } else {
 
-                     $('#paramAlert').text('右括号后请输入计算式').show();
 
-                 }
 
-             } else {
 
-                 if (paramType.selectedIndex === 2) {
 
-                     if (calcSelect.selectedIndex === 4) {
 
-                         $('#paramAlert').text('2个参数之间需要一个计算式').show();
 
-                     } else {
 
-                         addParam();
 
-                     }
 
-                 } else {
 
-                     $('#paramAlert').text('2个参数之间需要一个计算式').show();
 
-                 }
 
-             }
 
-             // if (!isOperate1(lastParam.attr('code')) && paramType.selectedIndex !== 2) {
 
-             //     $('#paramAlert').text('2个参数之间需要一个计算式').show();
 
-             // } else if (isOperate1(lastParam.attr('code')) && paramType.selectedIndex === 2 ) {
 
-             //     const paramSelect = $('select', $('#calcParams'));
 
-             //     if (paramSelect.selectedIndex === 4) {
 
-             //         addParam();
 
-             //     } else if (paramSelect.selectedIndex === 5) {
 
-             //         const leftBracket = $('span[code=(]');
 
-             //         const rightBracket = $('span[code=)]');
 
-             //         if (leftBracket.length > rightBracket.length) {
 
-             //             addParam();
 
-             //         } else {
 
-             //             $('#paramAlert').text('添加")"前请先添加"("').show();
 
-             //         }
 
-             //     } else {
 
-             //         $('#paramAlert').text('计算式后只可添加参数').show();
 
-             //     }
 
-             // } else {
 
-             //     addParam();
 
-             // }
 
-         } else if (paramType.selectedIndex === 2) {
 
-             const paramSelect = $('select', $('#calcParams'));
 
-             if (paramSelect.selectedIndex === 4) {
 
-                 addParam()
 
-             } else {
 
-                 $('#paramAlert').text('计算式前需含有参数').show();
 
-             }
 
-         } else {
 
-             addParam();
 
-         }
 
-     });
 
-     // 编辑计算规则,删除规则中计算参数
 
-     $('#delParam').click(function () {
 
-         $('#delParam').prev().remove();
 
-         refreshDelParamVisible();
 
-     });
 
-     // 设置指标计算规则
 
-     $('#ruleOk').click(function () {
 
-         const lastParam = $('#delParam').prev();
 
-         const leftBracket = $("span[code='(']").length, rightBracket = $("span[code=')']").length;
 
-         if (!lastParam) {
 
-             $('#paramAlert').text('未设置计算规则').show();
 
-         } else if (isOperate1(lastParam.attr('code'))) {
 
-             $('#paramAlert').text('计算式后应添加参数').show();
 
-         } else if (lastParam.attr('code') === '(' || leftBracket !== rightBracket) {
 
-             $('#paramAlert').text('计算式错误,请检查').show();
 
-         } else {
 
-             const indexRow = $('tr[index_id=' + $('#rule').attr('curIndex') + ']');
 
-             const params = $('span', $('#rule'));
 
-             const data = {
 
-                 id: $('#rule').attr('curIndex'),
 
-                 rule: '',
 
-                 calc_rule: '',
 
-                 parse_rule: '',
 
-             };
 
-             for (const p of params) {
 
-                 const code = $(p).attr('code');
 
-                 const name = $(p).attr('name');
 
-                 data.rule = data.rule + name;
 
-                 data.calc_rule = data.calc_rule + code;
 
-                 data.parse_rule = code === name ? data.parse_rule + code : data.parse_rule + code + '(' + name + ')';
 
-             }
 
-             postData('/template/setIndexRule', data, function () {
 
-                 $('a', indexRow).val(data.calc_rule);
 
-                 $('td[name=rule]', indexRow).text(data.rule);
 
-                 const aHtml = $('a', indexRow)[0].outerHTML;
 
-                 $('td[name=parse_rule]', indexRow).empty();
 
-                 $('td[name=parse_rule]', indexRow).append(data.parse_rule + aHtml);
 
-                 $('paramAlert').hide();
 
-                 $('#set-count').modal('hide');
 
-             }, function () {
 
-                 $('#paramAlert').text('提交计算规则失败,请重试').show();
 
-             })
 
-         }
 
-     });
 
-     // 指标节点,绑定分项节点
 
-     $('#nodeMatchCode').blur(function () {
 
-         const self = $(this);
 
-         if (self.val() === self.attr('org-value')) { return; }
 
-         const nodeId = GetUrlQueryString('id');
 
-         postData('/template/updateNodeMatch', {
 
-             id: nodeId ? nodeId : 1,
 
-             match_key: $(this).val(),
 
-         }, function (data) {
 
-             self.attr('org-value', data.match_key);
 
-             self.attr('title', data.match_type_str);
 
-             self.attr('data-original-title', data.match_type_str);;
 
-         }, function (data) {
 
-             self.val(data.match_key);
 
-             self.attr('org-value', data.match_key);
 
-             self.attr('title', data.match_type_str);
 
-             self.attr('data-original-title', data.match_type_str);;
 
-         });
 
-     });
 
-     // 指标参数,绑定参数取值(分项编号)
 
-     $('input[name=nodeParamMatchCode]').blur(function () {
 
-         const self = $(this);
 
-         if (self.val() === self.attr('org-value')) { return; }
 
-         const nodeId = GetUrlQueryString('id');
 
-         const paramCode = $(this).parent().parent().prev().attr('code');
 
-         postData('/template/updateParamMatch', {
 
-             node_id: nodeId ? nodeId : 1,
 
-             code: paramCode,
 
-             match_key: $(this).val(),
 
-         }, function (data) {
 
-             self.attr('org-value', data.match_key);
 
-         }, function () {
 
-             self.val(self.attr('org-value'));
 
-         })
 
-     });
 
-     // 指标参数,绑定参数取值(分项编号)
 
-     $('input[name=globalParamMatchCode]').blur(function () {
 
-         const self = $(this);
 
-         if (self.val() === self.attr('org-value')) { return; }
 
-         const nodeId = GetUrlQueryString('id');
 
-         const paramCode = $(this).parent().parent().prev().attr('code');
 
-         postData('/template/updateParamMatch', {
 
-             node_id: 0,
 
-             code: paramCode,
 
-             match_key: $(this).val(),
 
-         }, function (data) {
 
-             self.attr('org-value', data.match_key);
 
-         }, function () {
 
-             self.val(self.attr('org-value'));
 
-         })
 
-     });
 
-     // 指标参数,选择取值类别
 
-     $('a[name=paramMatchNum]').click(function () {
 
-         const self = $(this);
 
-         const newMatchNum = self.attr('value');
 
-         const oldMatchNum = self.parent().prev().val();
 
-         if (newMatchNum === oldMatchNum) { return; }
 
-         const nodeId = GetUrlQueryString('id');
 
-         const paramCode = $(this).parent().parent().parent().parent().prev().attr('code');
 
-         postData('/template/updateParamMatch', {
 
-             node_id: nodeId ? nodeId : 1,
 
-             code: paramCode,
 
-             match_num: newMatchNum,
 
-         }, function (data) {
 
-             self.parent().prev().val(data.match_num);
 
-             self.parent().prev().text(data.match_num_str);
 
-         }, function (data) {
 
-             self.parent().prev().val(data.match_num);
 
-             self.parent().prev().text(data.match_num_str);
 
-         })
 
-     });
 
- });
 
 
  |