'use strict'; app.controller('chartCtrl', ["$scope", "i18nService", "$rootScope", "$state", "$timeout", "$interval", "$modal", "SweetAlert", "uiGridConstants", "uiGridGroupingConstants", "Restangular", "api_bpm_data", "api_text", "api_user_data", "api_wechatfile", "api_search_ks", "api_flow", function ($scope, i18nService, $rootScope, $state, $timeout, $interval, $modal, SweetAlert, uiGridConstants, uiGridGroupingConstants, Restangular, api_bpm_data, api_text, api_user_data, api_wechatfile, api_search_ks, api_flow) { $scope.langs = i18nService.getAllLangs(); $scope.lang = 'zh-cn'; i18nService.setCurrentLang($scope.lang); var loginUser = $rootScope.user; $scope.tabs = [ {key: 'all', value: '全部', num: ''}, {key: 'accept', value: '待受理', num: ''}, {key: 'accepted', value: '已受理', num: ''}, {key: 'reject', value: '不受理', num: ''}, ] //保存报修主体 $scope.repairMain = JSON.parse(sessionStorage.getItem("repair_main")); $scope.wxIncidentWithCmdb = JSON.parse(sessionStorage.getItem("wxIncidentWithCmdb"));//资产 $scope.incidentWithConsumable = JSON.parse(sessionStorage.getItem("incidentWithConsumable"));//耗材 // ----------------分割线 start----------------- // 报修科室下拉 $scope.ks_pageNum = 0; //科室下拉列表分页 $scope.ks_len = 0; //科室所有数据列表数量 $scope.ks_arr = [];//科室所有数据 $scope.ksFlag = false;//默认下拉框列表隐藏 $scope.ksModel = '';//科室输入内容 //点击文本框 $scope.ksClickHandle = function () { $scope.ks_arr = []; $scope.ks_pageNum = 0; $scope.getDepartmentList($scope.ks_pageNum); angular.element('#bx_ks_ul').scrollTop(0); } //修改文字,实时监听 $scope.ksChangeHandle = _.debounce(function () { $scope.ks_arr = []; $scope.ks_pageNum = 0; $scope.getDepartmentList($scope.ks_pageNum); angular.element('#bx_ks_ul').scrollTop(0); }, 500) //滚动加载 $scope.ksScrollHandle = function () { var itemLen = $scope.ks_arr.length; $scope.ks_pageNum++; if ($scope.ks_len != itemLen) { $scope.ks_len = itemLen; $scope.getDepartmentList($scope.ks_pageNum); } } //获取科室列表seimin $scope.getDepartmentList = function (idx) { api_search_ks.getKsList({ "idx": idx, "sum": 50, "department": { "dept": $scope.ksModel } }) .then(res => { if (res.status == 200) { //添加分页数据,汇总 $scope.ks_arr = $scope.ks_arr.concat(res.list); $scope.ksFlag = true;//显示 } }) .catch(err => { console.log(err); }) } //下拉框列表选中 $scope.ksItemClick = function (obj) { $scope.ksModel = obj.dept;//文本框赋值 $scope.ksFlag = false;//隐藏 } //点击空白处隐藏 angular.element(document).on('click', function (e) { if (e.target !== angular.element('#bx_ks').get(0)) { $scope.ksFlag = false;//隐藏 } }) // -----------------分割线 end---------------- var pdKey = $state.current.pdKey; $scope.gridOptions = {}; $scope.gridOptions.data = 'myData'; $scope.gridOptions.rowHeight = 54; $scope.gridOptions.enableColumnResizing = true; $scope.gridOptions.enableFiltering = false; $scope.gridOptions.enableGridMenu = true; $scope.gridOptions.enableRowSelection = true; $scope.gridOptions.showGridFooter = true; $scope.gridOptions.showColumnFooter = false; $scope.gridOptions.fastWatch = true; // $scope.gridOptions.useExternalFiltering=true; $scope.gridOptions.useExternalPagination = true; $scope.gridOptions.paginationPageSizes = [10, 20, 50, 100]; $scope.gridOptions.paginationPageSize = 10; $scope.gridOptions.multiSelect = true; var mun = $scope.gridOptions.paginationPageSize; $scope.gridOptions.rowTemplate = "
"; $scope.gridOptions.rowIdentity = function (row) { return row.id; }; $scope.gridOptions.getRowIdentity = function (row) { return row.id; }; //处理图标与文字 $scope.transfertip = function (item) { var tip = ""; if (item.operationLog) { tip = item.operationLog.userName; } return tip; } $scope.transferColor = function (item) { var color = ""; if (item.operationLog) { if (item.operationLog.opValue == 1) { color = "dash dash-lock redfont"; } else { color = "dash dash-unlock greenfont"; } } else { color = "dash dash-unlock greenfont"; } return color; } //表格列表显示 $scope.gridOptions.columnDefs = [{ name: 'item', displayName: '序号', width: 50, cellTemplate: '
' + '
{{row.entity.item}}
' + '
' }, { name: 'startDate', displayName: '申请时间', width: 150, cellTemplate: '
' + '
{{row.entity.startDate | date:"yyyy-MM-dd HH:mm" }}
' + '
' }, { name: 'description', displayName: '故障描述', width: '20%', cellTemplate: '
' + '
{{row.entity.description}}
' + '
' }, { name: 'row4', displayName: '科室/地址', width: '20%', cellTemplate: '
' + '
{{row.entity.department ? row.entity.department.dept : "无"}}
' + '
' }, { name: 'row5', displayName: '联系人/联系电话', width: 150, cellTemplate: '
' + '
{{row.entity.contacts}}
{{row.entity.contactsInformation}}
' + '
' }, { name: 'state.name', displayName: '状态', width: 150, cellTemplate: '
' + '
{{row.entity.state.name}}
' + '
' }, { name: 'reqAttachment', displayName: '图片', width: 150, cellTemplate: '
' + '
' + '
' }, { name: '操作', width: 300, cellTemplate: '', enableFiltering: false } ]; $scope.value = 10; $scope.decrement = function () { $scope.value = $scope.value - 1; }; $scope.searchkeys = {}; //点击切换 $scope.searchstate = 'accept'; $scope.onChange = function (searchstate) { $scope.searchstate = searchstate; $scope.refreshData('expand-right', $scope.fileData); } $scope.record = function () { api_text.record($rootScope.takes).then(function (data) { if (data.errno == 0) { $scope.busy = false; } }) }; $scope.areaplace = function (data) { var str = ''; str += '' + data.branchName + ''; str += (data.place ? (data.place.area ? data.place.area.area : '') : ''); str += (data.place ? (data.place.place ? data.place.place : '') : ''); str += (data.houseNumber ? data.houseNumber : ''); return str || '无'; } $scope.transferTime = function (time) { return moment(time).format('YYYY-MM-DD HH:mm'); } $scope.parameters = null; $scope.open = function ($event) { $event.preventDefault(); $event.stopPropagation(); $scope.opened = !$scope.opened; }; $scope.endOpen = function ($event) { $event.preventDefault(); $event.stopPropagation(); $scope.startOpened = false; $scope.endOpened = !$scope.endOpened; }; $scope.startOpen = function ($event) { $event.preventDefault(); $event.stopPropagation(); $scope.endOpened = false; $scope.startOpened = !$scope.startOpened; }; var getUser = function (fieldatas) { api_user_data.fetchDataList('user', fieldatas).then(function (data) { $scope.requester = data.list; }); } $scope.onChangehandling = function (key) { var filuser = { "idx": 0, "sum": 10, "user": { "name": key, selectType: "pinyin_all", engineer: undefined, } } getUser(filuser); } getUser({ "idx": 0, "sum": 10, user: {engineer: undefined,} }); //搜索 $scope.chiceIncident = function (item) { if ($scope.fileData.incident.startDate_start) { $scope.fileData.incident.startDate_start = moment($scope.fileData.incident.startDate_start).format('YYYY-MM-DD HH:mm:ss'); } if ($scope.fileData.incident.startDate_end) { $scope.fileData.incident.startDate_end = moment($scope.fileData.incident.startDate_end).endOf("day").format('YYYY-MM-DD HH:mm:ss'); } $scope.refreshData('expand-right', $scope.fileData); } $scope.gridOptions.onRegisterApi = function (gridApi) { $scope.gridApi = gridApi; gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) { var filtersData = $scope.memoryfilterData; filtersData.idx = newPage - 1; filtersData.sum = pageSize; $scope.fileData.idx = newPage - 1; $scope.fileData.sum = pageSize; $scope.refreshData('expand-right', $scope.fileData); }); $scope.selected = { items: [] } }; $scope.memoryfilterData = defaultFilterData = { "idx": 0, "incident": { source:{'value':'im'} }, "sum": mun }; //收集搜索数据 $scope.fileData = { "idx": 0, "incident": { source:{'value':'im'} }, "sum": 10 } $scope.selectRowFunction = function (data) { var formdata = { 'model': { 'incident': { 'requester': data.requester, 'area': data.place.area, 'place': data.place, 'houseNumber': data.address, 'contacts': data.contacts, 'contactsInformation': data.contactsInformation, 'description': data.incidentDescription, 'source': { 'id': 1549 }, 'fileUrl': data.fileUrl }, 'requestershow': data.requester, 'flow': data.id } } $state.go('app.incident.chart', { 'model': JSON.stringify(formdata) }); }; $scope.lookFunction = function (data) { $state.go('app.desk.detail', { model: JSON.stringify(data) }); }; $scope.toHandleFunction = function (data) { console.log(data) var formdata = { 'model': { 'incident': { 'requester': data.requester, 'houseNumber': data.address, 'contacts': data.contacts, 'contactsInformation': data.contactsInformation, 'incidentState': data.incidentState, 'description': data.incidentDescription, 'source': { 'id': 1549 }, 'fileUrl': data.fileUrl }, 'requestershow': data.requester, 'flow': data.id, 'retractReason': data.retractReason } } var modelfile = { model: { incident: data } }; angular.extend(modelfile.model, { 'gourl': 'app.incident.chart', 'state_model': formdata }) angular.extend(modelfile.model.incident, { status: 1 }) $state.go('app.desk.form_editor', { formKey: 'desk_detail', service: 'api_user_data', model: JSON.stringify(modelfile) }); }; $scope.seeIncidentFunction = function (data) { $state.go('app.incident.incidentDetail', { id: data.incident.id, }); } //点击查看报修图片 $scope.clickImgs = function (item) { console.log(item) $modal.open({ templateUrl: 'assets/views/showPictrueList.html', controller: function ($rootScope, $scope, scope, $modalInstance, api_user_data, SweetAlert) { $scope.title = '提示'; $scope.content = '您申请的报修图片如下,请查看。'; $scope.repairImgs = []; // 获取报修图片 $scope.getRepairImgs = function() { $rootScope.isMask =true; api_wechatfile.listAttachment("wechatRequesterIncident", item.id).then(function (res) { $rootScope.isMask = false; res.data = res.data || []; res.data.forEach(v => { v.previewUrl = location.origin + "/file" + v.relativeFilePath; }) $scope.repairImgs = res.data; }); } //展示图片 $scope.preview = function (url, idx) { var title = $scope.repairImgs[idx].title; $modal.open({ backdrop: false, templateUrl: "assets/views/customform/tpl/ui-showimage.html", controller: function ($scope, $rootScope, scope, $modalInstance) { $scope.title = title; $scope.imageurl = $rootScope.attachmentAddressSplicing(url); $scope.cancel = function () { $modalInstance.dismiss("cancel"); }; }, resolve: { scope: function () { return $scope; }, }, }); }; $scope.getRepairImgs(); //选择“取消”或“确定” $scope.cancel = function () { $modalInstance.dismiss('cancel'); }; }, size: 'sm', resolve: { scope: function () { return $scope; } } }); } //不受理 $scope.rejectFn = function (model) { console.log(model) var modalInstance = $modal.open({ backdrop: false, templateUrl: 'assets/views/incident/tpl/reject.tpl.html', controller: function ($scope,$rootScope, $modalInstance, api_bpm_domain, modelData, currentUserId, Alert, api_user_data,api_category) { console.log(model,loginUser); $scope.model = model; $scope.postData = { rejectRemark: '', } // 初始化 $scope.ok = function () { if (!$scope.postData.rejectRemark){ Alert.swal({ title: "操作失败", text: "请填写不受理原因!", type: "error" }); return; } let postData = {incident: {...model, ...{ rejectRemark: $scope.postData.rejectRemark, }}}; $rootScope.isMask = true; api_flow.accept("reject", postData).then(function (response) { console.log(response) $rootScope.isMask = false; if (response.state == 200) { Alert.swal({ title: "操作成功!", confirmButtonColor: "#007AFF", type: "success" }); $modalInstance.close('success'); } else { Alert.swal({ title: "操作失败", text: "操作失败, 请稍后再试!", type: "error" }); } }); } $scope.cancel = function () { $modalInstance.dismiss('cancel'); } }, size: 'sm', resolve: { modelData: function () { return model; }, currentUserId: function () { return loginUser.id; }, Alert: function () { return SweetAlert; }, api_user_data: function () { return api_user_data; } } }); modalInstance.result.then(function (selectedItem) { if (selectedItem == 'success') { $scope.refreshData('expand-right', defaultFilterData); } }); }; // 生成工单 $scope.buildFn = function(model){ $rootScope.newOrder({incident: model}, 'wx'); } //重置 $scope.cleanItem = function () { delete $scope.fileData.incident.contacts; delete $scope.fileData.incident.contactsInformation; delete $scope.fileData.incident.startDate_start; delete $scope.fileData.incident.startDate_end; delete $scope.fileData.incident.department; $scope.seiminObj = null; $scope.ksModel = ''; $scope.refreshData('expand-right', $scope.fileData); } var defaultFilterData = { "idx": 0, "incident": { "serviceState": { "id": 1650 } }, "sum": mun }; $scope.ldloading = {}; $scope.refreshData = function (style, filterData) { $scope.ldloading[style.replace('-', '_')] = true; if (angular.isUndefined(filterData)) { filterData = defaultFilterData; } $scope.myData = []; $scope.gridOptions['sum'] = filterData.sum; if ($scope.searchstate === 'all') { delete filterData.incident.notStatus; delete filterData.incident.state; } else if ($scope.searchstate === 'accept' || $scope.searchstate === 'reject') { delete filterData.incident.notStatus; filterData.incident.state = $scope.state.find(v => v.value == $scope.searchstate); } else if ($scope.searchstate === 'accepted') { delete filterData.incident.state; filterData.incident.notStatus = 'accept,reject,cancel'; } //科室列表选中数据,请求参数判断 if ($scope.repairMain.valueconfig == 2 && $scope.ksModel != '') {//报修科室且不是空字符 $scope.fileData.incident.department = { dept: $scope.ksModel } } //搜索接口 api_bpm_data.fetchDataList("incident", filterData).then(function (data) { var myData = Restangular.stripRestangular(data); $scope.gridOptions['totalItems'] = myData.totalNum; $scope.myData = myData.list; for (var i = 0; i < $scope.myData.length; i++) { $scope.myData[i]['item'] = i + 1 + filterData.idx * filterData.sum } $scope.ldloading[style.replace('-', '_')] = false; }, function () { $scope.ldloading[style.replace('-', '_')] = false; }); }; $scope.timer = $interval(function () { $scope.refreshData('expand-right', $scope.fileData); }, $rootScope.refreshTime); console.log($state.params); if ($state.params.tab) { if ($state.params.tab == '-1') { $scope.searchstate = 'all'; $scope.fileData.incident = {}; } else { // $scope.searchstate = $state.params.tab; // $scope.fileData.incident.serviceState.id = $scope.searchstate; $scope.searchstate = 'accept'; } } else { //默认未受理 $scope.searchstate = 'accept'; } $scope.$on('$destroy', function () { $interval.cancel($scope.timer) }); //状态 $scope.state = []; $scope.getIncidentStatus = function(){ api_wechatfile.getDictionary({ "type": "list", "key": "incident_status" }).then(function (response) { $scope.state = response || []; $scope.refreshData('expand-right', $scope.fileData); }) } // 进入页面时 $scope.getIncidentStatus(); }]); app.controller('Wechatoperator', ['$rootScope', '$http', '$scope', '$modal', 'api_user_data', function ($rootScope, $http, $scope, $modal, api_user_data) { var loginUser = $rootScope.user; console.log($scope.item) $scope.weixinbaozhang_bushouli = false; $scope.weixinbaozhang_build = false; for (var i = 0; i < loginUser.menu.length; i++) { if (loginUser.menu[i].link == "weixinbaozhang_bushouli") { $scope.weixinbaozhang_bushouli = true } if (loginUser.menu[i].link == "weixinbaozhang_build") { $scope.weixinbaozhang_build = true } } $scope.edit = function () { $scope.colobject.grid.appScope.selectRowFunction($scope.item); } //查看,查看详情 $scope.look = function () { $scope.colobject.grid.appScope.lookFunction($scope.item); } //处理 $scope.handleFn = function () { console.log($scope.item) // $scope.colobject.grid.appScope.toHandleFunction($scope.item); //是否包含服务台经理角色 var isFuwutaijingli = loginUser.role.filter(v => v.rolecode == 'call center admin').length > 0; if (!isFuwutaijingli) { if ($scope.item.operationLog) { //有锁定操作记录的 var p1 = { idx: 0, sum: 1000, operationLog: { id: $scope.item.operationLog.id, extra1: $scope.item.id, opType: 'wxincidentLock' } }; api_user_data.fetchDataList('operationLog', p1).then(function (result) { if (result.status == 200) { var opValue = result.list[0].opValue;//查询锁定状态 var userName = result.list[0].userName;//查询锁定人 var userId = result.list[0].userId;//查询锁定人ID if (opValue == 1&&userId!=loginUser.id) { //如果锁定了,并不是锁定人操作 $modal.open({ templateUrl: 'assets/views/delete.html', controller: function ($scope, scope, $modalInstance, api_user_data, SweetAlert) { $scope.title = '提示'; $scope.connect = '该报修已被【' + userName + '】锁定!'; $scope.yesFlag = true; //选择“取消”或“确定” $scope.cancel = function () { $modalInstance.dismiss('cancel'); scope.$parent.$parent.$parent.$parent.$parent.$parent.$parent.$parent.refreshData('expand-right', $scope.fileData); }; }, size: 'sm', resolve: { scope: function () { return $scope; } } }); } else if(opValue == 1&&userId==loginUser.id){ //如果锁定了,并是锁定人操作 $scope.colobject.grid.appScope.toHandleFunction($scope.item); }else{ //如果没有锁定 $scope.operateUnLock($scope.item.operationLog.id) } } }) } else { //没有锁定记录的 $scope.operateUnLock(); } } else { $scope.colobject.grid.appScope.toHandleFunction($scope.item); } // $scope.doEdit($scope.item.id); } // 不受理 $scope.rejectFn = function () { $scope.colobject.grid.appScope.rejectFn($scope.item); } // 生成工单 $scope.buildFn = function () { $scope.colobject.grid.appScope.buildFn($scope.item); } //是否锁定,id是日志ID,有是修改,没有是新增 $scope.operateUnLock = function (id) { $modal.open({ templateUrl: 'assets/views/delete.html', controller: function ($scope, scope, $modalInstance, api_user_data, SweetAlert) { $scope.title = '提示'; $scope.connect = '是否锁定?锁定后其他人(服务台经理除外)无法操作此报修!'; $scope.noFlag = true; //选择“是” $scope.yes = function () { if (scope.item) { var postData = { operationLog: { extra1: scope.item.id, userId: loginUser.id, userName: loginUser.name, opType: 'wxincidentLock', opValue: '1' } }; if(id){ postData.operationLog.id = id; } api_user_data.addData('operationLog', postData).then(function (response) { if (response.data) { $modalInstance.dismiss('cancel'); SweetAlert.swal({ title: "锁定成功!", type: "success", confirmButtonColor: "#007AFF" }, function () { scope.colobject.grid.appScope.toHandleFunction(scope.item); }); } else { SweetAlert.swal({ title: "操作异常!", text: "系统异常,请稍后重试,或者联系管理员!", type: "error" }); } }) } }; //选择“取消” $scope.cancel = function () { $modalInstance.dismiss('cancel'); }; //选择“否” $scope.no = function () { $modalInstance.dismiss('cancel'); scope.colobject.grid.appScope.toHandleFunction(scope.item); }; }, size: 'sm', resolve: { scope: function () { return $scope; } } }); } //解锁 $scope.unLock = function(){ $modal.open({ templateUrl: 'assets/views/delete.html', controller: function ($scope, scope, $modalInstance, api_user_data, SweetAlert) { $scope.title = '提示'; $scope.connect = '是否解锁?'; $scope.noFlag = true; //选择“是” $scope.yes = function () { if (scope.item) { var postData = { operationLog: { id:scope.item.operationLog.id, extra1: scope.item.id, userId: loginUser.id, userName: loginUser.name, opType: 'wxincidentLock', opValue: '0' } }; api_user_data.addData('operationLog', postData).then(function (response) { if (response.data) { $modalInstance.dismiss('cancel'); SweetAlert.swal({ title: "解锁成功!", type: "success", confirmButtonColor: "#007AFF" }, function () { scope.$parent.$parent.$parent.$parent.$parent.$parent.$parent.$parent.refreshData('expand-right', $scope.fileData); }); } else { SweetAlert.swal({ title: "操作异常!", text: "系统异常,请稍后重试,或者联系管理员!", type: "error" }); } }) } }; //选择“取消” $scope.cancel = function () { $modalInstance.dismiss('cancel'); }; //选择“否” $scope.no = function () { $modalInstance.dismiss('cancel'); }; }, size: 'sm', resolve: { scope: function () { return $scope; } } }); } //查看事件 $scope.seeIncident = function () { $scope.colobject.grid.appScope.seeIncidentFunction($scope.item); // $scope.doEdit($scope.item.id); } }]); app.directive('wechatoperator', function () { return { restrict: 'E', scope: { item: '=', colobject: '=' }, controller: 'Wechatoperator', template: '' }; }); // app.factory('myFactory', function() { // //定义factory返回对象 // var myServices = {}; // //定义参数对象 // var myObject = {}; // var _set = function(data) { // myObject = data; // }; // })