HelpEditCtrl.js 4.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125
  1. define(['app/app'], function(app) {
  2. 'use strict';
  3. app.register.controller('HelpEditCtrl', ['$scope', '$modal', 'HelpIssue', 'toaster', '$state', '$http', 'BaseService', 'HelpUpload', '$q', function ($scope, $modal, HelpIssue, toaster, $state, $http, BaseService, HelpUpload, $q) {
  4. $scope.issue = {};
  5. $('.main-content').scroll(function() {
  6. var scrollTop = $('.main-content')[0].scrollTop || 0;
  7. var toolbarTop = $('.ql-toolbar').offsetTop || 42;
  8. if (scrollTop >= toolbarTop) {
  9. $('.ql-toolbar').addClass('onTop').css('top', toolbarTop + 'px');
  10. } else {
  11. $('.ql-toolbar').removeClass('onTop');
  12. }
  13. });
  14. // 选择导航
  15. $scope.chooseNav = function() {
  16. var modalInstance = $modal.open({
  17. templateUrl : 'static/view/admin/help/helpNav_modal.html', //指向上面创建的视图
  18. controller : 'HelpNavModalCtrl',// 初始化模态范围
  19. size : 'md' // 大小配置
  20. });
  21. modalInstance.opened.then(function(){// 模态窗口打开之后执行的函数
  22. });
  23. modalInstance.result.then(function(nav){
  24. $scope.issue.nav = nav;
  25. $scope.issue.navId = nav.id;
  26. }, function(reason){
  27. });
  28. };
  29. $scope.rootPath = BaseService.getRootPath();
  30. function switchBase64ToImg(el) {
  31. var deferred = $q.defer();
  32. var data = el.src;
  33. var arr = data.split(','), mime = arr[0].match(/:(.*?);/)[1],
  34. bstr = atob(arr[1]), n = bstr.length, u8arr = new Uint8Array(n);
  35. while(n--){
  36. u8arr[n] = bstr.charCodeAt(n);
  37. }
  38. var obj = new Blob([u8arr], {type:mime});
  39. var fd = new FormData();
  40. fd.append("upfile", obj, "image.png");
  41. return HelpUpload.upload(fd, function (data) {
  42. el.src = data[0].path;
  43. // console.log(el);
  44. }, function (err) {
  45. toaster.pop('error', '上传失败');
  46. })
  47. }
  48. // 保存
  49. $scope.save = function () {
  50. $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"');
  51. $scope.issue.content = angular.toJson(quill.getContents());
  52. var els = $($scope.issue.article);
  53. var imgs = els.find('img');
  54. var promises = [];
  55. angular.forEach(imgs, function (img) {
  56. promises.push(switchBase64ToImg(img).$promise);
  57. })
  58. $q.all(promises).then(function () {
  59. // console.log(els.html());
  60. $scope.issue.article = els.html()
  61. HelpIssue.save({}, $scope.issue, function (data) {
  62. toaster.pop('success', '保存成功');
  63. $state.go('helpDetail',{id : data.id});
  64. window.location.href = '#/help/issue/' + data.id;// quilljs锁定了跳转 必须这样跳两次才有效
  65. }, function(response) {
  66. toaster.pop('error', response.data);
  67. });
  68. });
  69. };
  70. }]);
  71. app.register.controller('HelpNavModalCtrl', ['$scope', '$modalInstance', 'toaster', 'HelpAPI', function($scope, $modalInstance, toaster, HelpAPI) {
  72. HelpAPI.findChildren({parentId : 0}, function (data) {
  73. $scope.nav1 = data;
  74. angular.forEach($scope.nav1, function(nav) {
  75. nav.isShow = false;
  76. });
  77. }, function (response) {
  78. toaster.pop('error', response.data);
  79. });
  80. var toggleNav = function (nav) {
  81. if (nav.isShow) {
  82. nav.children = {};
  83. nav.isShow = false;
  84. } else if (nav.count > 0) {
  85. HelpAPI.findChildren({parentId : nav.id}, function (data) {
  86. nav.children = data;
  87. angular.forEach($scope.nav1, function (allNav) {
  88. allNav.isShow = false;
  89. });
  90. nav.isShow = true;
  91. }, function(response) {
  92. toaster.pop('error', response.data)
  93. });
  94. }
  95. };
  96. // 开关导航
  97. $scope.toggleNav = function (nav) {
  98. if (nav.isLeaf == 0) {
  99. toggleNav(nav);
  100. } else {
  101. $scope.chooseNav = nav;
  102. }
  103. };
  104. // 确认
  105. $scope.confirm = function() {
  106. $modalInstance.close($scope.chooseNav);
  107. };
  108. // 取消
  109. $scope.cancel = function() {
  110. $modalInstance.dismiss();
  111. }
  112. }]);
  113. });