rehabilitation_management.html 24 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541
  1. <!DOCTYPE html>
  2. <html>
  3. <head>
  4. <meta charset="UTF-8">
  5. <title>康复管理</title>
  6. <link rel="shortcut icon" href="../../favicon.ico">
  7. <link rel="stylesheet" type="text/css" href="../../../css/bootstrap.min.css"/>
  8. <link rel="stylesheet" type="text/css" href="../../../css/style.min.css"/>
  9. <link rel="stylesheet" type="text/css" href="../../../css/cross.css"/>
  10. <link rel="stylesheet" type="text/css" href="../css/date.css" />
  11. <style type="text/css">
  12. .flex-box{display: -webkit-box; /* OLD - iOS 6-, Safari 3.1-6 */ /* OLD - Firefox 19- (buggy but mostly works) */
  13. display: -ms-flexbox; /* TWEENER - IE 10 */ /* NEW - Chrome */
  14. display: flex; /* NEW, Spec - Opera 12.1, Firefox 20+ */
  15. -webkit-box-pack: center;
  16. -ms-flex-pack: center;
  17. justify-content: center;
  18. -webkit-box-align: center;
  19. -ms-flex-align: center;
  20. align-items: center;
  21. -ms-flex-wrap: wrap;
  22. flex-wrap: wrap;
  23. }
  24. .flex-box-item{-webkit-box-flex: 1; /* OLD - iOS 6-, Safari 3.1-6 */
  25. -moz-box-flex: 1; /* OLD - Firefox 19- */
  26. -webkit-flex: 1; /* Chrome */
  27. -ms-flex: 1; /* IE 10 */
  28. width: 50%; /* For old syntax, otherwise collapses. */
  29. flex: 1; /* NEW, Spec - Opera 12.1, Firefox 20+ */
  30. position: relative;}
  31. [flex-grow="2"]{-webkit-box-flex: 2;-ms-flex-positive: 2;flex-grow: 2;}
  32. [flex-grow="5"]{-webkit-box-flex: 5;-ms-flex-positive: 5;flex-grow: 5;}
  33. body,html,.c-container{height: 100%;}
  34. .rehabilition{height: 100%;padding-top: 49px;max-width: 1620px;margin: 0 auto;}
  35. .nav-content-right{height: 100%;overflow: auto;}
  36. .search-left{border-right: solid 1px #d7dce6;background-color: #f5f5f5;height: 100%;}
  37. .mw400{max-width: 400px;}
  38. .search-condition{padding: 20px 10px;border-bottom: solid 1px #d7dce6;}
  39. .search-condition p{font-size: 14px;margin-bottom: 15px;}
  40. .task-list{padding-left: 10px;overflow: hidden;}
  41. .task-list li{width: 90px;cursor: pointer;text-align: center;display: block;float: left;border-radius: 14px;font-size: 14px;margin-left: 20px;margin-bottom: 20px;color: #333333;border: solid 1px #d7dce6;padding: 3px;}
  42. .task-list li.active{background-color: #12b7f5;color: #fff;}
  43. .btn-search{background-color: #12b7f5;color: #fff;border-radius: 0;width: 120px;margin-top: 30px;}
  44. .btn-search:hover,.btn-search:focus,.btn-search:active,.btn-search:hover:active{background-color: #00ADEE;color: #fff;}
  45. /*日历*/
  46. .calendar-content{margin: 0 auto;}
  47. /*图例注释*/
  48. .calendar-descript{padding: 15px 20px;background-color: #fff;}
  49. .calendar-descript span{vertical-align: middle;}
  50. .icon{width: 12px;height: 12px;vertical-align: middle;background-size: 100% 100%;background-repeat: no-repeat;display: inline-block;}
  51. .icon-blue{background-color: #12b7f5;border-radius: 2px;}
  52. .icon-green{background-color: #2dbe55;border-radius: 2px;}
  53. .icon-flag{background-image: url(../images/woderenwu_icon.png);}
  54. .icon-shuaxin{background-image: url(../images/icon/shuaxin.png);}
  55. .icon-shuaxin:hover{background-image: url(../images/icon/shuaxin1.png);}
  56. .icon-back{background-image: url(../images/icon/fanhui_icon.png);}
  57. .icon-back:hover{background-image: url(../images/icon/fanhui02_icon.png);}
  58. .icon-check{background-image: url(../images/wancheng_icon.png);}
  59. .icon-prev{background-image: url(../images/icon/houtui_icon.png);}
  60. .icon-next{background-image: url(../images/icon/qianjing_icon.png);}
  61. .icon-rili{background-image: url(../images/icon/rilibiao02_icon.png);}
  62. .rili:hover .icon-rili,.active .icon-rili{background-image: url(../images/icon/rilibiao_icon.png);}
  63. .icon-liebiao{background-image: url(../images/icon/shijianzhou_icon.png);}
  64. .shijianzhou:hover .icon-liebiao,.active .icon-liebiao{background-image: url(../images/icon/shijianzhou02_icon.png);}
  65. .icon-20{width: 20px;height: 20px;}
  66. .icon-16{width: 16px;height: 16px;}
  67. /*周期*/
  68. .calendar-week{background-color: #ebebf5;border: solid 1px #d7dce6;padding: 11px;}
  69. /*日期*/
  70. .calendar-days>.flex-box{border-bottom: 1px solid #d7dce6;}
  71. .calendar-day{height: 135px;border-left: 1px solid #d7dce6;cursor: pointer;position: relative;padding: 5px;width: 14.28571428%;border-bottom: 1px solid #d7dce6;}
  72. .calendar-days .calendar-day:first-child{border-left-width: 0;}
  73. .calendar-day:hover{-webkit-box-shadow: 0 0 0 1px #12b7f5 inset;box-shadow: 0 0 0 1px #12b7f5 inset;}
  74. .calendar-day.current-day{background-color: #ddf6fe;}
  75. .no-server{text-align: center;top: 50%;position: absolute;left: 0;right: 0;color: #c8c8c8;font-size: 18px;}
  76. /*彩带*/
  77. .coloured-ribbon{font-size: 12px;width: 22px;text-align: center;height: 40px;display: inline-block;padding-top: 8px;line-height: 1;color: #fff;}
  78. .coloured-box{top: 0;position: absolute;right: 5px;}
  79. .coloured-ribbon-blue{background: url(../images/biaoqian-lanse_img.png) center center / 100% 100% no-repeat;}
  80. .coloured-ribbon-green{background: url(../images/biaoqian-lvse_img.png) center center / 100% 100% no-repeat;margin-left: 5px;}
  81. .task-icon{position: absolute;right: 63px;top: 10px;min-height: 20px;}
  82. .task-icon .icon-check{position: absolute;right: -3px;bottom: 0;width: 15px;height: 15px;}
  83. .day-number{font-size: 28px;color: #999999;margin-bottom: 0;line-height: 1;}
  84. /*进度条*/
  85. .progress-box{position: absolute;bottom: 0;left: 0;right: 0;padding: 5px;}
  86. .progress-box .progress{margin-bottom: 9px;background-color: #d7dce6;border-radius: 10px;position: relative;}
  87. .progress-box .progress > span{position: absolute;left: 0;right: 0;text-align: center;color: #333333;top: 2px;}
  88. .progress-box .progress-bar{background-color: #12b7f5;}
  89. .progress-box .progress-bar-success{background-color: #2dbe55;}
  90. /*页头*/
  91. .page-title{position: fixed;top: 0;left: 0;right: 0;padding: 9px;border-bottom: 1px solid #d7dce6;z-index: 5;max-width: 1620px;margin: 0 auto;background-color: #fff}
  92. .page-title-name{padding-right: 15px;font-size: 14px;border-right: 1px solid #d7dce6;display: inline-block;margin-right: 10px;}
  93. .page-title span{vertical-align: middle;}
  94. .mr10{margin-right: 10px;}
  95. .page-title .icon{cursor: pointer;}
  96. .currentDay{font-size: 16px;margin: 0 25px;vertical-align: middle;width: 100px;text-align: justify;text-align-last: justify;display: inline-block;}
  97. .switch-list{border: solid 1px #12b7f5;border-radius: 6px;overflow: hidden;}
  98. .switch-list .icon{position: relative;top: 3px;}
  99. .rili,.shijianzhou{width: 40px;height: 28px;display: inline-block;float: left;background-color: #fff;}
  100. .rili.active,.shijianzhou.active,.rili:hover,.shijianzhou:hover{background-color: #12b7f5;border-radius: 5px;}
  101. /*列表展示*/
  102. .time-axis td{border: none !important;color: #999;}
  103. .time-axis th{background-color: #f5f5fa;border-bottom: solid 1px #d7dce6;}
  104. .time-axis td p{color: #999;}
  105. .ellipsis{white-space: nowrap;overflow: hidden;text-overflow: ellipsis;}
  106. .time{position: relative;}
  107. .time-box{position: relative;padding: 8px 50px 8px 8px!important;}
  108. .cur-status{position: absolute;z-index: 3;right: 5px;top: 50%;padding: 8px;line-height: 1;margin-top: -12.5px;border-radius: 100%;color: #fff;}
  109. .cur-status:empty{margin-top: -8px;right: 12.5px;background-color: #d7dce6;}
  110. [is-future="1"]{background-color: #dff5fc;}
  111. .time-axis tr:hover{background-color: #f5f5fa;}
  112. .time-axis tr:hover p{color: #333333;}
  113. [is-future="1"] .cur-status,[is-future="2"] .cur-status{background-color: #12b7f5;}
  114. [is-future="-1"] .cur-status{background-color: #ff3b30;}
  115. [is-future="3"] .cur-status{background-color: #5cb85c;}
  116. .time-box:after{content: '';position: absolute;right: 0;z-index: 2;right: 19px;height: 100%;width: 1px;background-color: #d7dce6;top: 50%;}
  117. .time-axis tr:nth-last-of-type(1) .time-box:after{display: none;}
  118. .view-task{text-align: center;cursor: pointer;}
  119. [v-cloak]{display: none;}
  120. .visibility-hide{visibility: hidden;}
  121. </style>
  122. </head>
  123. <body>
  124. <div class="c-container" id="app" v-cloak>
  125. <div class="page-title flex-box">
  126. <div class="flex-box-item mw400" flex-grow="2">
  127. <span class="page-title-name">康复计划</span><a class="icon icon-back icon-16 mr10" href="javascript:history.back();"></a><i class="icon icon-shuaxin icon-16" @click="refreshPage"></i>
  128. </div>
  129. <div class="flex-box-item text-center" flex-grow="5">
  130. <div class="pull-right switch-list">
  131. <span class="rili" :class="{active:(tabStatus==1)}" @click="tabStatus=1"><i class="icon icon-rili icon-20"></i></span>
  132. <span class="shijianzhou" :class="{active:(tabStatus==2)}" @click="tabStatus=2"><i class="icon icon-liebiao icon-20"></i></span>
  133. </div>
  134. <span style="position: relative;top: 5px;">
  135. <i class="icon icon-prev icon-20" @click="preMonth"></i>
  136. <span class="currentDay">{{currentDay}}</span>
  137. <i class="icon icon-next icon-20" @click="nextMonth"></i></span>
  138. </div>
  139. </div>
  140. <div class="flex-box rehabilition">
  141. <div class="flex-box-item search-left mw400" flex-grow="2">
  142. <div class="search-condition">
  143. <p>快速找任务</p>
  144. <ul class="task-list">
  145. <li :class="{'active':(searchTask==task.code)}" v-for="task in taskArr" @click="changeTask(task.code)">{{task.name}}</li>
  146. </ul>
  147. <p>任务状态</p>
  148. <ul class="task-list">
  149. <li :class="{'active':(status==sts.code)}" v-for="sts in statusArr" @click="changeStatus(sts.code)">{{sts.name}}</li>
  150. </ul>
  151. </div>
  152. <div class="text-center">
  153. <button class="btn btn-search" @click="goToLoadData">确认</button>
  154. </div>
  155. </div>
  156. <div class="flex-box-item nav-content-right" flex-grow="5">
  157. <div class="calendar-content" v-show="tabStatus==1">
  158. <div class="calendar-descript">
  159. <span>图例注释: </span><i class="icon icon-blue"></i> <span>专科团队</span>&emsp;<i class="icon icon-green"></i> <span>家医团队</span>&emsp; <i class="icon icon-flag"></i> <span>我的任务</span>
  160. </div>
  161. <div class="calendar-week">
  162. <div class="flex-box text-center">
  163. <div class="flex-box-item">
  164. 周一
  165. </div>
  166. <div class="flex-box-item">
  167. 周二
  168. </div>
  169. <div class="flex-box-item">
  170. 周三
  171. </div>
  172. <div class="flex-box-item">
  173. 周四
  174. </div>
  175. <div class="flex-box-item">
  176. 周五
  177. </div>
  178. <div class="flex-box-item">
  179. 周六
  180. </div>
  181. <div class="flex-box-item">
  182. 周日
  183. </div>
  184. </div>
  185. </div>
  186. <div class="calendar-days">
  187. <div class="flex-box">
  188. <div class="calendar-day" v-for="item in calendarData" @click="viewDetail(item.planDetailIds)">
  189. <span class="day-number">{{item.day}}</span>
  190. <div class="task-icon">
  191. <i v-if="item.myTaskFlag" class="icon icon-flag icon-20"></i>
  192. <i v-if="item.finishFlag" class="icon icon-check"></i>
  193. </div>
  194. <div class="coloured-box">
  195. <span v-if="item.specialist" class="coloured-ribbon coloured-ribbon-blue">专<br />科</span>
  196. <span v-if="item.family" class="coloured-ribbon coloured-ribbon-green">家<br />医</span>
  197. </div>
  198. <div class="progress-box">
  199. <div class="progress" :style="{opacity:item.specialist?'1':'0'}">
  200. <span>{{(item.specialist && item.specialist.finish)+'/'+(item.specialist && item.specialist.all)}}</span>
  201. <div class="progress-bar" role="progressbar" aria-valuenow="0" aria-valuemin="0" aria-valuemax="100" :style="{width: (item.specialist?(item.specialist.finish/item.specialist.all):0)*100+'%'}"></div>
  202. </div>
  203. <div class="progress" :style="{opacity:item.family?'1':'0'}">
  204. <span>{{(item.family && item.family.finish)+'/'+(item.family && item.family.all)}}</span>
  205. <div class="progress-bar progress-bar-success" role="progressbar" aria-valuenow="2" aria-valuemin="0" aria-valuemax="100" :style="{width: (item.family?(item.family.finish/item.family.all):0)*100+'%'}"></div>
  206. </div>
  207. <p v-if="!item.noService" class="mb0 f12" :class="{'visibility-hide':!curTask}" style="line-height: 1;">{{curTask==1?'我的任务':(curTask==2?'健康教育':(curTask==3?'复诊':(curTask==4?'随访':'&emsp;')))}}</p>
  208. </div>
  209. <p v-if="item.noService" class="no-server">无服务项</p>
  210. </div>
  211. </div>
  212. </div>
  213. </div>
  214. <div class="time-axis" v-show="tabStatus==2">
  215. <table class="table">
  216. <tr>
  217. <th style="padding-right: 50px;text-align: right;">时间</th>
  218. <th class="text-center">项目</th>
  219. <th>执行人员</th>
  220. <th>执行地点</th>
  221. <th>相关记录</th>
  222. <th class="text-center">状态</th>
  223. </tr>
  224. <tr v-for="item in timeAxisData" :is-future="item.future">
  225. <td class="time text-right time-box">
  226. <p class="mb5">{{item.date}}</p>
  227. <p class="mb0">{{item.time}}</p>
  228. <span class="cur-status">{{item.html}}</span>
  229. </td>
  230. <td class="project-name">
  231. <p class="mb5">{{item.title}}</p>
  232. <p class="ellipsis mb0">{{item.content}}</p>
  233. </td>
  234. <td class="executor">{{item.doctor_name}}</td>
  235. <td class="place-of-execution">{{item.hospital_name}}</td>
  236. <td class="view-task" @click="viewDetail(item.id)">查看</td>
  237. <td class="task-status">{{item.status==0?'未完成':(item.status==1?'已完成':'已预约')}}</td>
  238. </tr>
  239. <tr v-if="!timeAxisData.length">
  240. <td colspan="6" class="f16 ptb10 text-center">暂无数据</td>
  241. </tr>
  242. </div>
  243. </div>
  244. </div>
  245. </div>
  246. </div>
  247. <script type="text/javascript" src="../../../js/vue.js"></script>
  248. <script type="text/javascript" src="../../../js/jquery-2.2.4.js"></script>
  249. <script type="text/javascript" src="../../../api/http-request.js"></script>
  250. <script type="text/javascript" src="../../../plugins/layer/layer.min.js" ></script>
  251. <script type="text/javascript" src="../../../api/rehabilitation-api.js"></script>
  252. <script type="text/javascript" src="../../../js/underscore.js"></script>
  253. <script src="../../../js/util.js" type="text/javascript" charset="utf-8"></script>
  254. <script type="text/javascript">
  255. !function(){
  256. var httpData=GetRequest();
  257. var currentGMT=new Date();//当前时间GMT
  258. new Vue({
  259. el:"#app",
  260. data:{
  261. ynow: currentGMT.getFullYear(),//年份
  262. mnow: currentGMT.getMonth(),//月份(比实际少一个月---0开始至11)
  263. dnow: currentGMT.getDate(),//当前日
  264. currentDay:null,//带中文格式的当前年月
  265. currentDayForEn:null,//不带中文格式年月日2018/10/01如果写成/的话 转换成时间戳会变成北京时间8点
  266. calendarData:[],//日历数据
  267. timeAxisData:[],//时间轴数据
  268. __Data:[],//当前的年月(日历)
  269. __xData:[],//当前的年月(时间轴)
  270. status:null,//任务状态(0未完成,1已完成,2已预约)
  271. searchTask:null,//快速查找任务:(1、我的任务,2、健康教育,3、健康指导,4、随访)
  272. planId: httpData['planId'],
  273. taskArr:[
  274. {code:1,name:'我的任务'},
  275. {code:2,name:'健康教育'},
  276. {code:3,name:'复诊'},
  277. {code:4,name:'随访'},
  278. ],
  279. statusArr:[
  280. {code:0,name:'未完成'},
  281. {code:1,name:'已完成'},
  282. {code:2,name:'已预约'},
  283. ],
  284. curTask:'',//快速查找是否点击了搜索按钮
  285. tabStatus:null,
  286. },
  287. mounted:function(){
  288. if(!this.planId){
  289. layer.msg('未传入计划id(planId)',{icon:2})
  290. }else{
  291. this.tabStatus=1;
  292. }
  293. },
  294. methods:{
  295. refreshPage:function(){
  296. if(!this.planId){
  297. layer.msg('未传入计划id(planId)',{icon:2})
  298. return ;
  299. }
  300. this.goToLoadData(true);
  301. },
  302. viewDetail:function(planids){
  303. if(!planids){
  304. layer.msg('无服务项',{icon:5})
  305. return ;
  306. }
  307. // planids='402803f6657f195301657f4c4ce70000';
  308. layer.open({
  309. type: 2,
  310. area: ['600px', '650px'],
  311. shade: 0.5,
  312. title: '服务项目内容',
  313. fixed: true, //不固定
  314. maxmin: true,
  315. closeBtn:1,
  316. shift: 5,
  317. shadeClose: false, //点击遮罩关闭层
  318. content: '../../rehabilitation/html/service_item_content.html?planids='+planids
  319. });
  320. },
  321. changeStatus:function(val){
  322. this.status=this.status==val?null:val;
  323. },
  324. changeTask:function(val){
  325. this.searchTask=this.searchTask==val?null:val;
  326. },
  327. monDetail:function(){
  328. this.currentDay = this.ynow + '年'+ (this.mnow + 1) +'月';
  329. this.currentDayForEn=this.ynow+'/'+(this.mnow>=9?(this.mnow+1):"0"+(this.mnow+1))+'/'+(this.dnow>=9?this.dnow:"0"+this.dnow)
  330. },
  331. is_leap:function(year) { //判断是否为闰年
  332. return (year%100==0?res=(year%400==0?1:0):res=(year%4==0?1:0));
  333. },
  334. preMonth:function(){ //上一个月
  335. if(this.mnow<=0){
  336. this.mnow=11;
  337. this.ynow=this.ynow-1;
  338. }else{
  339. this.mnow--;
  340. }
  341. this.monDetail();
  342. this.goToLoadData(true);
  343. },
  344. getPreMouth:function(){
  345. var pMnow,pYnow;
  346. if(this.mnow<=0){
  347. pMnow=11;
  348. pYnow=this.ynow-1;
  349. }else{
  350. pMnow=this.mnow-1;
  351. pYnow=this.ynow;
  352. }
  353. var m_days=new Array(31,(28+this.is_leap(pYnow)),31,30,31,30,31,31,30,31,30,31); //每个月的天数
  354. return {
  355. days:m_days[pMnow],
  356. date:pYnow+'-'+(++pMnow>=10?pMnow:"0"+pMnow)
  357. }
  358. },
  359. nextMonth:function(){ //下一个月
  360. if(this.mnow>=11){
  361. this.mnow=0;
  362. this.ynow=this.ynow+1;
  363. }else{
  364. this.mnow++;
  365. }
  366. this.monDetail();
  367. this.goToLoadData(true);
  368. },
  369. getNextMouth:function(){
  370. var nMnow,nYnow;
  371. if(this.mnow>=11){
  372. nMnow=0;
  373. nYnow=this.ynow+1;
  374. }else{
  375. nMnow=this.mnow+1;
  376. nYnow=this.ynow;
  377. }
  378. var m_days=new Array(31,(28+this.is_leap(nYnow)),31,30,31,01,31,31,30,31,30,31); //每个月的天数
  379. return {
  380. days:m_days[nMnow],
  381. date:nYnow+'-'+(++nMnow>=10?nMnow:"0"+nMnow)
  382. }
  383. },
  384. goToLoadData:function(flag){//flag是否更新数据
  385. this.tabStatus==1 && (!this.calendarData.length || flag) && this.calendar();
  386. this.tabStatus==2 && (!this.timeAxisData.length || flag) && this.timeAxis();
  387. },
  388. calendar:function(){
  389. var nlstr = new Date(this.ynow,this.mnow,1); //当月第一天
  390. var firstday = nlstr.getDay()-1;//第一天星期几,默认是周日 我们改成周一
  391. firstday=firstday==-1?6:firstday;//如果是-1,说明当月的第一天是周日
  392. var m_days=new Array(31,(28+this.is_leap(this.ynow)),31,30,31,30,31,31,30,31,30,31); //每个月的天数
  393. var tr_str=Math.ceil((m_days[this.mnow] + firstday)/7); //当前月天数+第一天是星期几的数值 获得 表格行数
  394. var c_days=m_days[this.mnow];//当前月份的天数
  395. var p_arr=this.getPreMouth();
  396. var n_arr=this.getNextMouth();
  397. var i,k,idx,date_str;
  398. var dataArr=[];//天数/年月
  399. for(i=0;i<tr_str;i++) { //表格的行
  400. for(k=0;k<7;k++) { //表格每行的单元格
  401. idx=i*7+k; //单元格自然序列号
  402. date_str=idx-firstday+1; //计算日期
  403. var __ym;
  404. if(date_str<=0){//过滤无效日期(小于等于零的、大于月总天数的)
  405. date_str=date_str+p_arr['days'];//当前日期+上个月的天数就是上个月的日期
  406. __ym=p_arr['date'];
  407. }else if(date_str>c_days){
  408. date_str=date_str-c_days;//下个月的日期就是这个月的天数-当月的天数
  409. __ym=n_arr['date'];
  410. }else{
  411. __ym=this.ynow+'-'+(this.mnow>=9?"":"0")+(this.mnow+1);
  412. }
  413. dataArr.push({
  414. day:date_str,
  415. date:__ym
  416. });
  417. }
  418. }
  419. this.__Data=dataArr;
  420. this.monDetail();
  421. this.calenderPlanDetail();
  422. },
  423. // 日历请求
  424. calenderPlanDetail:function(){
  425. var vm=this;
  426. var __days=vm.__Data;
  427. var lastDay=(__days.concat()).pop().day;
  428. lastDay=lastDay>9?lastDay:'0'+lastDay;
  429. var params={
  430. executeStartTime:__days[0].date+'-'+__days[0].day+' 00:00:00',//日历开始时间(格式:yyyy-MM-dd HH:mm:ss)
  431. executeEndTime:(__days.concat()).pop().date+'-'+lastDay+' 23:59:59',//日历结束时间(格式:yyyy-MM-dd HH:mm:ss)
  432. planId:vm.planId,//计划id
  433. searchTask:vm.searchTask,//快速查找任务:(1、我的任务,2、健康教育,3、健康指导,4、随访)
  434. status:vm.status,//任务状态(0未完成,1已完成,2已预约)
  435. }
  436. rehaAPI.calendarPlanDetail(params).then(function(res){
  437. vm.curTask=vm.searchTask;
  438. vm.calendarData=[];
  439. if(res.status==200){
  440. var data=res.data
  441. for(var i in __days){
  442. var _key=__days[i].date+'-'+(__days[i].day>9?__days[i].day:'0'+__days[i].day);
  443. var item={
  444. noService:true,
  445. day:__days[i].day
  446. };
  447. for(var j in data){
  448. if(_key==j){
  449. item=data[j];
  450. item.day=__days[i].day;
  451. var finishFlag=false;
  452. var sFlag=false;
  453. var fFlag=false;
  454. if(item.specialist){
  455. if(item.specialist.all==item.specialist.finish){
  456. sFlag=true;
  457. }
  458. }else{
  459. sFlag = true;
  460. }
  461. if(item.family){
  462. if(item.family.all==item.family.finish){
  463. fFlag = true;
  464. }
  465. }else{
  466. fFlag = true;
  467. }
  468. finishFlag = sFlag && fFlag;
  469. item.finishFlag=finishFlag;
  470. data.length && data.splice(j,1);
  471. break;
  472. }
  473. }
  474. vm.calendarData.push(item);
  475. }
  476. }
  477. })
  478. },
  479. // 时间轴请求
  480. timeAxis:function(){
  481. var m_days=new Array(31,(28+this.is_leap(this.ynow)),31,30,31,30,31,31,30,31,30,31); //每个月的天数
  482. var c_days=m_days[this.mnow];//当前月份的天数
  483. var __ym=this.ynow+'-'+(this.mnow>=9?"":"0")+(this.mnow+1);
  484. var dataArr=[];//天数/年月
  485. for(;c_days>0;c_days--){
  486. dataArr.push({
  487. day:c_days,
  488. date:__ym
  489. });
  490. }
  491. this.__xData=dataArr;
  492. this.monDetail();
  493. this.calendarPlanDetailList();
  494. },
  495. // 时间轴请求
  496. calendarPlanDetailList:function(){
  497. var vm=this;
  498. var __days=vm.__xData;
  499. var lastDay=(__days.concat()).pop().day;
  500. lastDay=lastDay>9?lastDay:'0'+lastDay;
  501. var params={
  502. executeEndTime:__days[0].date+'-'+__days[0].day+' 00:00:00',//日历开始时间(格式:yyyy-MM-dd HH:mm:ss)
  503. executeStartTime:(__days.concat()).pop().date+'-'+lastDay+' 23:59:59',//日历结束时间(格式:yyyy-MM-dd HH:mm:ss)
  504. planId:vm.planId,//计划id
  505. searchTask:vm.searchTask,//快速查找任务:(1、我的任务,2、随访,3、复诊,4、健康教育)
  506. status:vm.status,//任务状态(0未完成,1已完成,2已预约)
  507. }
  508. rehaAPI.calendarPlanDetailList(params).then(function(res){
  509. if(res.status==200){
  510. var _currentTimeStamp=+new Date(vm.currentDayForEn);
  511. vm.timeAxisData=_.map(res.data||{},function(o){
  512. var _time=o.executeTime.split(' ');
  513. var thatTime=+new Date(_time[0]);
  514. var future=_currentTimeStamp>thatTime?0:(_currentTimeStamp==thatTime?1:2);
  515. (o.status==0 && _currentTimeStamp>thatTime) && (future=-1)
  516. console.log(future)
  517. var _html=o.status==2?'预':(future==-1?'逾':'');
  518. _html=future==1?'今':_html;
  519. if(_html=='预') future=3;
  520. o.html=_html
  521. o.date=_time[0];
  522. o.time=_time[1];
  523. o.future=future;
  524. return o;
  525. })||[];
  526. }
  527. console.log(vm.timeAxisData)
  528. })
  529. },
  530. },
  531. watch:{
  532. tabStatus:function(){
  533. this.goToLoadData();
  534. }
  535. }
  536. })
  537. }();
  538. </script>
  539. </body>
  540. </html>