No Description

addOrEditStudyMaterial.js 8.9KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305
  1. /**
  2. * 添加或编辑文件资料
  3. * */
  4. var proimglist = []; //保存项目图纸的数组
  5. var uploader; //上传实例
  6. //var limitNum = 6; //限制数量
  7. //编辑器配置
  8. KindEditor.ready(function(K) {
  9. window.editor = K.create('#pro_content', {
  10. imgMaxSize: 10 * 1024 * 1024,
  11. uploadJson: '/fileapi/Api/Upload',
  12. //fileManagerJson: '../../js/kindeditor/asp.net/file_manager_json.ashx',
  13. allowFileManager: false,
  14. allowFileManager: true,
  15. autoHeightMode: true,
  16. afterCreate: function() {
  17. this.loadPlugin('autoheight');
  18. },
  19. items: [
  20. 'source', '|', 'undo', 'redo', '|', 'preview', 'print', 'template', 'code', 'cut', 'copy', 'paste',
  21. 'plainpaste', 'wordpaste', '|', 'justifyleft', 'justifycenter', 'justifyright',
  22. 'justifyfull', 'insertorderedlist', 'insertunorderedlist', 'indent', 'outdent', 'subscript',
  23. 'superscript', 'clearhtml', 'quickformat', 'selectall', '|', 'fullscreen', '/',
  24. 'formatblock', 'fontname', 'fontsize', '|', 'forecolor', 'hilitecolor', 'bold',
  25. 'italic', 'underline', 'strikethrough', 'lineheight', 'removeformat', '|', 'image',
  26. 'media', 'insertfile', 'table', 'hr', 'emoticons', 'baidumap', 'pagebreak',
  27. 'anchor', 'link', 'unlink', '|', 'about'
  28. ]
  29. });
  30. });
  31. $(function() {
  32. var fid = helper.request.queryString("edit_id");
  33. if(fid) {
  34. helper.getDropList.getProlistDrop($('#pro_title'), '所有项目').then(function(){
  35. getBtnsInfo(fid);
  36. });
  37. } else {
  38. helper.getDropList.getProlistDrop($('#pro_title'), '所有项目');
  39. uploaderImages();
  40. }
  41. $("#save_btns").on('click', saveStudyMaterial);
  42. });
  43. //获取详情
  44. function getBtnsInfo(fid) {
  45. $.ajax({
  46. type: "get",
  47. url: huayi.config.callcenter_url + "equipmentapi/api/StudyMaterialsInfo/getdetails",
  48. dataType: 'json',
  49. async: true,
  50. data: {
  51. id: fid
  52. },
  53. success: function(data) {
  54. /*验证请求*/
  55. if(data.state.toLowerCase() == "success") {
  56. var res = data.data;
  57. if(res) {
  58. $('#pro_title').selectpicker('val', res.projectid);
  59. $("#columsTitle").val(res.title);
  60. editor.html(decodeURIComponent(res.content));
  61. proimglist = res.studymaterfile;
  62. proimglist = proimglist == null ? [] : proimglist;
  63. // limitNum -= proimglist.length;
  64. uploaderImages(); //附件上传
  65. if(proimglist.length > 0) {
  66. // $('#fileNum').text(proimglist.length);
  67. var $list = $("#fileList");
  68. $.each(proimglist, function(i, v) {
  69. if(v.filesmallurl) {
  70. //原来的图片
  71. var $li = $(
  72. '<li><span class="img_mask"><i class="img_del"></i></span>' +
  73. '<img src="' + v.filesmallurl + '" title="原来的图片"/>' +
  74. '<span class="file_name">' + v.filename + '</span>' +
  75. '</li>'
  76. );
  77. $list.append($li);
  78. } else {
  79. var $liFile = $(
  80. '<li><span class="img_mask"><i class="img_del"></i></span>' +
  81. '<div class="noThumb" title="原来的文件"><i class="glyphicon glyphicon-paperclip"></i><p>无法预览</p></div>' +
  82. '<span class="file_name">' + v.filename + '</span>' +
  83. '</li>'
  84. );
  85. $list.append($liFile);
  86. }
  87. });
  88. $list.find('li').off('click');
  89. $list.find('li').on('click', '.img_del', function() {
  90. $(this).parent().parent().remove();
  91. var itemFileName = $(this).parent().parent().find('.file_name').text();
  92. $.each(proimglist, function(i, v) {
  93. if(v && v.filename == itemFileName) {
  94. proimglist.splice(i, 1);
  95. }
  96. });
  97. // $('#fileNum').text(proimglist.length);
  98. // limitNum = 6 - proimglist.length;
  99. uploaderImages();
  100. });
  101. }
  102. }
  103. }
  104. }
  105. });
  106. }
  107. //保存
  108. function saveStudyMaterial() {
  109. var fid = helper.request.queryString("edit_id");
  110. var wURL;
  111. // if(!$.trim($('#pro_title').val())) {
  112. // layer.confirm('请选择项目', {
  113. // icon: 2,
  114. // btn: ['确定'] //按钮
  115. // });
  116. // return;
  117. // }
  118. if(!$.trim($('#columsTitle').val())) {
  119. layer.confirm('资料标题不能为空', {
  120. icon: 2,
  121. btn: ['确定'] //按钮
  122. });
  123. return;
  124. }
  125. if(!$.trim(encodeURIComponent(editor.html()))) {
  126. layer.confirm('资料内容不能为空', {
  127. icon: 2,
  128. btn: ['确定'] //按钮
  129. });
  130. return;
  131. }
  132. if(fid) {
  133. wURL = "equipmentapi/api/StudyMaterialsInfo/update";
  134. } else {
  135. wURL = "equipmentapi/api/StudyMaterialsInfo/add";
  136. }
  137. $.ajax({
  138. type: "post",
  139. url: huayi.config.callcenter_url + wURL,
  140. dataType: 'json',
  141. async: true,
  142. data: {
  143. id: fid,
  144. projectid: $('#pro_title').val(),// string | 项目id
  145. title: $("#columsTitle").val(), //string 文件资料标题 )
  146. content: encodeURIComponent(editor.html()), //string 文件资料内容
  147. studymaterfile: proimglist, // 否 List<FileBaseModel>
  148. },
  149. success: function(data) {
  150. /*验证请求*/
  151. if(data.state == "success") {
  152. var index = parent.layer.getFrameIndex(window.name);
  153. parent.layer.close(index);
  154. parent.$('#table_all').bootstrapTable('refresh');
  155. parent.layer.msg("保存成功");
  156. } else {
  157. layer.msg(data.message);
  158. }
  159. }
  160. });
  161. }
  162. //上传附件
  163. function uploaderImages() {
  164. if(uploader) {
  165. uploader.destroy();
  166. }
  167. uploader = WebUploader.create({
  168. auto: true, // 选完文件后,是否自动上传
  169. swf: '../plugins/webuploader/Uploader.swf', // swf文件路径
  170. server: huayi.config.callcenter_url + "fileserverapi/Api/Upload", // 文件接收服务端
  171. pick: '#imgPicker', // 选择文件的按钮。可选
  172. formData: {
  173. uploadtype: 'studyMaterialFile'
  174. },
  175. // 只允许选择图片文件。
  176. accept: {
  177. // title: 'Images',
  178. // extensions: 'gif,jpg,jpeg,bmp,png',
  179. // mimeTypes: 'image/*'
  180. },
  181. compress: false, //webuploader默认压缩图片,设置compress:false,可以按照原始比例上传图片
  182. //fileVal: "upFile",//设置文件上传域的name。
  183. // threads: limitNum, //上传并发数。允许同时最大上传进程数,为了保证文件上传顺序
  184. // fileNumLimit: limitNum,
  185. fileSizeLimit: 50 * 1024 * 1024, // 50 M
  186. fileSingleSizeLimit: 20 * 1024 * 1024 // 20 M
  187. });
  188. uploader.on('fileQueued', function(file) {
  189. var $list = $("#fileList"),
  190. $li = $(
  191. '<li id="' + file.id + '"><span class="img_mask"><i class="img_del"></i></span>' +
  192. '<img/>' +
  193. '<span class="img_state"><i></i></span>' +
  194. '<span class="file_name">' + file.name + '</span>' +
  195. '</li>'
  196. ),
  197. $img = $li.find('img');
  198. // $list为容器jQuery实例
  199. $list.append($li);
  200. // 创建缩略图
  201. uploader.makeThumb(file, function(error, src) {
  202. if(error) {
  203. $img.replaceWith('<div class="noThumb"><i class="glyphicon glyphicon-paperclip"></i><p>无法预览</p></div>');
  204. return;
  205. }
  206. $img.attr('src', src);
  207. }, 109, 109); //109*109为缩略图尺寸
  208. //绑定删除
  209. $('#' + file.id).on('click', '.img_del', function() {
  210. uploader.removeFile(file);
  211. var $fileLi = $('#' + file.id);
  212. $fileLi.off().find('.img_del').off().end().remove();
  213. var itemFileName = $(this).parent().parent().find('.file_name').text();
  214. $.each(proimglist, function(i, v) {
  215. if(v && v.filename == itemFileName) {
  216. proimglist.splice(i, 1);
  217. helper.methods.delImgs(v.filesmallurl, v.fileurl);
  218. }
  219. });
  220. // $('#fileNum').text(proimglist.length);
  221. });
  222. });
  223. // 文件上传过程中创建进度条实时显示。
  224. uploader.on('uploadProgress', function(file, percentage) {
  225. var $li = $('#' + file.id),
  226. $percent = $li.find('.progress span');
  227. // 避免重复创建
  228. if(!$percent.length) {
  229. $percent = $('<div class="progress" style="">' +
  230. '<span class="text">0%</span>' +
  231. '<span class="percentage"></span>' +
  232. '</div>')
  233. .appendTo($li)
  234. .find('span');
  235. }
  236. $percent.eq(0).text(Math.round(percentage * 100) + '%');
  237. $percent.eq(1).css('width', Math.round(percentage * 100) + '%');
  238. });
  239. // 文件上传成功,给item添加成功class, 用样式标记上传成功。
  240. uploader.on('uploadSuccess', function(file, res) {
  241. proimglist.push(res.data[0]);
  242. // $('#fileNum').text(proimglist.length);
  243. $('#' + file.id).addClass('upload-state-done');
  244. });
  245. // 文件上传失败,显示上传出错。
  246. uploader.on('uploadError', function(file) {
  247. var $li = $('#' + file.id),
  248. $error = $li.find('div.error');
  249. // 避免重复创建
  250. if(!$error.length) {
  251. $error = $('<div class="error"></div>').appendTo($li);
  252. }
  253. $error.text('上传失败');
  254. });
  255. // 完成上传完了,成功或者失败,先删除进度条。
  256. uploader.on('uploadComplete', function(file) {
  257. $('#' + file.id).find('.progress').remove();
  258. });
  259. uploader.onError = function(code) {
  260. //console.log('Error:' + code);
  261. switch(code) {
  262. // case "Q_EXCEED_NUM_LIMIT":
  263. // layer.msg('只能上传六个文件。');
  264. // break;
  265. case "Q_TYPE_DENIED":
  266. layer.msg('文件类型不正确。');
  267. break;
  268. case "F_DUPLICATE":
  269. layer.msg('该文件已上传,请选择其它文件。');
  270. break;
  271. case "F_EXCEED_SIZE":
  272. layer.msg('单文件大小不能超过20M。');
  273. break;
  274. case "Q_EXCEED_SIZE_LIMIT":
  275. layer.msg('总文件大小不能超过50M。');
  276. break;
  277. default:
  278. break;
  279. }
  280. };
  281. }