app.controller('knowledgeManagerCtrl', ["$rootScope", "$scope", "$http", "i18nService", "$state", "$timeout", "$interval", "SweetAlert", "$window", "$modal", "FileUploader", "uiGridConstants", "uiGridGroupingConstants", "Restangular", "api_user_data", "api_solution", "api_bpm_domain", "$stateParams", "api_zsk", "api_configure_data", "api_wechatfile","api_bpm", function ($rootScope, $scope, $http, i18nService, $state, $timeout, $interval, SweetAlert, $window, $modal, FileUploader, uiGridConstants, uiGridGroupingConstants, Restangular, api_user_data, api_solution, api_bpm_domain, $stateParams, api_zsk, api_configure_data, api_wechatfile,api_bpm) { $scope.langs = i18nService.getAllLangs(); $scope.lang = 'zh-cn'; i18nService.setCurrentLang($scope.lang); var loginUser = $rootScope.user; $scope.look = false; $scope.xinzeng = false; $scope.bianji = false; $scope.shenhe = false; $scope.shengji = false; $scope.tingyong = false; for (var i = 0; i < loginUser.menu.length; i++) { if (loginUser.menu[i].link == "app.knowledge.manager") { $scope.look = true } if (loginUser.menu[i].link == "zhishiku_bianji") { $scope.xinzeng = true } if (loginUser.menu[i].link == "zhishiku_bianji") { $scope.bianji = true } if (loginUser.menu[i].link == "zhishiku_shenhe") { $scope.shenhe = true } if (loginUser.menu[i].link == "zhishiku_shengji") { $scope.shengji = true } if (loginUser.menu[i].link == "zhishiku_tingyong") { $scope.tingyong = true } } $scope.gridOptions = {}; $scope.gridOptions.data = 'myData'; $scope.gridOptions.enableColumnResizing = true; $scope.gridOptions.enableFiltering = false; $scope.gridOptions.enableGridMenu = true; $scope.gridOptions.enableRowSelection = true; $scope.gridOptions.showGridFooter = true; $scope.gridOptions.showColumnFooter = true; $scope.gridOptions.fastWatch = true; $scope.gridOptions.useExternalPagination = true; $scope.gridOptions.paginationPageSizes = [10, 20, 50, 100]; $scope.gridOptions.paginationPageSize = 10; $scope.gridOptions.multiSelect = false; $scope.gridOptions.rowIdentity = function (row) { return row.id; }; $scope.gridOptions.getRowIdentity = function (row) { return row.id; }; var mun = $scope.gridOptions.paginationPageSize; $scope.transferTime = function (time) { return moment(time).format('YYYY-MM-DD '); } //jry数据传递 if ($scope.fenye == undefined) { $scope.fenye = 0; } $scope.jry_todata = { "idx": $scope.fenye, "sum": 10, "solution": { selectType:'keySearch', "keywords": "", "solutionType": { "id": '' }, "status": { "id": "" }, "createUser": { "name": "" } } } // 清空 $scope.clean = function () { delete $scope.jry_todata.solution.title; delete $scope.jry_todata.solution.solutionType; delete $scope.jry_todata.solution.createUser; delete $scope.jry_todata.solution.threeSearch; $scope.refreshListData('expand-right', $scope.jry_todata); } $scope.transferStatus = function (status) { var statusLabel = "不合法的状态"; if (status.value == 1) { statusLabel = "待审核"; } else if (status.value == 2) { statusLabel = "已发布"; } else if (status.value == 3) { statusLabel = "已驳回"; } else if (status.value == 4) { statusLabel = "已停用"; } else if (status.value == 5) { statusLabel = "已驳回"; } else if (status.value == 6) { statusLabel = "已拒绝"; } return statusLabel; } $scope.gridOptions.rowTemplate = "
"; $scope.gridOptions.columnDefs = [{ name: 'item', displayName: '序号', width: 50 }, { name: 'solutionnumber', displayName: '知识库编号', width: '13%', minWidth: '130' }, { name: 'title', displayName: '故障描述', width: '13%' }, { name: 'visionNumber', displayName: '版本号', width: '80' }, { name: 'status', displayName: '状态', cellTemplate: '
{{grid.appScope.transferStatus(row.entity.status)}}
', width: '8%' }, { name: 'createUser.name', displayName: '创建人', width: '8%' }, { name: 'createtime', cellTemplate: '
{{grid.appScope.transferTime(row.entity.createtime)}}
', displayName: '创建日期', width: '12%' }, { name: '操作', minWidth: '300', cellTemplate: '' }, ]; $scope.gridOptions.onRegisterApi = function (gridApi) { $scope.gridApi = gridApi; gridApi.pagination.on.paginationChanged($scope, function (newPage, pageSize) { var filtersData = $scope.allfilterData; $scope.fenye = newPage - 1; $scope.jry_todata.idx = newPage - 1; $scope.jry_todata.sum = pageSize; filtersData.pageIndex = newPage - 1; var data = { pageIndex: newPage - 1 }; var dataFilter = angular.extend(data, filtersData); dataFilter.status = filtersData.status; $scope.myData = []; // new if($scope.searchstate == 1){ $scope.jry_todata.solution.tabType = 'own'; } else if($scope.searchstate == 2){ $scope.jry_todata.solution.tabType = 'publish'; } else if($scope.searchstate == 3){ $scope.jry_todata.solution.tabType = 'manage'; } api_zsk.jry_get_list($scope.jry_todata, "solution").then(function (data) { $scope.myData = []; var myData = Restangular.stripRestangular(data); $scope.gridOptions.totalItems = myData.totalNum; if (myData.error && myData.status == 200) { $scope.myData = []; } else { if (angular.isArray(myData.list)) { $scope.myData = myData.list; for (var i = 0; i < $scope.myData.length; i++) { delete $scope.myData[i]['item'] $scope.myData[i]['item'] = i + 1 + $scope.jry_todata.idx * $scope.jry_todata.sum } } else { SweetAlert.swal({ title: "数据为空", text: myData.list, type: "warning" }); } } } ); }); }; $scope.knowledge = {}; $scope.inspecttype = {}; $scope.searchstate = 1; if($scope.xinzeng && $scope.bianji && $scope.shengji){ $scope.searchstate = 1; }else if($scope.look && !$scope.xinzeng && !$scope.bianji && !$scope.shenhe && !$scope.shengji && !$scope.tingyong){ $scope.searchstate = 2; }else if($scope.shenhe && $scope.tingyong){ $scope.searchstate = 3; } $scope.ldloading = {}; $scope.refreshListData = function (style, filterData) { $scope.myData=[] $scope.ldloading[style.replace('-', '_')] = true; if($scope.searchstate == 2 || $scope.searchstate == 3){ if($rootScope.user.duty){ // 当前的所属责任科室 filterData.solution.dutyId = $rootScope.user.duty.id; }else if($rootScope.user.branch){ // 当前的所属院区 filterData.solution.branch = $rootScope.user.branch.id; } }else{ filterData.solution.dutyId = undefined; filterData.solution.branch = undefined; } if($scope.searchstate == 2){ filterData.solution.status.id = 72; }else{ filterData.solution.status.id = ''; } var postData = angular.copy(filterData); if($scope.searchstate == 1){ postData.solution.createUser = $rootScope.user; } // new if($scope.searchstate == 1){ postData.solution.tabType = 'own'; } else if($scope.searchstate == 2){ postData.solution.tabType = 'publish'; } else if($scope.searchstate == 3){ postData.solution.tabType = 'manage'; } api_zsk.jry_get_list(postData, "solution").then(function (data) { $scope.myData=[] if (data.list) { var myData = Restangular.stripRestangular(data); $scope.gridOptions['totalItems'] = myData.totalNum; $scope.myData = myData.list; for (var i = 0; i < $scope.myData.length; i++) { delete $scope.myData[i]['item'] $scope.myData[i]['item'] = i + 1 + filterData.idx * filterData.sum+'' } } else { SweetAlert.swal({ title: "系统错误", text: "请稍后再试!", type: "error" }); } $scope.ldloading[style.replace('-', '_')] = false; }, function () { $scope.ldloading[style.replace('-', '_')] = false; }); } $scope.timer = $interval(function () { $scope.refreshListData('expand-right', $scope.jry_todata); }, $rootScope.refreshTime); $scope.$on('$destroy', function () { $interval.cancel($scope.timer) }); // 获取创建人 $scope.getCreateUser = function () { api_configure_data.fetchDataList("user", { "idx": 0, "sum": 1000, "user":{ "simple": true, engineer: 1, } }).then(function (res) { $scope.createUserData = res.list }) } $scope.getCreateUser() //导入 $scope.importopen = function () { //导入触发事件 var modalInstance = $modal.open({ templateUrl: 'assets/views/import.html', controller: function ($scope, $modalInstance, FileUploader) { var importUploader = $scope.importUploader = new FileUploader({ url: api_user_data.importData1('solution').getRequestedUrl(), }); importUploader.onWhenAddingFileFailed = function (item /*{File|FileLikeObject}*/ , filter, options) { console.info('onWhenAddingFileFailed', item, filter, options); }; importUploader.onAfterAddingFile = function (fileItem) { console.info('onAfterAddingFile', fileItem); }; importUploader.onAfterAddingAll = function (addedFileItems) { console.info('onAfterAddingAll', addedFileItems); }; importUploader.onProgressItem = function (fileItem, progress) { console.info('onProgressItem', fileItem, progress); }; importUploader.onProgressAll = function (progress) { console.info('onProgressAll', progress); }; importUploader.onSuccessItem = function (fileItem, response, status, headers) { if (response.status == 200) { SweetAlert.swal({ title: "导入成功!", confirmButtonColor: "#007AFF", type: "success" }, function () { $rootScope.isMask = false; $scope.refreshListData('expand-right', $scope.jry_todata); }); } else { $rootScope.isMask = false; SweetAlert.swal({ title: "导入失败!", text: response.error, type: "error" }) } console.info('onSuccessItem', fileItem, response, status, headers); }; importUploader.onErrorItem = function (fileItem, response, status, headers) { console.info('onErrorItem', fileItem, response, status, headers); SweetAlert.swal({ title: "系统错误!", text: "系统错误,请稍候重试!", type: "error" }); }; importUploader.onCancelItem = function (fileItem, response, status, headers) { console.info('onCancelItem', fileItem, response, status, headers); }; importUploader.onCompleteItem = function (fileItem, response, status, headers) { console.info('onCompleteItem', fileItem, response, status, headers); }; importUploader.onCompleteAll = function () { console.info('onCompleteAll'); }; $scope.ldloading = {}; $rootScope.isMask = false; $scope.import = function (style) { $modalInstance.dismiss('cancel'); $rootScope.isMask = true; importUploader.onBeforeUploadItem = function (item) { angular.extend(item.headers, $rootScope.getSession()); item.formData.push({ 'filename': item.file.name }); item.formData.push({ 'type': "dataImport" }); console.info('onBeforeUploadItem', item); }; importUploader.uploadAll(); } $scope.cancel = function () { $modalInstance.dismiss('cancel'); }; }, size: 'sm', resolve: { importUploader: function () { return $scope.importUploader; } } }); modalInstance.result.then(function (selectedItem) { if (selectedItem) {} }) } //知识库下载 $scope.export = function () { var modalInstance = $modal.open({ templateUrl: 'assets/views/system/tpl/getdown.html', controller: function ($scope, $modalInstance) { $scope.key = {}; $scope.title = '知识库下载'; $scope.lable = '下载类型'; $scope.onChange = function (key) { $scope.key = key; } $scope.downmodel = [{ id: 1, name: "模版下载" } ,{ id: 2, name: "数据导出" } ] $scope.ok = function () { $modalInstance.close($scope.key); }; $scope.cancel = function () { $modalInstance.dismiss('cancel'); }; }, size: 'sm', }); modalInstance.result.then(function (selectedItem) { if (selectedItem) { var selectedItemId = "知识库模版"; if (selectedItem.id == 2) { selectedItemId = "知识库数据"; } if(selectedItem.id == 1){ var filadata = { 'model': selectedItem.id }; var fUrl = api_user_data.downDataModel('solution',1).getRequestedUrl(); var fMethod = 'GET'; var suffix = '.xlsx'; }else if(selectedItem.id == 2){ var postData = angular.copy($scope.jry_todata.solution); if($scope.searchstate == 1){ postData.createUser = $rootScope.user; } var filadata = { 'solution': postData }; var fUrl = api_bpm.downDataModel('solution',1).getRequestedUrl(); var fMethod = 'POST'; var suffix = '.xls'; } $http({ url: fUrl, method: fMethod, data: JSON.stringify(filadata), headers: { 'Accept': '*/*' }, responseType: 'arraybuffer' }).success(function (data, status, headers, config) { var file = new Blob([data], { type: 'application/vnd.ms-excel' }); //trick to download store a file having its URL var fileURL = URL.createObjectURL(file); var a = document.createElement('a'); a.href = fileURL; a.target = '_blank'; a.download = selectedItemId + suffix; document.body.appendChild(a); a.click(); }).error(function (data, status, headers, config) { console.log(data); }); } }); } // 新增 $scope.createKnowledge = function () { var data = { model: { knowledge: { createUserId: loginUser.id, status: 1 } } }; $state.go('app.knowledge.create', { formKey: 'knowledge_create', service: 'api_solution', 'model': JSON.stringify(data) }) } $scope.seeSolution = function (row) { api_solution.jry_getHistory({ "idx": 0, "sum": 999, "solution": { "solutionnumber": row.solutionnumber } }).then(function (res1) { $state.go('app.knowledge.detail', { formKey: 'knowledge_detail', service: 'api_solution', 'model': JSON.stringify({ "model": { "knowledge": row } }), 'history': JSON.stringify(res1.list) }) }) } // 编辑 $scope.editSolution = function (item) { api_solution.jry_getHistory({ "idx": 0, "sum": 999, "solution": { "solutionnumber": item.solutionnumber } }).then(function (res1) { $state.go('app.knowledge.editor', { formKey: 'knowledge_editor', service: 'api_solution', 'model': JSON.stringify({ "model": { "knowledge": item } }), 'history': JSON.stringify(res1.list) }) }) console.log(item); } //升级 $scope.leve = function (item) { api_solution.jry_getHistory({ "idx": 0, "sum": 999, "solution": { "solutionnumber": item.solutionnumber } }).then(function (res1) { api_solution.jry_leveVision(item.id).then(function (res) { console.log(res); item.visionNumber = res.data; console.log(item); $state.go('app.knowledge.leve', { formKey: 'knowledge_leve', service: 'api_solution', 'model': JSON.stringify({ "model": { "knowledge": item } }), 'history': JSON.stringify(res1.list) }) }) }) } //停用 $scope.jry_close = function (item) { SweetAlert.swal({ title: "", text: "是否确认将编号【" + item.solutionnumber + "】停用?停用后此知识不会公布在外!", type: "warning", showCancelButton: true, confirmButtonColor: "#DD6B55", confirmButtonText: "确认停用", cancelButtonText: "取消操作", closeOnConfirm: false, closeOnCancel: false }, function (isConfirm) { if (isConfirm) { item.status.id = 74; item["recalluser"] = { id: loginUser.id }; item["recalltime"] = moment(new Date()).format('YYYY-MM-DD HH:mm:ss'); delete(item["item"]); item.renewtime = moment(item.renewtime).format('YYYY-MM-DD HH:mm:ss'); $scope.jry_tingyong = { "solution": item }; api_solution.jry_updateSolution($scope.jry_tingyong).then(function () { SweetAlert.swal("操作成功!", "该知识已停用", "success"); $scope.myData = []; $scope.refreshListData('expand-right', $scope.jry_todata); }) } else { SweetAlert.swal("操作取消", "该知识安全", "error"); } }); } //审核 $scope.jry_shenhe = function (item) { api_solution.jry_getHistory({ "idx": 0, "sum": 999, "solution": { "solutionnumber": item.solutionnumber } }).then(function (res1) { $state.go('app.knowledge.jry_shenhe', { formKey: 'knowledge_shenhe', service: 'api_solution', 'model': JSON.stringify({ "model": { "knowledge": item } }), 'history': JSON.stringify(res1.list) }) }) } // 历史记录 $scope.jry_lishi = function (item) { $state.go('app.knowledge.jry_lishi', { formKey: 'knowledge_lishi', service: 'api_solution', 'model': JSON.stringify({ "model": { "knowledge": item } }) }) } $scope.uploader = new FileUploader({ url: api_solution.upload().getRequestedUrl(), alias: "file", removeAfterUpload: true, queueLimit: 10 }); $scope.allfilterData = { key: 'null', status: 0, pageIndex: 0, pageSum: mun, userId: loginUser.id } // 切换tab $scope.filterSolutionStatus = function (filterStatus) { $scope.searchstate = filterStatus; $scope.refreshListData('expand-right', $scope.jry_todata); } // 搜索 $scope.searchSolution = function () { $scope.jry_todata.solution.solutionType = { "id": '' }; $scope.refreshListData('expand-right', $scope.jry_todata); } $scope.reload = function () { if (sessionStorage['searchKnowledge']) { $scope.allfilterData = JSON.parse(sessionStorage.getItem("searchKnowledge")); if (JSON.parse(sessionStorage.getItem("searchKnowledge")).key) { $scope.knowledge = angular.extend($scope.knowledge, { 'searchSolutionInput': JSON.parse(sessionStorage.getItem("searchKnowledge")).key }); } } $scope.refreshListData('expand-right', $scope.jry_todata); } $scope.reload() }]); app.filter('index', function () { return function (array) { return (array || []).map(function (item, index) { item.order = index + 1; return item; }); }; }); app.controller('GridOperatorCtrl', ["$rootScope", '$http', '$scope', function ($rootScope, $http, $scope, $event) { var loginUser = $rootScope.user; $scope.bianji = false; $scope.shenhe = false; $scope.shengji = false; $scope.tingyong = false; for (var i = 0; i < loginUser.menu.length; i++) { if (loginUser.menu[i].link == "zhishiku_bianji") { $scope.bianji = true } if (loginUser.menu[i].link == "zhishiku_shenhe") { $scope.shenhe = true } if (loginUser.menu[i].link == "zhishiku_shengji") { $scope.shengji = true } if (loginUser.menu[i].link == "zhishiku_tingyong") { $scope.tingyong = true } } $scope.see = function () { $scope.colobject.grid.appScope.seeSolution($scope.item); } $scope.edit = function () { console.log($scope.item) $scope.colobject.grid.appScope.editSolution($scope.item); } $scope.leve = function () { $scope.colobject.grid.appScope.leve($scope.item); } $scope.approval = function () { console.log($scope.item) $scope.colobject.grid.appScope.jry_shenhe($scope.item); } $scope.publish = function () { $scope.colobject.grid.appScope.jry_lishi($scope.item); } $scope.publishnot = function () { $scope.colobject.grid.appScope.jry_close($scope.item); } var jry_loginUser = $rootScope.user; $scope.ZZKGLY = false; for (var i = 0; i < jry_loginUser.role.length; i++) { if (jry_loginUser.role[i].role == "知识库管理员" && jry_loginUser.role[i].rolecode == "solution") { $scope.ZZKGLY = true; } } //编辑权限判断 $scope.jry_bj = function () { if ($scope.item.status.name == "待审核" && $scope.item.createUser.id == jry_loginUser.id) { return true } else if ($scope.item.status.name == "已驳回" && $scope.item.createUser.id == jry_loginUser.id) { return true } else if ($scope.item.status.name == "已驳回" && $scope.ZZKGLY) { return true } else { return false } } // 升级权限判断 $scope.jry_sj = function () { if ($scope.item.status.name == "已发布" && $scope.item.createUser.id == jry_loginUser.id) { return true } else { return false } } // 审核权限判断 $scope.jry_sh = function () { if ($scope.item.status.name == "待审核" && $scope.ZZKGLY) { return true } else { return false } } // 历史记录权限判断 $scope.jry_lsjl = function () { return true } // 停用权限判断 $scope.jry_ty = function () { if ($scope.item.status.name == "已发布" && $scope.ZZKGLY) { return true } else { return false } } }]); app.directive('gridoperator', function () { return { restrict: 'E', scope: { item: '=', colobject: '=' }, controller: 'GridOperatorCtrl', template: '' }; });