rehabilitation_management.js 10 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308
  1. !function(){
  2. var httpData=GetRequest();
  3. var currentGMT=new Date();//当前时间GMT
  4. new Vue({
  5. el:"#app",
  6. data:{
  7. ynow: currentGMT.getFullYear(),//年份
  8. mnow: currentGMT.getMonth(),//月份(比实际少一个月---0开始至11)
  9. dnow: currentGMT.getDate(),//当前日
  10. currentDay:null,//带中文格式的当前年月
  11. currentDayForEn:null,//不带中文格式年月日2018/10/01如果写成/的话 转换成时间戳会变成北京时间8点
  12. calendarData:[],//日历数据
  13. timeAxisData:[],//时间轴数据
  14. __Data:[],//当前的年月(日历)
  15. __xData:[],//当前的年月(时间轴)
  16. status:null,//任务状态(0未完成,1已完成,2已预约)
  17. searchTask:null,//快速查找任务:(1、我的任务,2、健康教育,3、健康指导,4、随访,5、复诊)
  18. searchTaskName:null,//快速查找任务:(1、我的任务,2、健康教育,3、健康指导,4、随访,5、复诊)
  19. planId: httpData['planId'],
  20. taskArr:[
  21. {code:1,name:'我的任务'},
  22. {code:2,name:'健康教育'},
  23. {code:3,name:'健康指导'},
  24. {code:4,name:'随访'},
  25. {code:5,name:'复诊'},
  26. ],
  27. statusArr:[
  28. {code:0,name:'未完成'},
  29. {code:1,name:'已完成'},
  30. {code:2,name:'已预约'},
  31. ],
  32. curTask:'',//快速查找是否点击了搜索按钮
  33. curTaskName:'',//快速查找是否点击了搜索按钮
  34. tabStatus:null,
  35. },
  36. mounted:function(){
  37. if(!this.planId){
  38. layer.msg('未传入计划id(planId)',{icon:2})
  39. }else{
  40. this.tabStatus=1;
  41. }
  42. },
  43. methods:{
  44. refreshPage:function(){
  45. if(!this.planId){
  46. layer.msg('未传入计划id(planId)',{icon:2})
  47. return ;
  48. }
  49. this.goToLoadData(true);
  50. },
  51. viewDetail:function(planids,status,type){
  52. var vm=this;
  53. if(!planids){
  54. layer.msg('无服务项',{icon:5})
  55. return ;
  56. }
  57. if(type=1){
  58. top.layer.open({
  59. type: 2,
  60. area: ['800px', '650px'],
  61. shade: 0.5,
  62. title: '完成项目确认',
  63. fixed: true, //不固定
  64. maxmin: true,
  65. closeBtn:1,
  66. shift: 5,
  67. shadeClose: false, //点击遮罩关闭层
  68. content: '../../rehabilitation/html/guide_the_message.html?planid='+planids
  69. });
  70. return ;
  71. }
  72. // planids='402803f6657f195301657f4c4ce70000';
  73. layer.open({
  74. type: 2,
  75. area: ['800px', '650px'],
  76. shade: 0.5,
  77. title: '服务项目内容',
  78. fixed: true, //不固定
  79. maxmin: true,
  80. closeBtn:1,
  81. shift: 5,
  82. shadeClose: false, //点击遮罩关闭层
  83. content: '../../rehabilitation/html/service_item_content.html?planids='+planids,
  84. end:function(){
  85. vm.goToLoadData(true);
  86. }
  87. });
  88. },
  89. changeStatus:function(val){
  90. this.status=this.status==val?null:val;
  91. },
  92. changeTask:function(val){
  93. this.searchTask=this.searchTask==val.code?null:val.code;
  94. this.searchTaskName=this.searchTaskName==val.name?null:val.name;
  95. },
  96. monDetail:function(){
  97. this.currentDay = this.ynow + '年'+ (this.mnow + 1) +'月';
  98. this.currentDayForEn=this.ynow+'/'+(this.mnow>=9?(this.mnow+1):"0"+(this.mnow+1))+'/'+(this.dnow>=9?this.dnow:"0"+this.dnow)
  99. },
  100. is_leap:function(year) { //判断是否为闰年
  101. return (year%100==0?res=(year%400==0?1:0):res=(year%4==0?1:0));
  102. },
  103. preMonth:function(){ //上一个月
  104. if(this.mnow<=0){
  105. this.mnow=11;
  106. this.ynow=this.ynow-1;
  107. }else{
  108. this.mnow--;
  109. }
  110. this.monDetail();
  111. this.goToLoadData(true);
  112. },
  113. getPreMouth:function(){
  114. var pMnow,pYnow;
  115. if(this.mnow<=0){
  116. pMnow=11;
  117. pYnow=this.ynow-1;
  118. }else{
  119. pMnow=this.mnow-1;
  120. pYnow=this.ynow;
  121. }
  122. var m_days=new Array(31,(28+this.is_leap(pYnow)),31,30,31,30,31,31,30,31,30,31); //每个月的天数
  123. return {
  124. days:m_days[pMnow],
  125. date:pYnow+'-'+(++pMnow>=10?pMnow:"0"+pMnow)
  126. }
  127. },
  128. nextMonth:function(){ //下一个月
  129. if(this.mnow>=11){
  130. this.mnow=0;
  131. this.ynow=this.ynow+1;
  132. }else{
  133. this.mnow++;
  134. }
  135. this.monDetail();
  136. this.goToLoadData(true);
  137. },
  138. getNextMouth:function(){
  139. var nMnow,nYnow;
  140. if(this.mnow>=11){
  141. nMnow=0;
  142. nYnow=this.ynow+1;
  143. }else{
  144. nMnow=this.mnow+1;
  145. nYnow=this.ynow;
  146. }
  147. var m_days=new Array(31,(28+this.is_leap(nYnow)),31,30,31,01,31,31,30,31,30,31); //每个月的天数
  148. return {
  149. days:m_days[nMnow],
  150. date:nYnow+'-'+(++nMnow>=10?nMnow:"0"+nMnow)
  151. }
  152. },
  153. goToLoadData:function(flag){//flag是否更新数据
  154. this.tabStatus==1 && (!this.calendarData.length || flag) && this.calendar();
  155. this.tabStatus==2 && (!this.timeAxisData.length || flag) && this.timeAxis();
  156. },
  157. calendar:function(){
  158. var nlstr = new Date(this.ynow,this.mnow,1); //当月第一天
  159. var firstday = nlstr.getDay()-1;//第一天星期几,默认是周日 我们改成周一
  160. firstday=firstday==-1?6:firstday;//如果是-1,说明当月的第一天是周日
  161. var m_days=new Array(31,(28+this.is_leap(this.ynow)),31,30,31,30,31,31,30,31,30,31); //每个月的天数
  162. var tr_str=Math.ceil((m_days[this.mnow] + firstday)/7); //当前月天数+第一天是星期几的数值 获得 表格行数
  163. var c_days=m_days[this.mnow];//当前月份的天数
  164. var p_arr=this.getPreMouth();
  165. var n_arr=this.getNextMouth();
  166. var i,k,idx,date_str;
  167. var dataArr=[];//天数/年月
  168. for(i=0;i<tr_str;i++) { //表格的行
  169. for(k=0;k<7;k++) { //表格每行的单元格
  170. idx=i*7+k; //单元格自然序列号
  171. date_str=idx-firstday+1; //计算日期
  172. var __ym;
  173. if(date_str<=0){//过滤无效日期(小于等于零的、大于月总天数的)
  174. date_str=date_str+p_arr['days'];//当前日期+上个月的天数就是上个月的日期
  175. __ym=p_arr['date'];
  176. }else if(date_str>c_days){
  177. date_str=date_str-c_days;//下个月的日期就是这个月的天数-当月的天数
  178. __ym=n_arr['date'];
  179. }else{
  180. __ym=this.ynow+'-'+(this.mnow>=9?"":"0")+(this.mnow+1);
  181. }
  182. dataArr.push({
  183. day:date_str,
  184. date:__ym
  185. });
  186. }
  187. }
  188. this.__Data=dataArr;
  189. this.monDetail();
  190. this.calenderPlanDetail();
  191. },
  192. // 日历请求
  193. calenderPlanDetail:function(){
  194. var vm=this;
  195. var __days=vm.__Data;
  196. var lastDay=(__days.concat()).pop().day;
  197. lastDay=lastDay>9?lastDay:'0'+lastDay;
  198. var params={
  199. executeStartTime:__days[0].date+'-'+__days[0].day+' 00:00:00',//日历开始时间(格式:yyyy-MM-dd HH:mm:ss)
  200. executeEndTime:(__days.concat()).pop().date+'-'+lastDay+' 23:59:59',//日历结束时间(格式:yyyy-MM-dd HH:mm:ss)
  201. planId:vm.planId,//计划id
  202. searchTask:vm.searchTask,//快速查找任务:(1、我的任务,2、健康教育,3、健康指导,4、随访)
  203. status:vm.status,//任务状态(0未完成,1已完成,2已预约)
  204. }
  205. rehaAPI.calendarPlanDetail(params).then(function(res){
  206. vm.curTask=vm.searchTask;
  207. vm.curTaskName=vm.searchTaskName;
  208. vm.calendarData=[];
  209. if(res.status==200){
  210. var data=res.data
  211. for(var i in __days){
  212. var _key=__days[i].date+'-'+(__days[i].day>9?__days[i].day:'0'+__days[i].day);
  213. var item={
  214. noService:true,
  215. day:__days[i].day
  216. };
  217. for(var j in data){
  218. if(_key==j){
  219. item=data[j];
  220. item.day=__days[i].day;
  221. var finishFlag=false;
  222. var sFlag=false;
  223. var fFlag=false;
  224. if(item.specialist){
  225. if(item.specialist.all==item.specialist.finish){
  226. sFlag=true;
  227. }
  228. }else{
  229. sFlag = true;
  230. }
  231. if(item.family){
  232. if(item.family.all==item.family.finish){
  233. fFlag = true;
  234. }
  235. }else{
  236. fFlag = true;
  237. }
  238. finishFlag = sFlag && fFlag;
  239. item.finishFlag=finishFlag;
  240. data.length && data.splice(j,1);
  241. break;
  242. }
  243. }
  244. vm.calendarData.push(item);
  245. }
  246. }
  247. })
  248. },
  249. // 时间轴请求
  250. timeAxis:function(){
  251. var m_days=new Array(31,(28+this.is_leap(this.ynow)),31,30,31,30,31,31,30,31,30,31); //每个月的天数
  252. var c_days=m_days[this.mnow];//当前月份的天数
  253. var __ym=this.ynow+'-'+(this.mnow>=9?"":"0")+(this.mnow+1);
  254. var dataArr=[];//天数/年月
  255. for(;c_days>0;c_days--){
  256. dataArr.push({
  257. day:c_days,
  258. date:__ym
  259. });
  260. }
  261. this.__xData=dataArr;
  262. this.monDetail();
  263. this.calendarPlanDetailList();
  264. },
  265. // 时间轴请求
  266. calendarPlanDetailList:function(){
  267. var vm=this;
  268. var __days=vm.__xData;
  269. var lastDay=(__days.concat()).pop().day;
  270. lastDay=lastDay>9?lastDay:'0'+lastDay;
  271. var params={
  272. executeEndTime:__days[0].date+'-'+__days[0].day+' 00:00:00',//日历开始时间(格式:yyyy-MM-dd HH:mm:ss)
  273. executeStartTime:(__days.concat()).pop().date+'-'+lastDay+' 23:59:59',//日历结束时间(格式:yyyy-MM-dd HH:mm:ss)
  274. planId:vm.planId,//计划id
  275. searchTask:vm.searchTask,//快速查找任务:(1、我的任务,2、随访,3、复诊,4、健康教育)
  276. status:vm.status,//任务状态(0未完成,1已完成,2已预约)
  277. }
  278. rehaAPI.calendarPlanDetailList(params).then(function(res){
  279. if(res.status==200){
  280. var _currentTimeStamp=+new Date(vm.currentDayForEn);
  281. vm.timeAxisData=_.map(res.data||{},function(o){
  282. var _time=o.executeTime.split(' ');
  283. var thatTime=+new Date(_time[0]);
  284. var future=_currentTimeStamp>thatTime?0:(_currentTimeStamp==thatTime?1:2);
  285. (o.status==0 && _currentTimeStamp>thatTime) && (future=-1)
  286. console.log(future)
  287. var _html=o.status==2?'预':(future==-1?'逾':'');
  288. _html=future==1?'今':_html;
  289. if(_html=='预') future=3;
  290. o.html=_html
  291. o.date=_time[0];
  292. o.time=_time[1];
  293. o.future=future;
  294. return o;
  295. })||[];
  296. }
  297. console.log(vm.timeAxisData)
  298. })
  299. },
  300. },
  301. watch:{
  302. tabStatus:function(){
  303. this.goToLoadData();
  304. }
  305. }
  306. })
  307. }();