calendar.vue 3.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106
  1. <template>
  2. <drawer-tabs-container>
  3. <div class="todo-calendar">
  4. <FullCalendar :events="lists" :loading="loadIng>0" @eventClick="clickEvent" lang="zh" @change="changeDateRange"></FullCalendar>
  5. </div>
  6. </drawer-tabs-container>
  7. </template>
  8. <style lang="scss" scoped>
  9. .todo-calendar {
  10. }
  11. </style>
  12. <script>
  13. import DrawerTabsContainer from "../../DrawerTabsContainer";
  14. import FullCalendar from "../../FullCalendar/FullCalendar";
  15. export default {
  16. name: 'TodoCalendar',
  17. components: {FullCalendar, DrawerTabsContainer},
  18. props: {
  19. },
  20. data () {
  21. return {
  22. loadIng: 0,
  23. lists: [],
  24. startdate: '',
  25. enddate: '',
  26. }
  27. },
  28. created() {
  29. },
  30. mounted() {
  31. },
  32. methods: {
  33. clickEvent(event, jsEvent){
  34. console.log(event, jsEvent)
  35. },
  36. changeDateRange(startdate, enddate){
  37. this.startdate = startdate;
  38. this.enddate = enddate;
  39. this.getLists(1);
  40. },
  41. getLists(page) {
  42. this.lists = [];
  43. this.loadIng++;
  44. $A.aAjax({
  45. url: 'project/task/lists',
  46. data: {
  47. startdate: this.startdate,
  48. enddate: this.enddate,
  49. page: page,
  50. pagesize: 100
  51. },
  52. complete: () => {
  53. this.loadIng--;
  54. },
  55. success: (res) => {
  56. if (res.ret === 1) {
  57. let inLists,
  58. data;
  59. res.data.lists.forEach((temp) => {
  60. let title = temp.title;
  61. let startdate = temp.startdate || temp.indate;
  62. let enddate = temp.enddate || temp.indate;
  63. if (startdate != enddate) {
  64. title = $A.formatDate('H:i', startdate) + "~" + $A.formatDate('H:i', enddate) + " " + title;
  65. } else {
  66. title = $A.formatDate('H:i', startdate) + " " + title;
  67. }
  68. data = {
  69. "id": temp.id,
  70. "start": $A.formatDate('Y-m-d H:i:s', startdate),
  71. "end": $A.formatDate('Y-m-d H:i:s', enddate),
  72. "title": title,
  73. "color": "#D8F8F2",
  74. "avatar": temp.userimg,
  75. "name": temp.nickname || temp.username
  76. };
  77. inLists = false;
  78. this.lists.some((item, i) => {
  79. if (item.id == data.id) {
  80. this.lists.splice(i, 1, data);
  81. return inLists = true;
  82. }
  83. });
  84. if (!inLists) {
  85. this.lists.push(data);
  86. }
  87. });
  88. if (res.data.hasMorePages === true) {
  89. this.getLists(res.data.currentPage + 1)
  90. }
  91. }
  92. }
  93. });
  94. },
  95. }
  96. }
  97. </script>