scheduling.vue 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123
  1. <template>
  2. <view class="uni-calendar">
  3. <Calendar ref="calendar" class="uni-calendar--hook" :clear-date="false" :date="info.date" :insert="info.insert"
  4. :lunar="info.lunar" :range="info.range" @change="change" :clearDate="true" @confirm="confirm"
  5. :selected="selected" @delete="onDelete" />
  6. <CustomTabBar :page="1" />
  7. </view>
  8. </template>
  9. <script setup>
  10. import {
  11. ref,
  12. onMounted,
  13. watch,
  14. computed,
  15. provide
  16. } from 'vue';
  17. import {
  18. workDate,
  19. getDataTime,
  20. getVolunteerInfo
  21. } from '@/api/volunteer.js'
  22. import {
  23. volunteerSeachgetTreeList,
  24. volunteerDataList
  25. } from "@/api/volunteerDetailsApi/details.js"
  26. import {
  27. onLoad,
  28. onShow
  29. } from '@dcloudio/uni-app';
  30. import CustomTabBar from '@/components/CustomTabBar/index.vue'
  31. import Calendar from '@/components/uni-calendar/components/uni-calendar/uni-calendar.vue'
  32. const selected = ref([])
  33. const info = ref({
  34. lunar: true,
  35. range: true,
  36. insert: true,
  37. })
  38. const calendar = ref(null)
  39. const change = (e) => {
  40. console.log('change', e);
  41. let dates = [{
  42. date: e.fulldate,
  43. info: `${e.time.startTime}~${e.time.endTime}`,
  44. time: e.time
  45. }]
  46. if (e.range.before && e.range.after) {
  47. dates = e.range.data.map(item => {
  48. return {
  49. date: item,
  50. info: `${e.time.startTime}~${e.time.endTime}`,
  51. time: e.time
  52. }
  53. })
  54. }
  55. selected.value = [...selected.value, ...dates]
  56. }
  57. const onDelete = (e) => {
  58. selected.value = selected.value.filter(item => {
  59. console.log('item.fulldate !== e.date', item.date, e.fulldate);
  60. return item.date !== e.fulldate
  61. })
  62. console.log(e, selected.value);
  63. }
  64. const confirm = (e) => {
  65. const parmas = handleDates.value;
  66. console.log('确定', parmas);
  67. workDate(parmas).then(res => {
  68. if (res.code == 200) {
  69. uni.showToast({
  70. title: '修改成功',
  71. icon: 'success',
  72. success: () => {
  73. setTimeout(() => {
  74. close();
  75. }, 1000)
  76. }
  77. })
  78. return;
  79. }
  80. uni.showToast({
  81. title: res.msg,
  82. icon: 'none'
  83. })
  84. })
  85. };
  86. const close = () => {
  87. calendar.value.close();
  88. }
  89. const init = () => {
  90. getDataTime().then(res => {
  91. console.log('res', res);
  92. if (res.code === 200) {
  93. selected.value = res.data.map(item => {
  94. return {
  95. date: item.workDate,
  96. info: `${item.workStartTime}~${item.workEndTime}`,
  97. time: {
  98. startTime: item.workStartTime,
  99. endTime: item.workEndTime
  100. }
  101. }
  102. })
  103. calendar.value.open();
  104. }
  105. })
  106. }
  107. onShow(() => {
  108. init();
  109. })
  110. onMounted(() => {
  111. });
  112. </script>