HelpDetailCtrl.js 7.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175
  1. /**
  2. * Created by wangyc on 2017/5/3.
  3. */
  4. define(['app/app'], function(app) {
  5. 'use strict';
  6. app.register.controller('HelpDetailCtrl', ['$scope', '$modal', 'HelpIssue', 'toaster', '$stateParams', 'HelpAPI', '$state', '$http', 'BaseService', 'HelpUpload', '$q', function ($scope, $modal, HelpIssue, toaster, $stateParams, HelpAPI, $state, $http, BaseService, HelpUpload, $q) {
  7. HelpIssue.get({id : $stateParams.id}, function (data) {
  8. $scope.issue = data;
  9. quill.setContents(angular.fromJson($scope.issue.content));
  10. if ($scope.issue.navId) {
  11. HelpAPI.get({id : $scope.issue.navId},function (data) {
  12. $scope.issue.nav = data;
  13. }, function (response) {
  14. toaster.pop('error', response.data);
  15. });
  16. } else {
  17. toaster.pop('warning', '暂无导航信息,请补充');
  18. }
  19. }, function (response) {
  20. toaster.pop('error', response.data);
  21. });
  22. $('.main-content').scroll(function() {
  23. var scrollTop = $('.main-content')[0].scrollTop || 0;
  24. var toolbarTop = $('.ql-toolbar').offsetTop || 42;
  25. if (scrollTop >= toolbarTop) {
  26. $('.ql-toolbar').addClass('onTop').css('top', toolbarTop + 'px');
  27. } else {
  28. $('.ql-toolbar').removeClass('onTop');
  29. }
  30. });
  31. $scope.rootPath = BaseService.getRootPath();
  32. function switchBase64ToImg(el) {
  33. var deferred = $q.defer();
  34. var data = el.src;
  35. var arr = data.split(','), mime = arr[0].match(/:(.*?);/)[1],
  36. bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
  37. while(n--){
  38. u8arr[n] = bstr.charCodeAt(n);
  39. }
  40. var obj = new Blob([u8arr], {type:mime});
  41. var fd = new FormData();
  42. fd.append("upfile", obj, "image.png");
  43. return HelpUpload.upload(fd, function (data) {
  44. el.src = data[0].path;
  45. // console.log(el);
  46. }, function (err) {
  47. toaster.pop('error', '上传失败');
  48. })
  49. }
  50. // 选择导航
  51. $scope.chooseNav = function() {
  52. var modalInstance = $modal.open({
  53. templateUrl : 'static/view/admin/help/helpNav_modal.html', //指向上面创建的视图
  54. controller : 'HelpNavModalCtrl',// 初始化模态范围
  55. size : 'md' // 大小配置
  56. });
  57. modalInstance.opened.then(function(){// 模态窗口打开之后执行的函数
  58. });
  59. modalInstance.result.then(function(nav){
  60. $scope.issue.nav = nav;
  61. $scope.issue.navId = nav.id;
  62. }, function(reason){
  63. });
  64. };
  65. // 保存
  66. $scope.save = function () {
  67. $scope.issue.article = quill.container.innerHTML.replace('\<input type="text" data-formula="e=mc^2" data-link="https://quilljs.com" data-video="Embed URL">','').replace('contenteditable="true"', 'contenteditable="false"');
  68. $scope.issue.content = angular.toJson(quill.getContents());
  69. var els = $($scope.issue.article);
  70. var imgs = els.find('img');
  71. var promises = [];
  72. angular.forEach(imgs, function (img) {
  73. promises.push(switchBase64ToImg(img).$promise);
  74. })
  75. $q.all(promises).then(function () {
  76. // console.log(els.html());
  77. $scope.issue.article = els.html()
  78. HelpIssue.update({}, $scope.issue, function (data) {
  79. toaster.pop('success', '保存成功');
  80. $state.go('helpPublish');
  81. window.location.href ='admin_n#/help/publish';// quilljs锁定了跳转 必须这样跳两次才有效
  82. }, function(response) {
  83. toaster.pop('error', response.data);
  84. });
  85. });
  86. };
  87. // 发布
  88. $scope.publish = function () {
  89. $scope.issue.article = quill.container.innerHTML.replace('\<input type="text" data-formula="e=mc^2" data-link="https://quilljs.com" data-video="Embed URL">','').replace('contenteditable="true"', 'contenteditable="false"');
  90. $scope.issue.content = angular.toJson(quill.getContents());
  91. var els = $($scope.issue.article);
  92. var imgs = els.find('img');
  93. var promises = [];
  94. angular.forEach(imgs, function (img) {
  95. promises.push(switchBase64ToImg(img).$promise);
  96. })
  97. $q.all(promises).then(function () {
  98. // console.log(els.html());
  99. $scope.issue.article = els.html()
  100. HelpIssue.publish({}, $scope.issue, function (data) {
  101. toaster.pop('success', '发布成功');
  102. $state.go('helpPublish');
  103. window.location.href = 'admin_n#/help/publish';
  104. }, function(response) {
  105. toaster.pop('error', response.data);
  106. });
  107. });
  108. };
  109. // 删除
  110. $scope.deleteIssue = function () {
  111. HelpIssue.deleteById({id : $scope.issue.id},function (data) {
  112. toaster.pop('success', '删除成功');
  113. $state.go('helpPublish');
  114. window.location.href = 'admin_n#/help/publish';
  115. }, function(response) {
  116. toaster.pop('error', response.data);
  117. })
  118. }
  119. }]);
  120. app.register.controller('HelpNavModalCtrl', ['$scope', '$modalInstance', 'toaster', 'HelpAPI', function($scope, $modalInstance, toaster, HelpAPI) {
  121. HelpAPI.findChildren({parentId : 0}, function (data) {
  122. $scope.nav1 = data;
  123. angular.forEach($scope.nav1, function(nav) {
  124. nav.isShow = false;
  125. });
  126. }, function (response) {
  127. toaster.pop('error', response.data);
  128. });
  129. var toggleNav = function (nav) {
  130. if (nav.isShow) {
  131. nav.children = {};
  132. nav.isShow = false;
  133. } else if (nav.count > 0) {
  134. HelpAPI.findChildren({parentId : nav.id}, function (data) {
  135. nav.children = data;
  136. angular.forEach($scope.nav1, function (allNav) {
  137. allNav.isShow = false;
  138. });
  139. nav.isShow = true;
  140. }, function(response) {
  141. toaster.pop('error', response.data)
  142. });
  143. }
  144. };
  145. // 开关导航
  146. $scope.toggleNav = function (nav) {
  147. if (nav.isLeaf == 0) {
  148. toggleNav(nav);
  149. } else {
  150. $scope.chooseNav = nav;
  151. }
  152. };
  153. // 确认
  154. $scope.confirm = function() {
  155. $modalInstance.close($scope.chooseNav);
  156. };
  157. // 取消
  158. $scope.cancel = function() {
  159. $modalInstance.dismiss();
  160. }
  161. }]);
  162. });