Commit b076e5e24fb0fbd212417c4effa7971a8dd47bc6

Authored by 徐烜
1 parent 705aab85

PSM-12

src/main/resources/static/pages/scheduleApp/module/common/dts1/select/saSelect4.js renamed to src/main/resources/static/pages/scheduleApp/module/common/dts1/select/legacy.txt
@@ -75,7 +75,7 @@ angular.module('ScheduleApp').directive('saSelect4', [ @@ -75,7 +75,7 @@ angular.module('ScheduleApp').directive('saSelect4', [
75 // 动态设置dom 75 // 动态设置dom
76 // dom required 属性 76 // dom required 属性
77 if ($required_attr != undefined) { 77 if ($required_attr != undefined) {
78 - tElem.find("ui-select").attr("required", ""); 78 + tElem.find("div").attr("required", "");
79 } 79 }
80 // dom placeholder 属性 80 // dom placeholder 属性
81 tElem.find("ui-select-match").attr("placeholder", $placeholder_attr); 81 tElem.find("ui-select-match").attr("placeholder", $placeholder_attr);
@@ -85,7 +85,7 @@ angular.module('ScheduleApp').directive('saSelect4', [ @@ -85,7 +85,7 @@ angular.module('ScheduleApp').directive('saSelect4', [
85 // dom icname 属性 85 // dom icname 属性
86 tElem.find("ui-select-choices").attr("repeat", "item" + "." + $icname_attr + " as item in $saSelectCtrl.$$data"); 86 tElem.find("ui-select-choices").attr("repeat", "item" + "." + $icname_attr + " as item in $saSelectCtrl.$$data");
87 // dom name 属性 87 // dom name 属性
88 - tElem.find("ui-select").attr("name", $name_attr); 88 + tElem.find("div").attr("name", $name_attr);
89 89
90 return { 90 return {
91 pre: function(scope, element, attr) { 91 pre: function(scope, element, attr) {
@@ -166,8 +166,8 @@ angular.module('ScheduleApp').directive('saSelect4', [ @@ -166,8 +166,8 @@ angular.module('ScheduleApp').directive('saSelect4', [
166 } 166 }
167 } 167 }
168 if (obj) { // 在data中判定有没有 168 if (obj) { // 在data中判定有没有
169 - for (var k = 0; k < scope[ctrlAs].$$data.length; j++) {  
170 - if (eval("scope[ctrlAs].$$data[j]" + "." + $icname_attr + " == obj." + $icname_attr)) { 169 + for (var k = 0; k < scope[ctrlAs].$$data.length; k++) {
  170 + if (eval("scope[ctrlAs].$$data[k]" + "." + $icname_attr + " == obj." + $icname_attr)) {
171 obj = undefined; 171 obj = undefined;
172 break; 172 break;
173 } 173 }
@@ -209,7 +209,7 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saSelect4&#39;, [ @@ -209,7 +209,7 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saSelect4&#39;, [
209 209
210 // result中添加拼音数据,注意:这里要求result返回对象数组 210 // result中添加拼音数据,注意:这里要求result返回对象数组
211 for (var i = 0; i < result.length; i ++) { 211 for (var i = 0; i < result.length; i ++) {
212 - if ($icname_s_attr) { 212 + if ($dscol_attr) {
213 if (eval("result[i]" + "." + $dscol_attr)) { 213 if (eval("result[i]" + "." + $dscol_attr)) {
214 // 全拼 214 // 全拼
215 result[i]["fullChars"] = pinyin.getFullChars(eval("result[i]" + "." + $dscol_attr)).toUpperCase(); 215 result[i]["fullChars"] = pinyin.getFullChars(eval("result[i]" + "." + $dscol_attr)).toUpperCase();
src/main/resources/static/pages/scheduleApp/module/common/dts1/select/saSelect5.js 0 → 100644
  1 +/**
  2 + * saSelect5指令,基于简拼查询的select,内部封装angular-ui-select控件,并嵌入相应的业务逻辑。
  3 + * name(必须):控件的名字
  4 + * model(必须):独立作用域,指定一个外部对象模型双向绑定,如:model=ctrl.employeeInfoForSave
  5 + * cmaps(必须):外部对象与指令内部数据对象字段名映射对象,如:{{ {'xl.id' : 'id', 'xl.name' : 'name'} | json}}
  6 + * dcname(必须):绑定的model字段名,如:dcname=xl.id
  7 + * icname(必须):内部与之对应的字段名,如:icname=id
  8 + *
  9 + * dsparams(必须):内部数据源查询参数对象,如:{{ {'ttid_eq': ctrl.rerunManageForSave.rerunTtinfo.id} | json }}
  10 + * iterobjname(必须):内部数据源迭代的数据变量名,如:iterobjname=item
  11 + * iterobjexp(必须):内部显示用的表达式
  12 + * searchph(必须):查询输入占位符字符串,如:searchph=请输入...
  13 + * searchexp(必须):查询基于的内部数据源的表达式,如:searchexp=this.name+'('+this.code+')'
  14 + *
  15 + * required(可选):是否需要form的required验证
  16 + *
  17 + */
  18 +angular.module('ScheduleApp').directive('saSelect5', [
  19 + '$timeout',
  20 + '$$SearchInfoService_g',
  21 + function($timeout, $$searchInfoService_g) {
  22 + return {
  23 + restrict: 'E',
  24 + templateUrl: '/pages/scheduleApp/module/common/dts1/select/saSelect5Template.html',
  25 + scope: { // 独立作用域
  26 + model: "=" // 绑定外部对象
  27 + },
  28 + controllerAs: "$saSelectCtrl",
  29 + bindToController: true,
  30 + controller: function($scope) {
  31 + var self = this;
  32 + self.$$data = []; // 内部ui-select显示用数据
  33 + self.$$data_real = []; // 内部保存的实际数据
  34 +
  35 + // myselect组件的ng-model,用于外部绑定验证等操作
  36 + self.$$internalmodel = undefined;
  37 +
  38 + self.$$internal_select_value = undefined; // 选中的值
  39 +
  40 + },
  41 +
  42 + /**
  43 + * 此阶段可以改dom结构,此时angular还没扫描指令,
  44 + * 这里就可以动态添加其他angularjs的指令字符串,如required指令字符串。
  45 + * @param tElem
  46 + * @param tAttrs
  47 + * @returns {{pre: Function, post: Function}}
  48 + */
  49 + compile: function(tElem, tAttrs) {
  50 + // 获取属性,并验证必须按属性
  51 + var $name_attr = tAttrs["name"]; // 控件的名字
  52 + var $cmaps_attr = tAttrs["cmaps"]; // 外部对象与指令内部数据对象字段名映射对象
  53 + var $dcname_attr = tAttrs["dcname"]; // 绑定的model字段名
  54 + var $icname_attr = tAttrs["icname"]; // 内部与之对应的字段名
  55 +
  56 + var $dsparams_attr = tAttrs["dsparams"]; // 内部数据源查询参数对象
  57 + var $iterobjname_attr = tAttrs["iterobjname"]; // 内部数据源迭代的数据变量名
  58 + var $iterobjexp_attr = tAttrs["iterobjexp"]; // 内部显示用的表达式
  59 + var $searchph_attr = tAttrs["searchph"]; // 查询输入占位符字符串
  60 + var $searchexp_attr = tAttrs["searchexp"]; // 查询基于的内部数据源的表达式
  61 +
  62 + var $required_attr = tAttrs["required"]; // 是否需要required验证
  63 +
  64 + if (!$name_attr) {
  65 + throw new Error("name属性必须填写");
  66 + }
  67 + if (!$cmaps_attr) {
  68 + throw new Error("cmaps属性必须填写")
  69 + }
  70 + if (!$dcname_attr || !$icname_attr) {
  71 + throw new Error("dcname、icname属性必须填写");
  72 + }
  73 + if (!$dsparams_attr) {
  74 + throw new Error("dsparams属性必须填写");
  75 + }
  76 + if (!$iterobjname_attr) {
  77 + throw new Error("iterobjname属性必须填写");
  78 + }
  79 + if (!$iterobjexp_attr) {
  80 + throw new Error("iterobjexp属性必须填写");
  81 + }
  82 + if (!$searchph_attr) {
  83 + throw new Error("searchph属性必须填写");
  84 + }
  85 + if (!$searchexp_attr) {
  86 + throw new Error("searchexp属性必须填写");
  87 + }
  88 +
  89 + // 内部controlAs名字
  90 + var ctrlAs = "$saSelectCtrl";
  91 +
  92 + // 动态设置dom
  93 + // dom,最外层name属性设置
  94 + tElem.find("div:first").attr("name", $name_attr);
  95 + // dom,最外层divrequired属性设置
  96 + if ($required_attr != undefined) {
  97 + tElem.find("div[name=\'" + $name_attr + "\']").attr("required", "");
  98 + }
  99 + // dom,ui-select-match的placeholder属性设定
  100 + tElem.find("ui-select-match").attr("placeholder", $searchph_attr);
  101 + // dom,ui-select-match的内容设定
  102 + var uiSelectMatchHtml = "{{" + ctrlAs + ".$$internal_match_str($select.selected)}}";
  103 + tElem.find("ui-select-match").html(uiSelectMatchHtml);
  104 + // dom,ui-select-choices的repeat属性设定
  105 + var uiSelectChoices_repeatAttr = $iterobjname_attr + "." + $icname_attr + " as " + $iterobjname_attr + " in " + ctrlAs + ".$$data";
  106 + tElem.find("ui-select-choices").attr("repeat", uiSelectChoices_repeatAttr);
  107 + // dom,span ng-bind属性设置,TODO:暂时无法用transclude设置,先用属性设置
  108 + tElem.find("ui-select-choices").html("{{" + $iterobjexp_attr + "}}");
  109 +
  110 + return {
  111 + pre: function (scope, element, attr) {
  112 + // TODO:
  113 + },
  114 +
  115 + /**
  116 + * 相当于link函数。
  117 + * @param scope
  118 + * @param element
  119 + * @param attr
  120 + */
  121 + post: function (scope, element, attr) {
  122 +
  123 + // 添加选中事件处理函数
  124 + scope[ctrlAs].$$internal_select_fn = function($item) {
  125 + eval("scope[ctrlAs].model" + "." + $dcname_attr + " = $item" + "." + $icname_attr + ";");
  126 +
  127 + for (var mc in $cmaps_attr) { // model的字段名:内部数据源对应字段名
  128 + var ic = $cmaps_attr[mc]; // 内部数据源对应字段
  129 + eval("scope[ctrlAs].model" + "." + mc + " = $item" + "." + ic + ";");
  130 + }
  131 + };
  132 +
  133 + // 删除选中事件处理函数
  134 + scope[ctrlAs].$$internal_remove_fn = function() {
  135 + eval("scope[ctrlAs].model" + "." + $dcname_attr + " = undefined;");
  136 +
  137 + var mc; // model的字段名
  138 + for (mc in $cmaps_attr) {
  139 + eval("scope[ctrlAs].model" + "." + mc + " = undefined;");
  140 + }
  141 + };
  142 +
  143 + // 刷新数据
  144 + scope[ctrlAs].$$internal_refresh_fn = function(search) {
  145 + if (search && search != "") { // 有search值
  146 + // 处理search
  147 + console.log("search:" + search);
  148 +
  149 + scope[ctrlAs].$$data = [];
  150 + for (var k = 0; k < scope[ctrlAs].$$data_real.length; k++) {
  151 + var upTerm = search.toUpperCase();
  152 + if (scope[ctrlAs].$$data.length < 10) {
  153 + if (scope[ctrlAs].$$data_real[k].$fullChars.indexOf(upTerm) != -1
  154 + || scope[ctrlAs].$$data_real[k].$camelChars.indexOf(upTerm) != -1
  155 + || scope[ctrlAs].$$data_real[k].$calcu_str.indexOf(upTerm) != -1) {
  156 + scope[ctrlAs].$$data.push(angular.copy(scope[ctrlAs].$$data_real[k]));
  157 + }
  158 + } else {
  159 + break;
  160 + }
  161 + }
  162 + }
  163 + };
  164 +
  165 + /**
  166 + * 验证内部数据,更新外部model
  167 + */
  168 + scope[ctrlAs].$$internal_validate_model = function() {
  169 + if (scope[ctrlAs].$$internal_select_value) {
  170 + var select_value_temp = scope[ctrlAs].$$internal_select_value;
  171 + if (scope[ctrlAs].$$data_real && scope[ctrlAs].$$data_real.length > 0) {
  172 + var obj;
  173 + for (var j = 0; j < scope[ctrlAs].$$data_real.length; j++) {
  174 + if (eval("scope[ctrlAs].$$data_real[j]" + "." + $icname_attr + " == select_value_temp")) {
  175 + obj = angular.copy(scope[ctrlAs].$$data_real[j]);
  176 + break;
  177 + }
  178 + }
  179 + if (obj) { // 在data中判定有没有
  180 + for (var k = 0; k < scope[ctrlAs].$$data.length; k++) {
  181 + if (eval("scope[ctrlAs].$$data[k]" + "." + $icname_attr + " == obj." + $icname_attr)) {
  182 + obj = undefined;
  183 + break;
  184 + }
  185 + }
  186 + if (obj) {
  187 + scope[ctrlAs].$$data.push(obj);
  188 + }
  189 + // 更新内部model,用于外部验证
  190 + // 内部model的值暂时随意,以后再改
  191 + scope[ctrlAs].$$internalmodel = {desc: "ok"};
  192 + } else {
  193 + scope[ctrlAs].$$internalmodel = undefined;
  194 + }
  195 +
  196 + } else {
  197 + scope[ctrlAs].$$internalmodel = undefined;
  198 + }
  199 +
  200 + } else {
  201 + scope[ctrlAs].$$internalmodel = undefined;
  202 + }
  203 + };
  204 +
  205 + /**
  206 + * 内部match表达式转换函数,需要外部绑定此函数的上下文。
  207 + * @param context function上下文
  208 + */
  209 + scope[ctrlAs].$$internal_match_str = function (context) {
  210 + var fx = function() {
  211 + return eval($searchexp_attr);
  212 + };
  213 +
  214 + var str = fx.bind(context)();
  215 + if (str && str != "")
  216 + return str;
  217 + else
  218 + return undefined;
  219 + };
  220 +
  221 + /**
  222 + * 内部方法,读取字典数据作为数据源。
  223 + * @param atype ajax查询类型
  224 + * @param ajaxparamobj 查询参数对象
  225 + */
  226 + scope[ctrlAs].$$internal_ajax_data = function(atype, ajaxparamobj) {
  227 + ajaxparamobj.type = 'all';
  228 + $$searchInfoService_g[atype].list(
  229 + ajaxparamobj,
  230 + function(result) {
  231 + console.log("$$internal_ajax_data result");
  232 +
  233 + // 重新创建内部保存的数据
  234 + scope[ctrlAs].$$data = [];
  235 + // result中添加拼音数据,注意:这里要求result返回对象数组
  236 + for (var i = 0; i < result.length; i ++) {
  237 + // 闭包绑定返回最终查询的值
  238 + var calcu_str = scope[ctrlAs].$$internal_match_str(result[i]);
  239 + if (calcu_str) {
  240 + // 全拼
  241 + result[i]["$fullChars"] = pinyin.getFullChars(calcu_str);
  242 + // 简拼
  243 + result[i]["$camelChars"] = pinyin.getCamelChars(calcu_str);
  244 + // 原值
  245 + result[i]["$calcu_str"] = calcu_str;
  246 +
  247 + scope[ctrlAs].$$data_real.push(result[i]);
  248 + }
  249 + }
  250 +
  251 + // 重新创建内部ui-select显示用数据,默认取10条记录显示
  252 + for (var k = 0; k < scope[ctrlAs].$$data_real.length; k++) {
  253 + if (scope[ctrlAs].$$data.length < 10) {
  254 + scope[ctrlAs].$$data.push(scope[ctrlAs].$$data_real[k]);
  255 + } else {
  256 + break;
  257 + }
  258 + }
  259 +
  260 + scope[ctrlAs].$$internal_validate_model();
  261 + },
  262 + function(result) {
  263 + throw new Error("ajax查询出错");
  264 + }
  265 + );
  266 + };
  267 +
  268 + /**
  269 + * 内部方法,读取字典数据作为数据源。
  270 + * @param dictype 字典类型,如:gsType
  271 + */
  272 + scope[ctrlAs].$$internal_dic_data = function(dictype) {
  273 + if (!dictionaryUtils.getByGroup(dictype)) {
  274 + throw new error("字典数据不窜在=" + dictype);
  275 + }
  276 +
  277 + // 重新创建内部保存的数据
  278 + scope[ctrlAs].$$data_real = [];
  279 + var origin_dicgroup = dictionaryUtils.getByGroup(dicgroup);
  280 + var dic_key; // 字典key
  281 +
  282 + for (dic_key in origin_dicgroup) {
  283 + var data = {}; // 重新组合的字典元素对象
  284 + if (dic_key == "true")
  285 + data[$icname_attr] = true;
  286 + else
  287 + data[$icname_attr] = dic_key;
  288 + data[$dscol_attr] = origin_dicgroup[dic_key];
  289 + scope[ctrlAs].$$data_real.push(data);
  290 + }
  291 +
  292 + // 重新创建内部ui-select显示用数据,直接复制所有的字典数据
  293 + scope[ctrlAs].$$data = [];
  294 + for (var k = 0; k < scope[ctrlAs].$$data_real.length; k++) {
  295 + scope[ctrlAs].$$data.push(scope[ctrlAs].$$data_real[k]);
  296 + }
  297 +
  298 + scope[ctrlAs].$$internal_validate_model();
  299 + };
  300 +
  301 + /**
  302 + * 监控dsparams属性变化
  303 + */
  304 + attr.$observe("dsparams", function(value) {
  305 + if (value && value != "") {
  306 + var obj = JSON.parse(value);
  307 + console.log("saSelect5 监控到dsparams属性变化,old=" + $dsparams_attr + ",new=" + value);
  308 +
  309 + // dsparams格式如下:
  310 + // {type: 'dic/ajax', param: 'dic名字'/'ajax查询参数对象', atype: 'ajax查询类型'}
  311 +
  312 + if (obj.type == 'dic') {
  313 + scope[ctrlAs].$$internal_dic_data(obj.param);
  314 +
  315 + } else if (obj.type == 'ajax') {
  316 + scope[ctrlAs].$$internal_ajax_data(obj.atype, obj.param);
  317 + } else {
  318 + throw new Error("dsparams参数格式异常=" + obj);
  319 + }
  320 +
  321 + }
  322 + });
  323 +
  324 + /**
  325 + * 监控外部模型dcname的值的变化。
  326 + */
  327 + scope.$watch(
  328 + function() {
  329 + return eval("scope." + ctrlAs + ".model" + "." + $dcname_attr);
  330 + },
  331 + function(newValue, oldValue) {
  332 + if (newValue === undefined && oldValue === undefined) {
  333 + // 两侧都是undefined,不处理
  334 +
  335 + } else {
  336 + console.log("saSelect5 监控到外部模型" + $dcname_attr + "属性值变化,old=" + oldValue + ",new=" + newValue);
  337 + scope[ctrlAs].$$internal_select_value = newValue;
  338 + scope[ctrlAs].$$internal_validate_model();
  339 + }
  340 + },
  341 + true
  342 + );
  343 + }
  344 + };
  345 + }
  346 + };
  347 + }
  348 +]);
0 \ No newline at end of file 349 \ No newline at end of file
src/main/resources/static/pages/scheduleApp/module/common/dts1/select/saSelect5Template.html 0 → 100644
  1 +<div class="input-group" name="指令compile阶段设定1"
  2 + ng-model="$saSelectCtrl.$$internalmodel">
  3 + <ui-select ng-model="$saSelectCtrl.$$internal_select_value" on-select="$saSelectCtrl.$$internal_select_fn($item)"
  4 + theme="bootstrap" >
  5 + <ui-select-match placeholder="指令compile阶段设定">指令compile阶段设定2</ui-select-match>
  6 + <ui-select-choices repeat="指令compile阶段设定3"
  7 + refresh="$saSelectCtrl.$$internal_refresh_fn($select.search)"
  8 + refresh-delay="10">
  9 +
  10 + 指令compile阶段设定777
  11 +
  12 + </ui-select-choices>
  13 + </ui-select>
  14 + <span class="input-group-btn">
  15 + <button type="button" ng-click="$saSelectCtrl.$$internal_remove_fn()" class="btn btn-default">
  16 + <span class="glyphicon glyphicon-trash"></span>
  17 + </button>
  18 + </span>
  19 +</div>
0 \ No newline at end of file 20 \ No newline at end of file
src/main/resources/static/pages/scheduleApp/module/common/prj-common-directive.js
@@ -529,7 +529,17 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;$$SearchInfoService_g&#39;, [&#39;$resource&#39;, fun @@ -529,7 +529,17 @@ angular.module(&#39;ScheduleApp&#39;).factory(&#39;$$SearchInfoService_g&#39;, [&#39;$resource&#39;, fun
529 isArray: true 529 isArray: true
530 } 530 }
531 } 531 }
532 - ) 532 + ),
  533 + eci3: $resource(
  534 + '/eci/:type',
  535 + {},
  536 + {
  537 + list: {
  538 + method: 'GET',
  539 + isArray: true
  540 + }
  541 + }
  542 + ),
533 } 543 }
534 }]); 544 }]);
535 angular.module('ScheduleApp').filter("$$pyFilter", function() { 545 angular.module('ScheduleApp').filter("$$pyFilter", function() {
@@ -2620,6 +2630,7 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saBcgroup&#39;, [ @@ -2620,6 +2630,7 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saBcgroup&#39;, [
2620 // 监控内部数据,$$data_selected 变化 2630 // 监控内部数据,$$data_selected 变化
2621 scope.$watch( 2631 scope.$watch(
2622 function() { 2632 function() {
  2633 + console.log("长度:" + scope[ctrlAs].$$dataSelected.length);
2623 return scope[ctrlAs].$$dataSelected; 2634 return scope[ctrlAs].$$dataSelected;
2624 }, 2635 },
2625 function(newValue, oldValue) { 2636 function(newValue, oldValue) {
@@ -2687,11 +2698,14 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saBcgroup&#39;, [ @@ -2687,11 +2698,14 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saBcgroup&#39;, [
2687 // 监控内部数据的变化 2698 // 监控内部数据的变化
2688 attr.$observe("dataparams", function(value) { 2699 attr.$observe("dataparams", function(value) {
2689 if (value && value != "") { 2700 if (value && value != "") {
2690 - console.log("observe 监控 dataparams=" + value); 2701 + if (value == '{}') {
  2702 + return;
  2703 + }
  2704 +
  2705 + console.log("bcgroup observe 监控 dataparams=" + value);
2691 2706
2692 - var obj = JSON.parse(value);  
2693 timeTableDetailManageService_g.bcdetails.list( 2707 timeTableDetailManageService_g.bcdetails.list(
2694 - obj, 2708 + JSON.parse(value),
2695 function(result) { 2709 function(result) {
2696 // 获取值了 2710 // 获取值了
2697 console.log("内部班次数据获取了"); 2711 console.log("内部班次数据获取了");
@@ -3038,7 +3052,18 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saSelect4&#39;, [ @@ -3038,7 +3052,18 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saSelect4&#39;, [
3038 scope[ctrlAs].$$internal_select_value = value; 3052 scope[ctrlAs].$$internal_select_value = value;
3039 scope[ctrlAs].$$internal_validate_model(); 3053 scope[ctrlAs].$$internal_validate_model();
3040 } 3054 }
  3055 +
  3056 + // 闭包测试
  3057 + var obj = {'a':1,'b':2};
  3058 + var tfx = scope[ctrlAs].$$test.bind(obj);
  3059 + console.log("闭包测试=" + tfx());
3041 }); 3060 });
  3061 +
  3062 + scope[ctrlAs].$$test = function() {
  3063 + var exp = "this.a + '(' + this.b + ')'";
  3064 + console.log("exp=" + exp);
  3065 + return eval(exp);
  3066 + };
3042 } 3067 }
3043 }; 3068 };
3044 3069
@@ -3047,3 +3072,386 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saSelect4&#39;, [ @@ -3047,3 +3072,386 @@ angular.module(&#39;ScheduleApp&#39;).directive(&#39;saSelect4&#39;, [
3047 }; 3072 };
3048 } 3073 }
3049 ]); 3074 ]);
  3075 +
  3076 +/**
  3077 + * saSelect5指令,基于简拼查询的select,内部封装angular-ui-select控件,并嵌入相应的业务逻辑。
  3078 + * name(必须):控件的名字
  3079 + * model(必须):独立作用域,指定一个外部对象模型双向绑定,如:model=ctrl.employeeInfoForSave
  3080 + * cmaps(必须):外部对象与指令内部数据对象字段名映射对象字符串,如:{'xl.id' : 'id', 'xl.name' : 'name'}
  3081 + * dcname(必须):绑定的model字段名,如:dcname=xl.id
  3082 + * icname(必须):内部与之对应的字段名,如:icname=id
  3083 + *
  3084 + * dsparams(必须):内部数据源查询参数对象,如:{{ {'ttid_eq': ctrl.rerunManageForSave.rerunTtinfo.id} | json }}
  3085 + * dsparamsextra(可选):内部数据源查询附加参数对象字符串,如:{'type':'all'}
  3086 + * iterobjname(必须):内部数据源迭代的数据变量名,如:iterobjname=item
  3087 + * iterobjexp(必须):内部显示用的表达式
  3088 + * searchph(必须):查询输入占位符字符串,如:searchph=请输入...
  3089 + * searchexp(必须):查询基于的内部数据源的表达式,如:searchexp=this.name+'('+this.code+')'
  3090 + *
  3091 + * required(可选):是否需要form的required验证
  3092 + *
  3093 + */
  3094 +angular.module('ScheduleApp').directive('saSelect5', [
  3095 + '$timeout',
  3096 + '$$SearchInfoService_g',
  3097 + function($timeout, $$searchInfoService_g) {
  3098 + return {
  3099 + restrict: 'E',
  3100 + templateUrl: '/pages/scheduleApp/module/common/dts1/select/saSelect5Template.html',
  3101 + scope: { // 独立作用域
  3102 + model: "=" // 绑定外部对象
  3103 + },
  3104 + controllerAs: "$saSelectCtrl",
  3105 + bindToController: true,
  3106 + controller: function($scope) {
  3107 + var self = this;
  3108 + self.$$data = []; // 内部ui-select显示用数据
  3109 + self.$$data_real = []; // 内部保存的实际数据
  3110 +
  3111 + // myselect组件的ng-model,用于外部绑定验证等操作
  3112 + self.$$internalmodel = undefined;
  3113 +
  3114 + self.$$internal_select_value = undefined; // 选中的值
  3115 +
  3116 + },
  3117 +
  3118 + /**
  3119 + * 此阶段可以改dom结构,此时angular还没扫描指令,
  3120 + * 这里就可以动态添加其他angularjs的指令字符串,如required指令字符串。
  3121 + * @param tElem
  3122 + * @param tAttrs
  3123 + * @returns {{pre: Function, post: Function}}
  3124 + */
  3125 + compile: function(tElem, tAttrs) {
  3126 + // 获取属性,并验证必须按属性
  3127 + var $name_attr = tAttrs["name"]; // 控件的名字
  3128 + var $cmaps_attr = tAttrs["cmaps"]; // 外部对象与指令内部数据对象字段名映射对象
  3129 + var $dcname_attr = tAttrs["dcname"]; // 绑定的model字段名
  3130 + var $icname_attr = tAttrs["icname"]; // 内部与之对应的字段名
  3131 +
  3132 + var $dsparams_attr = tAttrs["dsparams"]; // 内部数据源查询参数对象
  3133 + var $dsparamsextra_attr = tAttrs["dsparamsextra"]; // 内部数据源查询附加参数对象字符串
  3134 + var $iterobjname_attr = tAttrs["iterobjname"]; // 内部数据源迭代的数据变量名
  3135 + var $iterobjexp_attr = tAttrs["iterobjexp"]; // 内部显示用的表达式
  3136 + var $searchph_attr = tAttrs["searchph"]; // 查询输入占位符字符串
  3137 + var $searchexp_attr = tAttrs["searchexp"]; // 查询基于的内部数据源的表达式
  3138 +
  3139 + var $required_attr = tAttrs["required"]; // 是否需要required验证
  3140 +
  3141 + if (!$name_attr) {
  3142 + throw new Error("name属性必须填写");
  3143 + }
  3144 + if (!$cmaps_attr) {
  3145 + throw new Error("cmaps属性必须填写")
  3146 + }
  3147 + if (!$dcname_attr || !$icname_attr) {
  3148 + throw new Error("dcname、icname属性必须填写");
  3149 + }
  3150 + if (!$dsparams_attr) {
  3151 + throw new Error("dsparams属性必须填写");
  3152 + }
  3153 + if (!$iterobjname_attr) {
  3154 + throw new Error("iterobjname属性必须填写");
  3155 + }
  3156 + if (!$iterobjexp_attr) {
  3157 + throw new Error("iterobjexp属性必须填写");
  3158 + }
  3159 + if (!$searchph_attr) {
  3160 + throw new Error("searchph属性必须填写");
  3161 + }
  3162 + if (!$searchexp_attr) {
  3163 + throw new Error("searchexp属性必须填写");
  3164 + }
  3165 +
  3166 + // 内部controlAs名字
  3167 + var ctrlAs = "$saSelectCtrl";
  3168 +
  3169 + // 动态设置dom
  3170 + // dom,最外层name属性设置
  3171 + tElem.find("div:first").attr("name", $name_attr);
  3172 + // dom,最外层divrequired属性设置
  3173 + if ($required_attr != undefined) {
  3174 + tElem.find("div[name=\'" + $name_attr + "\']").attr("required", "");
  3175 + }
  3176 + // dom,ui-select-match的placeholder属性设定
  3177 + tElem.find("ui-select-match").attr("placeholder", $searchph_attr);
  3178 + // dom,ui-select-match的内容设定
  3179 + var uiSelectMatchHtml = "{{" + ctrlAs + ".$$internal_match_str($select.selected)}}";
  3180 + tElem.find("ui-select-match").html(uiSelectMatchHtml);
  3181 + // dom,ui-select-choices的repeat属性设定
  3182 + var uiSelectChoices_repeatAttr = $iterobjname_attr + "." + $icname_attr + " as " + $iterobjname_attr + " in " + ctrlAs + ".$$data";
  3183 + tElem.find("ui-select-choices").attr("repeat", uiSelectChoices_repeatAttr);
  3184 + // dom,span ng-bind属性设置,TODO:暂时无法用transclude设置,先用属性设置
  3185 + tElem.find("ui-select-choices").html("{{" + $iterobjexp_attr + "}}");
  3186 +
  3187 + return {
  3188 + pre: function (scope, element, attr) {
  3189 + // TODO:
  3190 + },
  3191 +
  3192 + /**
  3193 + * 相当于link函数。
  3194 + * @param scope
  3195 + * @param element
  3196 + * @param attr
  3197 + */
  3198 + post: function (scope, element, attr) {
  3199 +
  3200 + // 添加选中事件处理函数
  3201 + scope[ctrlAs].$$internal_select_fn = function($item) {
  3202 + eval("scope[ctrlAs].model" + "." + $dcname_attr + " = $item" + "." + $icname_attr + ";");
  3203 +
  3204 + eval("var obj=" + $cmaps_attr);
  3205 + for (var mc in obj) { // model的字段名:内部数据源对应字段名
  3206 + var ic = obj[mc]; // 内部数据源对应字段
  3207 + eval("scope[ctrlAs].model" + "." + mc + " = $item" + "." + ic + ";");
  3208 + }
  3209 + };
  3210 +
  3211 + // 删除选中事件处理函数
  3212 + scope[ctrlAs].$$internal_remove_fn = function() {
  3213 + eval("scope[ctrlAs].model" + "." + $dcname_attr + " = undefined;");
  3214 +
  3215 + eval("var obj=" + $cmaps_attr);
  3216 + var mc; // model的字段名
  3217 + for (mc in obj) {
  3218 + eval("scope[ctrlAs].model" + "." + mc + " = undefined;");
  3219 + }
  3220 + };
  3221 +
  3222 + // 刷新数据
  3223 + scope[ctrlAs].$$internal_refresh_fn = function(search) {
  3224 + if (search && search != "") { // 有search值
  3225 + // 处理search
  3226 + console.log("search:" + search);
  3227 +
  3228 + scope[ctrlAs].$$data = [];
  3229 + for (var k = 0; k < scope[ctrlAs].$$data_real.length; k++) {
  3230 + var upTerm = search.toUpperCase();
  3231 + if (scope[ctrlAs].$$data.length < 10) {
  3232 + if (scope[ctrlAs].$$data_real[k].$fullChars.indexOf(upTerm) != -1
  3233 + || scope[ctrlAs].$$data_real[k].$camelChars.indexOf(upTerm) != -1
  3234 + || scope[ctrlAs].$$data_real[k].$calcu_str.indexOf(upTerm) != -1) {
  3235 + scope[ctrlAs].$$data.push(angular.copy(scope[ctrlAs].$$data_real[k]));
  3236 + }
  3237 + } else {
  3238 + break;
  3239 + }
  3240 + }
  3241 + }
  3242 + };
  3243 +
  3244 + /**
  3245 + * 验证内部数据,更新外部model
  3246 + */
  3247 + scope[ctrlAs].$$internal_validate_model = function() {
  3248 + if (scope[ctrlAs].$$internal_select_value) {
  3249 + var select_value_temp = scope[ctrlAs].$$internal_select_value;
  3250 + if (scope[ctrlAs].$$data_real && scope[ctrlAs].$$data_real.length > 0) {
  3251 + var obj;
  3252 + for (var j = 0; j < scope[ctrlAs].$$data_real.length; j++) {
  3253 + if (eval("scope[ctrlAs].$$data_real[j]" + "." + $icname_attr + " == select_value_temp")) {
  3254 + obj = angular.copy(scope[ctrlAs].$$data_real[j]);
  3255 + break;
  3256 + }
  3257 + }
  3258 + if (obj) { // 在data中判定有没有
  3259 + for (var k = 0; k < scope[ctrlAs].$$data.length; k++) {
  3260 + if (eval("scope[ctrlAs].$$data[k]" + "." + $icname_attr + " == obj." + $icname_attr)) {
  3261 + obj = undefined;
  3262 + break;
  3263 + }
  3264 + }
  3265 + if (obj) {
  3266 + scope[ctrlAs].$$data.push(obj);
  3267 + }
  3268 + // 更新内部model,用于外部验证
  3269 + // 内部model的值暂时随意,以后再改
  3270 + scope[ctrlAs].$$internalmodel = {desc: "ok"};
  3271 + } else {
  3272 + scope[ctrlAs].$$internalmodel = undefined;
  3273 + }
  3274 +
  3275 + } else {
  3276 + scope[ctrlAs].$$internalmodel = undefined;
  3277 + }
  3278 +
  3279 + } else {
  3280 + scope[ctrlAs].$$internalmodel = undefined;
  3281 + }
  3282 + };
  3283 +
  3284 + /**
  3285 + * 内部match表达式转换函数,需要外部绑定此函数的上下文。
  3286 + * @param context function上下文
  3287 + */
  3288 + scope[ctrlAs].$$internal_match_str = function (context) {
  3289 + var fx = function() {
  3290 + try {
  3291 + return eval($searchexp_attr);
  3292 + } catch (err) {
  3293 + //console.log(err);
  3294 + return undefined;
  3295 + }
  3296 +
  3297 + };
  3298 +
  3299 + var str = fx.bind(context)();
  3300 + if (str && str != "")
  3301 + return str;
  3302 + else
  3303 + return undefined;
  3304 + };
  3305 +
  3306 + /**
  3307 + * 内部方法,读取字典数据作为数据源。
  3308 + * @param atype ajax查询类型
  3309 + * @param ajaxparamobj 查询参数对象
  3310 + */
  3311 + scope[ctrlAs].$$internal_ajax_data = function(atype, ajaxparamobj) {
  3312 + // 如果ajaxparamobj为空对象,则表示清空内部选项
  3313 + var isEmptyObj = true;
  3314 + for (var name in ajaxparamobj) {
  3315 + isEmptyObj = false;
  3316 + }
  3317 + if (isEmptyObj) {
  3318 + // 重新创建内部保存的数据
  3319 + scope[ctrlAs].$$data_real = [];
  3320 + // 重新创建内部ui-select显示用数据,默认取10条记录显示
  3321 + scope[ctrlAs].$$data = [];
  3322 +
  3323 + scope[ctrlAs].$$internal_remove_fn();
  3324 + scope[ctrlAs].$$internal_validate_model();
  3325 +
  3326 + return;
  3327 + }
  3328 +
  3329 + if ($dsparamsextra_attr) { // 合并附加参数
  3330 + eval("var extra = " + $dsparamsextra_attr);
  3331 + for (var extrakey in extra) {
  3332 + ajaxparamobj[extrakey] = extra[extrakey];
  3333 + }
  3334 + }
  3335 +
  3336 + $$searchInfoService_g[atype].list(
  3337 + ajaxparamobj,
  3338 + function(result) {
  3339 + console.log("$$internal_ajax_data result");
  3340 +
  3341 + // 重新创建内部保存的数据
  3342 + scope[ctrlAs].$$data_real = [];
  3343 + // result中添加拼音数据,注意:这里要求result返回对象数组
  3344 + for (var i = 0; i < result.length; i++) {
  3345 + // 闭包绑定返回最终查询的值
  3346 + var calcu_str = scope[ctrlAs].$$internal_match_str(result[i]);
  3347 + if (calcu_str) {
  3348 + // 全拼
  3349 + result[i]["$fullChars"] = pinyin.getFullChars(calcu_str);
  3350 + // 简拼
  3351 + result[i]["$camelChars"] = pinyin.getCamelChars(calcu_str);
  3352 + // 原值
  3353 + result[i]["$calcu_str"] = calcu_str;
  3354 +
  3355 + scope[ctrlAs].$$data_real.push(result[i]);
  3356 + }
  3357 + }
  3358 +
  3359 + // 重新创建内部ui-select显示用数据,默认取10条记录显示
  3360 + scope[ctrlAs].$$data = [];
  3361 + for (var k = 0; k < scope[ctrlAs].$$data_real.length; k++) {
  3362 + if (scope[ctrlAs].$$data.length < 10) {
  3363 + scope[ctrlAs].$$data.push(scope[ctrlAs].$$data_real[k]);
  3364 + } else {
  3365 + break;
  3366 + }
  3367 + }
  3368 +
  3369 + scope[ctrlAs].$$internal_validate_model();
  3370 + },
  3371 + function(result) {
  3372 + throw new Error("ajax查询出错");
  3373 + }
  3374 + );
  3375 + };
  3376 +
  3377 + /**
  3378 + * 内部方法,读取字典数据作为数据源。
  3379 + * @param dictype 字典类型,如:gsType
  3380 + */
  3381 + scope[ctrlAs].$$internal_dic_data = function(dictype) {
  3382 + if (!dictionaryUtils.getByGroup(dictype)) {
  3383 + throw new error("字典数据不窜在=" + dictype);
  3384 + }
  3385 +
  3386 + // 重新创建内部保存的数据
  3387 + scope[ctrlAs].$$data_real = [];
  3388 + var origin_dicgroup = dictionaryUtils.getByGroup(dicgroup);
  3389 + var dic_key; // 字典key
  3390 +
  3391 + for (dic_key in origin_dicgroup) {
  3392 + var data = {}; // 重新组合的字典元素对象
  3393 + if (dic_key == "true")
  3394 + data[$icname_attr] = true;
  3395 + else
  3396 + data[$icname_attr] = dic_key;
  3397 + data[$dscol_attr] = origin_dicgroup[dic_key];
  3398 + scope[ctrlAs].$$data_real.push(data);
  3399 + }
  3400 +
  3401 + // 重新创建内部ui-select显示用数据,直接复制所有的字典数据
  3402 + scope[ctrlAs].$$data = [];
  3403 + for (var k = 0; k < scope[ctrlAs].$$data_real.length; k++) {
  3404 + scope[ctrlAs].$$data.push(scope[ctrlAs].$$data_real[k]);
  3405 + }
  3406 +
  3407 + scope[ctrlAs].$$internal_validate_model();
  3408 + };
  3409 +
  3410 + /**
  3411 + * 监控dsparams属性变化
  3412 + */
  3413 + attr.$observe("dsparams", function(value) {
  3414 + if (value && value != "") {
  3415 + var obj = JSON.parse(value);
  3416 + console.log("saSelect5 监控到dsparams属性变化,old=" + $dsparams_attr + ",new=" + value);
  3417 +
  3418 + // dsparams格式如下:
  3419 + // {type: 'dic/ajax', param: 'dic名字'/'ajax查询参数对象', atype: 'ajax查询类型'}
  3420 +
  3421 + if (obj.type == 'dic') {
  3422 + scope[ctrlAs].$$internal_dic_data(obj.param);
  3423 +
  3424 + } else if (obj.type == 'ajax') {
  3425 + scope[ctrlAs].$$internal_ajax_data(obj.atype, obj.param);
  3426 + } else {
  3427 + throw new Error("dsparams参数格式异常=" + obj);
  3428 + }
  3429 +
  3430 + }
  3431 + });
  3432 +
  3433 + /**
  3434 + * 监控外部模型dcname的值的变化。
  3435 + */
  3436 + scope.$watch(
  3437 + function() {
  3438 + return eval("scope." + ctrlAs + ".model" + "." + $dcname_attr);
  3439 + },
  3440 + function(newValue, oldValue) {
  3441 + if (newValue === undefined && oldValue === undefined) {
  3442 + // 两侧都是undefined,不处理
  3443 +
  3444 + } else {
  3445 + console.log("saSelect5 监控到外部模型" + $dcname_attr + "属性值变化,old=" + oldValue + ",new=" + newValue);
  3446 + scope[ctrlAs].$$internal_select_value = newValue;
  3447 + scope[ctrlAs].$$internal_validate_model();
  3448 + }
  3449 + },
  3450 + true
  3451 + );
  3452 + }
  3453 + };
  3454 + }
  3455 + };
  3456 + }
  3457 +]);
3050 \ No newline at end of file 3458 \ No newline at end of file
src/main/resources/static/pages/scheduleApp/module/core/rerunManage/edit.html
1 <div class="page-head"> 1 <div class="page-head">
2 <div class="page-title"> 2 <div class="page-title">
3 - <h1>排班规则管理</h1> 3 + <h1>套跑管理</h1>
4 </div> 4 </div>
5 </div> 5 </div>
6 6
@@ -14,15 +14,15 @@ @@ -14,15 +14,15 @@
14 <i class="fa fa-circle"></i> 14 <i class="fa fa-circle"></i>
15 </li> 15 </li>
16 <li> 16 <li>
17 - <a ui-sref="scheduleRuleManage">排班规则管理</a> 17 + <a ui-sref="rerunManage">套跑管理</a>
18 <i class="fa fa-circle"></i> 18 <i class="fa fa-circle"></i>
19 </li> 19 </li>
20 <li> 20 <li>
21 - <span class="active">修改排班规则信息</span> 21 + <span class="active">修改套跑信息</span>
22 </li> 22 </li>
23 </ul> 23 </ul>
24 24
25 -<div class="portlet light bordered" ng-controller="ScheduleRuleManageFormCtrl as ctrl"> 25 +<div class="portlet light bordered" ng-controller="RerunManageFormCtrl as ctrl">
26 <div class="portlet-title"> 26 <div class="portlet-title">
27 <div class="caption"> 27 <div class="caption">
28 <i class="icon-equalizer font-red-sunglo"></i> <span 28 <i class="icon-equalizer font-red-sunglo"></i> <span
@@ -43,130 +43,193 @@ @@ -43,130 +43,193 @@
43 <div class="form-group has-success has-feedback"> 43 <div class="form-group has-success has-feedback">
44 <label class="col-md-2 control-label">线路*:</label> 44 <label class="col-md-2 control-label">线路*:</label>
45 <div class="col-md-3"> 45 <div class="col-md-3">
46 - <sa-Select3 model="ctrl.scheduleRuleManageForSave"  
47 - name="xl"  
48 - placeholder="请输拼音..."  
49 - dcvalue="{{ctrl.scheduleRuleManageForSave.xl.id}}"  
50 - dcname="xl.id" 46 + <sa-Select5 name="rerunXl"
  47 + model="ctrl.rerunManageForSave"
  48 + cmaps="{'rerunXl.id' : 'id'}"
  49 + dcname="rerunXl.id"
51 icname="id" 50 icname="id"
52 - icnames="name"  
53 - datatype="xl"  
54 - mlp="true" 51 + dsparams="{{ {type: 'ajax', param:{type: 'all'}, atype:'xl' } | json }}"
  52 + iterobjname="item"
  53 + iterobjexp="item.name"
  54 + searchph="请输拼音..."
  55 + searchexp="this.name"
55 required > 56 required >
56 - </sa-Select3> 57 + </sa-Select5>
57 </div> 58 </div>
58 <!-- 隐藏块,显示验证信息 --> 59 <!-- 隐藏块,显示验证信息 -->
59 - <div class="alert alert-danger well-sm" ng-show="myForm.xl.$error.required"> 60 + <div class="alert alert-danger well-sm" ng-show="myForm.rerunXl.$error.required">
60 线路必须选择 61 线路必须选择
61 </div> 62 </div>
62 </div> 63 </div>
63 <div class="form-group has-success has-feedback"> 64 <div class="form-group has-success has-feedback">
64 - <label class="col-md-2 control-label">车辆配置*:</label> 65 + <label class="col-md-2 control-label">时刻表*:</label>
65 <div class="col-md-3"> 66 <div class="col-md-3">
66 - <sa-Select3 model="ctrl.scheduleRuleManageForSave"  
67 - name="cl"  
68 - placeholder="请输拼音..."  
69 - dcvalue="{{ctrl.scheduleRuleManageForSave.carConfigInfo.id}}"  
70 - dcname="carConfigInfo.id" 67 + <sa-Select5 name="rerunTtinfo"
  68 + model="ctrl.rerunManageForSave"
  69 + cmaps="{'rerunTtinfo.id' : 'id'}"
  70 + dcname="rerunTtinfo.id"
71 icname="id" 71 icname="id"
72 - icnames="cl.insideCode"  
73 - datatype="cci2"  
74 - dataassociate="true"  
75 - dataparam="{{ {'xl.id_eq': ctrl.scheduleRuleManageForSave.xl.id} | json }}"  
76 - mlp="true" 72 + dsparams="{{ {type: 'ajax', param:{'xl.id_eq': ctrl.rerunManageForSave.rerunXl.id}, atype:'ttInfo' } | json }}"
  73 + dsparamsextra="{'type':'all'}"
  74 + iterobjname="item"
  75 + iterobjexp="item.name + '-' + item.xl.name"
  76 + searchph="请输拼音..."
  77 + searchexp="this.name + '-' + this.xl.name"
77 required > 78 required >
78 - </sa-Select3> 79 + </sa-Select5>
79 </div> 80 </div>
80 <!-- 隐藏块,显示验证信息 --> 81 <!-- 隐藏块,显示验证信息 -->
81 - <div class="alert alert-danger well-sm" ng-show="myForm.cl.$error.required">  
82 - 车辆必须选择 82 + <div class="alert alert-danger well-sm" ng-show="myForm.rerunTtinfo.$error.required">
  83 + 先选择线路,再选择时刻表
83 </div> 84 </div>
84 </div> 85 </div>
85 -  
86 <div class="form-group has-success has-feedback"> 86 <div class="form-group has-success has-feedback">
87 - <label class="col-md-2 control-label">启用日期*:</label> 87 + <label class="col-md-2 control-label">路牌*:</label>
88 <div class="col-md-3"> 88 <div class="col-md-3">
89 - <div class="input-group">  
90 - <input type="text" class="form-control"  
91 - name="qyrq" placeholder="请选择启用日期..."  
92 - uib-datepicker-popup="yyyy年MM月dd日"  
93 - is-open="ctrl.qyrqOpen" required  
94 - ng-model="ctrl.scheduleRuleManageForSave.qyrq" readonly/>  
95 - <span class="input-group-btn">  
96 - <button type="button" class="btn btn-default" ng-click="ctrl.qyrq_open()">  
97 - <i class="glyphicon glyphicon-calendar"></i>  
98 - </button>  
99 - </span>  
100 - </div> 89 + <sa-Select5 name="rerunLp"
  90 + model="ctrl.rerunManageForSave"
  91 + cmaps="{'rerunLp.id' : 'lpId'}"
  92 + dcname="rerunLp.id"
  93 + icname="lpId"
  94 + dsparams="{{ {type: 'ajax', param:{'ttid': ctrl.rerunManageForSave.rerunTtinfo.id}, atype:'lpInfo' } | json }}"
  95 + iterobjname="item"
  96 + iterobjexp="'路牌'+ item.lpName"
  97 + searchph="请输拼音..."
  98 + searchexp="'路牌' + this.lpName"
  99 + required >
  100 + </sa-Select5>
101 </div> 101 </div>
102 <!-- 隐藏块,显示验证信息 --> 102 <!-- 隐藏块,显示验证信息 -->
103 - <div class="alert alert-danger well-sm" ng-show="myForm.qyrq.$error.required">  
104 - 启用日期必须选择 103 + <div class="alert alert-danger well-sm" ng-show="myForm.rerunLp.$error.required">
  104 + 先选择时刻表,再选择路牌
105 </div> 105 </div>
106 </div> 106 </div>
107 107
108 <div class="form-group has-success has-feedback"> 108 <div class="form-group has-success has-feedback">
109 - <label class="col-md-2 control-label">路牌范围*:</label> 109 + <label class="col-md-2 control-label">套跑班次*:</label>
110 <div class="col-md-6"> 110 <div class="col-md-6">
111 - <sa-Guideboardgroup model="ctrl.scheduleRuleManageForSave"  
112 - name="lprange"  
113 - xlidvalue="{{ctrl.scheduleRuleManageForSave.xl.id}}"  
114 - lprangevalue="{{ctrl.scheduleRuleManageForSave.lpNames}}"  
115 - lprangename="lpNames"  
116 - lpidrangevalue="{{ctrl.scheduleRuleManageForSave.lpIds}}"  
117 - lpidrangename="lpIds"  
118 - lpstartvalue="{{ctrl.scheduleRuleManageForSave.lpStart}}"  
119 - lpstartname="lpStart"  
120 - required  
121 - >  
122 - </sa-Guideboardgroup>  
123 - </div>  
124 - <div class="alert alert-danger well-sm" ng-show="myForm.lprange.$error.required">  
125 - 路牌范围,起始路牌必须选择 111 + <sa-Bcgroup model="ctrl.rerunManageForSave"
  112 + name="rerunTtinfodetailIds"
  113 + dataparams="{{ {'xlId': ctrl.rerunManageForSave.rerunXl.id, 'ttinfoId' : ctrl.rerunManageForSave.rerunTtinfo.id, 'lpId' : ctrl.rerunManageForSave.rerunLp.id} | json }}"
  114 + bcttinfoidsvalue="{{ctrl.rerunManageForSave.rerunTtinfodetailIds}}"
  115 + bcttinfoidsname="rerunTtinfodetailIds"
  116 + required >
  117 + </sa-Bcgroup>
  118 + </div>
  119 + <div class="alert alert-danger well-sm" ng-show="myForm.rerunTtinfodetailIds.$error.required">
  120 + 套跑班次必须选择
126 </div> 121 </div>
127 </div> 122 </div>
128 123
129 <div class="form-group has-success has-feedback"> 124 <div class="form-group has-success has-feedback">
130 - <label class="col-md-2 control-label">人员范围*:</label>  
131 - <div class="col-md-6">  
132 - <sa-Employeegroup model="ctrl.scheduleRuleManageForSave"  
133 - name="ryrange"  
134 - xlidvalue="{{ctrl.scheduleRuleManageForSave.xl.id}}"  
135 - dbbmrangevalue="{{ctrl.scheduleRuleManageForSave.ryDbbms}}"  
136 - dbbmrangename="ryDbbms"  
137 - rycidrangevalue="{{ctrl.scheduleRuleManageForSave.ryConfigIds}}"  
138 - rycidrangename="ryConfigIds"  
139 - rystartvalue="{{ctrl.scheduleRuleManageForSave.ryStart}}"  
140 - rystartname="ryStart"  
141 - required  
142 - >  
143 - </sa-Employeegroup>  
144 - </div>  
145 - <div class="alert alert-danger well-sm" ng-show="myForm.ryrange.$error.required">  
146 - 人员范围,起始人员必须选择 125 + <label class="col-md-2 control-label">套跑类型*:</label>
  126 + <div class="col-md-3">
  127 + <sa-Radiogroup model="ctrl.rerunManageForSave.rerunType" dicgroup="rerunType" name="rerunType"></sa-Radiogroup>
  128 + </div>
  129 + </div>
  130 +
  131 + <div class="form-group has-success has-feedback"
  132 + ng-if="ctrl.rerunManageForSave.rerunType == 'dylp'">
  133 + <label class="col-md-2 control-label">线路2*:</label>
  134 + <div class="col-md-3">
  135 + <sa-Select5 name="useXl"
  136 + model="ctrl.rerunManageForSave"
  137 + cmaps="{'useXl.id' : 'id'}"
  138 + dcname="useXl.id"
  139 + icname="id"
  140 + dsparams="{{ {type: 'ajax', param:{type: 'all'}, atype:'xl' } | json }}"
  141 + iterobjname="item"
  142 + iterobjexp="item.name"
  143 + searchph="请输拼音..."
  144 + searchexp="this.name"
  145 + required >
  146 + </sa-Select5>
  147 + </div>
  148 + <!-- 隐藏块,显示验证信息 -->
  149 + <div class="alert alert-danger well-sm" ng-show="myForm.useXl.$error.required">
  150 + 线路2必须选择
  151 + </div>
  152 + </div>
  153 + <div class="form-group has-success has-feedback"
  154 + ng-if="ctrl.rerunManageForSave.rerunType == 'dylp'">
  155 + <label class="col-md-2 control-label">路牌*:</label>
  156 + <div class="col-md-3">
  157 + <sa-Select5 name="useLp"
  158 + model="ctrl.rerunManageForSave"
  159 + cmaps="{'useLp.id' : 'id'}"
  160 + dcname="useLp.id"
  161 + icname="id"
  162 + dsparams="{{ {type: 'ajax', param:{'xl.id_eq': ctrl.rerunManageForSave.useXl.id}, atype:'lpInfo2' } | json }}"
  163 + dsparamsextra="{'type':'all'}"
  164 + iterobjname="item"
  165 + iterobjexp="'路牌' + item.lpName"
  166 + searchph="请输拼音..."
  167 + searchexp="'路牌' + this.lpName"
  168 + required >
  169 + </sa-Select5>
  170 + </div>
  171 + <!-- 隐藏块,显示验证信息 -->
  172 + <div class="alert alert-danger well-sm" ng-show="myForm.useLp.$error.required">
  173 + 先选择线路2,再选择路牌2
147 </div> 174 </div>
148 </div> 175 </div>
149 176
150 - <!--<div class="form-group">-->  
151 - <!--<label class="col-md-2 control-label">翻班格式:</label>-->  
152 - <!--<div class="col-md-4">-->  
153 - <!--<input type="text" class="form-control" name="fbgs" ng-model="ctrl.scheduleRuleManageForSave.fbgs"-->  
154 - <!--placeholder="车辆翻班格式"/>-->  
155 - <!--</div>-->  
156 - <!--</div>-->  
157 177
  178 + <div class="form-group has-success has-feedback" ng-if="ctrl.rerunManageForSave.rerunType == 'dybc'">
  179 + <label class="col-md-2 control-label">车辆配置*:</label>
  180 + <div class="col-md-3">
  181 + <sa-Select5 name="useCarConfig"
  182 + model="ctrl.rerunManageForSave"
  183 + cmaps="{'useCarConfig.id' : 'id'}"
  184 + dcname="useCarConfig.id"
  185 + icname="id"
  186 + dsparams="{{ {type: 'ajax', param:{'type': 'all'}, atype:'cci2' } | json }}"
  187 + iterobjname="item"
  188 + iterobjexp="item.cl.insideCode + '-' + item.xl.name"
  189 + searchph="请输拼音..."
  190 + searchexp="this.cl.insideCode + '-' + this.xl.name"
  191 + required >
  192 + </sa-Select5>
  193 + </div>
  194 + <!-- 隐藏块,显示验证信息 -->
  195 + <div class="alert alert-danger well-sm" ng-show="myForm.useCarConfig.$error.required">
  196 + 车辆必须选择(车辆配置中的车辆)
  197 + </div>
  198 + </div>
158 199
159 - <!-- 其他form-group --> 200 + <div class="form-group has-success has-feedback" ng-if="ctrl.rerunManageForSave.rerunType == 'dybc'">
  201 + <label class="col-md-2 control-label">人员配置*:</label>
  202 + <div class="col-md-5">
  203 + <sa-Select5 name="useEmployeeConfig"
  204 + model="ctrl.rerunManageForSave"
  205 + cmaps="{'useEmployeeConfig.id' : 'id'}"
  206 + dcname="useEmployeeConfig.id"
  207 + icname="id"
  208 + dsparams="{{ {type: 'ajax', param:{'type': 'all'}, atype:'eci3' } | json }}"
  209 + iterobjname="item"
  210 + iterobjexp="item.xl.name + '---' + '驾:' + item.jsy.personnelName + '<' + item.jsy.jobCode + '>' + ' ' + (item.spy == null ? ' ' : ('售:' + item.spy.personnelName + '<' + item.spy.jobCode + '>'))"
  211 + searchph="请输拼音..."
  212 + searchexp="this.xl.name + '---' + '驾:' + this.jsy.personnelName + '<' + this.jsy.jobCode + '>' + ' ' + (this.spy == null ? ' ' : ('售:' + this.spy.personnelName + '<' + this.spy.jobCode + '>'))"
  213 + required >
  214 + </sa-Select5>
  215 + </div>
  216 + <!-- 隐藏块,显示验证信息 -->
  217 + <div class="alert alert-danger well-sm" ng-show="myForm.useCarConfig.$error.required">
  218 + 人员配置必须选择(线路下的驾驶员和售票员配置)
  219 + </div>
  220 + </div>
160 221
161 </div> 222 </div>
162 223
163 - <!-- TODO:!myForm.$valid 在这里有点问题,改用以下方法验证 -->  
164 <div class="form-actions"> 224 <div class="form-actions">
165 <div class="row"> 225 <div class="row">
166 <div class="col-md-offset-3 col-md-4"> 226 <div class="col-md-offset-3 col-md-4">
167 <button type="submit" class="btn green" 227 <button type="submit" class="btn green"
168 - ng-disabled="!myForm.$valid"><i class="fa fa-check"></i> 提交</button>  
169 - <a type="button" class="btn default" ui-sref="scheduleRuleManage" ><i class="fa fa-times"></i> 取消</a> 228 +
  229 + ng-disabled="!myForm.$valid"
  230 +
  231 + ><i class="fa fa-check"></i> 提交</button>
  232 + <a type="button" class="btn default" ui-sref="rerunManage" ><i class="fa fa-times"></i> 取消</a>
170 </div> 233 </div>
171 </div> 234 </div>
172 </div> 235 </div>
src/main/resources/static/pages/scheduleApp/module/core/rerunManage/form.html
@@ -14,7 +14,7 @@ @@ -14,7 +14,7 @@
14 <i class="fa fa-circle"></i> 14 <i class="fa fa-circle"></i>
15 </li> 15 </li>
16 <li> 16 <li>
17 - <a ui-sref="scheduleRuleManage">套跑管理</a> 17 + <a ui-sref="rerunManage">套跑管理</a>
18 <i class="fa fa-circle"></i> 18 <i class="fa fa-circle"></i>
19 </li> 19 </li>
20 <li> 20 <li>
@@ -43,17 +43,18 @@ @@ -43,17 +43,18 @@
43 <div class="form-group has-success has-feedback"> 43 <div class="form-group has-success has-feedback">
44 <label class="col-md-2 control-label">线路*:</label> 44 <label class="col-md-2 control-label">线路*:</label>
45 <div class="col-md-3"> 45 <div class="col-md-3">
46 - <sa-Select3 model="ctrl.rerunManageForSave"  
47 - name="rerunXl"  
48 - placeholder="请输拼音..."  
49 - dcvalue="{{ctrl.rerunManageForSave.rerunXl.id}}" 46 + <sa-Select5 name="rerunXl"
  47 + model="ctrl.rerunManageForSave"
  48 + cmaps="{'rerunXl.id' : 'id'}"
50 dcname="rerunXl.id" 49 dcname="rerunXl.id"
51 icname="id" 50 icname="id"
52 - icnames="name"  
53 - datatype="xl"  
54 - mlp="true" 51 + dsparams="{{ {type: 'ajax', param:{type: 'all'}, atype:'xl' } | json }}"
  52 + iterobjname="item"
  53 + iterobjexp="item.name"
  54 + searchph="请输拼音..."
  55 + searchexp="this.name"
55 required > 56 required >
56 - </sa-Select3> 57 + </sa-Select5>
57 </div> 58 </div>
58 <!-- 隐藏块,显示验证信息 --> 59 <!-- 隐藏块,显示验证信息 -->
59 <div class="alert alert-danger well-sm" ng-show="myForm.rerunXl.$error.required"> 60 <div class="alert alert-danger well-sm" ng-show="myForm.rerunXl.$error.required">
@@ -63,19 +64,19 @@ @@ -63,19 +64,19 @@
63 <div class="form-group has-success has-feedback"> 64 <div class="form-group has-success has-feedback">
64 <label class="col-md-2 control-label">时刻表*:</label> 65 <label class="col-md-2 control-label">时刻表*:</label>
65 <div class="col-md-3"> 66 <div class="col-md-3">
66 - <sa-Select3 model="ctrl.rerunManageForSave"  
67 - name="rerunTtinfo"  
68 - placeholder="请输拼音..."  
69 - dcvalue="{{ctrl.rerunManageForSave.rerunTtinfo.id}}" 67 + <sa-Select5 name="rerunTtinfo"
  68 + model="ctrl.rerunManageForSave"
  69 + cmaps="{'rerunTtinfo.id' : 'id'}"
70 dcname="rerunTtinfo.id" 70 dcname="rerunTtinfo.id"
71 icname="id" 71 icname="id"
72 - icnames="name"  
73 - datatype="ttInfo"  
74 - dataassociate="true"  
75 - dataparam="{{ {'xl.id_eq': ctrl.rerunManageForSave.rerunXl.id} | json }}"  
76 - mlp="true" 72 + dsparams="{{ {type: 'ajax', param:{'xl.id_eq': ctrl.rerunManageForSave.rerunXl.id}, atype:'ttInfo' } | json }}"
  73 + dsparamsextra="{'type':'all'}"
  74 + iterobjname="item"
  75 + iterobjexp="item.name + '-' + item.xl.name"
  76 + searchph="请输拼音..."
  77 + searchexp="this.name + '-' + this.xl.name"
77 required > 78 required >
78 - </sa-Select3> 79 + </sa-Select5>
79 </div> 80 </div>
80 <!-- 隐藏块,显示验证信息 --> 81 <!-- 隐藏块,显示验证信息 -->
81 <div class="alert alert-danger well-sm" ng-show="myForm.rerunTtinfo.$error.required"> 82 <div class="alert alert-danger well-sm" ng-show="myForm.rerunTtinfo.$error.required">
@@ -85,19 +86,18 @@ @@ -85,19 +86,18 @@
85 <div class="form-group has-success has-feedback"> 86 <div class="form-group has-success has-feedback">
86 <label class="col-md-2 control-label">路牌*:</label> 87 <label class="col-md-2 control-label">路牌*:</label>
87 <div class="col-md-3"> 88 <div class="col-md-3">
88 - <sa-Select3 model="ctrl.rerunManageForSave"  
89 - name="rerunLp"  
90 - placeholder="请输拼音..."  
91 - dcvalue="{{ctrl.rerunManageForSave.rerunLp.id}}" 89 + <sa-Select5 name="rerunLp"
  90 + model="ctrl.rerunManageForSave"
  91 + cmaps="{'rerunLp.id' : 'lpId'}"
92 dcname="rerunLp.id" 92 dcname="rerunLp.id"
93 icname="lpId" 93 icname="lpId"
94 - icnames="lpName"  
95 - datatype="lpInfo"  
96 - dataassociate="true"  
97 - dataparam="{{ {'ttid': ctrl.rerunManageForSave.rerunTtinfo.id} | json }}"  
98 - mlp="true" 94 + dsparams="{{ {type: 'ajax', param:{'ttid': ctrl.rerunManageForSave.rerunTtinfo.id}, atype:'lpInfo' } | json }}"
  95 + iterobjname="item"
  96 + iterobjexp="'路牌'+ item.lpName"
  97 + searchph="请输拼音..."
  98 + searchexp="'路牌' + this.lpName"
99 required > 99 required >
100 - </sa-Select3> 100 + </sa-Select5>
101 </div> 101 </div>
102 <!-- 隐藏块,显示验证信息 --> 102 <!-- 隐藏块,显示验证信息 -->
103 <div class="alert alert-danger well-sm" ng-show="myForm.rerunLp.$error.required"> 103 <div class="alert alert-danger well-sm" ng-show="myForm.rerunLp.$error.required">
@@ -132,53 +132,91 @@ @@ -132,53 +132,91 @@
132 ng-if="ctrl.rerunManageForSave.rerunType == 'dylp'"> 132 ng-if="ctrl.rerunManageForSave.rerunType == 'dylp'">
133 <label class="col-md-2 control-label">线路2*:</label> 133 <label class="col-md-2 control-label">线路2*:</label>
134 <div class="col-md-3"> 134 <div class="col-md-3">
135 - <sa-Select4 model="ctrl.rerunManageForSave"  
136 - name="useXl"  
137 - placeholder="请输拼音..."  
138 - dcvalue="{{ctrl.rerunManageForSave.useXl.id}}" 135 + <sa-Select5 name="useXl"
  136 + model="ctrl.rerunManageForSave"
  137 + cmaps="{'useXl.id' : 'id'}"
139 dcname="useXl.id" 138 dcname="useXl.id"
140 icname="id" 139 icname="id"
141 - dscol="name"  
142 - dsparams="{{ {type: 'ajax', param:{}, atype:'xl' } | json }}"  
143 - mlp="true" 140 + dsparams="{{ {type: 'ajax', param:{type: 'all'}, atype:'xl' } | json }}"
  141 + iterobjname="item"
  142 + iterobjexp="item.name"
  143 + searchph="请输拼音..."
  144 + searchexp="this.name"
144 required > 145 required >
145 - </sa-Select4> 146 + </sa-Select5>
146 </div> 147 </div>
147 <!-- 隐藏块,显示验证信息 --> 148 <!-- 隐藏块,显示验证信息 -->
148 <div class="alert alert-danger well-sm" ng-show="myForm.useXl.$error.required"> 149 <div class="alert alert-danger well-sm" ng-show="myForm.useXl.$error.required">
149 线路2必须选择 150 线路2必须选择
150 </div> 151 </div>
151 </div> 152 </div>
152 - <!--<div class="form-group has-success has-feedback"-->  
153 - <!--ng-if="ctrl.rerunManageForSave.rerunType == 'dylp'">-->  
154 - <!--<label class="col-md-2 control-label">路牌*:</label>-->  
155 - <!--<div class="col-md-3">-->  
156 - <!--<sa-Select3 model="ctrl.rerunManageForSave"-->  
157 - <!--name="useLp"-->  
158 - <!--placeholder="请输拼音..."-->  
159 - <!--dcvalue="{{ctrl.rerunManageForSave.useLp.id}}"-->  
160 - <!--dcname="useLp.id"-->  
161 - <!--icname="id"-->  
162 - <!--icnames="lpName"-->  
163 - <!--datatype="lpInfo2"-->  
164 - <!--dataassociate="true"-->  
165 - <!--dataparam="{{ {'xl.id_eq': ctrl.rerunManageForSave.useXl.id} | json }}"-->  
166 - <!--mlp="true"-->  
167 - <!--required >-->  
168 - <!--</sa-Select3>-->  
169 - <!--</div>-->  
170 - <!--&lt;!&ndash; 隐藏块,显示验证信息 &ndash;&gt;-->  
171 - <!--<div class="alert alert-danger well-sm" ng-show="myForm.useLp.$error.required">-->  
172 - <!--路牌2必须选择-->  
173 - <!--</div>-->  
174 - <!--</div>-->  
175 -  
176 - 153 + <div class="form-group has-success has-feedback"
  154 + ng-if="ctrl.rerunManageForSave.rerunType == 'dylp'">
  155 + <label class="col-md-2 control-label">路牌*:</label>
  156 + <div class="col-md-3">
  157 + <sa-Select5 name="useLp"
  158 + model="ctrl.rerunManageForSave"
  159 + cmaps="{'useLp.id' : 'id'}"
  160 + dcname="useLp.id"
  161 + icname="id"
  162 + dsparams="{{ {type: 'ajax', param:{'xl.id_eq': ctrl.rerunManageForSave.useXl.id}, atype:'lpInfo2' } | json }}"
  163 + dsparamsextra="{'type':'all'}"
  164 + iterobjname="item"
  165 + iterobjexp="'路牌' + item.lpName"
  166 + searchph="请输拼音..."
  167 + searchexp="'路牌' + this.lpName"
  168 + required >
  169 + </sa-Select5>
  170 + </div>
  171 + <!-- 隐藏块,显示验证信息 -->
  172 + <div class="alert alert-danger well-sm" ng-show="myForm.useLp.$error.required">
  173 + 先选择线路2,再选择路牌2
  174 + </div>
  175 + </div>
177 176
178 177
  178 + <div class="form-group has-success has-feedback" ng-if="ctrl.rerunManageForSave.rerunType == 'dybc'">
  179 + <label class="col-md-2 control-label">车辆配置*:</label>
  180 + <div class="col-md-3">
  181 + <sa-Select5 name="useCarConfig"
  182 + model="ctrl.rerunManageForSave"
  183 + cmaps="{'useCarConfig.id' : 'id'}"
  184 + dcname="useCarConfig.id"
  185 + icname="id"
  186 + dsparams="{{ {type: 'ajax', param:{'type': 'all'}, atype:'cci2' } | json }}"
  187 + iterobjname="item"
  188 + iterobjexp="item.cl.insideCode + '-' + item.xl.name"
  189 + searchph="请输拼音..."
  190 + searchexp="this.cl.insideCode + '-' + this.xl.name"
  191 + required >
  192 + </sa-Select5>
  193 + </div>
  194 + <!-- 隐藏块,显示验证信息 -->
  195 + <div class="alert alert-danger well-sm" ng-show="myForm.useCarConfig.$error.required">
  196 + 车辆必须选择(车辆配置中的车辆)
  197 + </div>
  198 + </div>
179 199
180 <div class="form-group has-success has-feedback" ng-if="ctrl.rerunManageForSave.rerunType == 'dybc'"> 200 <div class="form-group has-success has-feedback" ng-if="ctrl.rerunManageForSave.rerunType == 'dybc'">
181 - 对应班车 201 + <label class="col-md-2 control-label">人员配置*:</label>
  202 + <div class="col-md-5">
  203 + <sa-Select5 name="useEmployeeConfig"
  204 + model="ctrl.rerunManageForSave"
  205 + cmaps="{'useEmployeeConfig.id' : 'id'}"
  206 + dcname="useEmployeeConfig.id"
  207 + icname="id"
  208 + dsparams="{{ {type: 'ajax', param:{'type': 'all'}, atype:'eci3' } | json }}"
  209 + iterobjname="item"
  210 + iterobjexp="item.xl.name + '---' + '驾:' + item.jsy.personnelName + '<' + item.jsy.jobCode + '>' + ' ' + (item.spy == null ? ' ' : ('售:' + item.spy.personnelName + '<' + item.spy.jobCode + '>'))"
  211 + searchph="请输拼音..."
  212 + searchexp="this.xl.name + '---' + '驾:' + this.jsy.personnelName + '<' + this.jsy.jobCode + '>' + ' ' + (this.spy == null ? ' ' : ('售:' + this.spy.personnelName + '<' + this.spy.jobCode + '>'))"
  213 + required >
  214 + </sa-Select5>
  215 + </div>
  216 + <!-- 隐藏块,显示验证信息 -->
  217 + <div class="alert alert-danger well-sm" ng-show="myForm.useCarConfig.$error.required">
  218 + 人员配置必须选择(线路下的驾驶员和售票员配置)
  219 + </div>
182 </div> 220 </div>
183 221
184 </div> 222 </div>
@@ -188,7 +226,7 @@ @@ -188,7 +226,7 @@
188 <div class="col-md-offset-3 col-md-4"> 226 <div class="col-md-offset-3 col-md-4">
189 <button type="submit" class="btn green" 227 <button type="submit" class="btn green"
190 228
191 - <!--ng-disabled="!myForm.$valid"--> 229 + ng-disabled="!myForm.$valid"
192 230
193 ><i class="fa fa-check"></i> 提交</button> 231 ><i class="fa fa-check"></i> 提交</button>
194 <a type="button" class="btn default" ui-sref="rerunManage" ><i class="fa fa-times"></i> 取消</a> 232 <a type="button" class="btn default" ui-sref="rerunManage" ><i class="fa fa-times"></i> 取消</a>
src/main/resources/static/pages/scheduleApp/module/core/rerunManage/main.js
@@ -167,17 +167,29 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;RerunManageFormCtrl&#39;, [&#39;RerunManageSer @@ -167,17 +167,29 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;RerunManageFormCtrl&#39;, [&#39;RerunManageSer
167 }; 167 };
168 168
169 // 欲保存的busInfo信息,绑定 169 // 欲保存的busInfo信息,绑定
170 - self.rerunManageForSave = {rerunXl: {}, rerunTtinfo: {}, rerunLp: {}, rerunType: "dylp", useXl: {}, useLp: {}}; 170 + self.rerunManageForSave = {rerunXl: {}, rerunTtinfo: {}, rerunLp: {}, rerunType: "dylp", useXl: {}, useLp: {}, useCarConfig: {}, useEmployeeConfig: {}};
171 171
172 // 获取传过来的id,有的话就是修改,获取一遍数据 172 // 获取传过来的id,有的话就是修改,获取一遍数据
173 var id = $stateParams.id; 173 var id = $stateParams.id;
174 if (id) { 174 if (id) {
175 self.rerunManageForSave.id = id; 175 self.rerunManageForSave.id = id;
176 - scheduleRuleManageService.getDetail(id).then( 176 + rerunManageService.getDetail(id).then(
177 function(result) { 177 function(result) {
178 var key; 178 var key;
179 for (key in result) { 179 for (key in result) {
180 - self.rerunManageForSave[key] = result[key]; 180 + if (result[key]) {
  181 + self.rerunManageForSave[key] = result[key];
  182 +
  183 + if (self.rerunManageForSave.rerunType == 'dylp') {
  184 + self.rerunManageForSave.useCarConfig = {};
  185 + self.rerunManageForSave.useEmployeeConfig = {};
  186 + } else if (self.rerunManageForSave.rerunType == 'dybc') {
  187 + self.rerunManageForSave.useXl = {};
  188 + self.rerunManageForSave.useLp = {};
  189 + } else {
  190 +
  191 + }
  192 + }
181 } 193 }
182 }, 194 },
183 function(result) { 195 function(result) {
@@ -188,23 +200,31 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;RerunManageFormCtrl&#39;, [&#39;RerunManageSer @@ -188,23 +200,31 @@ angular.module(&#39;ScheduleApp&#39;).controller(&#39;RerunManageFormCtrl&#39;, [&#39;RerunManageSer
188 200
189 // 提交方法 201 // 提交方法
190 self.submit = function() { 202 self.submit = function() {
191 - console.log(self.rerunManageForSave);  
192 -  
193 - //rerunManageService.saveDetail(self.rerunManageForSave).then(  
194 - // function(result) {  
195 - // // TODO:弹出框方式以后改  
196 - // if (result.status == 'SUCCESS') {  
197 - // alert("保存成功!");  
198 - // $state.go("rerunManage");  
199 - // } else {  
200 - // alert("保存异常!");  
201 - // }  
202 - // },  
203 - // function(result) {  
204 - // // TODO:弹出框方式以后改  
205 - // alert("出错啦!");  
206 - // }  
207 - //); 203 + if (self.rerunManageForSave.rerunType == 'dylp') {
  204 + delete self.rerunManageForSave.useCarConfig;
  205 + delete self.rerunManageForSave.useEmployeeConfig;
  206 + } else if (self.rerunManageForSave.rerunType == 'dybc') {
  207 + delete self.rerunManageForSave.useXl;
  208 + delete self.rerunManageForSave.useLp;
  209 + } else {
  210 + return;
  211 + }
  212 +
  213 + rerunManageService.saveDetail(self.rerunManageForSave).then(
  214 + function(result) {
  215 + // TODO:弹出框方式以后改
  216 + if (result.status == 'SUCCESS') {
  217 + alert("保存成功!");
  218 + $state.go("rerunManage");
  219 + } else {
  220 + alert("保存异常!");
  221 + }
  222 + },
  223 + function(result) {
  224 + // TODO:弹出框方式以后改
  225 + alert("出错啦!");
  226 + }
  227 + );
208 }; 228 };
209 }]); 229 }]);
210 230