workingFormCtr.js 58 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627
  1. var sysFormly = angular.module("formlySystem", [
  2. "formly",
  3. "formlyBootstrap",
  4. "ui.bootstrap",
  5. "ngSanitize",
  6. "ui.select",
  7. "ui.grid",
  8. ]);
  9. app.requires.push("formlySystem");
  10. sysFormly.config(function config(formlyConfigProvider) {
  11. //格式转换方法 XXX-XXX转驼峰命名
  12. });
  13. sysFormly.controller("workingFormCtrl", [
  14. "$rootScope",
  15. "$scope",
  16. "$parse",
  17. "$filter",
  18. "$injector",
  19. "$http",
  20. "$q",
  21. "$state",
  22. "$stateParams",
  23. "$modal",
  24. "$timeout",
  25. "$interval",
  26. "SweetAlert",
  27. "FileUploader",
  28. "i18nService",
  29. "moment",
  30. "Restangular",
  31. "UserRestangular",
  32. "BpmRestangular",
  33. "api_configure_form",
  34. "api_bpm_domain",
  35. "api_bpm_data",
  36. "api_user_data",
  37. "api_solution",
  38. "api_wechatfile",
  39. function (
  40. $rootScope,
  41. $scope,
  42. $parse,
  43. $filter,
  44. $injector,
  45. $http,
  46. $q,
  47. $state,
  48. $stateParams,
  49. $modal,
  50. $timeout,
  51. $interval,
  52. SweetAlert,
  53. FileUploader,
  54. i18nService,
  55. moment,
  56. Restangular,
  57. UserRestangular,
  58. BpmRestangular,
  59. api_configure_form,
  60. api_bpm_domain,
  61. api_bpm_data,
  62. api_user_data,
  63. api_solution,
  64. api_wechatfile
  65. ) {
  66. //console.log($stateParams);
  67. var vm = this;
  68. vm.options = {};
  69. vm.exampleTitle = ["expressionProperties", "model property"];
  70. vm.fields = [];
  71. vm.model = {};
  72. var loginUser = $rootScope.user;
  73. $scope.langs = i18nService.getAllLangs();
  74. $scope.lang = "zh-cn";
  75. var that = $injector;
  76. var parse = $parse;
  77. var modelWatch = "";
  78. var fieldsWatch = [];
  79. var serviceWatch = null;
  80. var formWatch = {};
  81. var jry_modelWatch = "";
  82. if (angular.isDefined($stateParams.model) && $stateParams.model != "") {
  83. modelWatch = JSON.parse($stateParams.model);
  84. jry_modelWatch = JSON.parse($stateParams.model);
  85. // console.log("modelWatch:"+ JSON.stringify(modelWatch));
  86. }
  87. if (angular.isDefined($stateParams.fields) && $stateParams.fields != "") {
  88. fieldsWatch = JSON.parse($stateParams.fields);
  89. }
  90. if (angular.isDefined($stateParams.extjson) && $stateParams.extjson != "") {
  91. formWatch.extjson = JSON.parse($stateParams.extjson);
  92. }
  93. if (
  94. angular.isDefined($stateParams.cancelUrl) &&
  95. $stateParams.cancelUrl != ""
  96. ) {
  97. formWatch.cancelUrl = $stateParams.cancelUrl;
  98. }
  99. if (angular.isDefined($stateParams.url) && $stateParams.url != "") {
  100. formWatch.url = $stateParams.url;
  101. }
  102. if (angular.isDefined($stateParams.service) && $stateParams.service != "") {
  103. if (that.has($stateParams.service)) {
  104. serviceWatch = that.get($stateParams.service);
  105. } else {
  106. serviceWatch = $stateParams.service;
  107. }
  108. }
  109. // 选择上班人员---------------------start-------------------------------------
  110. $scope.my_user = [];
  111. $scope.my_data = [];
  112. $scope.try_async_user = function () {
  113. $scope.doing_asyncuser = true;
  114. api_user_data
  115. .fetchDataList("user", { idx: 0, sum: 1000000,user:{engineer: 1,} })
  116. .then(function (response) {
  117. if (response.status == 200) {
  118. var data = response.list;
  119. var objects = [];
  120. for (var i = 0; i < data.length; i++) {
  121. var object = {};
  122. angular.extend(object, data[i]);
  123. object.label = object.name;
  124. objects.push(object);
  125. }
  126. $scope.my_user = convertParentToChildList(objects);
  127. console.log($scope.my_user);
  128. $scope.tree_user = angular.copy($scope.my_user);
  129. // if ($scope.my_user.length > 0) {
  130. $scope.doing_asyncuser = false;
  131. // }
  132. console.log($scope.vm.model.workOnlineConfig.userList);
  133. $scope.my_user.forEach(function (v) {
  134. $scope.vm.model.workOnlineConfig.userList.forEach(function (vv) {
  135. if (v.id == vv.id) {
  136. v.checks = true;
  137. $scope.getbranchs.push(v);
  138. }
  139. });
  140. });
  141. $scope.getOldbranchs = angular.copy($scope.getbranchs);
  142. $scope.try_async_load();
  143. } else {
  144. SweetAlert.swal({
  145. title: "系统错误!",
  146. text: "请刷新重试!",
  147. type: "error",
  148. });
  149. }
  150. });
  151. };
  152. $scope.try_async_load = function () {
  153. $scope.doing_async = true;
  154. api_user_data
  155. .fetchDataList("group", { idx: 0, sum: 1000 })
  156. .then(function (response) {
  157. if (response.status == 200) {
  158. var data = response.list;
  159. var objects = [];
  160. for (var i = 0; i < data.length; i++) {
  161. var object = {};
  162. angular.extend(object, data[i]);
  163. object.label = object.groupName;
  164. objects.push(object);
  165. }
  166. $scope.my_data = convertParentToChildList(objects);
  167. console.log($scope.my_data);
  168. $scope.my_data.unshift({
  169. id: 0,
  170. groupName: "全部",
  171. label: "全部",
  172. users: $scope.tree_user,
  173. });
  174. $scope.tree_data = angular.copy($scope.my_data);
  175. if ($scope.my_data.length > 1) {
  176. $scope.doing_async = false;
  177. }
  178. } else {
  179. SweetAlert.swal({
  180. title: "系统错误!",
  181. text: "请刷新重试!",
  182. type: "error",
  183. });
  184. }
  185. });
  186. };
  187. function convertParentToChildList(data) {
  188. var treeMap = {};
  189. var list = [];
  190. convertListToTree(data, treeMap);
  191. angular.forEach(treeMap, function (item) {
  192. list.push(item);
  193. });
  194. return list;
  195. }
  196. function convertListToTree(data, treeMap) {
  197. var idToNodeMap = {}; //Keeps track of nodes using id as key, for fast lookup
  198. var root = null; //Initially set our loop to null
  199. //loop over data
  200. for (var i = 0; i < data.length; i++) {
  201. var datum = data[i];
  202. //each node will have children, so let's give it a "children" poperty
  203. datum.children = [];
  204. //add an entry for this node to the map so that any future children can
  205. //lookup the parent
  206. idToNodeMap[datum.id] = datum;
  207. //Does this node have a parent?
  208. // console.log("datum="+JSON.stringify(datum))
  209. if (typeof datum.parent === "undefined" || datum.parent === null) {
  210. //Doesn't look like it, so this node is the root of the tree
  211. root = datum;
  212. treeMap[datum.id] = root;
  213. } else {
  214. //This node has a parent, so let's look it up using the id
  215. parentNode = idToNodeMap[datum.parent.id];
  216. //We don't need this property, so let's delete it.
  217. // delete datum.parent;
  218. //Let's add the current node as a child of the parent node.
  219. parentNode.children.push(datum);
  220. }
  221. }
  222. return root;
  223. }
  224. //选中工作组
  225. $scope.group = {};
  226. $scope.my_tree_handler = function (branch) {
  227. var ids = branch.users.map(function (v) {
  228. return v.id;
  229. });
  230. $scope.my_user = $scope.tree_user.filter(function (v) {
  231. return ids.includes(v.id);
  232. });
  233. $scope.getbranchs.forEach(function (v) {
  234. $scope.my_user.forEach(function (vv) {
  235. if (v.id == vv.id) {
  236. vv.checks = true;
  237. }
  238. });
  239. });
  240. $scope.group = branch;
  241. console.log(branch, $scope.my_user);
  242. };
  243. // 选中/取消上班人员
  244. $scope.getbranchs = [];
  245. $scope.getOldbranchs = []; //上一次选择的上班人员
  246. $scope.formbranch = function (branchData) {
  247. console.log(branchData);
  248. // 判断当前工作组选中还是取消人员
  249. var old = $scope.getOldbranchs.filter(function (v) {
  250. var groups = v.group || [];
  251. var ids = groups.map(function (vv) {
  252. return vv.id;
  253. });
  254. return $scope.group.id ? ids.includes($scope.group.id) : true;
  255. });
  256. if (old.length > branchData.length) {
  257. //删除 取出(old与branchData)差异值,删除
  258. var currentIds = branchData.map(function (v) {
  259. return v.id;
  260. });
  261. currentIds.forEach(function (v, i) {
  262. old.splice(i, 1);
  263. });
  264. var delId = old[0].id;
  265. $scope.getbranchs = $scope.getOldbranchs.filter(function (vv) {
  266. return vv.id != delId;
  267. });
  268. $scope.getOldbranchs = angular.copy($scope.getbranchs); //最近一次上班人员
  269. } else {
  270. //增加
  271. $scope.getbranchs = $scope.uniqueU($scope.getbranchs, branchData);
  272. $scope.getOldbranchs = angular.copy($scope.getbranchs); //最近一次上班人员
  273. }
  274. };
  275. $scope.uniqueU = function (getbranchs, branchData) {
  276. var filterResult = [];
  277. getbranchs.forEach(function (v) {
  278. branchData.forEach(function (vv) {
  279. if (v.id == vv.id) {
  280. filterResult.push(v);
  281. }
  282. });
  283. });
  284. filterResult = filterResult.map(function (item) {
  285. return item.id;
  286. }); //ids
  287. var arr = branchData.filter(function (item) {
  288. return !filterResult.includes(item.id);
  289. });
  290. return getbranchs.concat(arr);
  291. };
  292. // 去除上班人员
  293. $scope.removeBranch = function (u) {
  294. console.log(u.id, $scope.getbranchs);
  295. $scope.getbranchs = $scope.getbranchs.filter(function (v) {
  296. if (v.id == u.id) {
  297. $scope.my_user.forEach(function (vv) {
  298. if (vv.id == v.id) {
  299. vv.checks = false;
  300. }
  301. });
  302. }
  303. return v.id != u.id;
  304. });
  305. $scope.getOldbranchs = angular.copy($scope.getbranchs); //最近一次上班人员
  306. };
  307. // 选择上班人员---------------------end-------------------------------------
  308. //用户测试数据,后续从header的auth中获取
  309. var userId = 2;
  310. userId = $rootScope.user.id;
  311. //==============处理表单设计数据 开始====================
  312. //处理组件加载后台数据选项的方法
  313. function refreshSelectOptions(searchVal, field) {
  314. console.log(field, "field", $scope.vm.model);
  315. if (
  316. field.templateOptions.optionsUrl &&
  317. !field.templateOptions.isnosearch
  318. ) {
  319. var process = BpmRestangular.all("");
  320. if (field.templateOptions.ApiService) {
  321. process = UserRestangular.all("");
  322. }
  323. if (field.templateOptions.Apicommon) {
  324. process = WechatRestangular.all("");
  325. }
  326. var datakey = { idx: 0, sum: 1000 };
  327. if (field.templateOptions.modelreasondata) {
  328. datakey = field.templateOptions.modelreasondata;
  329. }
  330. process
  331. .customPOST(datakey, field.templateOptions.optionsUrl)
  332. .then(function (result) {
  333. if (!field.templateOptions.options) {
  334. field.templateOptions.options = [];
  335. }
  336. if (field.templateOptions.optionsDataKey) {
  337. if (field.key === "userList") {
  338. $scope.vm.model.workOnlineConfig.userList.forEach(function (v) {
  339. result[field.templateOptions.optionsDataKey].forEach(
  340. function (vv, ii) {
  341. if (v.id == vv.id) {
  342. result[field.templateOptions.optionsDataKey].splice(
  343. ii,
  344. 1
  345. );
  346. }
  347. }
  348. );
  349. });
  350. }
  351. field.templateOptions.options =
  352. result[field.templateOptions.optionsDataKey];
  353. } else {
  354. field.templateOptions.options = result.list;
  355. }
  356. });
  357. }
  358. }
  359. //获取表单后数据处理
  360. function formfield(field, result) {
  361. // angular.forEach(fields.fields, function(field) {
  362. if (field.key == "") {
  363. delete field.key;
  364. }
  365. if (angular.isDefined(field.extjson)) {
  366. var extObj = angular.fromJson(field.extjson); //JSON.parse(field.extjson);
  367. angular.extend(field.templateOptions, extObj.templateOptions);
  368. delete extObj.templateOptions;
  369. for (var prop in extObj) {
  370. if (new RegExp("Expression").test(prop)) {
  371. //var obj = $scope.$eval(extObj[prop]);
  372. //extObj[prop] = $scope.$eval(extObj[prop]);
  373. if (extObj[prop] != null) {
  374. if (new RegExp("function").test(extObj[prop])) {
  375. var propValue = eval(extObj[prop]);
  376. extObj[prop] = propValue;
  377. } else {
  378. //console.log(extObj[prop]);
  379. var obj = $scope.$eval(extObj[prop]);
  380. extObj[prop] = obj;
  381. //console.log(obj);
  382. }
  383. }
  384. } else if (new RegExp("expressionProperties").test(prop)) {
  385. for (var p in extObj[prop]) {
  386. if (new RegExp("function").test(extObj[prop][p])) {
  387. var propValue = eval(extObj[prop][p]);
  388. extObj[prop][p] = propValue;
  389. } else {
  390. //if(p.indexOf("'")>=0){
  391. // var obj = $scope.$eval(extObj[prop][p]);
  392. // extObj[prop][$scope.$eval(p)]=obj;
  393. //}
  394. }
  395. }
  396. } else if ("watcher" == prop) {
  397. if (angular.isArray(extObj[prop])) {
  398. angular.forEach(extObj[prop], function (item, index) {
  399. for (var p in item) {
  400. if (new RegExp("function").test(item[p])) {
  401. var propValue = eval(item[p]);
  402. extObj[prop][index][p] = propValue;
  403. }
  404. }
  405. });
  406. } else if (angular.isObject(extObj[prop])) {
  407. for (var p in extObj[prop]) {
  408. if (new RegExp("function").test(extObj[prop][p])) {
  409. var propValue = eval(extObj[prop][p]);
  410. extObj[prop][p] = propValue;
  411. }
  412. }
  413. }
  414. }
  415. }
  416. angular.extend(field, extObj);
  417. delete field.extjson;
  418. }
  419. if (angular.isDefined(field.templateOptions)) {
  420. var templateOs = field.templateOptions;
  421. for (var property in templateOs) {
  422. //console.log(angular.isString(templateOs[property]) +" "+property + " " + (!(new RegExp("[\u4e00-\u9fa5]").test(templateOs[property]))));
  423. if (angular.isString(templateOs[property])) {
  424. //&& !(new RegExp("[\u4e00-\u9fa5]").test(templateOs[property]))
  425. if (new RegExp("function").test(templateOs[property])) {
  426. var propValue = eval(templateOs[property]);
  427. field.templateOptions[property] = propValue;
  428. } else {
  429. if (that.has(templateOs[property])) {
  430. field.templateOptions[property] = that.get(
  431. templateOs[property]
  432. );
  433. } else {
  434. field.templateOptions[property] = templateOs[property];
  435. }
  436. }
  437. } else if (templateOs[property] == null) {
  438. //delete field.templateOptions[property];
  439. } else {
  440. }
  441. }
  442. }
  443. if (
  444. angular.isDefined(field.templateOptions) &&
  445. angular.isDefined(field.templateOptions.extjson)
  446. ) {
  447. var extObj = angular.fromJson(field.templateOptions.extjson); //JSON.parse(field.extjson);
  448. angular.extend(field.templateOptions, extObj);
  449. delete field.templateOptions.extjson;
  450. }
  451. // ...
  452. if (field.templateOptions) {
  453. //处理远程获取数据控件方法调用
  454. if (
  455. field.templateOptions.optionsUrl &&
  456. !field.templateOptions.refresh
  457. ) {
  458. // if (!field.templateOptions.isnoreash) {
  459. field.templateOptions.refresh = refreshSelectOptions;
  460. // }
  461. }
  462. //处理嵌套属性数据绑定/
  463. if (field.templateOptions.pkey) {
  464. var pmodel,
  465. i = 0;
  466. angular.forEach(field.templateOptions.pkey.split("."), function (p) {
  467. if (i == 0) {
  468. if (result.model[p] == null) {
  469. result.model[p] = {};
  470. }
  471. pmodel = result.model[p];
  472. i++;
  473. } else {
  474. if (pmodel[p] == null) {
  475. pmodel[p] = {};
  476. }
  477. pmodel = pmodel[p];
  478. }
  479. });
  480. if (pmodel != null) {
  481. field.model = pmodel;
  482. if (pmodel[field.key] == null) {
  483. pmodel[field.key] = null;
  484. }
  485. }
  486. } else {
  487. if (result.model[field.key] == null) {
  488. result.model[field.key] = null;
  489. }
  490. }
  491. //处理弹出框组件初始化
  492. if (field.type == "ui-input-selectmodal") {
  493. field.templateOptions.modal = $modal;
  494. //field.templateOptions.Restangular = Restangular;
  495. } else if (field.type == "ui-requesterselect") {
  496. //field.templateOptions.language = $scope.lang;
  497. field.templateOptions.modal = $modal;
  498. field.templateOptions.UserService = api_user_data;
  499. } else if (field.type == "ui-requesterinformation") {
  500. field.templateOptions.modal = $modal;
  501. field.templateOptions.UserService = api_user_data;
  502. } else if (field.type == "ui-userselect") {
  503. field.templateOptions.modal = $modal;
  504. //field.templateOptions.Restangular = Restangular;
  505. } else if (field.type == "ui-jryselect") {
  506. field.templateOptions.modal = $modal;
  507. //field.templateOptions.Restangular = Restangular;
  508. } else if (field.type == "ui-jrySelectOpen") {
  509. field.templateOptions.modal = $modal;
  510. //field.templateOptions.Restangular = Restangular;
  511. } else if (field.type == "ui-jrySelectFault") {
  512. field.templateOptions.modal = $modal;
  513. //field.templateOptions.Restangular = Restangular;
  514. } else if (field.type == "ui-userselectSearch") {
  515. field.templateOptions.modal = $modal;
  516. //field.templateOptions.Restangular = Restangular;
  517. } else if (field.type == "ui-multiuserselect") {
  518. field.templateOptions.modal = $modal;
  519. } else if (field.type == "ui-stringuserselect") {
  520. field.templateOptions.modal = $modal;
  521. } else if (field.type == "ui-search") {
  522. field.templateOptions.modal = $modal;
  523. } else if (field.type == "ui-modelselect") {
  524. field.templateOptions.modal = $modal;
  525. //console.log("$rootScope.user:" + JSON.stringify($rootScope.user));
  526. field.templateOptions.loginUser = $rootScope.user;
  527. //field.templateOptions.Restangular = Restangular;
  528. } else if (field.type == "ui-incidentmodelselect") {
  529. field.templateOptions.modal = $modal;
  530. //console.log("$rootScope.user:" + JSON.stringify($rootScope.user));
  531. field.templateOptions.loginUser = $rootScope.user;
  532. //field.templateOptions.Restangular = Restangular;
  533. } else if (field.type == "ui-dropfile") {
  534. $scope.fileUploader = field.templateOptions.fileUploader =
  535. new FileUploader({
  536. url: "/uploader",
  537. });
  538. field.templateOptions.taskId = $stateParams.taskId;
  539. field.templateOptions.processInstanceId =
  540. $stateParams.processInstanceId;
  541. field.templateOptions.userId = $rootScope.user.id;
  542. } else if (field.type == "ui-dropfielknow") {
  543. $scope.fileUploader = field.templateOptions.fileUploader =
  544. new FileUploader({
  545. url: "/uploader",
  546. });
  547. field.templateOptions.taskId = $stateParams.taskId;
  548. field.templateOptions.processInstanceId =
  549. $stateParams.processInstanceId;
  550. field.templateOptions.userId = $rootScope.user.id;
  551. } else if (field.type == "ui-dropfilenotup") {
  552. $scope.fileUploader = field.templateOptions.fileUploader =
  553. new FileUploader({
  554. url: "/uploader",
  555. });
  556. field.templateOptions.taskId = $stateParams.taskId;
  557. field.templateOptions.processInstanceId =
  558. $stateParams.processInstanceId;
  559. field.templateOptions.userId = $rootScope.user.id;
  560. //field.ApiService=api_bpm_domain;
  561. } else if (field.type == "ui-dropfiletable") {
  562. if (field.templateOptions.processInstanceId) {
  563. } else {
  564. field.templateOptions.processInstanceId =
  565. $stateParams.processInstanceId;
  566. }
  567. } else if (field.type == "ui-repeatSection") {
  568. var repeatForm = {
  569. model: {},
  570. fields: field.templateOptions.fields,
  571. };
  572. repeatForm.model[field.key] = [];
  573. decodeVMForm(repeatForm);
  574. } else if (field.type == "ui-currentuser") {
  575. field.templateOptions.user = vm.model["loginUser"];
  576. } else if (field.type == "ui-workernumbersign") {
  577. field.templateOptions.user = vm.model["loginUser"];
  578. }
  579. }
  580. }
  581. //解析自定义表单设计数据
  582. $scope.oldfromtype = true;
  583. function decodeVMForm(vmForm) {
  584. if (vmForm.formType == "1") {
  585. $scope.oldfromtype = false;
  586. } else {
  587. $scope.oldfromtype = true;
  588. }
  589. var result = { model: {}, fields: [] };
  590. //设置模型实体数据 begin
  591. // var mdata = vmForm.model;
  592. //解析数据实体
  593. var mdata = angular.fromJson(vmForm.model); //JSON.parse(field.extjson);
  594. angular.extend(result.model, mdata);
  595. if (modelWatch != null && modelWatch != "") {
  596. //angular.extend(result.model.incident,modelWatch.incident);
  597. //result.model.alarmType = modelWatch.alarmType;
  598. // vmForm.cancelUrl = modelWatch.cancelUrl;
  599. // console.log(modelWatch.cancelUrl)
  600. for (var index in modelWatch.model) {
  601. //console.log(JSON.stringify(index+" " +JSON.stringify( modelWatch.model[index])));
  602. if (result.model[index] != null) {
  603. angular.extend(result.model[index], modelWatch.model[index]);
  604. } else {
  605. result.model[index] = modelWatch.model[index];
  606. }
  607. }
  608. }
  609. //设置模型实体数据 end
  610. //解析设计数据生成表单项 begin
  611. var fields = [];
  612. //处理修改设计数据中展示设置
  613. angular.forEach(vmForm.fields, function (fields) {
  614. if (vmForm.formType == "1") {
  615. angular.forEach(fields.fields, function (field) {
  616. formfield(field, result);
  617. });
  618. } else {
  619. formfield(fields, result);
  620. }
  621. // console.log(field);
  622. result.fields.push(fields);
  623. });
  624. angular.extend($scope.vm.fields, result.fields);
  625. angular.extend($scope.vm.model, result.model);
  626. vm.model["loginUser"] = $rootScope.user;
  627. if (
  628. modelWatch != null &&
  629. modelWatch != "" &&
  630. modelWatch.cancelUrl != null &&
  631. modelWatch.cancelUrl != ""
  632. ) {
  633. vmForm.cancelUrl = modelWatch.cancelUrl;
  634. }
  635. $scope.formData = vmForm;
  636. // console.log($scope.formData.url);
  637. // console.log("$scope.formData="+JSON.stringify($scope.formData.url));
  638. if ($scope.formData.url == "start") {
  639. $scope.Reset = true;
  640. $scope.close = true;
  641. $rootScope.isMask = false;
  642. } else if ($scope.formData.url == "complete") {
  643. $scope.Reset = false;
  644. $scope.close = true;
  645. }
  646. //解析设计数据生成表单项 end
  647. return result;
  648. }
  649. //======================处理表单设计数据 结束========================
  650. $scope.ldloading = {};
  651. function filter(obj) {
  652. angular.forEach(obj, function (key, value) {
  653. if (value === "" || value === null) {
  654. delete obj[key];
  655. } else if (
  656. Object.prototype.toString.call(value) === "[object Object]"
  657. ) {
  658. filter(value);
  659. } else if (angular.isArray(value)) {
  660. angular.forEach(value, function (item) {
  661. filter(item);
  662. });
  663. }
  664. });
  665. }
  666. $scope.closeModel = function () {
  667. $state.go($scope.formData.cancelUrl, {});
  668. event.preventDefault();
  669. };
  670. // 状态下拉框数据
  671. $scope.stateListData = {};
  672. $scope.getStateData = function () {
  673. var data = {
  674. key: "task_month_state",
  675. type: "list",
  676. };
  677. api_wechatfile.getDictionary(data).then(function (res) {
  678. angular.forEach(res, function (v, i) {
  679. $scope.stateListData[v.value] = v.id;
  680. });
  681. });
  682. };
  683. $scope.getStateData();
  684. // 获取状态-lmm
  685. $scope.stateListData1 = {};
  686. $scope.getStateData1 = function () {
  687. //lyl
  688. var data = {
  689. key: "task_sub_state",
  690. type: "list",
  691. };
  692. api_wechatfile.getDictionary(data).then(function (res) {
  693. angular.forEach(res, function (v, i) {
  694. $scope.stateListData1[v.value] = v.id;
  695. });
  696. });
  697. };
  698. $scope.getStateData1();
  699. vm.submit = function (data, style) {
  700. console.log(vm);
  701. // console.log("data="+JSON.stringify(data));
  702. // if($stateParams.formKey=="system_edit"){
  703. // console.log("roleid="+$scope.roleid);
  704. if (vm.form.$valid) {
  705. vm.options.updateInitialValue();
  706. $scope.ldloading[style.replace("-", "_")] = true;
  707. // alert(JSON.stringify(vm.model), null, 2);
  708. var _ = window._;
  709. vm.model = (function filter(obj) {
  710. var dateTransKeys = [];
  711. var filtered = _.pick(obj, function (v, k, obj) {
  712. if (_.isDate(v)) {
  713. dateTransKeys.push(k);
  714. }
  715. return (
  716. angular.isDefined(v) &&
  717. v !== null &&
  718. (angular.isArray(v) ? v.length > 0 : true) &&
  719. (_.isPlainObject(v) ? !_.isEmpty(v) : true)
  720. );
  721. });
  722. return _.cloneDeep(filtered, function (v, index, object) {
  723. if (angular.isArray(dateTransKeys) && dateTransKeys.length > 0) {
  724. angular.forEach(dateTransKeys, function (item) {
  725. v[item] = moment(v[item]).format("YYYY-MM-DD HH:mm:ss");
  726. });
  727. dateTransKey = [];
  728. return v;
  729. }
  730. return !_.isEmpty(filtered) && v !== filtered && _.isPlainObject(v)
  731. ? filter(v)
  732. : undefined;
  733. });
  734. })(vm.model);
  735. // console.log("$scope.formData=" + $scope.formData);
  736. switch ($scope.formData.url) {
  737. // 新建
  738. case "start":
  739. var PersonArr = [];
  740. if (vm.model.workOnlineConfig.userList) {
  741. for (
  742. var i = 0;
  743. i < vm.model.workOnlineConfig.userList.length;
  744. i++
  745. ) {
  746. PersonArr.push({ id: vm.model.workOnlineConfig.userList[i] });
  747. }
  748. }
  749. vm.model.workOnlineConfig.userList = PersonArr;
  750. vm.model.workOnlineConfig["state"] = {
  751. id: $scope.stateListData[1],
  752. }; //lmm
  753. vm.model.workOnlineConfig.createUser = { id: loginUser.id };
  754. api_user_data
  755. .addData("workOnlineConfig", vm.model)
  756. .then(function (res) {
  757. console.log(2222);
  758. if (res.status == 200) {
  759. SweetAlert.swal(
  760. {
  761. title: "保存成功!",
  762. type: "success",
  763. confirmButtonColor: "#007AFF",
  764. },
  765. function () {
  766. $state.go($scope.formData.cancelUrl);
  767. }
  768. );
  769. } else {
  770. SweetAlert.swal(
  771. {
  772. title: "系统错误",
  773. text: "系统错误,请稍后重试!",
  774. type: "error",
  775. confirmButtonColor: "#DD6B55",
  776. },
  777. function () {
  778. $state.go($scope.formData.cancelUrl);
  779. }
  780. );
  781. }
  782. });
  783. break;
  784. // 编辑
  785. case "edit":
  786. console.log(vm.model.workOnlineConfig);
  787. // if ($scope.getbranchs.length) {
  788. // if (vm.model.workOnlineConfig.userList) {
  789. // var userListArr = [];
  790. // if (vm.model.workOnlineConfig.userList[0].name) {
  791. // } else {
  792. // for (
  793. // var i = 0;
  794. // i < vm.model.workOnlineConfig.userList.length;
  795. // i++
  796. // ) {
  797. // userListArr.push({
  798. // id: vm.model.workOnlineConfig.userList[i],
  799. // });
  800. // }
  801. // vm.model.workOnlineConfig.userList = userListArr;
  802. // }
  803. // 上班人员选择页面start
  804. vm.model.workOnlineConfig.userList = angular.copy(
  805. $scope.getbranchs
  806. );
  807. // 上班人员选择页面end
  808. if (!vm.model.workOnlineConfig.id) {
  809. vm.model.workOnlineConfig.normalClass = {
  810. id: vm.model.workOnlineConfig.normalClass,
  811. };
  812. }
  813. vm.model = { workOnlineConfig: vm.model.workOnlineConfig };
  814. console.log(vm.model); //baba
  815. // return;
  816. api_user_data
  817. .updData("workOnlineConfig", vm.model)
  818. .then(function (res) {
  819. if (res.data && res.data.id) {
  820. SweetAlert.swal(
  821. {
  822. title: "保存成功!",
  823. type: "success",
  824. confirmButtonColor: "#007AFF",
  825. },
  826. function () {
  827. $state.go($scope.formData.cancelUrl);
  828. }
  829. );
  830. } else {
  831. SweetAlert.swal(
  832. {
  833. title: "系统错误",
  834. text: "系统错误,请稍后重试!",
  835. type: "error",
  836. confirmButtonColor: "#DD6B55",
  837. },
  838. function () {
  839. $state.go($scope.formData.cancelUrl);
  840. }
  841. );
  842. }
  843. });
  844. // } else {
  845. // SweetAlert.swal(
  846. // {
  847. // title: "校验错误",
  848. // text: "上班人员没有填 !",
  849. // type: "error",
  850. // confirmButtonColor: "#DD6B55",
  851. // },
  852. // function () {
  853. // $state.go($scope.formData.cancelUrl);
  854. // }
  855. // );
  856. // }
  857. break;
  858. // 反馈
  859. case "feedback":
  860. // 反馈时间赋予
  861. if (
  862. vm.model.workOnlineConfig.feedback !=
  863. jry_modelWatch.model.workOnlineConfig.feedback
  864. ) {
  865. vm.model.workOnlineConfig.backTime = moment(
  866. new Date().getTime()
  867. ).format("YYYY-MM-DD HH:mm:ss");
  868. }
  869. if (
  870. vm.model.workOnlineConfig.feedback2 !=
  871. jry_modelWatch.model.workOnlineConfig.feedback2
  872. ) {
  873. vm.model.workOnlineConfig.backTime2 = moment(
  874. new Date().getTime()
  875. ).format("YYYY-MM-DD HH:mm:ss");
  876. }
  877. if (
  878. vm.model.workOnlineConfig.feedback3 !=
  879. jry_modelWatch.model.workOnlineConfig.feedback3
  880. ) {
  881. vm.model.workOnlineConfig.backTime3 = moment(
  882. new Date().getTime()
  883. ).format("YYYY-MM-DD HH:mm:ss");
  884. }
  885. if (
  886. vm.model.workOnlineConfig.feedback4 !=
  887. jry_modelWatch.model.workOnlineConfig.feedback4
  888. ) {
  889. vm.model.workOnlineConfig.backTime4 = moment(
  890. new Date().getTime()
  891. ).format("YYYY-MM-DD HH:mm:ss");
  892. }
  893. vm.model.workOnlineConfig.state.id = $scope.stateListData[1];
  894. api_user_data
  895. .updData("workOnlineConfig", vm.model)
  896. .then(function (res) {
  897. if (res.status == 200) {
  898. SweetAlert.swal(
  899. {
  900. title: "保存成功!",
  901. type: "success",
  902. confirmButtonColor: "#007AFF",
  903. },
  904. function () {
  905. $state.go($scope.formData.cancelUrl);
  906. }
  907. );
  908. } else {
  909. SweetAlert.swal(
  910. {
  911. title: "系统错误",
  912. text: "系统错误,请稍后重试!",
  913. type: "error",
  914. confirmButtonColor: "#DD6B55",
  915. },
  916. function () {
  917. $state.go($scope.formData.cancelUrl);
  918. }
  919. );
  920. }
  921. });
  922. break;
  923. // 任务总结
  924. case "summary":
  925. vm.model.workOnlineConfig.state.id = $scope.stateListData[3];
  926. api_user_data
  927. .updData("workOnlineConfig", vm.model)
  928. .then(function (res) {
  929. if (res.status == 200) {
  930. SweetAlert.swal(
  931. {
  932. title: "保存成功!",
  933. type: "success",
  934. confirmButtonColor: "#007AFF",
  935. },
  936. function () {
  937. $state.go($scope.formData.cancelUrl);
  938. }
  939. );
  940. } else {
  941. SweetAlert.swal(
  942. {
  943. title: "系统错误",
  944. text: "系统错误,请稍后重试!",
  945. type: "error",
  946. confirmButtonColor: "#DD6B55",
  947. },
  948. function () {
  949. $state.go($scope.formData.cancelUrl);
  950. }
  951. );
  952. }
  953. });
  954. break;
  955. // 任务处理
  956. case "listHandle":
  957. if (
  958. vm.model.taskSub.feedback != jry_modelWatch.model.taskSub.feedback
  959. ) {
  960. vm.model.taskSub.backTime = moment(new Date().getTime()).format(
  961. "YYYY-MM-DD HH:mm:ss"
  962. );
  963. }
  964. if (
  965. vm.model.taskSub.feedback2 !=
  966. jry_modelWatch.model.taskSub.feedback2
  967. ) {
  968. vm.model.taskSub.backTime2 = moment(new Date().getTime()).format(
  969. "YYYY-MM-DD HH:mm:ss"
  970. );
  971. }
  972. if (
  973. vm.model.taskSub.feedback3 !=
  974. jry_modelWatch.model.taskSub.feedback3
  975. ) {
  976. vm.model.taskSub.backTime3 = moment(new Date().getTime()).format(
  977. "YYYY-MM-DD HH:mm:ss"
  978. );
  979. }
  980. if (
  981. vm.model.taskSub.feedback4 !=
  982. jry_modelWatch.model.taskSub.feedback4
  983. ) {
  984. vm.model.taskSub.backTime4 = moment(new Date().getTime()).format(
  985. "YYYY-MM-DD HH:mm:ss"
  986. );
  987. }
  988. vm.model.taskSub.state.id = $scope.stateListData1[2];
  989. console.log($scope.stateListData1[2]);
  990. api_user_data.updData("taskSub", vm.model).then(function (res) {
  991. if (res.status == 200) {
  992. SweetAlert.swal(
  993. {
  994. title: "保存成功!",
  995. type: "success",
  996. confirmButtonColor: "#007AFF",
  997. },
  998. function () {
  999. $state.go($scope.formData.cancelUrl);
  1000. }
  1001. );
  1002. } else {
  1003. SweetAlert.swal(
  1004. {
  1005. title: "系统错误",
  1006. text: "系统错误,请稍后重试!",
  1007. type: "error",
  1008. confirmButtonColor: "#DD6B55",
  1009. },
  1010. function () {
  1011. $state.go($scope.formData.cancelUrl);
  1012. }
  1013. );
  1014. }
  1015. });
  1016. break;
  1017. default:
  1018. $scope.ldloading[style.replace("-", "_")] = false;
  1019. break;
  1020. }
  1021. } else {
  1022. SweetAlert.swal({
  1023. title: "校验错误",
  1024. text: "请填写必填项!",
  1025. type: "error",
  1026. confirmButtonColor: "#DD6B55",
  1027. });
  1028. angular.forEach(vm.form.$error.required, function (item) {
  1029. angular.forEach(vm.fields, function (f) {
  1030. if (f.name == item.$name) {
  1031. f.validation.show = true;
  1032. }
  1033. });
  1034. });
  1035. }
  1036. };
  1037. //审核取消
  1038. $scope.jry_shenhe_close = function () {
  1039. $state.go("app.knowledge.manager", {});
  1040. };
  1041. //审核通过
  1042. $scope.jry_shenhe_success = function () {
  1043. var filedata = vm.model.knowledge;
  1044. // filedata.status.id=72;
  1045. filedata["status"] = { id: 72 };
  1046. // filedata.approveUser.id=loginUser.id;
  1047. filedata["approveUser"] = { id: loginUser.id };
  1048. filedata.approvetime = moment(new Date()).format("YYYY-MM-DD HH:mm:ss");
  1049. delete filedata["item"];
  1050. delete filedata.solutionType["isExpanded"];
  1051. // console.log(filedata);
  1052. var shenhe_data = { solution: filedata };
  1053. api_solution.jry_updateSolution(shenhe_data).then(function (res) {
  1054. SweetAlert.swal(
  1055. {
  1056. title: "审核通过!",
  1057. type: "success",
  1058. confirmButtonColor: "#007AFF",
  1059. },
  1060. function () {
  1061. $state.go("app.knowledge.manager");
  1062. }
  1063. );
  1064. });
  1065. };
  1066. // 审核驳回
  1067. $scope.jry_shenhe_bohui = function () {
  1068. var filedata = vm.model.knowledge;
  1069. filedata.status.id = 73;
  1070. filedata["approveUser"] = { id: loginUser.id };
  1071. filedata.reject = $scope.bohui_YY;
  1072. filedata.approvetime = moment(new Date()).format("YYYY-MM-DD HH:mm:ss");
  1073. delete filedata["item"];
  1074. delete filedata.solutionType["isExpanded"];
  1075. // console.log(filedata);
  1076. var shenhe_data = { solution: filedata };
  1077. api_solution.jry_updateSolution(shenhe_data).then(function (res) {
  1078. SweetAlert.swal(
  1079. {
  1080. title: "该知识已驳回!",
  1081. type: "success",
  1082. confirmButtonColor: "#007AFF",
  1083. },
  1084. function () {
  1085. $state.go("app.knowledge.manager");
  1086. }
  1087. );
  1088. });
  1089. };
  1090. $scope.bohui_show = false;
  1091. $scope.jry_bohuiyuanyin_show = function () {
  1092. $scope.bohui_show = true;
  1093. };
  1094. $scope.bohuiyuanyin_close = function () {
  1095. $scope.bohui_show = false;
  1096. };
  1097. $scope.vm = vm;
  1098. if (angular.isDefined($stateParams.formKey) && $stateParams.formKey != "") {
  1099. api_configure_form
  1100. .renderForm($stateParams.formKey, "00000")
  1101. .then(function (responseData) {
  1102. if (responseData) {
  1103. // console.log("responseData>>>");console.log(responseData);
  1104. var vmForm = Restangular.stripRestangular(responseData);
  1105. if (vmForm) {
  1106. //console.log("vmForm>>>");console.log(vmForm);
  1107. var modelData = {};
  1108. //modelData=myData.data;
  1109. decodeVMForm(vmForm);
  1110. }
  1111. }
  1112. });
  1113. } else if ($stateParams.formKey == undefined) {
  1114. //task_start
  1115. api_configure_form
  1116. .renderForm("working_manage", "00000")
  1117. .then(function (responseData) {
  1118. if (responseData) {
  1119. //console.log("responseData>>>");console.log(responseData);
  1120. var vmForm = Restangular.stripRestangular(responseData);
  1121. if (vmForm) {
  1122. //console.log("vmForm>>>");console.log(vmForm);
  1123. var modelData = {};
  1124. //modelData=myData.data;
  1125. decodeVMForm(vmForm);
  1126. //获取数据
  1127. // $scope.vm.model =
  1128. api_bpm_data
  1129. .fetchDataList("workOnlineConfig", { idx: 0, sum: 1000 })
  1130. .then(function (res) {
  1131. if (res.status == 200) {
  1132. if (res.list[0]) {
  1133. console.log(res.list[0]);
  1134. $scope.vm.model.workOnlineConfig.id = res.list[0].id;
  1135. $scope.vm.model.workOnlineConfig.onlineMsg =
  1136. res.list[0].onlineMsg;
  1137. $scope.vm.model.workOnlineConfig.normalClass =
  1138. res.list[0].normalClass;
  1139. $scope.vm.model.workOnlineConfig.offlineMsg =
  1140. res.list[0].offlineMsg;
  1141. $scope.vm.model.workOnlineConfig.userList =
  1142. res.list[0].userList || [];
  1143. $scope.try_async_user();
  1144. }
  1145. }
  1146. });
  1147. }
  1148. }
  1149. });
  1150. } else {
  1151. //
  1152. if (angular.isDefined(fieldsWatch) && fieldsWatch.length > 0) {
  1153. var vmForm = {
  1154. fields: fieldsWatch,
  1155. model: modelWatch,
  1156. };
  1157. angular.extend(vmForm, formWatch);
  1158. //$scope.formData = vmForm;
  1159. if (vmForm) {
  1160. decodeVMForm(vmForm);
  1161. }
  1162. } else {
  1163. //for form
  1164. //TODO
  1165. //测试数据 开始
  1166. var testJson = {
  1167. fields: [
  1168. {
  1169. key: "formtitle",
  1170. type: "ui-title",
  1171. noFormControl: true,
  1172. templateOptions: {
  1173. label: "title is ",
  1174. placeholder: "Formly is terrific!",
  1175. },
  1176. },
  1177. {
  1178. key: "b",
  1179. type: "ui-input",
  1180. className: "col-xs-4",
  1181. templateOptions: {
  1182. type: "input",
  1183. label: "input a",
  1184. placeholder: "search a...",
  1185. rBtn: {
  1186. icon: "fa fa-phone",
  1187. onClick: function (val, opt, el, ev, model) {
  1188. alert(val);
  1189. },
  1190. },
  1191. lAddon: '<i class="fa fa-phone"/>',
  1192. },
  1193. },
  1194. {
  1195. key: "id",
  1196. type: "ui-select",
  1197. //initialValue:"false",
  1198. templateOptions: {
  1199. label: "测试默认值",
  1200. optionsUrl: "abc",
  1201. //options:[{"id":"false","name":"不取消"},{"id":"true","name":"取消"}],
  1202. // refresh:function(){
  1203. // return [{"id":1,"name":"事件","code":1},{"id":2,"name":"问题","code":2},{"id":3,"name":"配置","code":3},{"id":4,"name":"服务级别","code":4},{"id":5,"name":"内部需求","code":5}];
  1204. // },
  1205. //options:[{"id":1,"name":"事件","code":1},{"id":2,"name":"问题","code":2},{"id":3,"name":"配置","code":3},{"id":4,"name":"服务级别","code":4},{"id":5,"name":"内部需求","code":5}],
  1206. valueProp: "id",
  1207. labelProp: "name",
  1208. pkey: "change.source",
  1209. },
  1210. },
  1211. {
  1212. key: "systemType",
  1213. type: "ui-multiselect",
  1214. className: "col-xs-4",
  1215. templateOptions: {
  1216. label: "所属系统类型",
  1217. pkey: "change",
  1218. valueProp: "id",
  1219. labelProp: "source",
  1220. optionsUrl: "data/fetchDataList/changesystemtype",
  1221. optionsDataKey: "list",
  1222. onChange: function (value, options, that, event, model) {
  1223. var field = null;
  1224. angular.forEach(that.$parent.fields, function (item) {
  1225. if (item.key == "influenceDepartment") {
  1226. field = item;
  1227. }
  1228. if (item.key == "notificationDepartment") {
  1229. notifyField = item;
  1230. }
  1231. });
  1232. if (field != null) {
  1233. field.templateOptions.optionsPostData = {
  1234. systemIds: [],
  1235. };
  1236. angular.forEach(value, function (vue) {
  1237. field.templateOptions.optionsPostData["systemIds"].push({
  1238. id: vue,
  1239. });
  1240. });
  1241. field.value([]);
  1242. if (value.length > 0) {
  1243. field.templateOptions.refreshData(null, field);
  1244. }
  1245. }
  1246. if (notifyField != null) {
  1247. notifyField.templateOptions.optionsPostData = {
  1248. systemIds: [],
  1249. };
  1250. angular.forEach(value, function (vue) {
  1251. notifyField.templateOptions.optionsPostData[
  1252. "systemIds"
  1253. ].push({ id: vue });
  1254. });
  1255. notifyField.value([]);
  1256. if (value.length > 0) {
  1257. notifyField.templateOptions.refreshData(
  1258. null,
  1259. notifyField
  1260. );
  1261. }
  1262. }
  1263. },
  1264. },
  1265. },
  1266. {
  1267. key: "influenceDepartment",
  1268. type: "ui-multiselectplus",
  1269. className: "col-xs-4",
  1270. templateOptions: {
  1271. label: "所影响的应用系统、部门",
  1272. pkey: "change",
  1273. valueProp: "", //对应value
  1274. labelProp: "dept", //对应key
  1275. optionsUrl: "dept/findBySystemType", //对应后台地址,api/之前的部分省略
  1276. optionsDataKey: "list", //对应返回数组数据的键值,
  1277. optionsPostData: function (options, model, scope) {
  1278. return { systemIds: [] };
  1279. },
  1280. refreshData: function (search, options, model, that) {
  1281. options.templateOptions.options = [
  1282. { id: 13, dept: "村镇银行管理部" },
  1283. { id: 14, dept: "电子银行部" },
  1284. ];
  1285. options.value(options.templateOptions.options);
  1286. },
  1287. optionsChecked: true,
  1288. required: true,
  1289. ApiService: UserRestangular,
  1290. },
  1291. },
  1292. {
  1293. key: "notificationDepartment",
  1294. type: "ui-multiselectplus",
  1295. className: "col-xs-4",
  1296. templateOptions: {
  1297. label: "需通知部门",
  1298. pkey: "change",
  1299. valueProp: "id", //对应value
  1300. labelProp: "dept", //对应key
  1301. optionsUrl: "dept/findBySystemType", //对应后台地址,api/之前的部分省略
  1302. optionsDataKey: "list", //对应返回数组数据的键值,
  1303. optionsPostData: function (options, model, scope) {
  1304. return { systemIds: [] };
  1305. },
  1306. optionsChecked: true,
  1307. required: true,
  1308. ApiService: UserRestangular,
  1309. },
  1310. },
  1311. {
  1312. type: "ui-label",
  1313. key: "arrayData",
  1314. className: "col-xs-4",
  1315. templateOptions: {
  1316. label: "数组label数据",
  1317. labelProp: "dept",
  1318. },
  1319. },
  1320. {
  1321. key: "selectUser",
  1322. type: "ui-requesterselect",
  1323. className: "col-xs-12",
  1324. templateOptions: {
  1325. label: "报修人信息",
  1326. modalTitle: "报修人列表",
  1327. fetchItems: function (filterData, APIService) {
  1328. return APIService.fetchDataList("requester", filterData);
  1329. },
  1330. Restangular: Restangular,
  1331. ApiService: api_user_data,
  1332. // onClick:function(val, options, field, event , model){
  1333. // console.log(options);
  1334. // }
  1335. },
  1336. },
  1337. {
  1338. key: "cabUser",
  1339. type: "ui-multiuserselect",
  1340. className: "col-xs-12",
  1341. templateOptions: {
  1342. label: "CAB评审成员",
  1343. modalTitle: "CAB成员列表",
  1344. fetchItems: function (filterData, APIService) {
  1345. return APIService.fetchDataList("user", filterData);
  1346. },
  1347. Restangular: Restangular,
  1348. ApiService: api_user_data,
  1349. onClick: function (val, options, field, event, model) {
  1350. // console.log(model);
  1351. },
  1352. },
  1353. },
  1354. // {
  1355. // key:'incident',
  1356. // type:'ui-modelselect',
  1357. // className:'col-xs-3',
  1358. // templateOptions:{
  1359. // label:'关联事件工单',
  1360. // modalTitle:'事件列表',
  1361. // fetchItems:function(filterData,APIService){
  1362. // return APIService.fetchDataList('incident',filterData);
  1363. // },
  1364. // Restangular:"Restangular",
  1365. // ApiService:"api_bpm_data",
  1366. // columnDefs:[
  1367. // { name:'id', width:80, enableFiltering:false},
  1368. // { name:'title', displayName:'事件主题', width:140},
  1369. // { name:'type.name', displayName:'事件类型', width:140},
  1370. // { name:'emergency.name', displayName:'紧急度', width:80},
  1371. // { name:'state.name', displayName:'状态', width:100},
  1372. // { name:'emergency.name', displayName:'紧急度', width:80},
  1373. // { name:'influence.name', displayName:'影响度', width:80},
  1374. // { name:'priority.name', displayName:'优先级', width:80},
  1375. // { name:'handlerUser.name', displayName:'当前处理人', width:100},
  1376. // { name:'acceptDate', displayName:'创建时间', width:100}
  1377. // ],
  1378. // displayName:'title',
  1379. // onClick:function(val, options, field, event , model){
  1380. // //model.start_code++;
  1381. // console.log(options);
  1382. // }
  1383. // }
  1384. // },
  1385. // {
  1386. // key: 'worknumber',
  1387. // type: 'ui-workernumber',
  1388. // className:'col-xs-3',
  1389. // templateOptions: {
  1390. // label: 'work number',
  1391. // Restangular:Restangular,
  1392. // ApiService:api_bpm_domain,
  1393. // getWorkernumber: function(APIService){
  1394. // return APIService.workernumber('bg');
  1395. // }
  1396. // }
  1397. // },
  1398. // {
  1399. // key: 'chkme',
  1400. // type: 'ui-checkbox',
  1401. // className:'col-xs-3',
  1402. // templateOptions: {
  1403. // label: 'Check me out'
  1404. // }
  1405. // },
  1406. // {
  1407. // key: 'droplink',
  1408. // type: 'ui-link',
  1409. // className: 'col-xs-3',
  1410. // templateOptions:{
  1411. // label:'添加附件',
  1412. // onClick:function(val, options, field, event ,model){
  1413. // if(angular.isUndefined(field.form.dropState)){
  1414. // field.form.dropState=false;
  1415. // }
  1416. // field.form.dropState=!field.form.dropState;
  1417. // console.log(field);
  1418. // }
  1419. // }
  1420. // },
  1421. // {
  1422. // key: 'dropfile',
  1423. // type: 'ui-dropfile',
  1424. // className: 'col-xs-12',
  1425. // templateOptions:{
  1426. // label:'附件',
  1427. // uploadUrl:'http://127.0.0.1:9008/saveAttachments'
  1428. // }
  1429. // },
  1430. // {
  1431. // type: 'ui-label',
  1432. // key: 'changesign',
  1433. // className: 'col-xs-4',
  1434. // templateOptions: {
  1435. // label:'变更请求单号',
  1436. // pkey:'change'
  1437. // }
  1438. // },
  1439. // {
  1440. // type: 'ui-label',
  1441. // key: 'title',
  1442. // className: 'col-xs-4',
  1443. // templateOptions: {
  1444. // label:'变更标题',
  1445. // pkey:'change'
  1446. // }
  1447. // },
  1448. // //关联发布单号
  1449. // //新建发布
  1450. // {
  1451. // key: 'droplist',
  1452. // type: 'ui-dropfiletable',
  1453. // className: 'col-xs-12',
  1454. // templateOptions:{
  1455. // label:'附件下载列表',
  1456. // Restangular:Restangular,
  1457. // processInstanceId:'250033',
  1458. // ApiService:api_bpm_domain
  1459. // }
  1460. // },
  1461. // {
  1462. // type: 'ui-repeatSection',
  1463. // key: 'investments',
  1464. // className: 'col-xs-12',
  1465. // templateOptions: {
  1466. // btnText: '新增变更施工单',
  1467. // fields: [
  1468. // {
  1469. // className: 'col-xs-3',
  1470. // type: 'ui-input',
  1471. // key: 'aboutci',
  1472. // templateOptions: {
  1473. // label: '关联的配置项',
  1474. // required: true
  1475. // }
  1476. // },
  1477. // {
  1478. // className: 'col-xs-3',
  1479. // type: 'ui-datepicker',
  1480. // key: 'planbegintime',
  1481. // templateOptions: {
  1482. // label: '计划开始时间',
  1483. // required: true
  1484. // }
  1485. // },
  1486. // {
  1487. // className: 'col-xs-3',
  1488. // type: 'ui-datepicker',
  1489. // key: 'planendtime',
  1490. // templateOptions: {
  1491. // label: '计划完成时间',
  1492. // required: true
  1493. // }
  1494. // },
  1495. // {
  1496. // className: 'col-xs-12',
  1497. // type: 'ui-userselect',
  1498. // key: 'handleruser',
  1499. // templateOptions: {
  1500. // label: '实施人员信息',
  1501. // modalTitle:'实施人列表',
  1502. // required: true,
  1503. // fetchItems:function(filterData, APIService){
  1504. // return APIService.fetchDataList('user',filterData);
  1505. // },
  1506. // Restangular:Restangular,
  1507. // ApiService:api_user_data,
  1508. // onClick:function(val, options, field, event , model){
  1509. // //model.start_code++;
  1510. // console.log(options);
  1511. // }
  1512. // }
  1513. // },
  1514. // {
  1515. // className: 'col-xs-8',
  1516. // type: 'ui-textarea',
  1517. // key: 'handlerContent',
  1518. // templateOptions: {
  1519. // label: '实施内容',
  1520. // required: true,
  1521. // row:10
  1522. // }
  1523. // },{
  1524. // noFormControl: true,
  1525. // template:'<hr>'
  1526. // }]
  1527. // }
  1528. // },
  1529. // {
  1530. // key: 'droplist',
  1531. // type: 'ui-dropfiletable',
  1532. // className: 'col-xs-12',
  1533. // templateOptions:{
  1534. // label:'附件下载列表',
  1535. // Restangular:Restangular,
  1536. // processInstanceId:'250033',
  1537. // ApiService:api_bpm_domain
  1538. // }
  1539. // },
  1540. // {
  1541. // key: 'start_code',
  1542. // className:'col-xs-6',
  1543. // type: 'ui-hidden'
  1544. // },
  1545. // {
  1546. // key:'remark',
  1547. // type:'ui-textarea',
  1548. // className:'col-xs-12',
  1549. // templateOptions:{
  1550. // label:'remark is ',
  1551. // rows:3
  1552. // }
  1553. // },
  1554. // {
  1555. // key:'setStartCode',
  1556. // type:'ui-button',
  1557. // className:'col-xs-4',
  1558. // templateOptions:{
  1559. // label:'升级为变更',
  1560. // onClick:function(val, options, field, event ,model){
  1561. // console.log(options);
  1562. // event.preventDefault();
  1563. // //model.start_code++;
  1564. // //console.log(options);
  1565. // }
  1566. // }
  1567. // }
  1568. ],
  1569. model: {
  1570. username: "robin lau",
  1571. password: "123456",
  1572. change: { source: { id: 5 } },
  1573. chkme: false,
  1574. start_code: 0,
  1575. arrayData: [
  1576. { id: 13, dept: "村镇银行管理部" },
  1577. { id: 14, dept: "电子银行部" },
  1578. ],
  1579. formtitle: "Hey!I am title value!",
  1580. name: {
  1581. first: "robin",
  1582. last: "lau",
  1583. },
  1584. multiselectItem: [],
  1585. //date:"2015-09-15 00:00:00"
  1586. },
  1587. };
  1588. setTimeout(function () {
  1589. decodeVMForm(testJson);
  1590. $scope.$apply();
  1591. }, 500);
  1592. //测试数据结束
  1593. }
  1594. }
  1595. // console.log("end decode");
  1596. },
  1597. ]);