mainFunction.js 12 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403
  1. /**
  2. * 基本操作功能的实现
  3. * by Unow
  4. * finished in 2018.12.13
  5. *
  6. */
  7. (function($){
  8. server='http://localhost:8080/'
  9. listApi = server+'api/list';
  10. addNodeApi = server+'api/add';
  11. updateApi = server+'api/edit';
  12. deleteApi = server+'api/delete';
  13. logoutApi = server+'manager/logout';
  14. var main = {
  15. currentPage:1,
  16. totalPage:1,
  17. rows:5,
  18. data:[]
  19. };
  20. onLoad();
  21. BindEvent();
  22. /**
  23. * [sendRequest description:@封装Ajax请求]
  24. * @param {[type]} url [description]
  25. * @param {[type]} param [description]
  26. * @param {Boolean} async [description]
  27. * @param {String} type [description]
  28. * @param {[type]} success_fn [description]
  29. * @param {[type]} failure_fn [description]
  30. * @param {[type]} contentType [description]
  31. * @return {[type]} [description]
  32. */
  33. function sendRequest(url,param,async=true,type='get',success_fn,failure_fn,contentType){
  34. $.ajax({
  35. url:url,
  36. data:param,
  37. type:type,
  38. contentType:contentType,
  39. async:async,
  40. success:function(data){
  41. success_fn(data);
  42. },
  43. error:function(err_msg){
  44. failure_fn(err_msg);
  45. }
  46. });
  47. }
  48. /**
  49. * [renderNodeByPid description:@发起ajax请求,并将获取到的数据渲染到树上,并且绑定main对象]
  50. * @param {[type]} url [description]
  51. * @param {[type]} pid [description]
  52. * @param {[type]} parentNode [description]
  53. * @param {Boolean} show [description]
  54. * @return {[type]} [description]
  55. */
  56. function renderNodeByPid(url,pid,parentNode,show=true){
  57. if(!parentNode[0].nodes&&parentNode[0].isParent){
  58. sendRequest(url,{pid:pid},true,'get'
  59. ,function(data){
  60. $.each(data,function(index,val){
  61. if(show){
  62. $('#left-tree').treeview('addNode',[val,parentNode]);
  63. $('#editName').val(parentNode[0].text);
  64. main.totalPage=Math.ceil(data.length/main.rows);
  65. main.currentPage = 1;
  66. showMsg(data);
  67. }else{
  68. $('#move-tree').treeview('addNode',[val,parentNode]);
  69. }
  70. });
  71. },function(failue){
  72. $.showMsgText(failue.msg);
  73. });
  74. }
  75. }
  76. /**
  77. * [addNode description:@发起增加节点请求,渲染且实时绑定main]
  78. * @param {[type]} url [description]
  79. * @param {[type]} param [description]
  80. * @param {[type]} parentNode [description]
  81. */
  82. function addNode(url,param,parentNode){
  83. sendRequest(url,param,true,'post',function(data){
  84. $('#left-tree').treeview('addNode', [data, parentNode]);
  85. main.totalPage=Math.ceil(parentNode[0].nodes.length/main.rows);
  86. showMsg(parentNode[0].nodes);
  87. },function(failue){
  88. $.showMsgText("新增失败!");
  89. },"application/json");
  90. }
  91. /**
  92. * [updateNode description:@发起更新节点请求,渲染且实时绑定main]
  93. * @param {[type]} url [description]
  94. * @param {[type]} oldNode [description]
  95. * @return {[type]} [description]
  96. */
  97. function updateNode(url,oldNode){
  98. var param = {_method:"PUT",id:oldNode[0].id,text:$('#editName').val()};
  99. sendRequest(url,param,true,'post',function(data){
  100. oldNode.text=data.text;
  101. oldNode.recentTime=data.recentTime;
  102. data = oldNode;
  103. $('#left-tree').treeview('updateNode', [ oldNode, data]);
  104. showMsg(data[0].nodes);
  105. $('#editName').val(data.text);
  106. $("#headTitle").text(data.text);
  107. },function(failue){
  108. $.showMsgText("修改失败!");
  109. });
  110. }
  111. /**
  112. * [deleteNode description:@发起删除节点请求,渲染且实时绑定main]
  113. * @param {[type]} url [description]
  114. * @param {[type]} node [description]
  115. * @return {[type]} [description]
  116. */
  117. function deleteNode(url,node){
  118. var param = {_method:"DELETE",id:node[0].id}
  119. sendRequest(url,param,true,'post',function(data){
  120. $('#left-tree').treeview('removeNode', [ node, { silent: true } ]);
  121. $('#editName').val("");
  122. $("#headTitle").text("");
  123. showMsg([]);
  124. },function(){
  125. $.showMsgText("删除失败!");
  126. });
  127. }
  128. /**
  129. * [add0 description:@配合转换时间戳的方法]
  130. * @param {[type]} m [description]
  131. * @return {[type]} [description]
  132. */
  133. function add0(m){
  134. return m<10?'0'+m:m
  135. }
  136. /**
  137. * [timestampToTime description:@转换时间戳]
  138. * @param {[type]} timestamp [description]
  139. * @return {[type]} [description]
  140. */
  141. function timestampToTime(timestamp) {
  142. //timestampÊÇÕûÊý£¬·ñÔòÒªparseIntת»»,²»»á³öÏÖÉÙ¸ö0µÄÇé¿ö
  143. if(!timestamp){
  144. return;
  145. }
  146. var time = new Date(timestamp);
  147. var year = time.getFullYear();
  148. var month = time.getMonth()+1;
  149. var date = time.getDate();
  150. var hours = time.getHours();
  151. var minutes = time.getMinutes();
  152. var seconds = time.getSeconds();
  153. return year+'-'+add0(month)+'-'+add0(date);
  154. }
  155. /**
  156. * [onLoad description:@主要加载节点方法,只对id为left-tree有效]
  157. * @return {[type]} [description]
  158. */
  159. function onLoad(){
  160. sendRequest(listApi,{pid:0},true,'get',function(data){
  161. $('#left-tree').treeview({
  162. data:data,
  163. levels: 1,
  164. onNodeSelected:function(event, node){
  165. var parentNode = $('#left-tree').treeview('getSelected');
  166. renderNodeByPid(listApi,node.id,parentNode);
  167. $('#editName').val(node.text);
  168. $("#headTitle").text(node.text);
  169. if(node){
  170. if(node.nodes)
  171. main.totalPage=Math.ceil(node.nodes.length/main.rows);
  172. else
  173. main.totalPage=1
  174. showMsg(node.nodes);
  175. }
  176. },
  177. showCheckbox:false//是否显示多选
  178. });
  179. },function(){
  180. $.showMsgText("加载失败!");
  181. });
  182. }
  183. /**
  184. * [showMsg description:@渲染详情页面]
  185. * @param {[type]} list [description]
  186. * @return {[type]} [description]
  187. */
  188. function showMsg(list){
  189. if(list)
  190. list = list.slice(main.currentPage*main.rows-main.rows,main.currentPage*main.rows);
  191. $("#content").empty();
  192. var parentNode = $('#left-tree').treeview('getSelected');
  193. $.each(list,function(data,val){
  194. $tr = $("<tr></tr>");
  195. row0 = "<td>"+val.id+"</td>"; $tr.append(row0)
  196. row1 = "<td>"+getParents(parentNode,[parentNode[0].text])+"</td>"; $tr.append(row1)
  197. row2 = "<td>"+val.text+"</td>"; $tr.append(row2)
  198. row3 = "<td>"+timestampToTime(val.createTime)+"</td>"; $tr.append(row3)
  199. row4 = "<td>"+timestampToTime(val.recentTime)+"</td>"; $tr.append(row4)
  200. $("#content").append($tr)
  201. });
  202. }
  203. /**
  204. * [getParents description:@遍历父节点,获取所有父节点名称]
  205. * @param {[type]} node [description]
  206. * @param {[type]} parentArr [description]
  207. * @return {[type]} [description]
  208. */
  209. function getParents(node,parentArr){
  210. parentNode=$('#left-tree').treeview('getParents', node);
  211. if(parentNode.length==0){
  212. parentArr = parentArr.reverse().join('/');
  213. return parentArr;
  214. }
  215. parentArr.push(parentNode[0].text);
  216. return getParents(parentNode,parentArr);
  217. }
  218. /**
  219. * [BindEvent description:@注册交互事件]
  220. */
  221. function BindEvent(){
  222. //保存-新增
  223. $("#Save").click(function () {
  224. $('#addOperation-dialog').modal('hide')
  225. var parentNode = $('#left-tree').treeview('getSelected');
  226. var param = { text:$('#addName').val(),pid:parentNode[0].id,parentStatu:parentNode[0].isParent }
  227. addNode(addNodeApi,JSON.stringify(param),parentNode);
  228. });
  229. //保存-编辑
  230. $('#Edit').click(function(){
  231. var node = $('#left-tree').treeview('getSelected');
  232. if(node.length==0){
  233. $.showMsgText("请选择一门学科")
  234. }
  235. updateNode(updateApi,node);
  236. });
  237. //显示-添加
  238. $("#btnAdd").click(function(){
  239. var node = $('#left-tree').treeview('getSelected');
  240. if (node.length == 0) {
  241. $.showMsgText('请选择一门学科');
  242. return;
  243. }
  244. $('#addName').val('');
  245. $('#addOperation-dialog').modal('show');
  246. });
  247. //删除
  248. $("#btnDel").click(function(){
  249. var node = $('#left-tree').treeview('getSelected');
  250. if (node.length == 0) {
  251. $.showMsgText('请选择节点');
  252. return;
  253. }
  254. BootstrapDialog.confirm({
  255. title: '提示',
  256. message: '确定删除此节点?',
  257. size: BootstrapDialog.SIZE_SMALL,
  258. type: BootstrapDialog.TYPE_DEFAULT,
  259. closable: true,
  260. btnCancelLabel: '取消',
  261. btnOKLabel: '确定',
  262. callback: function (result) {
  263. if(result){
  264. deleteNode(deleteApi,node);
  265. }
  266. }
  267. });
  268. });
  269. //显示-添加根节点
  270. $("#setting").click(function(){
  271. $("#addOperation-dialog-root").modal('show');
  272. });
  273. //保存-添加根节点
  274. $("#rootSave").click(function(){
  275. $('#addOperation-dialog-root').modal('hide');
  276. var param = { text:$('#addRootName').val(),pid:0,parentStatu:true };
  277. sendRequest(addNodeApi,JSON.stringify(param),true,'post',function(data){
  278. $('#left-tree').treeview('remove');
  279. onLoad();
  280. },function(failue){
  281. $.showMsgText("新增失败!");
  282. },"application/json");
  283. });
  284. //显示-移动节点
  285. $("#btnMove").click(function(){
  286. var node = $('#left-tree').treeview('getSelected');
  287. if(node.length == 0){
  288. $.showMsgText("请选择一门学科!");
  289. return;
  290. }
  291. $('#addOperation-dialog-move').modal('show');
  292. sendRequest(listApi,{pid:0},true,'get',function(data){
  293. $('#move-tree').treeview({
  294. data:data,
  295. levels: 1,
  296. onNodeSelected:function(event, node){
  297. var parentNode = $('#move-tree').treeview('getSelected');
  298. renderNodeByPid(listApi,node.id,parentNode,false);
  299. },
  300. showCheckbox:false//是否显示多选
  301. });
  302. },function(){
  303. $.showMsgText("加载失败!");
  304. });
  305. });
  306. //保存-移动节点
  307. $("#moveSave").click(function(){
  308. var node = $('#move-tree').treeview('getSelected');
  309. if(node.length == 0){
  310. $.showMsgText("请选择一门学科!");
  311. return;
  312. }
  313. $('#addOperation-dialog-move').modal('hide');
  314. var node = $("#left-tree").treeview("getSelected");
  315. var mvnode = $("#move-tree").treeview("getSelected");
  316. var param = {_method:"PUT",id:node[0].id,pid:mvnode[0].id}
  317. sendRequest(updateApi,param,true,'post',function(data){
  318. $('#left-tree').treeview('remove');
  319. onLoad();
  320. },function(failue){
  321. $.showMsgText("修改失败!");
  322. });
  323. });
  324. //翻页-上一页
  325. $("#pre").click(function(){
  326. if(main.currentPage>1){
  327. var parentNode = $('#left-tree').treeview('getSelected');
  328. main.currentPage--;
  329. $("#viewpage").text(main.currentPage);
  330. showMsg(parentNode[0].nodes);
  331. }
  332. });
  333. //翻页-下一页
  334. $("#next").click(function(){
  335. if(main.currentPage<main.totalPage){
  336. var parentNode = $('#left-tree').treeview('getSelected');
  337. main.currentPage++;
  338. $("#viewpage").text(main.currentPage);
  339. showMsg(parentNode[0].nodes);
  340. }
  341. });
  342. $("#logout").click(function(){
  343. console.log(1);
  344. $.ajax({
  345. url:logoutApi,
  346. type:'get',
  347. success:function() {
  348. window.location.href = 'entrance.html';
  349. },
  350. error:function(){
  351. $.showMsgText("错误-500");
  352. }
  353. })
  354. });
  355. $('#input-select-node').change(function(){
  356. val = $('#input-select-node').val()
  357. if(val==""){
  358. $('#left-tree').treeview('clearSearch');
  359. }
  360. });
  361. $("#query").click(function(){
  362. result = $('#left-tree').treeview('search', [ $('#input-select-node').val(), { ignoreCase: true, exactMatch: false } ]);
  363. console.log(result);
  364. });
  365. }
  366. })(jQuery);