sched.ss.jsp 18 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505
  1. <!DOCTYPE HTML>
  2. <html>
  3. <head>
  4. <title>
  5. </title>
  6. <%-- 改。Lin
  7. <link rel="stylesheet" type="text/css" href="/${sessionScope['XMMC']}/js/fullcalendar/theme/main_.css">
  8. <link rel="stylesheet" type="text/css" href="/${sessionScope['XMMC']}/js/fullcalendar/theme/fullcalendar.css">
  9. <link rel="stylesheet" type="text/css" href="/${sessionScope['XMMC']}/js/fullcalendar/theme/jquery-ui.css"> --%>
  10. <css.ss file="/ss/fullcalendar/main_.css"/>
  11. <css.ss file="/ss/fullcalendar/fullcalendar.css"/>
  12. <css.ss file="/ss/fullcalendar/jquery-ui.css"/>
  13. <%-- 改。Lin
  14. <script src='/wd/js/setNzTimer.js' type='text/javascript' charset='utf-8'></script> --%>
  15. <js.ss file="/ss/setNzTimer.js"/>
  16. <%-- 改。Lin
  17. <script type="text/javascript" src="/wd/edit.js"></script> --%>
  18. <js.ss file="/ss/edit.js"/>
  19. <style type="text/css">
  20. #calendar {
  21. width: 960px;
  22. margin: 20px auto 10px auto
  23. }
  24. .fancy {
  25. width: 450px;
  26. height: auto
  27. }
  28. .fancy h3 {
  29. height: 30px;
  30. line-height: 30px;
  31. border-bottom: 1px solid #d3d3d3;
  32. font-size: 14px
  33. }
  34. .fancy form {
  35. padding: 10px
  36. }
  37. .fancy p {
  38. height: 28px;
  39. line-height: 28px;
  40. padding: 4px;
  41. color: #999
  42. }
  43. .input {
  44. height: 20px;
  45. line-height: 20px;
  46. padding: 2px;
  47. border: 1px solid #d3d3d3;
  48. width: 100px
  49. }
  50. .btn {
  51. -webkit-border-radius: 3px;
  52. -moz-border-radius: 3px;
  53. padding: 5px 12px;
  54. cursor: pointer
  55. }
  56. .btn_ok {
  57. background: #360;
  58. border: 1px solid #390;
  59. color: #fff
  60. }
  61. .btn_cancel {
  62. background: #f0f0f0;
  63. border: 1px solid #d3d3d3;
  64. color: #666
  65. }
  66. .btn_del {
  67. background: #f90;
  68. border: 1px solid #f80;
  69. color: #fff
  70. }
  71. .sub_btn {
  72. height: 32px;
  73. line-height: 32px;
  74. padding-top: 6px;
  75. border-top: 1px solid #f0f0f0;
  76. text-align: right;
  77. position: relative
  78. }
  79. .sub_btn .del {
  80. position: absolute;
  81. left: 2px
  82. }
  83. #menu {
  84. position: absolute;
  85. height: auto;
  86. display: none;
  87. z-index:99999999999;
  88. padding: 5px 5px;
  89. overflow: auto hidden;
  90. outline: none;
  91. box-shadow: 4px 4px 9px rgba(0, 0, 0, .13);
  92. box-sizing: border-box;
  93. background-color: #fff;
  94. border-left: 1px solid #e1e1e1;
  95. border-right: 1px solid #e1e1e1;
  96. border-bottom: 1px solid #e1e1e1;
  97. /*border-top: 1px solid #6c9ed7;*/
  98. }
  99. .popList{
  100. width: 60px;
  101. height: 100%;
  102. }
  103. .active:hover{
  104. background: rgba(107, 159, 211);
  105. color: #fff;
  106. }
  107. </style>
  108. </head>
  109. <body>
  110. <div id='calendar' style="width: 90%;">
  111. <menu id="menu">
  112. <ul class="popList">
  113. </ul>
  114. </menu>
  115. </div>
  116. <div id="datass" style="display: none;">
  117. </div> <%-- 增加。Lin --%>
  118. </body>
  119. <js.ss file="/ss/fullcalendar/jquery-ui.js"/> <%-- src='jquery-ui.js'。Lin --%>
  120. <js.ss file="/ss/fullcalendar/fullcalendar.js"/> <%-- src='fullcalendar.js'。Lin --%>
  121. <script type="text/javascript">
  122. var riqi = '';
  123. window.onload = function() {
  124. var el = document.getElementById("calendar");
  125. var oMenu = document.getElementById("menu");
  126. el.oncontextmenu = function(e) {
  127. //左键--button属性=1,右键button属性=2
  128. if(e.button == 2) {
  129. e.preventDefault();
  130. var _x = e.clientX,
  131. _y = e.clientY;
  132. oMenu.style.display = "block";
  133. oMenu.style.left = _x + "px";
  134. oMenu.style.top = _y + "px";
  135. }
  136. if($(e.srcElement).hasClass("fc-day")){
  137. riqi = $(e.srcElement).attr('data-date');
  138. }else{
  139. if($(e.srcElement).parents('.fc-day').attr('data-date')){
  140. riqi = $(e.srcElement).parents('.fc-day').attr('data-date');
  141. }
  142. }
  143. }
  144. //关闭右键菜单,很简单
  145. // window.onclick=function(e){
  146. // //用户触发click事件就可以关闭了,因为绑定在window上,按事件冒泡处理,不会影响菜单的功能
  147. //      document.querySelector('#menu').style.display='none';
  148. // }
  149. }
  150. //js中注释的代码暂时不用,待日程搬运时再放出来
  151. var pluginList;
  152. $(function() {
  153. var el = document.getElementById("calendar");
  154. var oMenu = document.getElementById("menu");
  155. pluginList = wd.display.createObjectService("p_rc","add").pluginList;
  156. var html = "";
  157. var html = "";
  158. if (pluginList) { // 增加。抄自 display.js 里的 wd.display.createObjectService(。Lin
  159. for(var i=0;i<pluginList.length;i++){
  160. html += "<li class='active' onclick=\"rc_lr_zj('"+pluginList[i].pluginDesc+"')\">"+pluginList[i].pluginDesc+"</li>";
  161. }
  162. }
  163. $(".popList").append(html);
  164. var dateEventsSize = new Map();
  165. $('#calendar').fullCalendar({
  166. defaultDate:"${defaultDate}",
  167. height: window.innerHeight - 50,
  168. windowResize: function(view) {
  169. $('#calendar').fullCalendar('option', 'height', window.innerHeight - 50);
  170. },
  171. eventMouseover:function(event, jsEvent, view){
  172. riqi = event.start.format('yyyy-MM-dd');
  173. },
  174. eventDrop: function(event, dayDelta, minuteDelta, allDay, revertFunc, jsEvent, ui, view) {
  175. if (event.lb != '81') {
  176. revertFunc();
  177. return;
  178. }
  179. update(event.id, event.start, event.end);
  180. },
  181. eventResize: function(event, dayDelta, minuteDelta, revertFunc, jsEvent, ui, view) {
  182. if (event.lb != '81') {
  183. revertFunc();
  184. return;
  185. }
  186. update(event.id, event.start, event.end);
  187. },
  188. eventDragStart: function(event, jsEvent, ui, view) {
  189. if (event.lb != '81') {
  190. // revertFunc();
  191. return false;
  192. }
  193. },
  194. eventResizeStart: function(event, jsEvent, ui, view) {
  195. if (event.lb != '81') {
  196. // revertFunc();
  197. return false;
  198. }
  199. },
  200. buttonicons: {
  201. prev: 'circle-triangle-w',
  202. next: 'circle-triangle-e'
  203. },
  204. editable: true,
  205. firstDay: 0,
  206. header: {
  207. left: 'prev,next today',
  208. center: 'title',
  209. right: 'month,agendaWeek,agendaDay'
  210. },
  211. weekMode: 'liquid',
  212. eventBackgroundColor:"transparent",
  213. eventBorderColor:"transparent",
  214. eventTextColor:"#000",
  215. loading: function(isLoading, view) {
  216. $.ajax({
  217. type: "post",
  218. url: "<serv.ss name='selAllSched'/>", // :"getAllNz"。Lin
  219. async: false,
  220. success: function(data) {
  221. $("#datass").html(data);
  222. }
  223. });
  224. },
  225. events: function (i,s,callback) {
  226. $.ajax({
  227. type: "post",
  228. url: "<serv.ss name='selAllSched'/>", // :"getAllNz"。Lin
  229. async: false,
  230. dataType:'json',
  231. success: function(data) {
  232. /* 去掉,就有颜色(底色)了。Lin
  233. for( var i= 0 ;i<data.length ;i++){
  234. data[i].color = "" // 为什么要清掉 ."color"???Lin
  235. }
  236. */
  237. console.log(callback)
  238. callback(data);
  239. }
  240. });
  241. },
  242. dayClick: function(date, allDay, jsEvent, view) {
  243. var theDate = date.format('yyyy-MM-dd');
  244. var eventsSize = dateEventsSize.get(theDate);
  245. if(eventsSize == undefined || eventsSize == null || eventsSize == 'null'){
  246. var events = $('#calendar').fullCalendar('clientEvents', function(event) {
  247. var eventStart = event.start.format('yyyy-MM-dd');
  248. var eventEnd = event.end ? event.end.format('yyyy-MM-dd') : null;
  249. return (eventStart <= theDate && (eventEnd >= theDate) && !(eventStart < theDate && (eventEnd == theDate))) || (eventStart == theDate && (eventEnd === null));
  250. });
  251. eventsSize = events.length;
  252. dateEventsSize.set(theDate,eventsSize);
  253. }
  254. var oMenu = document.getElementById("menu");
  255. if(eventsSize == 0){
  256. jsEvent.preventDefault();
  257. var _x = jsEvent.clientX,
  258. _y = jsEvent.clientY;
  259. oMenu.style.display = "block";
  260. oMenu.style.left = _x + "px";
  261. oMenu.style.top = _y + "px";
  262. riqi = $(jsEvent.currentTarget).attr('data-date');
  263. return;
  264. }else{
  265. oMenu.style.display = "none";
  266. }
  267. console.log(new Date(date.Format("yyyy-MM-dd")) < new Date(new Date().Format("yyyy-MM-dd")));
  268. console.log(new Date(date.Format("yyyy-MM-dd")) == new Date(new Date().Format("yyyy-MM-dd")));
  269. console.log(new Date(date.Format("yyyy-MM-dd")) > new Date(new Date().Format("yyyy-MM-dd")));
  270. if (new Date(date.Format("yyyy-MM-dd")) < new Date(new Date().Format("yyyy-MM-dd"))){
  271. //点击日期小于当前日期,只有增加实习记录
  272. //建立需要的参数
  273. var isCreatSxjl;
  274. var isZdy;
  275. var sxjhids;
  276. //ajax同步查询获得判断条件
  277. $.ajax({
  278. type:"get",
  279. url:'@service{name:"sxjl_nzbjdjpd"}@',
  280. data: {'date': date.Format("yyyy-MM-dd")},
  281. async:false,
  282. dataType:"json",
  283. success: function(re) {
  284. isCreatSxjl = re.isCreatSxjl;
  285. isZdy = re.isZdy;
  286. sxjhids = re.sxjhids;
  287. }
  288. });
  289. if(!isCreatSxjl) return false;
  290. var ymlb = "1";
  291. var selDate = $.fullCalendar.formatDate(date, 'yyyy-MM-dd HH:mm:ss');
  292. var jssj = $.fullCalendar.formatDate(date, 'yyyy-MM-dd ') + '23:59:59' ;
  293. var json = JSON.parse('{"kssj":"'+selDate+'","jssj":"'+jssj+'","ymlb":"'+ymlb+'","isZdy":"'+isZdy+'","sxjhids":"'+sxjhids+'"}');
  294. var js = '@service{dest:"add",show:"wdDialog",param:{"kssj":"wdVal{kssj}","jssj":"wdVal{jssj}","ymlb":"wdVal{ymlb}","isZdy":"wdVal{isZdy}","sxjhids":"wdVal{sxjhids}"}}@';
  295. js=wd.display.replaceDynamicParam(js,json);
  296. eval(js);
  297. }else if(new Date(date.Format("yyyy-MM-dd")) > new Date(new Date().Format("yyyy-MM-dd"))){
  298. //点击日期是当前日期之后的,只能增加日程
  299. /*
  300. 这段代码用于判断点击的时间是否超过当前时间,如果是就不允许填写,跳出提示框
  301. var ymlb = "3";
  302. var selDate = $.fullCalendar.formatDate(date, 'yyyy-MM-dd HH:mm:ss');
  303. var jssj = $.fullCalendar.formatDate(date, 'yyyy-MM-dd ') + '23:59:59' ;
  304. var json = JSON.parse('{"kssj":"'+selDate+'","jssj":"'+jssj+'","ymlb":"'+ymlb+'"}');
  305. var js = '@service{dest:"sys_alert",show:"wdDialog",param:{msg:"不能录入今天之后的周记,请点击今天或之前的时间进行录入!"}}@';
  306. js=wd.display.replaceDynamicParam(js,json);
  307. console.log(js);
  308. eval(js);
  309. //点击日期是当前日期之后的,只能增加日程
  310. var ymlb = "3";
  311. var selDate = $.fullCalendar.formatDate(date, 'yyyy-MM-dd HH:mm:ss');
  312. var jssj = $.fullCalendar.formatDate(date, 'yyyy-MM-dd ') + '23:59:59' ;
  313. var json = JSON.parse('{"kssj":"'+selDate+'","jssj":"'+jssj+'","ymlb":"'+ymlb+'"}');
  314. var js = '@service{name:"rc_lr",dest:"add",show:"wdDialog",param:{"kssj":"wdVal{kssj}","jssj":"wdVal{jssj}","ymlb":"wdVal{ymlb}"}}@';
  315. js=wd.display.replaceDynamicParam(js,json);
  316. eval(js);*/
  317. }else{
  318. //点击日期是当前日期,可以增加实习记录以及日程
  319. //建立需要的参数
  320. var isCreatSxjl;
  321. var isZdy;
  322. var sxjhids;
  323. //ajax同步查询获得判断条件
  324. $.ajax({
  325. type:"get",
  326. url:'@service{name:"sxjl_nzbjdjpd"}@',
  327. data: {'date': date.Format("yyyy-MM-dd")},
  328. async:false,
  329. dataType:"json",
  330. success: function(re) {
  331. isCreatSxjl = re.isCreatSxjl;
  332. isZdy = re.isZdy;
  333. sxjhids = re.sxjhids;
  334. }
  335. });
  336. if(isCreatSxjl){
  337. //有实习计划
  338. var ymlb = "2";
  339. var selDate = $.fullCalendar.formatDate(date, 'yyyy-MM-dd HH:mm:ss');
  340. var jssj = $.fullCalendar.formatDate(date, 'yyyy-MM-dd ') + '23:59:59' ;
  341. var json = JSON.parse('{"kssj":"'+selDate+'","jssj":"'+jssj+'","ymlb":"'+ymlb+'","isZdy":"'+isZdy+'","sxjhids":"'+sxjhids+'"}');
  342. var js = '@service{dest:"add",show:"wdDialog",param:{"kssj":"wdVal{kssj}","jssj":"wdVal{jssj}","ymlb":"wdVal{ymlb}","isZdy":"wdVal{isZdy}","sxjhids":"wdVal{sxjhids}"}}@';
  343. js=wd.display.replaceDynamicParam(js,json);
  344. eval(js);
  345. }else{
  346. /*
  347. var ymlb = "3";
  348. var selDate = $.fullCalendar.formatDate(date, 'yyyy-MM-dd HH:mm:ss');
  349. var jssj = $.fullCalendar.formatDate(date, 'yyyy-MM-dd ') + '23:59:59' ;
  350. var json = JSON.parse('{"kssj":"'+selDate+'","jssj":"'+jssj+'","ymlb":"'+ymlb+'"}');
  351. var js = '@service{dest:"add",show:"wdDialog",param:{"kssj":"wdVal{kssj}","jssj":"wdVal{jssj}","ymlb":"wdVal{ymlb}"}}@';
  352. js=wd.display.replaceDynamicParam(js,json);
  353. eval(js);*/
  354. }
  355. }
  356. },
  357. eventClick: function(calEvent, jsEvent, view) {
  358. console.log(calEvent.lb );
  359. if(calEvent.lb=='130'){
  360. var json = JSON.parse('{"data":"'+calEvent.id+ '"}');
  361. var js = '@service{name:"ycd_cdyd_ck_jbqk",show:"wdDialog",dest:"ycd_cdyd_ck_jbqk",param:{"cdydid":"wdVal{data}"}}@';
  362. js=wd.display.replaceDynamicParam(js,json);
  363. eval(js);
  364. }
  365. else if(calEvent.lb == '81'){
  366. var json = JSON.parse('{"data":"'+calEvent.id+ '"}');
  367. var js = '@service{name:"rc_lr_xg_jbqk",show:"wdDialog",dest:"env_input",param:{"rcid":"wdVal{data}",rclbm:81,dataType:"update"}}@';
  368. js=wd.display.replaceDynamicParam(js,json);
  369. eval(js);
  370. }
  371. else if(calEvent.lb == '85'){
  372. var json = JSON.parse('{"data":"'+calEvent.id+ '"}');
  373. var js = '@service{name:"rc_lr_xg_jbqk",show:"wdDialog",dest:"env_input",param:{"rcid":"wdVal{data}",rclbm:85,dataType:"update"}}@';
  374. js=wd.display.replaceDynamicParam(js,json);
  375. eval(js);
  376. }
  377. else if(calEvent.lb == '71' || calEvent.lb == '75'){
  378. /* var startDate = $.fullCalendar.formatDate(calEvent.start, 'yyyy-MM-dd HH:mm:ss');
  379. var endDate = $.fullCalendar.formatDate(calEvent.end, 'yyyy-MM-dd HH:mm:ss');
  380. var json = JSON.parse('{"kssj":"'+startDate+'","jssj":"'+endDate+'","lb":"71,75"}');
  381. var js = '@service{dest:"add",show:"wdDialog",param:{"kssj":"wdVal{kssj}","jssj":"wdVal{jssj}","lb":"wdVal{lb}"}}@';
  382. js=wd.display.replaceDynamicParam(js,json);
  383. eval(js);*/
  384. var json = {};
  385. json["rcid"]=calEvent.id;
  386. json["dxid"]=calEvent.id;
  387. var url = '@service{name:"rc_ck_jbqk_nz_byId",show:"wdDialog",dest:"env_play",param:{"rcid":"wdVal{rcid}","dxid":"wdVal{dxid}","dxm":"rc"}}@';
  388. url=wd.display.replaceDynamicParam(url,json);
  389. eval(url);
  390. }
  391. else if (calEvent.lb == '101' ){
  392. var json = JSON.parse('{"data":"'+calEvent.id+ '"}');
  393. var js = '@service{name:"sw_ck",show:"wdDialog",dest:"sw_baseInfo",param:{"swid":"wdVal{data}"}}@';
  394. js=wd.display.replaceDynamicParam(js,json);
  395. eval(js);
  396. }
  397. else if(calEvent.lb == '110'){
  398. console.log(calEvent.jlztm+"================"+calEvent.id);
  399. if(calEvent.jlztm == '1'){
  400. //记录状态码是1 ,修改页面
  401. var json = JSON.parse('{"sxjlid":"'+calEvent.id+ '"}');
  402. var js = '@service{name:"sxjl_xg",show:"wdDialog",dest:"sxjl_xg",param:{"sxjlid":"wdVal{sxjlid}"}}@';
  403. js=wd.display.replaceDynamicParam(js,json);
  404. eval(js);
  405. }else{
  406. var json = JSON.parse('{"sxjlid":"'+calEvent.id+ '"}');
  407. var js = '@service{name:"sxjl_ck",show:"wdDialog",dest:"sxjl_ck",param:{"sxjlid":"wdVal{sxjlid}"}}@';
  408. js=wd.display.replaceDynamicParam(js,json);
  409. eval(js);
  410. }
  411. }
  412. else if(calEvent.lb == '120'){
  413. console.log(jsEvent);
  414. var json = JSON.parse('{"sxjhid":"'+calEvent.id+ '"}');
  415. var js = '@service{name:"sxjh_ck",show:"wdDialog",dest:"sxjh_baseInfo",param:{"dataType":"play","sxjhid":"wdVal{sxjhid}"}}@';
  416. js=wd.display.replaceDynamicParam(js,json);
  417. eval(js);
  418. }
  419. else if (calEvent.lb != '81' &&calEvent.lb != '92'|| calEvent.start < new Date()&&calEvent.lb != '92') {
  420. var rcid = calEvent.id;
  421. var json = JSON.parse('{"data":"'+calEvent.id+ '"}');
  422. var js = '@service{name:"rc_ck_jbqk_nz",show:"wdDialog",dest:"rcap_ck",param:{"rcid":"wdVal{data}"}}@';
  423. js=wd.display.replaceDynamicParam(js,json);
  424. eval(js);
  425. }else if (calEvent.lb == '92') {
  426. var json = JSON.parse('{"kcbid":"'+calEvent.id+'","dxid":"'+calEvent.id+'"}');
  427. var js = '@service{name:"kcb_ck",show:"wdDialog",dest:"env_play",param:{"kcbid":"wdVal{kcbid}","dxid":"wdVal{dxid}","dxm":"kcb"}}@';
  428. js=wd.display.replaceDynamicParam(js,json);
  429. eval(js);
  430. }
  431. }
  432. });
  433. window.top.initData();
  434. if (window.top.rcid) {
  435. if (window.top.rcid.split("_")[1] != "81") {
  436. return;
  437. }
  438. var js = '@service{name:"ry_xg_rcap_xg",show:"wdDialog",dest:"edit",param:{rcid:"rcid"}}@';
  439. js = js.replace('rcid=rcid', 'rcid=' + window.top.rcid.split("_")[0]);
  440. eval(js);
  441. window.top.rcid= null;
  442. }
  443. });
  444. function update(id, start, end) {
  445. var sta = $.fullCalendar.formatDate(start, 'yyyy-MM-dd HH:mm:ss');
  446. var en = $.fullCalendar.formatDate(end, 'yyyy-MM-dd HH:mm:ss');
  447. var url = '@service{name:"bcNz",param:{rcid:"wdVal{RCID}",kssj:"wdVal{KSSJ}",jssj:"wdVal{JSSJ}"}}@';
  448. var json = JSON.parse('{"RCID":"'+id+ '","KSSJ":"'+sta+'","JSSJ":"'+en+'"}');
  449. url=wd.display.replaceDynamicParam(url,json);
  450. $.ajax({
  451. type: "post",
  452. url: url,
  453. async: true,
  454. success: function(data) {
  455. window.top.initData();
  456. }
  457. });
  458. }
  459. function rc_lr_zj(flag){
  460. var url = '';
  461. for(var i = 0;i < pluginList.length;i++){
  462. if(pluginList[i].pluginDesc == flag){
  463. var pluginobj=pluginList[i];
  464. url = "wd.display.showComponent({show:['wdDialog'],hide:[],url:'"+pluginobj.url+"&date="+riqi+"',title:'"+pluginobj.title+"',width:"+pluginobj.width+",height:"+pluginobj.height+",minHeight:"+pluginobj.minHeight+",maxHeight:"+pluginobj.maxHeight+"});";
  465. break;
  466. }
  467. }
  468. eval(url);
  469. }
  470. </script>
  471. </html>