notificationCtrl.js 21 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343
  1. 'use strict';
  2. /**
  3. * controller for User Profile Example
  4. */
  5. app.controller('notificationCtr', ["$rootScope", "$scope", "$state", "$timeout", "$interval", "$modal", "SweetAlert", "i18nService", "uiGridConstants", "uiGridGroupingConstants", "Restangular", "api_user_data", "api_login", "api_configure_data", "api_wechatfile", "api_notification_data", function ($rootScope, $scope, $state, $timeout, $interval, $modal, SweetAlert, i18nService, uiGridConstants, uiGridGroupingConstants, Restangular, api_user_data, api_login, api_configure_data, api_wechatfile, api_notification_data) {
  6. //侧边栏索引
  7. $scope.leftListIdx = 0;
  8. //标题
  9. $scope.tableName = "消息通知设置";
  10. //侧边栏名称
  11. $scope.listData = [
  12. { "name": "报修流程" },
  13. { "name": "事件流程" }
  14. ];
  15. //转换通知规则
  16. $scope.computedRule = function (data, id) {
  17. if (data === undefined) {
  18. return '进入本步骤时';
  19. } else if (id == 6 || id == 7) {
  20. return '【逾期响应时间】' + data + '分钟';
  21. } else if (id == 11) {
  22. return '【解决时间】剩余 ' + data + '%';
  23. }
  24. };
  25. /**
  26. *
  27. * 侧边栏点击切换tab
  28. * @param {number} idx 当前点击的索引
  29. * @param {object} value 当前点击的对象
  30. */
  31. $scope.leftListClick = function (idx, value) {
  32. $scope.leftListIdx = idx;
  33. $scope.tableName = value.name;
  34. }
  35. //请求获取报修流程列表
  36. //process: '通知流程',processNode:'流程节点',processStatus:'状态',notifiedPerson:'被通知人'
  37. $scope.bxList = [
  38. { processName: '报修流程', processNode: '申请', processStatus: '未转换', notifiedPerson: '报修人' },
  39. { processName: '报修流程', processNode: '申请', processStatus: '未转换', notifiedPerson: '服务台人员' },
  40. { processName: '报修流程', processNode: '申请', processStatus: '不受理', notifiedPerson: '报修人' },
  41. { processName: '报修流程', processNode: '受理', processStatus: '已转换', notifiedPerson: '报修人' }
  42. ];
  43. $scope.getBxList = function () {
  44. api_notification_data.fetchDataList({
  45. "idx": 0,
  46. "sum": 10,
  47. "messageManager": {
  48. "noticeProcess": 1
  49. }
  50. }).then(function (res) {
  51. if (res.status == 200) {
  52. angular.forEach($scope.bxList, function (v, i) {
  53. angular.extend(v, res.list[i]);//合并对象
  54. })
  55. }
  56. })
  57. }
  58. $scope.getBxList();
  59. //请求获取事件流程列表
  60. //process: '通知流程',processNode:'流程节点',processStatus:'状态',notifiedPerson:'被通知人'
  61. $scope.sjList = [
  62. { processName: '事件流程', processNode: '接单', processStatus: '待接单', notifiedPerson: '运维工程师' },
  63. { processName: '事件流程', processNode: '接单', processStatus: '待接单', notifiedPerson: '运维工程师' },
  64. { processName: '事件流程', processNode: '接单', processStatus: '待接单', notifiedPerson: '事件经理' },
  65. { processName: '事件流程', processNode: '重新指派', processStatus: '重新指派', notifiedPerson: '服务台人员' },
  66. { processName: '事件流程', processNode: '重新指派', processStatus: '重新指派', notifiedPerson: '运维工程师' },
  67. { processName: '事件流程', processNode: '处理', processStatus: '处理中', notifiedPerson: '报修人' },
  68. { processName: '事件流程', processNode: '处理', processStatus: '处理中', notifiedPerson: '运维工程师' },
  69. { processName: '事件流程', processNode: '评价', processStatus: '已解决', notifiedPerson: '报修人' },
  70. { processName: '事件流程', processNode: '关单', processStatus: '已解决', notifiedPerson: '服务台人员' },
  71. { processName: '事件流程', processNode: '完成', processStatus: '已关闭', notifiedPerson: '报修人' }
  72. ];
  73. $scope.getSjList = function () {
  74. api_notification_data.fetchDataList({
  75. "idx": 0,
  76. "sum": 10,
  77. "messageManager": {
  78. "noticeProcess": 2
  79. }
  80. }).then(function (res) {
  81. if (res.status == 200) {
  82. angular.forEach($scope.sjList, function (v, i) {
  83. angular.extend(v, res.list[i]);//合并对象
  84. })
  85. console.log($scope.sjList)
  86. }
  87. })
  88. }
  89. $scope.getSjList();
  90. //设置
  91. $scope.editClick = function (data) {
  92. var modalInstance = $modal.open({
  93. templateUrl: 'assets/views/system/tpl/notificationBj.html',
  94. controller: function ($scope, $modalInstance) {
  95. $scope.editData = {
  96. id: data.id,//id
  97. noticeRule: data.noticeRule === undefined ? 'no' : data.noticeRule,//通知规则,数字
  98. processNode: data.processNode,//流程节点
  99. processName: data.processName,//报修流程或者事件流程
  100. processStatus: data.processStatus,//状态
  101. notifiedPerson: data.notifiedPerson,//被通知人
  102. noticeProcess: data.noticeProcess,//1为报修流程、2为事件流程
  103. messageStationContent: data.messageStationContent,//站内消息通知内容
  104. shortMessageContent: data.shortMessageContent,//短信通知内容
  105. wechatMessageContent: data.wechatMessageContent,//微信通知内容
  106. messageStationFlag: data.messageStationFlag == 1 ? true : false,//站内消息是否开启
  107. shortMessageFlag: data.shortMessageFlag == 1 ? true : false,//短信是否开启
  108. wechatMessageFlag: data.wechatMessageFlag == 1 ? true : false,//微信是否开启
  109. messageStationTitle: data.messageStationTitle,//站内消息标题
  110. wechatMessageTitle: data.wechatMessageTitle,//微信标题
  111. flag: data.flag == 1 ? true : false//总开关是否开启,0为关闭,1为开启
  112. };
  113. //当前选中
  114. $scope.currentIndex = 0;
  115. //tab页面数据
  116. //tabName: 名称,processTitle:标题, processContent: 内容, checkboxFlag: checkbox是否选中,,disable:遮罩是否显示
  117. $scope.tabs = [
  118. {
  119. tabName: "站内消息",
  120. processTitle: $scope.editData.messageStationTitle,
  121. processContent: $scope.editData.messageStationContent,
  122. checkboxFlag: $scope.editData.messageStationFlag,
  123. disable: !$scope.editData.messageStationFlag
  124. },
  125. {
  126. tabName: "短信",
  127. processTitle: '',
  128. processContent: $scope.editData.shortMessageContent,
  129. checkboxFlag: $scope.editData.shortMessageFlag,
  130. disable: !$scope.editData.shortMessageFlag
  131. },
  132. {
  133. tabName: "微信",
  134. processTitle: $scope.editData.wechatMessageTitle,
  135. processContent: $scope.editData.wechatMessageContent,
  136. checkboxFlag: $scope.editData.wechatMessageFlag,
  137. disable: !$scope.editData.wechatMessageFlag
  138. }
  139. ];
  140. //tab页面切换
  141. $scope.selectTab = function (index) {
  142. $scope.currentIndex = index;
  143. };
  144. //checkbox选中或者取消
  145. $scope.selectThis = function (index) {
  146. $scope.tabs[index].checkboxFlag = !$scope.tabs[index].checkboxFlag;
  147. //遮罩切换
  148. $scope.tabs[index].disable = !$scope.tabs[index].checkboxFlag;
  149. //所有checkbox有一个选中,总开关开启
  150. $scope.editData.flag = $scope.tabs.some(function (v) {
  151. return v.checkboxFlag;
  152. });
  153. };
  154. //切换总开关
  155. $scope.changeIcon = function (index) {
  156. $scope.editData.flag = !$scope.editData.flag;
  157. };
  158. //当前jquery对象
  159. $scope.curElement = null;
  160. //textarea失去焦点,允许插入的表单元素
  161. $scope.textBlur = function ($event) {
  162. $scope.curElement = $($event.target);
  163. };
  164. //插入值
  165. $scope.insertClick = function ($event) {
  166. var $_this = $($event.target);
  167. var str = "";
  168. if ($scope.curElement != null) {
  169. //获取插入的字符串
  170. str = $_this.text();
  171. //插入进去
  172. $scope.insertAtCaret($scope.curElement, str);
  173. }
  174. };
  175. //插入进去seimin
  176. $scope.insertAtCaret = function ($element, myValue) {
  177. var element = $element.get(0);
  178. if (document.selection) {//IE
  179. $element.focus();
  180. //在选中区域创建一个文本区域
  181. sel = document.selection.createRange();
  182. // sel.text = myValue;
  183. $scope.tabs[$scope.currentIndex].processContent = myValue;
  184. $element.focus();
  185. } else {
  186. if (element.selectionStart || element.selectionStart == '0') {
  187. var startPos = element.selectionStart;
  188. var endPos = element.selectionEnd;
  189. // element.value = element.value.substring(0, startPos) + myValue + element.value.substring(endPos);
  190. $scope.tabs[$scope.currentIndex].processContent = element.value.substring(0, startPos) + myValue + element.value.substring(endPos);
  191. $element.focus();
  192. } else {
  193. var val = $element.html() + myValue;
  194. // $element.html(val);
  195. $scope.tabs[$scope.currentIndex].processContent = val;
  196. $element.focus();
  197. }
  198. }
  199. };
  200. //百分比不能为负数
  201. $scope.$watch('editData.noticeRule', function (newVal) {
  202. if (newVal === undefined) {//负号
  203. $scope.editData.noticeRule = 0;
  204. } else {
  205. if ($scope.editData.id == 11) {//百分比
  206. $scope.editData.noticeRule = newVal < 0 ? 0 : newVal;
  207. }
  208. }
  209. });
  210. //变量参数
  211. switch ($scope.editData.id) {
  212. case 1:
  213. $scope.varArr = ['[$报修单号$]', '[$报修时间$]', '[$区域$]', '[$地点$]', '[$详细地址$]', '[$报修人$]'];
  214. $scope.varPlaceholder = '您于${报修时间}申请的${区域}${地点}${详细地址}${报修单号}报修已提交,请等待服务台处理,如有疑问,可(咨询电话"123456")。';
  215. break;
  216. case 2:
  217. $scope.varArr = ['[$报修单号$]', '[$报修时间$]', '[$区域$]', '[$地点$]', '[$详细地址$]', '[$报修人$]'];
  218. $scope.varPlaceholder = '${报修单号}报修待受理,请及时处理。';
  219. break;
  220. case 3:
  221. $scope.varArr = ['[$报修单号$]', '[$报修时间$]', '[$区域$]', '[$地点$]', '[$详细地址$]', '[$报修人$]', '[$服务台人员$]', '[$不受理时间$]'];
  222. $scope.varPlaceholder = '您于${报修时间}${区域}${地点}${详细地址}的${报修单号}报修,${服务台人员}已于${不受理时间}不予受理,如有如有疑问请拨打(服务电话“123456”)。';
  223. break;
  224. case 4:
  225. $scope.varArr = ['[$报修单号$]', '[$报修时间$]', '[$区域$]', '[$地点$]', '[$详细地址$]', '[$报修人$]', '[$服务台人员$]', '[$受理时间$]', '[$处理人$]', '[$处理人电话$]'];
  226. $scope.varPlaceholder = '您于${报修时间}${区域}${地点}${详细地址}的${报修单号}报修,${服务台人员}已于${受理时间}受理,待接单。';
  227. break;
  228. case 5:
  229. $scope.varArr = ['[$事件单号$]', '[$工单登记时间$]', '[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]'];
  230. $scope.varPlaceholder = '${ 联系人}${联系人电话}于${工单登记时间}${事件单号}的事件工单待接单,请尽快处理。';
  231. break;
  232. case 6:
  233. $scope.varArr = ['[$事件单号$]', '[$工单登记时间$]', '[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]'];
  234. $scope.varPlaceholder = '${联系人}${联系人电话}于${工单登记时间}${事件单号}的事件工单待接单,已逾期响应5分钟,请尽快处理。';
  235. break;
  236. case 7:
  237. $scope.varArr = ['[$事件单号$]', '[$工单登记时间$]', '[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]'];
  238. $scope.varPlaceholder = '${联系人}${联系人电话}于${工单登记时间}${事件单号}的事件工单待接单,已逾期响应60分钟,${处理人}${处理人电话}请尽快处理。';
  239. break;
  240. case 8:
  241. $scope.varArr = ['[$事件单号$]', '[$工单登记时间$]', '[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]'];
  242. $scope.varPlaceholder = '${ 联系人}${联系人电话}于${工单登记时间}${事件单号}的事件工单,${处理人}${处理人电话}已请求重新指派,请尽快处理。';
  243. break;
  244. case 9:
  245. $scope.varArr = ['[$事件单号$]', '[$工单登记时间$]', '[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]'];
  246. $scope.varPlaceholder = '${联系人}${联系人电话}于${工单登记时间}${事件单号}的事件工单,已退回服务台,请重新指派。';
  247. break;
  248. case 10:
  249. $scope.varArr = ['[$报修单号$]','[$报修时间$]','[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]'];
  250. $scope.varPlaceholder = '${联系人}${联系人电话}于${报修时间}${报修单号}的报修,${处理人}${处理人电话}已接单,正在处理中。';
  251. break;
  252. case 11:
  253. $scope.varArr = ['[$事件单号$]', '[$工单登记时间$]', '[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]'];
  254. $scope.varPlaceholder = '${联系人}${联系人电话}于${工单登记时间}${事件单号}的事件工单,即将解决逾期,请尽快处理。';
  255. break;
  256. case 12:
  257. $scope.varArr = ['[$报修单号$]','[$报修时间$]','[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]'];
  258. $scope.varPlaceholder = '您于${报修时间}提交的${报修单号}报修,已处理,您可对本次服务进行评价,如有疑问,可(咨询电话“123456”)。';
  259. break;
  260. case 13:
  261. $scope.varArr = ['[$事件单号$]', '[$工单登记时间$]', '[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]'];
  262. $scope.varPlaceholder = '${联系人}${联系人电话}于${工单登记时间}${事件单号}的事件工单已解决,请回访并关闭该工单。';
  263. break;
  264. case 14:
  265. $scope.varArr = ['[$报修单号$]', '[$报修时间$]', '[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]'];
  266. $scope.varPlaceholder = '您于${报修时间}提交的${报修单号}报修,已完成,如有疑问,请拔打(服务电话“123456”)。';
  267. break;
  268. }
  269. //取消
  270. $scope.cancel = function () {
  271. $modalInstance.dismiss('cancel');
  272. };
  273. //确定seimin
  274. $scope.savercode = function () {
  275. var filterArr = $scope.tabs.filter(item => {
  276. return item.checkboxFlag;
  277. });
  278. for (var i = 0; i < filterArr.length; i++) {
  279. if (filterArr[i].processContent == '') {
  280. alert("通知内容【" + filterArr[i].tabName + "】不能为空!");
  281. return;
  282. } else {
  283. var nowArr = [...new Set([...filterArr[i].processContent.match(/\[\$[^\$\[\]]*?\$\]/g), ...$scope.varArr])];
  284. if (nowArr.length !== $scope.varArr.length) {
  285. alert("【" + filterArr[i].tabName + "】请填写有效的变量名称!");
  286. return;
  287. }
  288. }
  289. }
  290. //请求参数处理(是否有输入数字控件)
  291. if ($scope.editData.noticeRule !== 'no') {
  292. var data = {
  293. "messageManager": {
  294. "id": $scope.editData.id,
  295. "noticeRule": $scope.editData.noticeRule,
  296. "messageStationFlag": $scope.tabs[0].checkboxFlag ? 1 : 0,
  297. "messageStationTitle": $scope.tabs[0].processTitle,
  298. "messageStationContent": $scope.tabs[0].processContent,
  299. "shortMessageFlag": $scope.tabs[1].checkboxFlag ? 1 : 0,
  300. "shortMessageContent": $scope.tabs[1].processContent,
  301. "wechatMessageFlag": $scope.tabs[2].checkboxFlag ? 1 : 0,
  302. "wechatMessageTitle": $scope.tabs[2].processTitle,
  303. "wechatMessageContent": $scope.tabs[2].processContent,
  304. "flag": $scope.editData.flag ? 1 : 0
  305. }
  306. };
  307. } else {
  308. var data = {
  309. "messageManager": {
  310. "id": $scope.editData.id,
  311. "messageStationFlag": $scope.tabs[0].checkboxFlag ? 1 : 0,
  312. "messageStationTitle": $scope.tabs[0].processTitle,
  313. "messageStationContent": $scope.tabs[0].processContent,
  314. "shortMessageFlag": $scope.tabs[1].checkboxFlag ? 1 : 0,
  315. "shortMessageContent": $scope.tabs[1].processContent,
  316. "wechatMessageFlag": $scope.tabs[2].checkboxFlag ? 1 : 0,
  317. "wechatMessageTitle": $scope.tabs[2].processTitle,
  318. "wechatMessageContent": $scope.tabs[2].processContent,
  319. "flag": $scope.editData.flag ? 1 : 0
  320. }
  321. };
  322. }
  323. // 关闭模态窗口并传递一个结果
  324. $modalInstance.close(data);
  325. };
  326. }
  327. });
  328. modalInstance.result.then(function (data) {
  329. api_notification_data.updData(data).then(function (res) {
  330. if (res.status == 200) {
  331. SweetAlert.swal({
  332. title: "修改成功!",
  333. type: "success",
  334. confirmButtonColor: "#007AFF"
  335. }, function () {
  336. $scope.getBxList();
  337. $scope.getSjList();
  338. });
  339. }
  340. })
  341. });
  342. }
  343. }]);