statisticalReport.vue 5.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246
  1. <!-- 统计报表 -->
  2. <template>
  3. <view class="report">
  4. <view class="report-header">
  5. <view class="report-header-left" @click="typePicker = true">
  6. <u-icon name="arrow-down" color="#000" size="15"></u-icon>
  7. <text>{{ currentType.text }}</text>
  8. </view>
  9. <view class="report-header-right" v-if="currentType.value === 6">
  10. <view class="tab">
  11. <view class="tab-item" v-for="(item, index) in tabList" :key="index"
  12. :class="{'active': tabCur === item.value}" @click="tabClick(item)">{{ item.label }}</view>
  13. </view>
  14. </view>
  15. <view class="report-header-right" v-else>
  16. <uni-datetime-picker v-model="curDate" type="daterange" @change="dateChange">
  17. <u--text text="日期查询" color="#1767F2"></u--text>
  18. </uni-datetime-picker>
  19. </view>
  20. </view>
  21. <view class="report-content">
  22. <template v-if="currentType.value === 1">
  23. <TollCollectorPerformance :currentDate="curDate"/>
  24. </template>
  25. <template v-else-if="currentType.value === 2">
  26. <SectionBerth :currentDate="curDate"/>
  27. </template>
  28. <template v-else-if="currentType.value === 3">
  29. <ParkingReallyIncome :currentDate="curDate"/>
  30. </template>
  31. <template v-else-if="currentType.value === 4">
  32. <ArrearsReport :currentDate="curDate"/>
  33. </template>
  34. <template v-else-if="currentType.value === 5">
  35. <RevenueReport :currentDate="curDate"/>
  36. </template>
  37. <template v-else-if="currentType.value === 6">
  38. <ReallyReceivable :currentDate="curDate"/>
  39. </template>
  40. <template v-else-if="currentType.value === 7">
  41. <CheckWorkAttendance :currentDate="curDate"/>
  42. </template>
  43. </view>
  44. <!-- 报表类型 -->
  45. <u-picker :show="typePicker" :columns="typeList" @confirm="typeConfirm" @cancel="typePicker = false"></u-picker>
  46. <!-- 年 -->
  47. <u-picker :show="yearPicker" :columns="yearList" :defaultIndex="defaultYear" @confirm="yearConfirm"
  48. @cancel="yearPicker = false"></u-picker>
  49. <!-- 月 -->
  50. <u-picker :show="monthPicker" :columns="monthList" :defaultIndex="defaultMonth" @confirm="monthConfirm"
  51. @cancel="monthPicker = false"></u-picker>
  52. <!-- 日 -->
  53. <u-picker :show="dayPicker" :columns="dayList" :defaultIndex="defaultDay" @confirm="dayConfirm"
  54. @cancel="dayPicker = false"></u-picker>
  55. </view>
  56. </template>
  57. <script>
  58. import TollCollectorPerformance from './components/tollCollectorPerformance.vue'
  59. import SectionBerth from './components/sectionBerth.vue'
  60. import ParkingReallyIncome from './components/parkingReallyIncome.vue'
  61. import ArrearsReport from './components/arrearsReport.vue'
  62. import RevenueReport from './components/revenueReport.vue'
  63. import ReallyReceivable from './components/reallyReceivable.vue'
  64. import CheckWorkAttendance from './components/checkWorkAttendance.vue'
  65. export default {
  66. components: {
  67. TollCollectorPerformance,
  68. SectionBerth,
  69. ParkingReallyIncome,
  70. ArrearsReport,
  71. RevenueReport,
  72. ReallyReceivable,
  73. CheckWorkAttendance
  74. },
  75. data() {
  76. return {
  77. tabList: [{
  78. label: '年',
  79. value: 1
  80. },
  81. {
  82. label: '月',
  83. value: 2
  84. },
  85. {
  86. label: '日',
  87. value: 3
  88. }
  89. ],
  90. currentType: {},
  91. tabCur: 1,
  92. typePicker: false,
  93. typeList: [[
  94. {
  95. text: '收费员业绩统计',
  96. value: 1
  97. },
  98. {
  99. text: '路段泊位统计',
  100. value: 2
  101. },
  102. {
  103. text: '停车场实收统计',
  104. value: 3
  105. },
  106. {
  107. text: '欠费统计',
  108. value: 4
  109. },
  110. {
  111. text: '营收统计',
  112. value: 5
  113. },
  114. {
  115. text: '应收实收分析',
  116. value: 6
  117. },
  118. {
  119. text: '考勤统计',
  120. value: 7
  121. }
  122. ]],
  123. // 日期
  124. curDate: [],
  125. // 年
  126. yearPicker: false,
  127. yearList: this.getYearList(),
  128. defaultYear: [4],
  129. title: '2022年',
  130. // 月
  131. monthPicker: false,
  132. monthList: this.getMonthList(),
  133. defaultMonth: [],
  134. // 日
  135. dayPicker: false,
  136. dayList: this.getDayList(),
  137. defaultDay: []
  138. }
  139. },
  140. onShow() {
  141. this.currentType = this.typeList[0][0]
  142. },
  143. methods: {
  144. getYearList() {
  145. const date = new Date()
  146. const year = date.getFullYear();
  147. const list = [
  148. []
  149. ]
  150. for (let i = year - 4; i < year + 1; i++) {
  151. const obj = {
  152. text: i + '年',
  153. value: i
  154. }
  155. list[0].push(obj)
  156. }
  157. return list
  158. },
  159. getMonthList() {
  160. const date = new Date()
  161. const month = date.getMonth()
  162. const list = [
  163. []
  164. ]
  165. for (let i = 1; i < 13; i++) {
  166. const obj = {
  167. text: i + '月',
  168. value: i
  169. }
  170. list[0].push(obj)
  171. }
  172. setTimeout(() => {
  173. this.defaultMonth = [month]
  174. }, 1000)
  175. return list
  176. },
  177. getDayList() {
  178. const date = new Date()
  179. const year = date.getFullYear()
  180. const month = date.getMonth()
  181. const day = date.getDate()
  182. const dayLen = (new Date(year, month, 0)).getDate()
  183. const list = [
  184. []
  185. ]
  186. for (let i = 1; i < dayLen + 1; i++) {
  187. const obj = {
  188. text: i + '日',
  189. value: i
  190. }
  191. list[0].push(obj)
  192. }
  193. setTimeout(() => {
  194. this.defaultDay = [day - 1]
  195. }, 1000)
  196. return list
  197. },
  198. tabClick(item) {
  199. this.tabCur = item.value
  200. switch (item.value) {
  201. case 1:
  202. this.yearPicker = true
  203. break
  204. case 2:
  205. this.monthPicker = true
  206. break
  207. case 3:
  208. this.dayPicker = true
  209. break
  210. }
  211. },
  212. typeConfirm(e) {
  213. console.log(e)
  214. this.currentType = e.value[0]
  215. this.typePicker = false
  216. },
  217. dateChange(e) {
  218. console.log(e)
  219. },
  220. yearConfirm(e) {
  221. this.defaultYear = [e.indexs[0]]
  222. this.yearPicker = false
  223. },
  224. monthConfirm(e) {
  225. this.defaultMonth = [e.indexs[0]]
  226. this.monthPicker = false
  227. },
  228. dayConfirm(e) {
  229. this.defaultDay = [e.indexs[0]]
  230. this.dayPicker = false
  231. }
  232. }
  233. }
  234. </script>
  235. <style lang="scss">
  236. page {
  237. background-color: #1767F2;
  238. min-height: calc(100vh - 44px);
  239. }
  240. </style>
  241. <style lang="scss" scoped>
  242. @import './statisticalReport.scss';
  243. </style>