details.vue 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170
  1. <template>
  2. <view class="center">
  3. <scroll-view scroll-y="true">
  4. <view v-for="(item,index) in leaveList" :key="index">
  5. <view class="leave">
  6. <view class="type">已通过</view>
  7. <view class="top flex">
  8. <image src="../../static/img/indexKcpj.png"></image>
  9. <view class="font">
  10. <view class="title">请假</view>
  11. <view class="time">time</view>
  12. </view>
  13. </view>
  14. <view class="leavefont">请假类型:事假</view>
  15. <view class="leavefont">开始时间:{{item.timetable.start_time}}</view>
  16. <view class="leavefont">结束时间:{{item.timetable.end_time}}</view>
  17. <view class="leavefont">理由:{{ item.reason }}</view>
  18. </view>
  19. </view>
  20. <uni-load-more :status="loadingType"></uni-load-more>
  21. </scroll-view>
  22. </view>
  23. </template>
  24. <script>
  25. import { getLeave } from '@/api/course.js';
  26. import uniLoadMore from '@/components/uni-load-more/uni-load-more.vue';
  27. export default {
  28. components: {
  29. uniLoadMore
  30. },
  31. data() {
  32. return{
  33. page: 1,
  34. limit: 10,
  35. loadingType: 'more',
  36. leaveList:[]
  37. }
  38. },
  39. onLoad() {
  40. this.loadData()
  41. },
  42. //下拉刷新
  43. onPullDownRefresh() {
  44. this.loadData('refresh');
  45. },
  46. //监听页面是否滚动到底部加载更多
  47. onReachBottom() {
  48. this.loadData();
  49. },
  50. methods: {
  51. async loadData(type = 'add', loading){
  52. let obj = this;
  53. if (type === 'add') {
  54. if (obj.loadingType === 'nomore') {
  55. return;
  56. }
  57. obj.loadingType = 'loading';
  58. } else {
  59. obj.loadingType = 'more';
  60. }
  61. if (type === 'refresh') {
  62. // 清空数组
  63. obj.courseList = [];
  64. obj.page = 1
  65. }
  66. //获取反馈列表
  67. getLeave({
  68. page: obj.page,
  69. limit: obj.limit
  70. }).then(({data}) => {
  71. console.log(data)
  72. for(let i = 0;i<data.count;i++){
  73. console.log(data.data[i])
  74. data.data[i].timetable.add_time = obj.timestampToTime(data.data[i].timetable.add_time);
  75. data.data[i].timetable.end_time = obj.timestampToTime(data.data[i].timetable.end_time);
  76. data.data[i].timetable.start_time = obj.timestampToTime(data.data[i].timetable.start_time);
  77. }
  78. obj.leaveList = obj.leaveList.concat(data.data);
  79. console.log(obj.leaveList)
  80. // 判断是否还有下一页,有是more 没有是nomore
  81. if (obj.limit==data.count) {
  82. obj.page++
  83. obj.loadingType='more'
  84. } else{
  85. obj.loadingType='nomore'
  86. }
  87. if (type === 'refresh') {
  88. if (loading == 1) {
  89. uni.hideLoading();
  90. } else {
  91. uni.stopPullDownRefresh();
  92. }
  93. }
  94. })
  95. },
  96. timestampToTime(timestamp) {
  97. var date = new Date(timestamp * 1000);//时间戳为10位需*1000,时间戳为13位的话不需乘1000
  98. var Y = date.getFullYear() + '/';
  99. var M = (date.getMonth()+1 < 10 ? '0'+(date.getMonth()+1):date.getMonth()+1) + '/';
  100. var D = (date.getDate()< 10 ? '0'+date.getDate():date.getDate())+ ' ';
  101. var h = (date.getHours() < 10 ? '0'+date.getHours():date.getHours())+ ':';
  102. var m = (date.getMinutes() < 10 ? '0'+date.getMinutes():date.getMinutes()) + ':';
  103. var s = date.getSeconds() < 10 ? '0'+date.getSeconds():date.getSeconds();
  104. return Y+M+D+h+m+s;
  105. }
  106. }
  107. }
  108. </script>
  109. <style lang="scss">
  110. .leave {
  111. position: relative;
  112. padding-left: 24rpx;
  113. padding-top: 34rpx;
  114. margin: 0 auto;
  115. margin: 20rpx;
  116. padding-bottom: 20rpx;
  117. background: #FFFFFF;
  118. box-shadow: 0px 5rpx 24rpx 0px rgba(4, 0, 0, 0.06);
  119. border-radius: 15rpx;
  120. .type {
  121. position: absolute;
  122. top: 38rpx;
  123. right: 32rpx;
  124. width: 97rpx;
  125. height: 38rpx;
  126. background: #FCF0D8;
  127. border-radius: 5rpx;
  128. text-align: center;
  129. font-size: 22rpx;
  130. font-weight: 500;
  131. color: #FEA42C;
  132. line-height: 38rpx;
  133. }
  134. .top {
  135. justify-content: start;
  136. margin-bottom: 34rpx;
  137. image {
  138. width: 63rpx;
  139. height: 66rpx;
  140. }
  141. .font {
  142. margin-left: 10rpx;
  143. .title {
  144. font-size: 32rpx;
  145. font-family: PingFang SC;
  146. font-weight: bold;
  147. color: #303338;
  148. }
  149. .time {
  150. font-size: 24rpx;
  151. font-family: PingFang SC;
  152. font-weight: 500;
  153. color: #989DA5;
  154. }
  155. }
  156. }
  157. .leavefont {
  158. font-size: 28rpx;
  159. font-weight: 500;
  160. color: #808080;
  161. margin-bottom: 10rpx;
  162. overflow: hidden;
  163. text-overflow: ellipsis;
  164. white-space: nowrap;
  165. }
  166. }
  167. </style>