'use strict'; /** * controller for User Profile Example */ 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) { //侧边栏索引 $scope.leftListIdx = 0; //标题 $scope.tableName = "消息通知设置"; //侧边栏名称 $scope.listData = [ // { "name": "报修流程" }, { "name": "事件流程" } // { "name": "上下班管理" } ]; //转换通知规则 $scope.computedRule = function (noticeRule, noticeCode) { if (noticeRule === undefined) { return '进入本步骤时'; } else if (noticeCode == 'user_receive_overresp' || noticeCode == 'manager_receive_overresp') { return '【逾期响应时间】' + noticeRule + '分钟'; } else if (noticeCode == 'user_doing_overresp' || noticeCode == 'manager_doing_overresp') { return '【解决时间】剩余 ' + noticeRule + '%'; } }; /** * * 侧边栏点击切换tab * @param {number} idx 当前点击的索引 * @param {object} value 当前点击的对象 */ $scope.leftListClick = function (idx, value) { $scope.leftListIdx = idx; $scope.tableName = value.name; } //请求获取报修流程列表 //process: '通知流程',processNode:'流程节点',processStatus:'状态',notifiedPerson:'被通知人' $scope.bxList = [ { processName: '报修流程', processNode: '申请', processStatus: '未受理', notifiedPerson: '报修人', noticeCode:'req_start' }, { processName: '报修流程', processNode: '申请', processStatus: '未受理', notifiedPerson: '服务台人员', noticeCode:'service_start' }, { processName: '报修流程', processNode: '申请', processStatus: '不受理', notifiedPerson: '报修人', noticeCode:'req_reject' }, { processName: '报修流程', processNode: '受理', processStatus: '已受理', notifiedPerson: '报修人', noticeCode:'req_accept' } ]; $scope.getBxList = function () { api_notification_data.fetchDataList({ "idx": 0, "sum": 20, "messageManager": { "noticeProcess": 1 } }).then(function (res) { if (res.status == 200) { angular.forEach($scope.bxList, function (v, i) { angular.extend(v, res.list[i]);//合并对象 }) } }) } // $scope.getBxList(); //请求获取事件流程列表 //process: '通知流程',processNode:'流程节点',processStatus:'状态',notifiedPerson:'被通知人' $scope.sjList = [ // { processName: '事件流程', processNode: '接单', processStatus: '待接单', notifiedPerson: '运维工程师', noticeCode:'user_receive' }, // { processName: '事件流程', processNode: '接单', processStatus: '待接单', notifiedPerson: '运维工程师', noticeCode:'user_receive_overresp' }, // { processName: '事件流程', processNode: '接单', processStatus: '待接单', notifiedPerson: '分类管理员', noticeCode:'cm_receive_overresp' }, // { processName: '事件流程', processNode: '接单', processStatus: '待接单', notifiedPerson: '事件经理', noticeCode:'manager_receive_overresp' }, // { processName: '事件流程', processNode: '重新指派', processStatus: '重新指派', notifiedPerson: '服务台人员', noticeCode:'service_reassign' }, // { processName: '事件流程', processNode: '重新指派', processStatus: '重新指派', notifiedPerson: '运维工程师', noticeCode:'user_reassign' }, // { processName: '事件流程', processNode: '处理', processStatus: '处理中', notifiedPerson: '报修人', noticeCode:'req_doing' }, // { processName: '事件流程', processNode: '处理', processStatus: '处理中', notifiedPerson: '运维工程师', noticeCode:'user_doing' }, // { processName: '事件流程', processNode: '处理', processStatus: '处理中', notifiedPerson: '分类管理员', noticeCode:'cm_doing' }, // { processName: '事件流程', processNode: '处理', processStatus: '指派', notifiedPerson: '运维工程师', noticeCode:'user_doing_assign' }, // { processName: '事件流程', processNode: '处理', processStatus: '转派', notifiedPerson: '运维工程师', noticeCode:'user_doing_redeploy' }, // { processName: '事件流程', processNode: '处理', processStatus: '升级', notifiedPerson: '运维工程师', noticeCode:'user_doing_upgrade' }, // { processName: '事件流程', processNode: '评价', processStatus: '已解决', notifiedPerson: '报修人', noticeCode:'req_resolve' }, // { processName: '事件流程', processNode: '关单', processStatus: '已解决', notifiedPerson: '服务台人员', noticeCode:'service_resolve' }, // { processName: '事件流程', processNode: '完成', processStatus: '已关闭', notifiedPerson: '报修人', noticeCode:'req_close' } ]; $scope.getSjList = function () { api_notification_data.fetchDataList({ "idx": 0, "sum": 20, "messageManager": { "noticeProcess": 1 } }).then(function (res) { if (res.status == 200) { // angular.forEach($scope.sjList, function (v, i) { // angular.extend(v, res.list[i]);//合并对象 // }) $scope.sjList = res.list.map(v => ({...v, ...{processName: '事件流程'}})); console.log($scope.sjList) } }) } $scope.getSjList(); //设置 $scope.editClick = function (data) { var modalInstance = $modal.open({ templateUrl: 'assets/views/system/tpl/notificationBj.html', controller: function ($scope, $modalInstance) { $scope.editData = { id: data.id,//id noticeCode: data.noticeCode, noticeRule: data.noticeRule === undefined ? 'no' : data.noticeRule,//通知规则,数字 noticeNode: data.noticeNode,//流程节点 processName: data.processName,//报修流程或者事件流程 noticeState: data.noticeState,//状态 noticeDetails: data.noticeDetails,//被通知人 noticeProcess: data.noticeProcess,//1为报修流程、2为事件流程 messageStationContent: data.messageStationContent,//站内消息通知内容 shortMessageContent: data.shortMessageContent,//短信通知内容 wechatMessageContent: data.wechatMessageContent,//微信通知内容 messageStationFlag: data.messageStationFlag == 1 ? true : false,//站内消息是否开启 shortMessageFlag: data.shortMessageFlag == 1 ? true : false,//短信是否开启 wechatMessageFlag: data.wechatMessageFlag == 1 ? true : false,//微信是否开启 messageStationTitle: data.messageStationTitle,//站内消息标题 wechatMessageTitle: data.wechatMessageTitle,//微信标题 flag: data.flag == 1 ? true : false//总开关是否开启,0为关闭,1为开启 }; //当前选中 $scope.currentIndex = 0; //tab页面数据 //tabName: 名称,processTitle:标题, processContent: 内容, checkboxFlag: checkbox是否选中,,disable:遮罩是否显示 $scope.tabs = [ { tabName: "站内消息", processTitle: $scope.editData.messageStationTitle, processContent: $scope.editData.messageStationContent, checkboxFlag: $scope.editData.messageStationFlag, disable: !$scope.editData.messageStationFlag }, { tabName: "短信", processTitle: '', processContent: $scope.editData.shortMessageContent, checkboxFlag: $scope.editData.shortMessageFlag, disable: !$scope.editData.shortMessageFlag }, { tabName: "微信", processTitle: $scope.editData.wechatMessageTitle, processContent: $scope.editData.wechatMessageContent, checkboxFlag: $scope.editData.wechatMessageFlag, disable: !$scope.editData.wechatMessageFlag } ]; //tab页面切换 $scope.selectTab = function (index) { $scope.currentIndex = index; }; //checkbox选中或者取消 $scope.selectThis = function (index) { $scope.tabs[index].checkboxFlag = !$scope.tabs[index].checkboxFlag; //遮罩切换 $scope.tabs[index].disable = !$scope.tabs[index].checkboxFlag; //所有checkbox有一个选中,总开关开启 $scope.editData.flag = $scope.tabs.some(function (v) { return v.checkboxFlag; }); }; //切换总开关 $scope.changeIcon = function (index) { $scope.editData.flag = !$scope.editData.flag; }; //当前jquery对象 $scope.curElement = null; //textarea失去焦点,允许插入的表单元素 $scope.textBlur = function ($event) { $scope.curElement = $($event.target); }; //插入值 $scope.insertClick = function ($event) { var $_this = $($event.target); var str = ""; if ($scope.curElement != null) { //获取插入的字符串 str = $_this.text(); //插入进去 $scope.insertAtCaret($scope.curElement, str); } }; //插入进去seimin $scope.insertAtCaret = function ($element, myValue) { var element = $element.get(0); if (document.selection) {//IE $element.focus(); //在选中区域创建一个文本区域 sel = document.selection.createRange(); // sel.text = myValue; $scope.tabs[$scope.currentIndex].processContent = myValue; $element.focus(); } else { if (element.selectionStart || element.selectionStart == '0') { var startPos = element.selectionStart; var endPos = element.selectionEnd; // element.value = element.value.substring(0, startPos) + myValue + element.value.substring(endPos); $scope.tabs[$scope.currentIndex].processContent = element.value.substring(0, startPos) + myValue + element.value.substring(endPos); $element.focus(); } else { var val = $element.html() + myValue; // $element.html(val); $scope.tabs[$scope.currentIndex].processContent = val; $element.focus(); } } }; //百分比不能为负数 $scope.$watch('editData.noticeRule', function (newVal) { if (newVal === undefined) {//负号 $scope.editData.noticeRule = 0; } else { if ($scope.editData.noticeCode == 'user_receive') {//百分比 $scope.editData.noticeRule = newVal < 0 ? 0 : newVal; } } }); //变量参数 switch ($scope.editData.noticeCode) { case 'req_start': $scope.varArr = ['[$事件单号$]', '[$报修时间$]', '[$报修人$]', '[$故障描述$]', '[$区域$]', '[$地点$]', '[$详细地址$]','[$报修科室$]','[$进入系统$]']; $scope.varPlaceholder = '您于${报修时间}申请的${区域}${地点}${详细地址}${事件单号}报修已提交,请等待服务台处理,如有疑问,可(咨询电话"123456")。'; break; case 'service_start': $scope.varArr = ['[$事件单号$]', '[$报修时间$]', '[$报修人$]', '[$故障描述$]', '[$区域$]', '[$地点$]', '[$详细地址$]','[$报修科室$]','[$进入系统$]']; $scope.varPlaceholder = '${事件单号}报修待受理,请及时处理。'; break; case 'req_reject': $scope.varArr = ['[$事件单号$]', '[$报修时间$]', '[$报修人$]', '[$服务台人员$]', '[$不受理时间$]', '[$故障描述$]', '[$区域$]', '[$地点$]', '[$详细地址$]', '[$不受理原因$]','[$报修科室$]','[$进入系统$]']; $scope.varPlaceholder = '您于${报修时间}${区域}${地点}${详细地址}的${事件单号}报修,${服务台人员}已于${不受理时间}不予受理,如有如有疑问请拨打(服务电话“123456”)。'; break; case 'req_accept': $scope.varArr = ['[$事件单号$]', '[$报修时间$]', '[$报修人$]', '[$服务台人员$]', '[$受理时间$]', '[$处理人$]', '[$处理人电话$]', '[$故障描述$]', '[$区域$]', '[$地点$]', '[$详细地址$]','[$报修科室$]','[$进入系统$]']; $scope.varPlaceholder = '您于${报修时间}${区域}${地点}${详细地址}的${事件单号}报修,${服务台人员}已于${受理时间}受理,待接单。'; break; case 'user_receive': $scope.varArr = ['[$事件单号$]', '[$工单登记时间$]', '[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]', '[$故障描述$]', '[$区域$]', '[$地点$]', '[$详细地址$]', '[$学工号$]','[$报修科室$]','[$进入系统$]']; $scope.varPlaceholder = '${ 联系人}${联系人电话}于${工单登记时间}${事件单号}的事件工单待接单,请尽快处理。'; break; case 'user_receive_overresp': $scope.varArr = ['[$事件单号$]', '[$工单登记时间$]', '[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]', '[$故障描述$]', '[$区域$]', '[$地点$]', '[$详细地址$]', '[$学工号$]','[$报修科室$]','[$进入系统$]']; $scope.varPlaceholder = '${联系人}${联系人电话}于${工单登记时间}${事件单号}的事件工单待接单,已逾期响应5分钟,请尽快处理。'; break; case 'cm_receive_overresp': $scope.varArr = ['[$事件单号$]', '[$工单登记时间$]', '[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]', '[$故障描述$]', '[$区域$]', '[$地点$]', '[$详细地址$]', '[$学工号$]','[$报修科室$]','[$进入系统$]']; $scope.varPlaceholder = '${联系人}${联系人电话}于${工单登记时间}${事件单号}的事件工单待接单,已逾期响应60分钟,${处理人}${处理人电话}请尽快处理。'; break; case 'manager_receive_overresp': $scope.varArr = ['[$事件单号$]', '[$工单登记时间$]', '[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]', '[$故障描述$]', '[$区域$]', '[$地点$]', '[$详细地址$]', '[$学工号$]','[$报修科室$]','[$进入系统$]']; $scope.varPlaceholder = '${联系人}${联系人电话}于${工单登记时间}${事件单号}的事件工单待接单,已逾期响应60分钟,${处理人}${处理人电话}请尽快处理。'; break; case 'service_reassign': $scope.varArr = ['[$事件单号$]', '[$工单登记时间$]', '[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]', '[$故障描述$]', '[$区域$]', '[$地点$]', '[$详细地址$]', '[$学工号$]','[$报修科室$]','[$进入系统$]']; $scope.varPlaceholder = '${ 联系人}${联系人电话}于${工单登记时间}${事件单号}的事件工单,${处理人}${处理人电话}已请求重新指派,请尽快处理。'; break; case 'user_reassign': $scope.varArr = ['[$事件单号$]', '[$工单登记时间$]', '[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]', '[$故障描述$]', '[$区域$]', '[$地点$]', '[$详细地址$]', '[$学工号$]','[$报修科室$]','[$进入系统$]']; $scope.varPlaceholder = '${联系人}${联系人电话}于${工单登记时间}${事件单号}的事件工单,已退回服务台,请重新指派。'; break; case 'req_doing': $scope.varArr = ['[$事件单号$]','[$报修时间$]','[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]', '[$故障描述$]', '[$区域$]', '[$地点$]', '[$详细地址$]', '[$学工号$]','[$报修科室$]','[$进入系统$]']; $scope.varPlaceholder = '${联系人}${联系人电话}于${报修时间}${事件单号}的报修,${处理人}${处理人电话}已接单,正在处理中。'; break; case 'req_overtime': $scope.varArr = ['[$事件单号$]','[$报修时间$]','[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]', '[$故障描述$]', '[$区域$]', '[$地点$]', '[$详细地址$]', '[$学工号$]','[$报修科室$]','[$进入系统$]']; $scope.varPlaceholder = '${联系人}${联系人电话}于${报修时间}${事件单号}的报修,${处理人}${处理人电话}已接单,正在处理中。'; break; case 'user_doing': $scope.varArr = ['[$事件单号$]', '[$工单登记时间$]', '[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]', '[$故障描述$]', '[$区域$]', '[$地点$]', '[$详细地址$]', '[$学工号$]','[$报修科室$]','[$进入系统$]']; $scope.varPlaceholder = '${联系人}${联系人电话}于${工单登记时间}${事件单号}的事件工单,即将解决逾期,请尽快处理。'; break; case 'cm_doing': $scope.varArr = ['[$事件单号$]', '[$工单登记时间$]', '[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]', '[$故障描述$]', '[$区域$]', '[$地点$]', '[$详细地址$]', '[$学工号$]','[$报修科室$]','[$进入系统$]']; $scope.varPlaceholder = '${联系人}${联系人电话}于${工单登记时间}${事件单号}的事件工单,即将解决逾期,请尽快处理。'; break; case 'user_doing_assign': $scope.varArr = ['[$事件单号$]', '[$工单登记时间$]', '[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]', '[$故障描述$]', '[$区域$]', '[$地点$]', '[$详细地址$]', '[$学工号$]','[$报修科室$]','[$指派人$]','[$进入系统$]']; $scope.varPlaceholder = '[$联系人$][$联系人电话$]于[$工单登记时间$][$事件单号$]的事件工单,已指派给您,请尽快处理。'; break; case 'user_doing_redeploy': $scope.varArr = ['[$事件单号$]', '[$工单登记时间$]', '[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]', '[$故障描述$]', '[$区域$]', '[$地点$]', '[$详细地址$]', '[$学工号$]','[$报修科室$]','[$转派人$]','[$进入系统$]']; $scope.varPlaceholder = '[$联系人$][$联系人电话$]于[$工单登记时间$][$事件单号$]的事件工单,已转派给您,请尽快处理。'; break; case 'user_doing_upgrade': $scope.varArr = ['[$事件单号$]', '[$工单登记时间$]', '[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]', '[$故障描述$]', '[$区域$]', '[$地点$]', '[$详细地址$]', '[$学工号$]','[$报修科室$]','[$进入系统$]']; $scope.varPlaceholder = '[$联系人$][$联系人电话$]于[$工单登记时间$][$事件单号$]的事件工单,已升级给您,请尽快处理。'; break; case 'req_resolve': $scope.varArr = ['[$事件单号$]','[$报修时间$]','[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]', '[$故障描述$]', '[$区域$]', '[$地点$]', '[$详细地址$]', '[$学工号$]','[$报修科室$]','[$进入系统$]']; $scope.varPlaceholder = '您于${报修时间}提交的${事件单号}报修,已处理,您可对本次服务进行评价,如有疑问,可(咨询电话“123456”)。'; break; case 'service_resolve': $scope.varArr = ['[$事件单号$]', '[$工单登记时间$]', '[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]', '[$故障描述$]', '[$区域$]', '[$地点$]', '[$详细地址$]', '[$学工号$]','[$报修科室$]','[$进入系统$]']; $scope.varPlaceholder = '${联系人}${联系人电话}于${工单登记时间}${事件单号}的事件工单已解决,请回访并关闭该工单。'; break; case 'req_close': $scope.varArr = ['[$事件单号$]', '[$报修时间$]', '[$故障地点$]', '[$联系人$]', '[$联系人电话$]', '[$受理人$]', '[$受理人电话$]', '[$处理人$]', '[$处理人电话$]', '[$故障描述$]', '[$区域$]', '[$地点$]', '[$详细地址$]', '[$学工号$]','[$报修科室$]','[$进入系统$]']; $scope.varPlaceholder = '您于${报修时间}提交的${事件单号}报修,已完成,如有疑问,请拔打(服务电话“123456”)。'; break; } //取消 $scope.cancel = function () { $modalInstance.dismiss('cancel'); }; //确定seimin $scope.savercode = function () { var filterArr = $scope.tabs.filter(item => { return item.checkboxFlag; }); for (var i = 0; i < filterArr.length; i++) { if (filterArr[i].processContent == '') { alert("通知内容【" + filterArr[i].tabName + "】不能为空!"); return; } else { var nowArr = [...new Set([...(filterArr[i].processContent.match(/\[\$[^\$\[\]]*?\$\]/g) || []), ...$scope.varArr])]; if (nowArr.length !== $scope.varArr.length) { alert("【" + filterArr[i].tabName + "】请填写有效的变量名称!"); return; } } } //请求参数处理(是否有输入数字控件) if ($scope.editData.noticeRule !== 'no') { var data = { "messageManager": { "id": $scope.editData.id, "noticeRule": $scope.editData.noticeRule, "messageStationFlag": $scope.tabs[0].checkboxFlag ? 1 : 0, "messageStationTitle": $scope.tabs[0].processTitle, "messageStationContent": $scope.tabs[0].processContent, "shortMessageFlag": $scope.tabs[1].checkboxFlag ? 1 : 0, "shortMessageContent": $scope.tabs[1].processContent, "wechatMessageFlag": $scope.tabs[2].checkboxFlag ? 1 : 0, "wechatMessageTitle": $scope.tabs[2].processTitle, "wechatMessageContent": $scope.tabs[2].processContent, "flag": $scope.editData.flag ? 1 : 0 } }; } else { var data = { "messageManager": { "id": $scope.editData.id, "messageStationFlag": $scope.tabs[0].checkboxFlag ? 1 : 0, "messageStationTitle": $scope.tabs[0].processTitle, "messageStationContent": $scope.tabs[0].processContent, "shortMessageFlag": $scope.tabs[1].checkboxFlag ? 1 : 0, "shortMessageContent": $scope.tabs[1].processContent, "wechatMessageFlag": $scope.tabs[2].checkboxFlag ? 1 : 0, "wechatMessageTitle": $scope.tabs[2].processTitle, "wechatMessageContent": $scope.tabs[2].processContent, "flag": $scope.editData.flag ? 1 : 0 } }; } // 关闭模态窗口并传递一个结果 $modalInstance.close(data); }; } }); modalInstance.result.then(function (data) { api_notification_data.updData(data).then(function (res) { if (res.status == 200) { SweetAlert.swal({ title: "修改成功!", type: "success", confirmButtonColor: "#007AFF" }, function () { // $scope.getBxList(); $scope.getSjList(); }); } }) }); } }]);