yangzj 2 years ago
parent
commit
af6913f2c7
36 changed files with 726 additions and 1729 deletions
  1. 46 75
      App.vue
  2. 1 1
      common/config.js
  3. 76 63
      components/tableRanking.vue
  4. 4 7
      pages/dataOverview/operationalAnalysis/operationalAnalysis.scss
  5. 2 2
      pages/dataOverview/operationalAnalysis/operationalAnalysis.vue
  6. 0 169
      pages/dataOverview/statisticalReport/components/arrearsReport.vue
  7. 0 129
      pages/dataOverview/statisticalReport/components/checkWorkAttendance.vue
  8. 0 106
      pages/dataOverview/statisticalReport/components/parkingReallyIncome.vue
  9. 0 147
      pages/dataOverview/statisticalReport/components/reallyReceivable.vue
  10. 0 68
      pages/dataOverview/statisticalReport/components/report.scss
  11. 0 144
      pages/dataOverview/statisticalReport/components/revenueReport.vue
  12. 0 118
      pages/dataOverview/statisticalReport/components/sectionBerth.vue
  13. 0 120
      pages/dataOverview/statisticalReport/components/tollCollectorPerformance.vue
  14. 3 6
      pages/dataOverview/statisticalReport/statisticalReport.scss
  15. 2 2
      pages/dataOverview/statisticalReport/statisticalReport.vue
  16. 1 1
      pages/dataOverview/todayOverview/todayOverview.scss
  17. 5 5
      pages/dataOverview/todayOverview/todayOverview.vue
  18. 4 4
      pages/index/index.scss
  19. 293 266
      pages/index/index.vue
  20. 35 11
      pages/operationalAnalysis/parkModel/index.vue
  21. 40 12
      pages/operationalAnalysis/roadModel/index.vue
  22. 20 22
      pages/operationalAnalysis/styles/analysis.scss
  23. 4 4
      pages/statisticalReport/parkModel/components/arrearsReport.vue
  24. 2 2
      pages/statisticalReport/parkModel/components/parkingReallyIncome.vue
  25. 2 2
      pages/statisticalReport/parkModel/components/reallyReceivable.vue
  26. 0 68
      pages/statisticalReport/parkModel/components/report.scss
  27. 2 2
      pages/statisticalReport/parkModel/components/revenueReport.vue
  28. 65 24
      pages/statisticalReport/parkModel/index.vue
  29. 2 2
      pages/statisticalReport/roadModel/components/arrearsReport.vue
  30. 2 2
      pages/statisticalReport/roadModel/components/reallyReceivable.vue
  31. 2 2
      pages/statisticalReport/roadModel/components/recoveryReport.vue
  32. 0 68
      pages/statisticalReport/roadModel/components/report.scss
  33. 2 2
      pages/statisticalReport/roadModel/components/revenueReport.vue
  34. 2 2
      pages/statisticalReport/roadModel/components/sectionBerth.vue
  35. 65 23
      pages/statisticalReport/roadModel/index.vue
  36. 44 48
      pages/statisticalReport/styles/report.scss

+ 46 - 75
App.vue

@@ -77,87 +77,58 @@ export default {
 				});
 		},
 		/**
-		 * 下载文件
+		 * 下载app通过downloadFile
 		 */
 		downloadAppFile() {
 			const _this = this
-			// uni.showLoading({
-			// 	mask: true,
-			// 	title: '下载中...'
-			// })
-			// let downloadTask = uni.downloadFile({ // 执行下载
-			// 	url: _this.downloadUrl,
-			// 	success: downloadResult => {
-			// 		// 下载成功
-			// 		if (downloadResult.statusCode === 200) {
-			// 			uni.showModal({
-			// 				title: '',
-			// 				content: '下载成功,确定现在安装吗?',
-			// 				confirmText: '安装',
-			// 				confirmColor: '#EE8F57',
-			// 				success: function(res) {
-			// 					if (res.confirm) {
-			// 						plus.runtime.install( // 安装
-			// 							downloadResult.tempFilePath, {
-			// 								force: true
-			// 							},
-			// 							function() {
-			// 								plus.runtime.restart();
-			// 								uni.navigateBack()
-			// 							},
-			// 							function(e) {
-			// 								utils.showToast('安装失败');
-			// 							}
-			// 						);
-			// 					}
-			// 				}
-			// 			});
-			// 		}
-			// 	},
-			// 	complete: (res) => {
-			// 		uni.hideLoading();
-			// 	}
-			// });
-			// downloadTask.onProgressUpdate((res) => {
-			// 	if (res.progress === 100) {
-			// 		uni.hideLoading();
-			// 	}
-			// });
-			// #ifdef APP-PLUS
-			const dtask = plus.downloader.createDownload(_this.downloadUrl, { force: true }, function(d, status) {
-				// 下载完成
-				if (status == 200) {
-					var path = d.filename; //文件安装路径
-					plus.runtime.install(
-						path,
-						{},
-						function() {
-							plus.nativeUI.closeWaiting(); //关闭系统等待对话框
-							if (name == 'wgt') {
-								console.log('安装wgt文件成功!');
-							} else {
-								console.log('安装apk文件成功!');
-							}
-							plus.nativeUI.alert('安装成功!', function() {
-								plus.runtime.restart();
-							});
-						},
-						function(e) {
-							plus.nativeUI.closeWaiting(); //关闭系统等待对话框
-							if (name == 'wgt') {
-								console.log('安装wgt文件失败[' + e.code + ']:' + e.message);
-								plus.nativeUI.alert('安装wgt文件失败[' + e.code + ']:' + e.message);
-							} else {
-								console.log('安装apk文件失败[' + e.code + ']:' + e.message);
-								plus.nativeUI.alert('安装apk文件失败[' + e.code + ']:' + e.message);
+			uni.showLoading({
+				mask: true,
+				title: '下载中...'
+			})
+			let downloadTask = uni.downloadFile({ // 执行下载
+				url: _this.downloadUrl,
+				success: downloadResult => {
+					// 下载成功
+					if (downloadResult.statusCode === 200) {
+						uni.showModal({
+							title: '',
+							content: '下载成功,确定现在安装吗?',
+							confirmText: '安装',
+							confirmColor: '#EE8F57',
+							success: function(res) {
+								if (res.confirm) {
+									plus.runtime.install( // 安装
+										downloadResult.tempFilePath, {
+											force: true
+										},
+										function() {
+											plus.runtime.restart();
+											uni.navigateBack()
+										},
+										function(e) {
+											utils.showToast('安装失败');
+										}
+									);
+								}
 							}
-						}
-					);
-				} else {
-					alert('下载失败:' + status);
+						});
+					}
+				},
+				complete: (res) => {
+					uni.hideLoading();
 				}
 			});
-			// #endif
+			downloadTask.onProgressUpdate((res) => {
+				if (res.progress === 100) {
+					uni.hideLoading();
+				}
+			});
+		},
+		/**
+		 * 下载app通过后台任务栏
+		 */
+		downloadAppFileByBackstage() {
+			
 		},
 		/**
 		 * 下载app通过浏览器

+ 1 - 1
common/config.js

@@ -4,5 +4,5 @@ if (process.env.NODE_ENV === 'development') {
 }
 export const config = {
 	baseUrl,
-	version: '0.3.2'
+	version: '0.3.4'
 }

+ 76 - 63
components/tableRanking.vue

@@ -1,70 +1,83 @@
 <!-- 表格 -->
 <template>
-	<view class="container">
-		<view class="table" :style="{ padding: padding }">
-			<view class="table-title" v-if="title">{{ title }}</view>
-			<view class="table-box">
-				<uni-table emptyText="暂无更多数据" :loading="loading">
-					<!-- 表头行 -->
-					<uni-tr>
-						<uni-th class="table-box-th" align="center" v-for="(item, index) in tableTh" :key="index"
-							:width="item.width || ''">{{ item.field }}
-						</uni-th>
-					</uni-tr>
-					<!-- 表格数据行 -->
-					<uni-tr v-for="(item, index) in tableData.list" :key="index">
-						<uni-td class="table-box-td" align="center" v-for="(field, index) in tableTh" :key="index">
-							{{ item[field.key] || item[field.key] === 0 ? item[field.key] : '-' }}</uni-td>
-					</uni-tr>
-				</uni-table>
-			</view>
-			<view class="table-pagination" v-if="tableData.total > 0">
-				<uni-pagination show-icon="true" :total="tableData.total" :current="tableData.current" @change="pageChange"></uni-pagination>
-			</view>
-		</view>
-	</view>
+  <view class="container">
+    <view class="table" :style="{ padding: padding }">
+      <view class="table-title" v-if="title">{{ title }}</view>
+      <view class="table-box">
+        <uni-table emptyText="暂无更多数据" :loading="loading">
+          <!-- 表头行 -->
+          <uni-tr>
+            <uni-th
+              class="table-box-th"
+              align="center"
+              v-for="(item, index) in tableTh"
+              :key="index"
+              :width="item.width || ''"
+            >{{ item.field }}</uni-th>
+          </uni-tr>
+          <!-- 表格数据行 -->
+          <uni-tr v-for="(item, index) in tableData.list" :key="index">
+            <uni-td
+              class="table-box-td"
+              align="center"
+              v-for="(field, index) in tableTh"
+              :key="index"
+            >{{ item[field.key] || item[field.key] === 0 ? item[field.key] : '-' }}</uni-td>
+          </uni-tr>
+        </uni-table>
+      </view>
+      <view class="table-pagination" v-if="tableData.total > 0">
+        <uni-pagination
+          show-icon="true"
+          :total="tableData.total"
+          :current="tableData.current"
+          @change="pageChange"
+        ></uni-pagination>
+      </view>
+    </view>
+  </view>
 </template>
 
 <script>
-	export default {
-		props: {
-			title: {
-				type: String,
-				default: ''
-			},
-			loading: {
-				type: Boolean,
-				default: () => {
-					return false
-				}
-			},
-			padding: {
-				type: String,
-				default: '15px'
-			},
-			tableTh: {
-				type: Array,
-				default: () => {
-					return []
-				}
-			},
-			tableData: {
-				type: Object,
-				default: () => {
-					return {
-						current: 1,
-						total: 0,
-						list: []
-					}
-				}
-			}
-		},
-		methods: {
-			pageChange(e) {
-				this.$emit('pageChange', e.current)
-			}
-		}
-	}
+export default {
+  props: {
+    title: {
+      type: String,
+      default: ''
+    },
+    loading: {
+      type: Boolean,
+      default: () => {
+        return false;
+      }
+    },
+    padding: {
+      type: String,
+      default: '15px'
+    },
+    tableTh: {
+      type: Array,
+      default: () => {
+        return [];
+      }
+    },
+    tableData: {
+      type: Object,
+      default: () => {
+        return {
+          current: 1,
+          total: 0,
+          list: []
+        };
+      }
+    }
+  },
+  methods: {
+    pageChange(e) {
+      this.$emit('pageChange', e.current);
+    }
+  }
+};
 </script>
 /**
  * tableTh
@@ -72,5 +85,5 @@
  */
 
 <style lang="scss" scoped>
-	@import '@/pages/dataOverview/statisticalReport/components/report.scss';
+@import 'static/styles/report.scss';
 </style>

+ 4 - 7
pages/dataOverview/operationalAnalysis/operationalAnalysis.scss

@@ -13,7 +13,7 @@
       text-align: center;
       line-height: 49px;
       color: #fff;
-      font-size: 20px;
+      font-size: 18px;
       font-family: PingFangSC-Regular, PingFang SC;
     }
     .active {
@@ -37,16 +37,13 @@
           margin-right: 0;
         }
         .image {
-          width: 88px;
-          margin: 0 auto 16px;
+          width: 60px;
+          margin: 0 auto 10px;
         }
         .name {
-          // white-space: nowrap;
-          // overflow: hidden;
-          // text-overflow: ellipsis;
           color: #393939;
           font-family: PingFangSC-Regular, PingFang SC;
-					font-size: 17px;
+					font-size: 13px;
         }
       }
     }

+ 2 - 2
pages/dataOverview/operationalAnalysis/operationalAnalysis.vue

@@ -22,7 +22,7 @@
             @click="jumpPage(item.url, item.params)"
           >
             <view class="image">
-              <u--image :showLoading="true" :src="item.icon" width="88px" height="88px" />
+              <u--image :showLoading="true" :src="item.icon" width="60px" height="60px" />
             </view>
             <view class="name">
               <text>{{ item.name }}</text>
@@ -39,7 +39,7 @@
             @click="jumpPage(item.url, item.params)"
           >
             <view class="image">
-              <u--image :showLoading="true" :src="item.icon" width="88px" height="88px" />
+              <u--image :showLoading="true" :src="item.icon" width="60px" height="60px" />
             </view>
             <view class="name">
               <text>{{ item.name }}</text>

+ 0 - 169
pages/dataOverview/statisticalReport/components/arrearsReport.vue

@@ -1,169 +0,0 @@
-<!-- 欠费统计 -->
-<template>
-	<view class="container">
-		<view class="tab">
-			<u-tabs
-				:list="tabList"
-				lineColor="#fff"
-				:activeStyle="{
-					color: '#fff',
-					fontWeight: 'bold',
-					transform: 'scale(1.05)'
-				}"
-				:inactiveStyle="{
-					color: '#000',
-					transform: 'scale(1)'
-				}"
-				@click="tabClick">
-			</u-tabs>
-		</view>
-		<view class="table">
-			<view class="table-date" v-if="currentDate">{{ currentDate.join(' 至 ') }}</view>
-			<view class="table-box">
-				<TableRanking :loading="loading" :padding="'0'" :tableTh="tableTh" :tableData="tableData"
-					@pageChange="pageChange" />
-			</view>
-		</view>
-		<view class="total">
-			<view>
-				欠费次数<text>{{ totalData.oweCount || 0 }}</text>次,欠费金额<text>{{ totalData.amtOwe || 0 }}</text>元
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	import TableRanking from '@/components/tableRanking.vue'
-	export default {
-		components: {
-			TableRanking
-		},
-		props: {
-			tableTh: {
-				type: Array,
-				default: () => {
-					return [
-						{ field: '车牌号', key: 'vehicleNo', width: 100 },
-						{ field: '车主姓名', key: 'name', width: 100 },
-						{ field: '联系方式', key: 'mobile', width: 100 },
-						{ field: '欠费次数(次)', width: 80, key: 'oweCount' },
-						{ field: '欠费金额(元)', width: 80, key: 'amtOwe' }
-					]
-				}
-			}
-		},
-		data() {
-			return {
-				loading: false,
-				totalData: {},
-				tableData: {
-					current: 1,
-					total: 0,
-					list: []
-				},
-				tabCurName: 'road',
-				currentDate: [],
-				beginTime: undefined,
-				endTime: undefined,
-				tabList: [
-					{ name: '路段', value: 'road' },
-					{ name: '停车场', value: 'parking' }
-				]
-			}
-		},
-		methods: {
-			tabClick(item) {
-				this.tabCurName = item.value
-				this.tableData.current = 1
-				if (this.tabCurName === 'road') {
-					this.getArreasReportTotal()
-					this.getArreasReportList()
-				} else {
-					this.getParkingArreasReportTotal()
-					this.getParkingArreasReportList()
-				}
-			},
-			getData(data) {
-				if (data.length) {
-					this.beginTime = data[0]
-					this.endTime = data[1]
-				}
-				this.currentDate = data
-				this.tableData.current = 1
-				if (this.tabCurName === 'road') {
-					this.getArreasReportTotal()
-					this.getArreasReportList()
-				} else {
-					this.getParkingArreasReportTotal()
-					this.getParkingArreasReportList()
-				}
-			},
-			getArreasReportTotal() {
-				uni.$u.api.statisticalReportApi.getArrearsReportTotalApi({
-					beginTime: this.beginTime,
-					endTime: this.endTime
-				}).then(res => {
-					if (res.code === 200) {
-						this.totalData = res.data
-					}
-				})
-			},
-			getParkingArreasReportTotal() {
-				uni.$u.api.statisticalReportApi.getParkingArrearsReportTotalApi({
-					beginTime: this.beginTime,
-					endTime: this.endTime
-				}).then(res => {
-					if (res.code === 200) {
-						this.totalData = res.data
-					}
-				})
-			},
-			getArreasReportList() {
-				this.loading = true
-				uni.$u.api.statisticalReportApi.getArrearsReportListApi({
-					beginTime: this.beginTime,
-					endTime: this.endTime,
-					pageNum: this.tableData.current,
-					pageSize: 10
-				}).then(res => {
-					if (res.code === 200) {
-						this.tableData.list = res.rows
-						this.tableData.total = res.total
-					}
-					this.loading = false
-				})
-			},
-			getParkingArreasReportList() {
-				this.loading = true
-				uni.$u.api.statisticalReportApi.getParkingArrearsReportListApi({
-					beginTime: this.beginTime,
-					endTime: this.endTime,
-					pageNum: this.tableData.current,
-					pageSize: 10
-				}).then(res => {
-					if (res.code === 200) {
-						this.tableData.list = res.rows
-						this.tableData.total = res.total
-					}
-					this.loading = false
-				})
-			},
-			pageChange(cur) {
-				this.tableData.current = cur
-				if (this.tabCurName === 'road') {
-					this.getArreasReportList()
-				} else {
-					this.getParkingArreasReportList()
-				}
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import './report.scss';
-	.tab {
-		margin-bottom: 10px;
-	}
-</style>
-

+ 0 - 129
pages/dataOverview/statisticalReport/components/checkWorkAttendance.vue

@@ -1,129 +0,0 @@
-<!-- 考勤统计 -->
-<template>
-	<view class="container">
-		<view class="table">
-			<view class="table-date" v-if="currentDate">{{ currentDate.join(' 至 ') }}</view>
-			<view class="table-search">
-				<view class="table-search-item">
-					<u--input class="input" placeholder="请输入工号" v-model="payeeNo"></u--input>
-				</view>
-				<view class="table-search-item">
-					<u--input class="input" placeholder="请输入姓名" v-model="payeeName"></u--input>
-				</view>
-				<view class="table-search-item">
-					<u-button class="btn" text="确认"
-						color="linear-gradient(157deg, #FECF4C 4%, #FECF4B 5%, #FCA225 100%)" :loading="loading" @click="confirm"></u-button>
-				</view>
-			</view>
-			<view class="table-box">
-				<TableRanking :loading="loading" :padding="'0'" :tableTh="tableTh" :tableData="tableData"
-					@pageChange="pageChange" />
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	import TableRanking from '@/components/tableRanking.vue'
-	export default {
-		components: {
-			TableRanking
-		},
-		props: {
-			tableTh: {
-				type: Array,
-				default: () => {
-					return [{
-							field: '工号',
-							width: 80,
-							key: 'payeeNo'
-						},
-						{
-							field: '姓名',
-							width: 90,
-							key: 'payeeName'
-						},
-						{
-							field: '实出勤(天)',
-							width: 70,
-							key: 'realDays'
-						},
-						{
-							field: '缺勤(天)',
-							width: 70,
-							key: 'missDays'
-						},
-						{
-							field: '缺卡(次)',
-							width: 70,
-							key: 'missPunchCount'
-						},
-						{
-							field: '早退(次)',
-							width: 70,
-							key: 'leavePunchCount'
-						},
-					]
-				}
-			}
-		},
-		data() {
-			return {
-				loading: false,
-				tableData: {
-					current: 1,
-					total: 0,
-					list: []
-				},
-				currentDate: [],
-				beginTime: undefined,
-				endTime: undefined,
-				payeeNo: undefined,
-				payeeName: undefined
-			}
-		},
-		methods: {
-			getData(data) {
-				if (data.length) {
-					this.beginTime = data[0]
-					this.endTime = data[1]
-				} else {
-					this.beginTime = undefined
-					this.endTime = undefined
-				}
-				this.currentDate = data
-				this.tableData.current = 1
-				this.getPunchList()
-			},
-			getPunchList() {
-				this.loading = true
-				uni.$u.api.statisticalReportApi.getPunchListApi({
-					beginTime: this.beginTime,
-					endTime: this.endTime,
-					payeeNo: this.payeeNo,
-					payeeName: this.payeeName,
-					pageNum: this.tableData.current,
-					pageSize: 10
-				}).then(res => {
-					if (res.code === 200) {
-						this.tableData.list = res.rows
-						this.tableData.total = res.total
-					}
-					this.loading = false
-				})
-			},
-			pageChange(cur) {
-				this.tableData.current = cur
-				this.getPunchList()
-			},
-			confirm() {
-				this.tableData.current = 1
-				this.getPunchList()
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import './report.scss';
-</style>

+ 0 - 106
pages/dataOverview/statisticalReport/components/parkingReallyIncome.vue

@@ -1,106 +0,0 @@
-<!-- 停车场实收统计 -->
-<template>
-	<view class="container">
-		<view class="table">
-			<view class="table-date" v-if="currentDate">{{ currentDate.join(' 至 ') }}</view>
-			<view class="table-box">
-				<TableRanking :loading="loading" :padding="'0'" :tableTh="tableTh" :tableData="tableData"
-					@pageChange="pageChange" />
-			</view>
-		</view>
-		<view class="total">
-			<view>
-				停车数量<text>{{ totalData.vehicleCount || 0 }}</text>辆,实收金额<text>{{ totalData.realAmount || 0 }}</text>元
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	import TableRanking from '@/components/tableRanking.vue'
-	export default {
-		components: {
-			TableRanking
-		},
-		props: {
-			tableTh: {
-				type: Array,
-				default: () => {
-					return [{
-							field: '停车场名称',
-							width: 120,
-							key: 'parkingName'
-						},
-						{
-							field: '停车数量(次)',
-							width: 120,
-							key: 'vehicleCount'
-						},
-						{
-							field: '实收金额(元)',
-							width: 80,
-							key: 'realAmount'
-						}
-					]
-				}
-			}
-		},
-		data() {
-			return {
-				loading: false,
-				tableData: {
-					current: 1,
-					total: 0,
-					list: []
-				},
-				totalData: {},
-				currentDate: [],
-				beginTime: undefined,
-				endTime: undefined
-			}
-		},
-		methods: {
-			getData(data) {
-				if (data.length) {
-					this.beginTime = data[0]
-					this.endTime = data[1]
-				}
-				this.currentDate = data
-				this.tableData.current = 1
-				this.getList();
-				this.getTotal();
-			},
-			getList() {
-				this.loading = true
-				uni.$u.api.statisticalReportApi.getParkingReallyIncomeApi({
-					pageNum: this.tableData.current,
-					pageSize: 10,
-					beginTime: this.beginTime,
-					endTime: this.endTime
-				}).then(res => {
-					if (res.code === 200) {
-						this.tableData.list = res.rows
-						this.tableData.total = res.total
-					}
-					this.loading = false
-				})
-			},
-			getTotal() {
-				uni.$u.api.statisticalReportApi.getParkingReallyIncomeTotalApi({
-					beginTime: this.beginTime,
-					endTime: this.endTime
-				}).then(res => {
-					if (res.code === 200) {
-						const { realAmount, vehicleCount } = res.data
-						this.totalData.realAmount = realAmount
-						this.totalData.vehicleCount = vehicleCount
-					}
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import './report.scss';
-</style>

+ 0 - 147
pages/dataOverview/statisticalReport/components/reallyReceivable.vue

@@ -1,147 +0,0 @@
-<!-- 应收实收分析 -->
-<template>
-	<view class="container">
-		<view class="tab">
-			<u-tabs
-				:list="tabList"
-				lineColor="#fff"
-				:activeStyle="{
-					color: '#fff',
-					fontWeight: 'bold',
-					transform: 'scale(1.05)'
-				}"
-				:inactiveStyle="{
-					color: '#000',
-					transform: 'scale(1)'
-				}"
-				@click="tabClick">
-			</u-tabs>
-		</view>
-		<view class="table">
-			<view class="table-date" v-if="params.queryDate">{{ params.title }}</view>
-			<view class="table-box">
-				<uni-table emptyText="暂无更多数据" :loading="loading">
-					<!-- 表头行 -->
-					<uni-tr>
-						<uni-th class="table-box-th" align="center" v-for="(item, index) in tableTh" :key="index"
-							:width="item.width || ''">{{ item.field }}
-						</uni-th>
-					</uni-tr>
-					<!-- 表格数据行 -->
-					<uni-tr v-for="(item, index) in tableData.list" :key="index">
-						<uni-td class="table-box-td" align="center" v-for="(field, fIndex) in tableTh" :key="fIndex">
-							{{ item[field.key] }}</uni-td>
-					</uni-tr>
-				</uni-table>
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	export default {
-		props: {
-			tableTh: {
-				type: Array,
-				default: () => {
-					return [{
-							field: '时间',
-							width: 120,
-							key: 'statisTime'
-						},
-						{
-							field: '应收金额(元)',
-							width: 80,
-							key: 'payAmount'
-						},
-						{
-							field: '实收金额(元)',
-							width: 80,
-							key: 'realAmount'
-						},
-						{
-							field: '逃费金额(元)',
-							width: 80,
-							key: 'runawayAmount'
-						},
-						{
-							field: `“一分钱停车”减免`,
-							width: 120,
-							key: 'oneAmount'
-						},
-						{
-							field: '“八折停车”减免',
-							width: 110,
-							key: 'eightAmount'
-						},
-						{
-							field: '欠费金额(元)',
-							width: 80,
-							key: 'amtOwe'
-						},
-						{
-							field: '退款金额(元)',
-							width: 80,
-							key: 'backAmount'
-						}
-					]
-				}
-			}
-		},
-		data() {
-			return {
-				currentDate: [],
-				tableData: {
-					list: []
-				},
-				params: {
-					reportType: 2,
-					queryDate: '',
-					title: ''
-				},
-				loading: false,
-				tabCurName: 'road',
-				tabList: [
-					{ name: '路段', value: 'road' },
-					{ name: '停车场', value: 'parking' }
-				]
-			}
-		},
-		methods: {
-			tabClick(item) {
-				this.tabCurName = item.value
-				if (this.tabCurName === 'road') {
-					this.getReallyReceivableList()
-				} else {
-					this.getParkingReallyReceivableList()
-				}
-			},
-			getData(obj) {
-				this.params = obj
-				this.getReallyReceivableList()
-			},
-			getReallyReceivableList() {
-				this.loading = true
-				uni.$u.api.statisticalReportApi.getReallyReceivableListApi(this.params).then(res => {
-					if (res.code === 200) {
-						this.tableData.list = res.data.itemList
-					}
-					this.loading = false
-				})
-			},
-			getParkingReallyReceivableList() {
-				this.loading = true
-				uni.$u.api.statisticalReportApi.getParkingReallyReceivableListApi(this.params).then(res => {
-					if (res.code === 200) {
-						this.tableData.list = res.data.itemList
-					}
-					this.loading = false
-				})
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import './report.scss';
-</style>

+ 0 - 68
pages/dataOverview/statisticalReport/components/report.scss

@@ -1,68 +0,0 @@
-.table {
-	padding: 19px 15px;
-	background-color: #fff;
-	border-radius: 5px;
-	font-family: PingFangSC-Regular, PingFang SC;
-	&-title {
-		text-align: center;
-		margin-bottom: 10px;
-	}
-	&-date {
-		margin-bottom: 10px;
-		font-size: 14px;
-		color: #434343;
-		text-align: center;
-	}
-	&-search {
-		display: flex;
-		justify-content: space-between;
-		align-items: center;
-		margin-bottom: 10px;
-		&-item {
-			width: 38%;
-			margin-right: 2%;
-			.input {
-				height: 29px;
-				padding: 0 9px!important;
-			}
-			&:last-child {
-				width: 53px;
-				margin-right: 0;
-				.btn {
-					width: 53px;
-					height: 31px;
-				}
-			}
-		}
-	}
-	&-box {
-		&-th {
-			border-bottom: none;
-			background-color: #EDF3FF;
-			font-size: 12px;
-			color: #434343;
-		}
-
-		&-td {
-			font-size: 12px;
-			color: #434343;
-			word-wrap: break-word;
-		}
-	}
-
-	&-pagination {
-		width: 130px;
-		margin: 20px auto 0;
-	}
-}
-.total {
-	color: #CADDFC;
-	margin-top: 24px;
-	text-align: center;
-	font-size: 14px;
-	line-height: 17px;
-	text {
-		color: #fff;
-		padding: 0 5px;
-	}
-}

+ 0 - 144
pages/dataOverview/statisticalReport/components/revenueReport.vue

@@ -1,144 +0,0 @@
-<!-- 营收统计 -->
-<template>
-	<view class="container">
-		<view class="table">
-			<view class="table-date" v-if="currentDate">{{ currentDate.join(' 至 ') }}</view>
-			<view class="table-box">
-				<TableRanking :loading="loading" :padding="'0'" :tableTh="tableTh" :tableData="tableData"
-					@pageChange="pageChange" />
-			</view>
-		</view>
-		<view class="total">
-			<view>
-				车辆<text>{{ totalData.vehicleCount || 0 }}</text>辆,应收金额<text>{{ totalData.payAmount || 0 }}</text>元,实收金额<text>{{ totalData.realAmount || 0 }}</text>元,
-				欠费金额<text>{{ totalData.amtOwe || 0 }}</text>元,其中贵州银行快捷支付<text>{{ totalData.quickAmt || 0 }}</text>元,贵州银行聚合支付<text>{{ totalData.unionAmt || 0 }}</text>元,微信支付<text>{{ totalData.wechatAmt || 0 }}</text>元,无感支付<text>{{ totalData.unconsAmt || 0 }}</text>元,现金支付<text>{{ totalData.cashAmt || 0 }}</text>元
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	import TableRanking from '@/components/tableRanking.vue'
-	export default {
-		components: {
-			TableRanking
-		},
-		props: {
-			tableTh: {
-				type: Array,
-				default: () => {
-					return [{
-							field: '停车场/路段',
-							width: 120,
-							key: 'roadName'
-						},
-						{
-							field: '车辆(辆)',
-							width: 80,
-							key: 'vehicleCount'
-						},
-						{
-							field: '应收金额(元)',
-							width: 80,
-							key: 'payAmount'
-						},
-						{
-							field: '实收金额(次)',
-							width: 80,
-							key: 'realAmount'
-						},
-						{
-							field: '欠费金额(元)',
-							width: 80,
-							key: 'amtOwe'
-						},
-						{
-							field: '贵州银行快捷支付(元)',
-							width: 150,
-							key: 'quickAmt'
-						},
-						{
-							field: '贵州银行聚合支付(元)',
-							width: 150,
-							key: 'unionAmt'
-						},
-						{
-							field: '微信(元)',
-							width: 80,
-							key: 'wechatAmt'
-						},
-						{
-							field: '无感(元)',
-							width: 80,
-							key: 'unconsAmt'
-						},
-						{
-							field: '现金(元)',
-							width: 80,
-							key: 'cashAmt'
-						}
-					]
-				}
-			}
-		},
-		data() {
-			return {
-				loading: false,
-				tableData: {
-					current: 1,
-					total: 0,
-					list: []
-				},
-				totalData: {},
-				currentDate: [],
-				beginTime: undefined,
-				endTime: undefined
-			}
-		},
-		methods: {
-			getData(data) {
-				if (data.length) {
-					this.beginTime = data[0]
-					this.endTime = data[1]
-				}
-				this.currentDate = data
-				this.tableData.current = 1
-				this.getIncomeTotal()
-				this.getIncomeList()
-			},
-			getIncomeTotal() {
-				uni.$u.api.statisticalReportApi.getIncomeTotalApi({
-					beginTime: this.beginTime,
-					endTime: this.endTime
-				}).then(res => {
-					if (res.code === 200) {
-						this.totalData = res.data
-					}
-				})
-			},
-			getIncomeList() {
-				this.loading = true
-				uni.$u.api.statisticalReportApi.getIncomeListApi({
-					beginTime: this.beginTime,
-					endTime: this.endTime,
-					pageNum: this.tableData.current,
-					pageSize: 10
-				}).then(res => {
-					if (res.code === 200) {
-						this.tableData.list = res.rows
-						this.tableData.total = res.total
-					}
-					this.loading = false
-				})
-			},
-			pageChange(cur) {
-				this.tableData.current = cur
-				this.getIncomeList()
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import './report.scss';
-</style>

+ 0 - 118
pages/dataOverview/statisticalReport/components/sectionBerth.vue

@@ -1,118 +0,0 @@
-<!-- 路段泊位统计 -->
-<template>
-	<view class="container">
-		<view class="table">
-			<view class="table-date" v-if="currentDate">{{ currentDate.join(' 至 ') }}</view>
-			<view class="table-box">
-				<TableRanking :loading="loading" :padding="'0'" :tableTh="tableTh" :tableData="tableData"
-					@pageChange="pageChange" />
-			</view>
-		</view>
-		<view class="total">
-			<view>
-				停车数量<text>{{ totalData.vehicleCount || 0 }}</text>辆,实收金额<text>{{ totalData.realAmount || 0 }}</text>元
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	import TableRanking from '@/components/tableRanking.vue'
-	export default {
-		components: {
-			TableRanking
-		},
-		props: {
-			tableTh: {
-				type: Array,
-				default: () => {
-					return [{
-							field: '路段名称',
-							key: 'roadName'
-						},
-						{
-							field: '所属泊位',
-							key: 'spaceName'
-						},
-						{
-							field: '停车数量(次)',
-							width: 80,
-							key: 'vehicleCount'
-						},
-						{
-							field: '实收金额(元)',
-							width: 80,
-							key: 'realAmount'
-						}
-					]
-				}
-			}
-		},
-		data() {
-			return {
-				beginTime: '',
-				endTime: '',
-				totalData: {},
-				tableData: {
-					current: 1,
-					total: 0,
-					list: []
-				},
-				currentDate: [],
-				loading: false
-			}
-		},
-		methods: {
-			getData(data) {
-				if (data.length) {
-					this.beginTime = data[0]
-					this.endTime = data[1]
-				} else {
-					this.beginTime = undefined
-					this.endTime = undefined
-				}
-				this.currentDate = data
-				this.tableData.current = 1
-				this.getRoadSpaceTotal()
-				this.getRoadSpaceList()
-			},
-			getRoadSpaceTotal() {
-				uni.$u.api.statisticalReportApi.getRoadSpaceTotalApi({
-					beginTime: this.beginTime,
-					endTime: this.endTime
-				}).then(res => {
-					if (res.code === 200) {
-						this.totalData = res.data
-					}
-				})
-			},
-			getRoadSpaceList() {
-				this.loading = true
-				uni.$u.api.statisticalReportApi.getRoadSpaceListApi({
-					beginTime: this.beginTime,
-					endTime: this.endTime,
-					pageNum: this.tableData.current,
-					pageSize: 10
-				}).then(res => {
-					if (res.code === 200) {
-						this.tableData.list = res.rows;
-						this.tableData.total = res.total
-					}
-					this.loading = false
-				})
-			},
-			/**
-			 * 分页切换
-			 * @param { Number } cur
-			 */
-			pageChange(cur) {
-				this.tableData.current = cur
-				this.getRoadSpaceList()
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import './report.scss';
-</style>

+ 0 - 120
pages/dataOverview/statisticalReport/components/tollCollectorPerformance.vue

@@ -1,120 +0,0 @@
-<!-- 收费员业绩统计 -->
-<template>
-	<view class="container">
-		<view class="table">
-			<view class="table-date" v-if="currentDate">{{ currentDate.join(' 至 ') }}</view>
-			<view class="table-box">
-				<TableRanking :loading="loading" :padding="'0'" :tableTh="tableTh" :tableData="tableData" @pageChange="pageChange"/>
-			</view>
-		</view>
-		<view class="total">
-			<view>
-				应收金额<text>{{ totalData.payAmount || 0 }}</text>元,实收金额<text>{{ totalData.realAmount || 0 }}</text>元
-			</view>
-			<view>
-				现金收入<text>{{ totalData.cashAmt || 0 }}</text>元,非现金收入<text>{{ totalData.otherAmt || 0 }}</text>元
-			</view>
-		</view>
-	</view>
-</template>
-
-<script>
-	import TableRanking from '@/components/tableRanking.vue'
-	export default {
-		components: {
-			TableRanking
-		},
-		props: {
-			tableTh: {
-				type: Array,
-				default: () => {
-					return [{
-							field: '工号',
-							key: 'payeeNo'
-						},
-						{
-							field: '姓名',
-							key: 'payeeName'
-						},
-						{
-							field: '所属路段',
-							key: 'roadName'
-						},
-						{
-							field: '应收金额(元)',
-							key: 'payAmount',
-							width: 80
-						},
-						{
-							field: '实收金额(元)',
-							key: 'realAmount',
-							width: 80
-						}
-					]
-				}
-			}
-		},
-		data() {
-			return {
-				tableData: {
-					current: 1,
-					total: 0,
-					list: []
-				},
-				totalData: {},
-				beginTime: undefined,
-				endTime: undefined,
-				loading: false,
-				currentDate: []
-			}
-		},
-		methods: {
-			getData(data) {
-				if (data.length) {
-					this.beginTime = data[0]
-					this.endTime = data[1]
-				} else {
-					this.beginTime = undefined
-					this.endTime = undefined
-				}
-				this.currentDate = data
-				this.tableData.current = 1
-				this.getTollCollectorAchieveTotal()
-				this.getTollCollectorAchieveList()
-			},
-			getTollCollectorAchieveTotal() {
-				uni.$u.api.statisticalReportApi.getTollCollectorAchieveTotalApi({
-					beginTime: this.beginTime,
-					endTime: this.endTime
-				}).then(res => {
-					if (res.code === 200) {
-						this.totalData = res.data
-					}
-				})
-			},
-			getTollCollectorAchieveList() {
-				this.loading = true
-				uni.$u.api.statisticalReportApi.getTollCollectorAchieveListApi({
-					beginTime: this.beginTime,
-					endTime: this.endTime,
-					pageNum: this.tableData.current,
-					pageSize: 10
-				}).then(res => {
-					if (res.code === 200) {
-						this.tableData.list = res.rows
-						this.tableData.total = res.total
-					}
-					this.loading = false
-				})
-			},
-			pageChange(cur) {
-				this.tableData.current = cur
-				this.getTollCollectorAchieveList()
-			}
-		}
-	}
-</script>
-
-<style lang="scss" scoped>
-	@import './report.scss';
-</style>

+ 3 - 6
pages/dataOverview/statisticalReport/statisticalReport.scss

@@ -13,7 +13,7 @@
       text-align: center;
       line-height: 49px;
       color: #fff;
-      font-size: 20px;
+      font-size: 18px;
       font-family: PingFangSC-Regular, PingFang SC;
     }
     .active {
@@ -37,16 +37,13 @@
           margin-right: 0;
         }
         .image {
-          width: 88px;
+          width: 60px;
           margin: 0 auto 16px;
         }
         .name {
-          // white-space: nowrap;
-          // overflow: hidden;
-          // text-overflow: ellipsis;
           color: #393939;
           font-family: PingFangSC-Regular, PingFang SC;
-					font-size: 17px;
+					font-size: 13px;
         }
       }
     }

+ 2 - 2
pages/dataOverview/statisticalReport/statisticalReport.vue

@@ -22,7 +22,7 @@
             @click="jumpPage(item.url, item.params)"
           >
             <view class="image">
-              <u--image :showLoading="true" :src="item.icon" width="88px" height="88px" />
+              <u--image :showLoading="true" :src="item.icon" width="60px" height="60px" />
             </view>
             <view class="name">
               <text>{{ item.name }}</text>
@@ -39,7 +39,7 @@
             @click="jumpPage(item.url, item.params)"
           >
             <view class="image">
-              <u--image :showLoading="true" :src="item.icon" width="88px" height="88px" />
+              <u--image :showLoading="true" :src="item.icon" width="60px" height="60px" />
             </view>
             <view class="name">
               <text>{{ item.name }}</text>

+ 1 - 1
pages/dataOverview/todayOverview/todayOverview.scss

@@ -12,7 +12,7 @@
       text-align: center;
       line-height: 49px;
       color: #fff;
-      font-size: 20px;
+      font-size: 18px;
       font-family: PingFangSC-Regular, PingFang SC;
     }
     .active {

+ 5 - 5
pages/dataOverview/todayOverview/todayOverview.vue

@@ -47,12 +47,12 @@
                 height="35px"
               />
             </template>
-						<template v-else>--</template>
+            <template v-else>--</template>
           </view>
         </view>
       </view>
     </template>
-		<template v-if="tabCur === 'park'">
+    <template v-if="tabCur === 'park'">
       <view class="overview-content">
         <view class="overview-content-item" v-for="(item, index) in roadObj.list" :key="index">
           <view class="overview-content-item-left">
@@ -86,7 +86,7 @@
                 height="35px"
               />
             </template>
-						<template v-else>--</template>
+            <template v-else>--</template>
           </view>
         </view>
       </view>
@@ -122,7 +122,7 @@ export default {
         ]
       },
       roadData: {},
-			parkData: {}
+      parkData: {}
     };
   },
   onShow() {
@@ -168,7 +168,7 @@ export default {
 
 <style lang="scss">
 page {
-  min-height: calc(100vh - 44px);
+  // min-height: calc(100vh - 44px);
   background-color: #1767f2;
 }
 </style>

+ 4 - 4
pages/index/index.scss

@@ -82,10 +82,10 @@
 							font-size: 12px;
 							color: #787878;
 							font-family: PingFangSC-Regular, PingFang SC;
-							overflow: hidden;
-							white-space: nowrap;
-							text-overflow: ellipsis;
-							word-break: break-all;
+							// overflow: hidden;
+							// white-space: nowrap;
+							// text-overflow: ellipsis;
+							// word-break: break-all;
 							margin: 0 auto;
 							width: 90%;
 						}

+ 293 - 266
pages/index/index.vue

@@ -1,35 +1,43 @@
 <template>
-	<view class="index">
-		<view class="index-header">
-			<view class="index-header-box">
-				<view class="index-header-box-1">
-					<view class="left">
-						<text>欢迎你!{{ vuex_user.operName }}</text>
-					</view>
-					<view class="right">
-						<u-icon size="21" name="../../static/icons/logout-icon.svg" @click="logout"></u-icon>
-					</view>
-				</view>
-				<view class="index-header-box-2">
-					<text>普定停车<br />运营中心</text>
-				</view>
-			</view>
-		</view>
-		<view class="index-main">
-			<view class="index-main-menu">
-				<!-- 数据概览 -->
-				<view class="index-main-menu-1">
-					<view class="menu-item" v-for="(item, index) in analysisMenuList" :key="index" @click="jumpPage(item.url)">
-						<view class="menu-item-icon">
-							<u-icon size="48" :name="item.icon"></u-icon>
-						</view>
-						<view class="menu-item-name">
-							<text>{{ item.name }}</text>
-						</view>
-					</view>
-				</view>
-				<!-- 订单管理 -->
-				<!-- <view class="index-main-menu-2">
+  <view class="index">
+    <view class="index-header">
+      <view class="index-header-box">
+        <view class="index-header-box-1">
+          <view class="left">
+            <text>欢迎你!{{ vuex_user.operName }}</text>
+          </view>
+          <view class="right">
+            <u-icon size="21" name="../../static/icons/logout-icon.svg" @click="logout"></u-icon>
+          </view>
+        </view>
+        <view class="index-header-box-2">
+          <text>
+            普定停车
+            <br />运营中心
+          </text>
+        </view>
+      </view>
+    </view>
+    <view class="index-main">
+      <view class="index-main-menu">
+        <!-- 数据概览 -->
+        <view class="index-main-menu-1">
+          <view
+            class="menu-item"
+            v-for="(item, index) in analysisMenuList"
+            :key="index"
+            @click="jumpPage(item.url)"
+          >
+            <view class="menu-item-icon">
+              <u-icon size="48" :name="item.icon"></u-icon>
+            </view>
+            <view class="menu-item-name">
+              <text>{{ item.name }}</text>
+            </view>
+          </view>
+        </view>
+        <!-- 订单管理 -->
+        <!-- <view class="index-main-menu-2">
 					<view class="index-main-menu-title">
 						<text>订单管理</text>
 					</view>
@@ -44,247 +52,266 @@
 							</view>
 						</view>
 					</view>
-				</view> -->
-				<!-- 收费员管理 -->
-				<view class="index-main-menu-2">
-					<view class="index-main-menu-title">
-						<text>收费员管理</text>
-					</view>
-					<view class="menu">
-						<view class="menu-item" v-for="(item, index) in tollCollectorList" :key="index" @click="jumpPage(item.url, {}, item.flag)">
-							<view class="menu-item-icon" :style="{ width: item.width || '30px' }">
-								<u--image :src="item.icon" :width="item.width || '30px'"
-									:height="item.height || '31px'"></u--image>
-							</view>
-							<view class="menu-item-name">
-								<text>{{ item.name }}</text>
-							</view>
-						</view>
-					</view>
-				</view>
-				<!-- 巡检管理 -->
-				<view class="index-main-menu-2">
-					<view class="index-main-menu-title">
-						<text>巡检管理</text>
-					</view>
-					<view class="menu">
-						<view class="menu-item" v-for="(item, index) in patrolMenuList" :key="index" @click="jumpPage(item.url, {}, item.flag)">
-							<view class="menu-item-icon" :style="{ width: item.width || '30px', height: '33px' }">
-								<u--image :src="item.icon" :width="item.width || '30px'"
-									:height="item.height || '30px'"></u--image>
-							</view>
-							<view class="menu-item-name">
-								<text>{{ item.name }}</text>
-							</view>
-						</view>
-					</view>
-				</view>
-			</view>
-		</view>
-		<u-toast ref="uToast"></u-toast>
-	</view>
+        </view>-->
+        <!-- 收费员管理 -->
+        <view class="index-main-menu-2">
+          <view class="index-main-menu-title">
+            <text>收费员管理</text>
+          </view>
+          <view class="menu">
+            <view
+              class="menu-item"
+              v-for="(item, index) in tollCollectorList"
+              :key="index"
+              @click="jumpPage(item.url, {}, item.flag)"
+            >
+              <view class="menu-item-icon" :style="{ width: item.width || '30px' }">
+                <u--image
+                  :src="item.icon"
+                  :width="item.width || '30px'"
+                  :height="item.height || '31px'"
+                ></u--image>
+              </view>
+              <view class="menu-item-name">
+                <text>{{ item.name }}</text>
+              </view>
+            </view>
+          </view>
+        </view>
+        <!-- 巡检管理 -->
+        <view class="index-main-menu-2">
+          <view class="index-main-menu-title">
+            <text>巡检管理</text>
+          </view>
+          <view class="menu">
+            <view
+              class="menu-item"
+              v-for="(item, index) in patrolMenuList"
+              :key="index"
+              @click="jumpPage(item.url, {}, item.flag)"
+            >
+              <view class="menu-item-icon" :style="{ width: item.width || '30px', height: '33px' }">
+                <u--image
+                  :src="item.icon"
+                  :width="item.width || '30px'"
+                  :height="item.height || '30px'"
+                ></u--image>
+              </view>
+              <view class="menu-item-name">
+                <text>{{ item.name }}</text>
+              </view>
+            </view>
+          </view>
+        </view>
+      </view>
+    </view>
+    <u-toast ref="uToast"></u-toast>
+  </view>
 </template>
 
 <script>
-	export default {
-		data() {
-			return {
-				todayData: {},
-				analysisMenuList: [{
-						icon: require('@/static/icons/today-overview-icon.svg'),
-						name: '今日概况',
-						url: 'pages/dataOverview/todayOverview/todayOverview'
-					},
-					{
-						icon: require('@/static/icons/operational-analysis-icon.svg'),
-						name: '运营分析',
-						url: 'pages/dataOverview/operationalAnalysis/operationalAnalysis'
-					},
-					{
-						icon: require('@/static/icons/statistical-report-icon.svg'),
-						name: '统计报表',
-						url: 'pages/dataOverview/statisticalReport/statisticalReport'
-					}
-				],
-				// 订单管理
-				orderMenuList: [{
-						icon: require('@/static/icons/parking-record-icon.svg'),
-						name: '停车记录',
-						url: 'pages/orderManagement/parkingRecord/parkingRecord',
-						width: '28px'
-					},
-					{
-						icon: require('@/static/icons/arrearage-record-icon.svg'),
-						name: '欠费记录',
-						url: 'pages/orderManagement/arrearageRecord/arrearageRecord'
-					},
-					{
-						icon: require('@/static/icons/collection-record-icon.svg'),
-						name: '收款记录',
-						url: 'pages/orderManagement/collectionRecord/collectionRecord'
-					},
-					{
-						icon: require('@/static/icons/fee-evasion-record-icon.svg'),
-						name: '逃费记录',
-						url: 'pages/orderManagement/feeEvasionRecord/feeEvasionRecord',
-						width: '39px',
-						height: '31px'
-					},
-					{
-						icon: require('@/static/icons/void-record-icon.svg'),
-						name: '作废记录',
-						url: 'pages/orderManagement/voidRecord/voidRecord',
-						height: '31px'
-					},
-					{
-						icon: require('@/static/icons/recovery-record-icon.svg'),
-						name: '追缴记录',
-						url: 'pages/orderManagement/recoveryRecord/recoveryRecord',
-						height: '31px'
-					}
-				],
-				// 收费员管理
-				tollCollectorList: [
-					{
-						icon: require('@/static/icons/performance-ranking-icon.svg'),
-						name: '业绩排名',
-						url: 'pages/collectorManagement/performanceRanking/performanceRanking',
-						height: '33px'
-					},
-					{
-						icon: require('@/static/icons/performance-analysis-icon.svg'),
-						name: '业绩分析',
-						url: 'pages/collectorManagement/performanceAnalysis/performanceAnalysis',
-						height: '33px',
-						width: '33px'
-					},
-					{
-						icon: require('@/static/icons/assessment-ranking-icon.svg'),
-						name: '考核排名',
-						url: 'pages/collectorManagement/assessmentRanking/assessmentRanking',
-						height: '33px',
-						width: '33px',
-						flag: true
-					},
-					{
-						icon: require('@/static/icons/assessment-analysis-icon.svg'),
-						name: '考核分析',
-						url: 'pages/collectorManagement/assessmentAnalysis/assessmentAnalysis',
-						height: '32px',
-						width: '33px',
-						flag: true
-					},
-					{
-						icon: require('@/static/icons/shift-scheduling-icon.svg'),
-						name: '排班情况',
-						url: 'pages/collectorManagement/shiftScheduling/shiftScheduling',
-						height: '30px',
-						width: '33px',
-						flag: true
-					}
-				],
-				// 巡检管理
-				patrolMenuList: [{
-						icon: require('@/static/icons/patrol-manage-icon.svg'),
-						name: '巡检记录',
-						url: 'pages/patrolManagement/patrolRecord/patrolRecord',
-						width: '29px',
-						height: '31px',
-						flag: true
-					},
-					{
-						icon: require('@/static/icons/device-error-records-icon.svg'),
-						name: '设备异常记录',
-						url: 'pages/patrolManagement/deviceAbnormalRecords/deviceAbnormalRecords',
-						width: '35px',
-						height: '31px'
-					},
-					{
-						icon: require('@/static/icons/emergency-disposal-icon.svg'),
-						name: '应急处置记录',
-						url: 'pages/patrolManagement/emergencyDisposalRecords/emergencyDisposalRecords',
-						width: '35px',
-						height: '31px',
-						flag: true
-					}
-				]
-			}
-		},
-		onLoad() {
-			// 为了验证token是否过期
-			// this.getTodayData();
-		},
-		methods: {
-			/**
-			 * 登出操作
-			 */
-			logout() {
-				uni.showModal({
-					title: '提示',
-					content: '你确认退出登录?',
-					success: (res) => {
-						if (res.confirm) {
-							uni.$u.api.logoutApi().then(res => {
-								if (res.code === 200) {
-									uni.$u.vuex('vuex_token', '');
-									uni.$u.vuex('vuex_user', {});
-									uni.$u.vuex('vuex_isLogin', false);
-									uni.redirectTo({
-										url: "/pages/login/login"
-									})
-								} else {
-									this.$refs.uToast.show({
-										message: res.msg || '退出登录失败!',
-										type: 'error'
-									})
-								}
-							})
-						}
-					}
-				})
-			},
-			/**
-			 * 获取今日概况
-			 */
-			getTodayData() {
-				uni.$u.api.todayOverviewApi.getTodayDataApi().then(res => {
-					if (res.code === 200) {
-						this.todayData = res.data
-					} else {
-						this.$refs.uToast.show({
-							message: res.msg || '获取今日概况失败!',
-							type: 'error'
-						})
-					}
-				})
-			},
-			/**
-			 * 跳转页面
-			 * @param { String } url
-			 * @param { Object } params
-			 */
-			jumpPage(url, params, flag) {
-				if (flag) {
-					// this.$refs.uToast.show({
-					// 	message: '功能未开发!',
-					// 	type: 'info'
-					// })
-				} else {
-					uni.$u.route({
-						url,
-						params
-					})
-				}
-			}
-		}
-	}
+export default {
+  data() {
+    return {
+      todayData: {},
+      analysisMenuList: [
+        {
+          icon: require('@/static/icons/today-overview-icon.svg'),
+          name: '今日概况',
+          url: 'pages/dataOverview/todayOverview/todayOverview'
+        },
+        {
+          icon: require('@/static/icons/operational-analysis-icon.svg'),
+          name: '运营分析',
+          url: 'pages/dataOverview/operationalAnalysis/operationalAnalysis'
+        },
+        {
+          icon: require('@/static/icons/statistical-report-icon.svg'),
+          name: '统计报表',
+          url: 'pages/dataOverview/statisticalReport/statisticalReport'
+        }
+      ],
+      // 订单管理
+      orderMenuList: [
+        {
+          icon: require('@/static/icons/parking-record-icon.svg'),
+          name: '停车记录',
+          url: 'pages/orderManagement/parkingRecord/parkingRecord',
+          width: '28px'
+        },
+        {
+          icon: require('@/static/icons/arrearage-record-icon.svg'),
+          name: '欠费记录',
+          url: 'pages/orderManagement/arrearageRecord/arrearageRecord'
+        },
+        {
+          icon: require('@/static/icons/collection-record-icon.svg'),
+          name: '收款记录',
+          url: 'pages/orderManagement/collectionRecord/collectionRecord'
+        },
+        {
+          icon: require('@/static/icons/fee-evasion-record-icon.svg'),
+          name: '逃费记录',
+          url: 'pages/orderManagement/feeEvasionRecord/feeEvasionRecord',
+          width: '39px',
+          height: '31px'
+        },
+        {
+          icon: require('@/static/icons/void-record-icon.svg'),
+          name: '作废记录',
+          url: 'pages/orderManagement/voidRecord/voidRecord',
+          height: '31px'
+        },
+        {
+          icon: require('@/static/icons/recovery-record-icon.svg'),
+          name: '追缴记录',
+          url: 'pages/orderManagement/recoveryRecord/recoveryRecord',
+          height: '31px'
+        }
+      ],
+      // 收费员管理
+      tollCollectorList: [
+        {
+          icon: require('@/static/icons/performance-ranking-icon.svg'),
+          name: '业绩排名',
+          url: 'pages/collectorManagement/performanceRanking/performanceRanking',
+          height: '33px'
+        },
+        {
+          icon: require('@/static/icons/performance-analysis-icon.svg'),
+          name: '业绩分析',
+          url: 'pages/collectorManagement/performanceAnalysis/performanceAnalysis',
+          height: '33px',
+          width: '33px'
+        },
+        {
+          icon: require('@/static/icons/assessment-ranking-icon.svg'),
+          name: '考核排名',
+          url: 'pages/collectorManagement/assessmentRanking/assessmentRanking',
+          height: '33px',
+          width: '33px',
+          flag: true
+        },
+        {
+          icon: require('@/static/icons/assessment-analysis-icon.svg'),
+          name: '考核分析',
+          url: 'pages/collectorManagement/assessmentAnalysis/assessmentAnalysis',
+          height: '32px',
+          width: '33px',
+          flag: true
+        },
+        {
+          icon: require('@/static/icons/shift-scheduling-icon.svg'),
+          name: '排班情况',
+          url: 'pages/collectorManagement/shiftScheduling/shiftScheduling',
+          height: '30px',
+          width: '33px',
+          flag: true
+        }
+      ],
+      // 巡检管理
+      patrolMenuList: [
+        // {
+        // 	icon: require('@/static/icons/patrol-manage-icon.svg'),
+        // 	name: '巡检记录',
+        // 	url: 'pages/patrolManagement/patrolRecord/patrolRecord',
+        // 	width: '29px',
+        // 	height: '31px',
+        // 	flag: true
+        // },
+        {
+          icon: require('@/static/icons/device-error-records-icon.svg'),
+          name: '设备异常记录',
+          url: 'pages/patrolManagement/deviceAbnormalRecords/deviceAbnormalRecords',
+          width: '35px',
+          height: '31px'
+        },
+        {
+          icon: require('@/static/icons/emergency-disposal-icon.svg'),
+          name: '应急处置记录',
+          url: 'pages/patrolManagement/emergencyDisposalRecords/emergencyDisposalRecords',
+          width: '35px',
+          height: '31px',
+          flag: true
+        }
+      ]
+    };
+  },
+  onLoad() {
+    // 为了验证token是否过期
+    // this.getTodayData();
+  },
+  methods: {
+    /**
+     * 登出操作
+     */
+    logout() {
+      uni.showModal({
+        title: '提示',
+        content: '你确认退出登录?',
+        success: (res) => {
+          if (res.confirm) {
+            uni.$u.api.logoutApi().then((res) => {
+              if (res.code === 200) {
+                uni.$u.vuex('vuex_token', '');
+                uni.$u.vuex('vuex_user', {});
+                uni.$u.vuex('vuex_isLogin', false);
+                uni.redirectTo({
+                  url: '/pages/login/login'
+                });
+              } else {
+                this.$refs.uToast.show({
+                  message: res.msg || '退出登录失败!',
+                  type: 'error'
+                });
+              }
+            });
+          }
+        }
+      });
+    },
+    /**
+     * 获取今日概况
+     */
+    getTodayData() {
+      uni.$u.api.todayOverviewApi.getTodayDataApi().then((res) => {
+        if (res.code === 200) {
+          this.todayData = res.data;
+        } else {
+          this.$refs.uToast.show({
+            message: res.msg || '获取今日概况失败!',
+            type: 'error'
+          });
+        }
+      });
+    },
+    /**
+     * 跳转页面
+     * @param { String } url
+     * @param { Object } params
+     */
+    jumpPage(url, params, flag) {
+      if (flag) {
+        // this.$refs.uToast.show({
+        // 	message: '功能未开发!',
+        // 	type: 'info'
+        // })
+      } else {
+        uni.$u.route({
+          url,
+          params
+        });
+      }
+    }
+  }
+};
 </script>
 
 <style lang="scss">
-	page {
-		background-color: #EFEFEF;
-	}
+page {
+  background-color: #efefef;
+}
 </style>
 <style lang="scss" scoped>
-	@import './index.scss';
+@import './index.scss';
 </style>

+ 35 - 11
pages/operationalAnalysis/parkModel/index.vue

@@ -3,15 +3,14 @@
  * @Author: 空白格
  * @Date: 2022-08-02 15:32:15
  * @LastEditors: 空白格
- * @LastEditTime: 2022-08-03 13:53:18
+ * @LastEditTime: 2022-08-04 11:43:11
  * @FilePath: \parking_operation\pages\operationalAnalysis\parkModel\index.vue
  * @Copyright: Copyright (c) 2016~2022 by 空白格, All Rights Reserved. 
 -->
 <template>
   <view class="analysis">
     <view class="analysis-header">
-      <view class="analysis-header-left">&nbsp;</view>
-      <view class="analysis-header-right">
+      <view class="analysis-header-left">
         <view class="tab">
           <view
             class="tab-item"
@@ -22,22 +21,23 @@
           >{{ item.label }}</view>
         </view>
       </view>
+      <view class="analysis-header-right">{{ currentDate }}</view>
     </view>
     <view class="analysis-main">
       <template v-if="templateKey === 'parkingLotAnalysis'">
-        <parking-lot-analysis ref="parkingLotAnalysis" :title="title" />
+        <parking-lot-analysis ref="parkingLotAnalysis" />
       </template>
       <template v-else-if="templateKey === 'arrearsAnalysis'">
-        <arrears-analysis ref="arrearsAnalysis" :title="title" />
+        <arrears-analysis ref="arrearsAnalysis" />
       </template>
       <template v-else-if="templateKey === 'revenueAnalysis'">
-        <revenue-analysis ref="revenueAnalysis" :title="title" />
+        <revenue-analysis ref="revenueAnalysis" />
       </template>
       <template v-else-if="templateKey === 'incomeAnalysis'">
-        <income-analysis ref="incomeAnalysis" :title="title" />
+        <income-analysis ref="incomeAnalysis" />
       </template>
       <template v-else-if="templateKey === 'paymentMethod'">
-        <payment-method ref="paymentMethod" :title="title" />
+        <payment-method ref="paymentMethod" />
       </template>
     </view>
     <!-- 年 -->
@@ -47,7 +47,7 @@
       :defaultIndex="defaultYear"
       @confirm="yearConfirm"
       @cancel="yearPicker = false"
-    ></u-picker>
+    />
     <!-- 月 -->
     <u-picker
       :show="monthPicker"
@@ -55,7 +55,7 @@
       :defaultIndex="defaultMonth"
       @confirm="monthConfirm"
       @cancel="monthPicker = false"
-    ></u-picker>
+    />
     <!-- 日 -->
     <u-picker
       :show="dayPicker"
@@ -63,7 +63,7 @@
       :defaultIndex="defaultDay"
       @confirm="dayConfirm"
       @cancel="dayPicker = false"
-    ></u-picker>
+    />
   </view>
 </template>
 
@@ -100,6 +100,7 @@ export default {
       tabCur: 2,
       templateKey: '',
       title: '',
+      currentDate: '',
       // 参数
       params: {
         reportType: 2,
@@ -125,6 +126,29 @@ export default {
       dayObj: {}
     };
   },
+  watch: {
+    title(val) {
+      if (val) {
+        const dateArr = val.split('-');
+        switch (this.tabCur) {
+          case 0:
+            this.currentDate = `${Number(dateArr[0])}年${Number(
+              dateArr[1]
+            )}月${Number(dateArr[2])}日`;
+            break;
+          case 1:
+            this.currentDate = `${Number(dateArr[0])}年${Number(dateArr[1])}月`;
+            break;
+          case 2:
+            this.currentDate = `${Number(dateArr[0])}年`;
+            break;
+          default:
+            this.currentDate = '--';
+            break;
+        }
+      }
+    }
+  },
   onLoad(options) {
     uni.setNavigationBarTitle({
       title: options.title || '停车场分析'

+ 40 - 12
pages/operationalAnalysis/roadModel/index.vue

@@ -3,15 +3,14 @@
  * @Author: 空白格
  * @Date: 2022-08-02 16:47:29
  * @LastEditors: 空白格
- * @LastEditTime: 2022-08-02 17:16:28
+ * @LastEditTime: 2022-08-04 11:43:21
  * @FilePath: \parking_operation\pages\operationalAnalysis\roadModel\index.vue
  * @Copyright: Copyright (c) 2016~2022 by 空白格, All Rights Reserved. 
 -->
 <template>
   <view class="analysis">
     <view class="analysis-header">
-      <view class="analysis-header-left">&nbsp;</view>
-      <view class="analysis-header-right">
+      <view class="analysis-header-left">
         <view class="tab">
           <view
             class="tab-item"
@@ -19,25 +18,30 @@
             :key="index"
             :class="{ active: tabCur === item.value }"
             @click="tabClick(item)"
-          >{{ item.label }}</view>
+          >
+            {{
+            item.label
+            }}
+          </view>
         </view>
       </view>
+      <view class="analysis-header-right">{{ currentDate }}</view>
     </view>
     <view class="analysis-main">
       <template v-if="templateKey === 'sectionAnalysis'">
-        <section-analysis ref="sectionAnalysis" :title="title" />
+        <section-analysis ref="sectionAnalysis" />
       </template>
       <template v-else-if="templateKey === 'arrearsAnalysis'">
-        <arrears-analysis ref="arrearsAnalysis" :title="title" />
+        <arrears-analysis ref="arrearsAnalysis" />
       </template>
       <template v-else-if="templateKey === 'revenueAnalysis'">
-        <revenue-analysis ref="revenueAnalysis" :title="title" />
+        <revenue-analysis ref="revenueAnalysis" />
       </template>
       <template v-else-if="templateKey === 'incomeAnalysis'">
-        <income-analysis ref="incomeAnalysis" :title="title" />
+        <income-analysis ref="incomeAnalysis" />
       </template>
       <template v-else-if="templateKey === 'paymentMethod'">
-        <payment-method ref="paymentMethod" :title="title" />
+        <payment-method ref="paymentMethod" />
       </template>
     </view>
     <!-- 年 -->
@@ -47,7 +51,7 @@
       :defaultIndex="defaultYear"
       @confirm="yearConfirm"
       @cancel="yearPicker = false"
-    ></u-picker>
+    />
     <!-- 月 -->
     <u-picker
       :show="monthPicker"
@@ -55,7 +59,7 @@
       :defaultIndex="defaultMonth"
       @confirm="monthConfirm"
       @cancel="monthPicker = false"
-    ></u-picker>
+    />
     <!-- 日 -->
     <u-picker
       :show="dayPicker"
@@ -63,7 +67,7 @@
       :defaultIndex="defaultDay"
       @confirm="dayConfirm"
       @cancel="dayPicker = false"
-    ></u-picker>
+    />
   </view>
 </template>
 
@@ -100,6 +104,7 @@ export default {
       tabCur: 2,
       templateKey: '',
       title: '',
+      currentDate: '',
       // 参数
       params: {
         reportType: 2,
@@ -125,6 +130,29 @@ export default {
       dayObj: {}
     };
   },
+  watch: {
+    title(val) {
+      if (val) {
+        const dateArr = val.split('-');
+        switch (this.tabCur) {
+          case 0:
+            this.currentDate = `${Number(dateArr[0])}年${Number(
+              dateArr[1]
+            )}月${Number(dateArr[2])}日`;
+            break;
+          case 1:
+            this.currentDate = `${Number(dateArr[0])}年${Number(dateArr[1])}月`;
+            break;
+          case 2:
+            this.currentDate = `${Number(dateArr[0])}年`;
+            break;
+          default:
+            this.currentDate = '--';
+            break;
+        }
+      }
+    }
+  },
   onLoad(options) {
     uni.setNavigationBarTitle({
       title: options.title || '路段分析'

+ 20 - 22
pages/operationalAnalysis/styles/analysis.scss

@@ -9,27 +9,25 @@
     justify-content: space-between;
     align-items: center;
     margin-bottom: 10px;
-    &-right {
-      .tab {
-        display: flex;
-        border: solid 1px #1767f2;
-        &-item {
-          width: 40px;
-          height: 28px;
-          line-height: 28px;
-          text-align: center;
-          border-right: solid 1px #1767f2;
-          color: #1767f2;
-          font-size: 16px;
-          &:last-child {
-            border-right: none;
-          }
-        }
-        .active {
-          background-color: #1767f2;
-          color: #fff;
-        }
-      }
-    }
+		.tab {
+			display: flex;
+			border: solid 1px #1767f2;
+			&-item {
+				width: 40px;
+				height: 28px;
+				line-height: 28px;
+				text-align: center;
+				border-right: solid 1px #1767f2;
+				color: #1767f2;
+				font-size: 16px;
+				&:last-child {
+					border-right: none;
+				}
+			}
+			.active {
+				background-color: #1767f2;
+				color: #fff;
+			}
+		}
   }
 }

+ 4 - 4
pages/statisticalReport/parkModel/components/arrearsReport.vue

@@ -2,7 +2,7 @@
 <template>
   <view class="container">
     <view class="table">
-      <view class="table-date" v-if="currentDate">{{ currentDate.join(' 至 ') }}</view>
+      <!-- <view class="table-date" v-if="currentDate">{{ currentDate.join(' 至 ') }}</view> -->
       <view class="table-box">
         <TableRanking
           :loading="loading"
@@ -61,8 +61,8 @@ export default {
     tabClick(item) {
       this.tabCurName = item.value;
       this.tableData.current = 1;
-			this.getArreasReportTotal();
-			this.getArreasReportList();
+      this.getArreasReportTotal();
+      this.getArreasReportList();
     },
     getData(data) {
       if (data.length) {
@@ -112,7 +112,7 @@ export default {
 </script>
 
 <style lang="scss" scoped>
-@import './report.scss';
+@import './../../styles/report.scss';
 .tab {
   margin-bottom: 10px;
 }

+ 2 - 2
pages/statisticalReport/parkModel/components/parkingReallyIncome.vue

@@ -10,7 +10,7 @@
 <template>
 	<view class="container">
 		<view class="table">
-			<view class="table-date" v-if="currentDate">{{ currentDate.join(' 至 ') }}</view>
+			<!-- <view class="table-date" v-if="currentDate">{{ currentDate.join(' 至 ') }}</view> -->
 			<view class="table-box">
 				<TableRanking :loading="loading" :padding="'0'" :tableTh="tableTh" :tableData="tableData"
 					@pageChange="pageChange" />
@@ -110,5 +110,5 @@
 </script>
 
 <style lang="scss" scoped>
-	@import './report.scss';
+	@import './../../styles/report.scss';
 </style>

+ 2 - 2
pages/statisticalReport/parkModel/components/reallyReceivable.vue

@@ -2,7 +2,7 @@
 <template>
 	<view class="container">
 		<view class="table">
-			<view class="table-date" v-if="params.queryDate">{{ params.title }}</view>
+			<!-- <view class="table-date" v-if="params.queryDate">{{ params.title }}</view> -->
 			<view class="table-box">
 				<uni-table emptyText="暂无更多数据" :loading="loading">
 					<!-- 表头行 -->
@@ -109,5 +109,5 @@
 </script>
 
 <style lang="scss" scoped>
-	@import './report.scss';
+	@import './../../styles/report.scss';
 </style>

+ 0 - 68
pages/statisticalReport/parkModel/components/report.scss

@@ -1,68 +0,0 @@
-.table {
-	padding: 19px 15px;
-	background-color: #fff;
-	border-radius: 5px;
-	font-family: PingFangSC-Regular, PingFang SC;
-	&-title {
-		text-align: center;
-		margin-bottom: 10px;
-	}
-	&-date {
-		margin-bottom: 10px;
-		font-size: 14px;
-		color: #434343;
-		text-align: center;
-	}
-	&-search {
-		display: flex;
-		justify-content: space-between;
-		align-items: center;
-		margin-bottom: 10px;
-		&-item {
-			width: 38%;
-			margin-right: 2%;
-			.input {
-				height: 29px;
-				padding: 0 9px!important;
-			}
-			&:last-child {
-				width: 53px;
-				margin-right: 0;
-				.btn {
-					width: 53px;
-					height: 31px;
-				}
-			}
-		}
-	}
-	&-box {
-		&-th {
-			border-bottom: none;
-			background-color: #EDF3FF;
-			font-size: 12px;
-			color: #434343;
-		}
-
-		&-td {
-			font-size: 12px;
-			color: #434343;
-			word-wrap: break-word;
-		}
-	}
-
-	&-pagination {
-		width: 130px;
-		margin: 20px auto 0;
-	}
-}
-.total {
-	color: #CADDFC;
-	margin-top: 24px;
-	text-align: center;
-	font-size: 14px;
-	line-height: 17px;
-	text {
-		color: #fff;
-		padding: 0 5px;
-	}
-}

+ 2 - 2
pages/statisticalReport/parkModel/components/revenueReport.vue

@@ -2,7 +2,7 @@
 <template>
 	<view class="container">
 		<view class="table">
-			<view class="table-date" v-if="currentDate">{{ currentDate.join(' 至 ') }}</view>
+			<!-- <view class="table-date" v-if="currentDate">{{ currentDate.join(' 至 ') }}</view> -->
 			<view class="table-box">
 				<TableRanking :loading="loading" :padding="'0'" :tableTh="tableTh" :tableData="tableData"
 					@pageChange="pageChange" />
@@ -140,5 +140,5 @@
 </script>
 
 <style lang="scss" scoped>
-	@import './report.scss';
+	@import './../../styles/report.scss';
 </style>

+ 65 - 24
pages/statisticalReport/parkModel/index.vue

@@ -3,34 +3,36 @@
  * @Author: 空白格
  * @Date: 2022-08-03 11:55:13
  * @LastEditors: 空白格
- * @LastEditTime: 2022-08-03 13:51:11
+ * @LastEditTime: 2022-08-04 11:42:48
  * @FilePath: \parking_operation\pages\statisticalReport\parkModel\index.vue
  * @Copyright: Copyright (c) 2016~2022 by 空白格, All Rights Reserved. 
 -->
 <template>
   <view class="report">
     <view class="report-header">
-      <view class="report-header-left">&nbsp;</view>
-      <view class="report-header-right" v-if="templateKey === 'reallyReceivable'">
-        <view class="tab">
-          <view
-            class="tab-item"
-            v-for="(item, index) in tabList"
-            :key="index"
-            :class="{'active': tabCur === item.value}"
-            @click="tabClick(item)"
-          >{{ item.label }}</view>
-        </view>
-      </view>
-      <view class="report-header-right" v-else>
-        <uni-datetime-picker v-model="curDate" type="daterange" @change="dateChange">
-          <u--text text="日期查询" color="#1767F2"></u--text>
-        </uni-datetime-picker>
+      <view class="report-header-left">
+        <template v-if="templateKey === 'reallyReceivable'">
+          <view class="tab">
+            <view
+              class="tab-item"
+              v-for="(item, index) in tabList"
+              :key="index"
+              :class="{'active': tabCur === item.value}"
+              @click="tabClick(item)"
+            >{{ item.label }}</view>
+          </view>
+        </template>
+        <template v-else>
+          <uni-datetime-picker v-model="curDate" type="daterange" @change="dateChange">
+            <u--text text="日期查询" color="#1767F2"></u--text>
+          </uni-datetime-picker>
+        </template>
       </view>
+      <view class="report-header-right">{{ currentDate }}</view>
     </view>
     <view class="report-content">
       <template v-if="templateKey === 'parkingReallyIncome'">
-        <ParkingReallyIncome ref="parkingReallyIncome"/>
+        <ParkingReallyIncome ref="parkingReallyIncome" />
       </template>
       <template v-else-if="templateKey === 'arrearsReport'">
         <ArrearsReport ref="arrearsReport" />
@@ -104,9 +106,10 @@ export default {
       // 参数
       params: {
         reportType: 2,
-        queryDate: '',
-        title: ''
+        queryDate: ''
       },
+      title: '',
+      currentDate: '',
       // 年
       yearPicker: false,
       yearList: this.getYearList(),
@@ -127,12 +130,48 @@ export default {
       dayObj: {}
     };
   },
+  watch: {
+    title(val) {
+      if (val) {
+        if (typeof val === 'object') {
+          if (val.length) {
+            let startDateList = val[0].split('-'),
+              endDateList = val[1].split('-');
+            this.currentDate = `${Number(startDateList[0])}年${Number(
+              startDateList[1]
+            )}月${Number(startDateList[2])}日至${Number(
+              endDateList[0]
+            )}年${Number(endDateList[1])}月${Number(endDateList[2])}日`;
+          }
+        } else {
+          const dateArr = val.split('-');
+          switch (this.tabCur) {
+            case 0:
+              this.currentDate = `${Number(dateArr[0])}年${Number(
+                dateArr[1]
+              )}月${Number(dateArr[2])}日`;
+              break;
+            case 1:
+              this.currentDate = `${Number(dateArr[0])}年${Number(
+                dateArr[1]
+              )}月`;
+              break;
+            case 2:
+              this.currentDate = `${Number(dateArr[0])}年`;
+              break;
+            default:
+              this.currentDate = '--';
+              break;
+          }
+        }
+      }
+    }
+  },
   onLoad(options) {
     uni.setNavigationBarTitle({
       title: options.title || '路段报表'
     });
     this.templateKey = options.key;
-    console.log(this.templateKey);
   },
   onShow() {
     if (
@@ -148,10 +187,11 @@ export default {
       if (this.templateKey === 'reallyReceivable') {
         this.currentYear = this.yearList[0][4].value;
         this.yearObj = this.yearList[0][4];
-        this.params.title = this.yearList[0][4].text;
+        this.title = this.yearList[0][4].text;
         this.params.queryDate = `${this.currentYear}-${this.currentMonth}-${this.currentDay}`;
         this.$refs[this.templateKey].getData(this.params);
       } else {
+        this.title = this.curDate;
         this.$refs[this.templateKey].getData(this.curDate);
       }
     });
@@ -234,12 +274,13 @@ export default {
     },
     dateChange(e) {
       this.curDate = e;
+      this.title = this.curDate;
       this.$refs[this.templateKey].getData(this.curDate);
     },
     yearConfirm(e) {
       this.defaultYear = [e.indexs[0]];
       this.currentYear = e.value[0].value;
-      this.params.title = e.value[0].text;
+      this.title = e.value[0].text;
       this.yearObj = e.value[0];
       this.params.queryDate = `${this.currentYear}-${this.currentMonth}-${this.currentDay}`;
       this.$refs[this.templateKey].getData(this.params);
@@ -249,7 +290,7 @@ export default {
       this.defaultMonth = [e.indexs[0]];
       this.currentMonth = e.value[0].value;
       this.monthObj = e.value[0];
-      this.params.title = `${this.yearObj.text}-${this.monthObj.text}`;
+      this.title = `${this.yearObj.text}-${this.monthObj.text}`;
       this.params.queryDate = `${this.currentYear}-${this.currentMonth}-${this.currentDay}`;
       this.$refs[this.templateKey].getData(this.params);
       this.monthPicker = false;

+ 2 - 2
pages/statisticalReport/roadModel/components/arrearsReport.vue

@@ -2,7 +2,7 @@
 <template>
   <view class="container">
     <view class="table">
-      <view class="table-date" v-if="currentDate">{{ currentDate.join(' 至 ') }}</view>
+      <!-- <view class="table-date" v-if="currentDate">{{ currentDate.join(' 至 ') }}</view> -->
       <view class="table-box">
         <TableRanking
           :loading="loading"
@@ -112,7 +112,7 @@ export default {
 </script>
 
 <style lang="scss" scoped>
-@import './report.scss';
+@import './../../styles/report.scss';
 .tab {
   margin-bottom: 10px;
 }

+ 2 - 2
pages/statisticalReport/roadModel/components/reallyReceivable.vue

@@ -2,7 +2,7 @@
 <template>
 	<view class="container">
 		<view class="table">
-			<view class="table-date" v-if="params.queryDate">{{ params.title }}</view>
+			<!-- <view class="table-date" v-if="params.queryDate">{{ params.title }}</view> -->
 			<view class="table-box">
 				<uni-table emptyText="暂无更多数据" :loading="loading">
 					<!-- 表头行 -->
@@ -109,5 +109,5 @@
 </script>
 
 <style lang="scss" scoped>
-	@import './report.scss';
+	@import './../../styles/report.scss';
 </style>

+ 2 - 2
pages/statisticalReport/roadModel/components/recoveryReport.vue

@@ -10,7 +10,7 @@
 <template>
   <view class="container">
     <view class="table">
-      <view class="table-date" v-if="currentDate">{{ currentDate.join(' 至 ') }}</view>
+      <!-- <view class="table-date" v-if="currentDate">{{ currentDate.join(' 至 ') }}</view> -->
       <view class="table-box">
         <TableRanking
           :loading="loading"
@@ -137,5 +137,5 @@ export default {
 </script>
 
 <style lang="scss" scoped>
-@import './report.scss';
+@import './../../styles/report.scss';
 </style>

+ 0 - 68
pages/statisticalReport/roadModel/components/report.scss

@@ -1,68 +0,0 @@
-.table {
-	padding: 19px 15px;
-	background-color: #fff;
-	border-radius: 5px;
-	font-family: PingFangSC-Regular, PingFang SC;
-	&-title {
-		text-align: center;
-		margin-bottom: 10px;
-	}
-	&-date {
-		margin-bottom: 10px;
-		font-size: 14px;
-		color: #434343;
-		text-align: center;
-	}
-	&-search {
-		display: flex;
-		justify-content: space-between;
-		align-items: center;
-		margin-bottom: 10px;
-		&-item {
-			width: 38%;
-			margin-right: 2%;
-			.input {
-				height: 29px;
-				padding: 0 9px!important;
-			}
-			&:last-child {
-				width: 53px;
-				margin-right: 0;
-				.btn {
-					width: 53px;
-					height: 31px;
-				}
-			}
-		}
-	}
-	&-box {
-		&-th {
-			border-bottom: none;
-			background-color: #EDF3FF;
-			font-size: 12px;
-			color: #434343;
-		}
-
-		&-td {
-			font-size: 12px;
-			color: #434343;
-			word-wrap: break-word;
-		}
-	}
-
-	&-pagination {
-		width: 130px;
-		margin: 20px auto 0;
-	}
-}
-.total {
-	color: #CADDFC;
-	margin-top: 24px;
-	text-align: center;
-	font-size: 14px;
-	line-height: 17px;
-	text {
-		color: #fff;
-		padding: 0 5px;
-	}
-}

+ 2 - 2
pages/statisticalReport/roadModel/components/revenueReport.vue

@@ -2,7 +2,7 @@
 <template>
 	<view class="container">
 		<view class="table">
-			<view class="table-date" v-if="currentDate">{{ currentDate.join(' 至 ') }}</view>
+			<!-- <view class="table-date" v-if="currentDate">{{ currentDate.join(' 至 ') }}</view> -->
 			<view class="table-box">
 				<TableRanking :loading="loading" :padding="'0'" :tableTh="tableTh" :tableData="tableData"
 					@pageChange="pageChange" />
@@ -140,5 +140,5 @@
 </script>
 
 <style lang="scss" scoped>
-	@import './report.scss';
+	@import './../../styles/report.scss';
 </style>

+ 2 - 2
pages/statisticalReport/roadModel/components/sectionBerth.vue

@@ -2,7 +2,7 @@
 <template>
 	<view class="container">
 		<view class="table">
-			<view class="table-date" v-if="currentDate">{{ currentDate.join(' 至 ') }}</view>
+			<!-- <view class="table-date" v-if="currentDate">{{ currentDate.join(' 至 ') }}</view> -->
 			<view class="table-box">
 				<TableRanking :loading="loading" :padding="'0'" :tableTh="tableTh" :tableData="tableData"
 					@pageChange="pageChange" />
@@ -114,5 +114,5 @@
 </script>
 
 <style lang="scss" scoped>
-	@import './report.scss';
+	@import './../../styles/report.scss';
 </style>

+ 65 - 23
pages/statisticalReport/roadModel/index.vue

@@ -3,7 +3,7 @@
  * @Author: 空白格
  * @Date: 2022-08-03 09:26:29
  * @LastEditors: 空白格
- * @LastEditTime: 2022-08-03 12:00:19
+ * @LastEditTime: 2022-08-04 11:42:40
  * @FilePath: \parking_operation\pages\statisticalReport\roadModel\index.vue
  * @Copyright: Copyright (c) 2016~2022 by 空白格, All Rights Reserved. 
 -->
@@ -11,23 +11,25 @@
 <template>
   <view class="report">
     <view class="report-header">
-      <view class="report-header-left">&nbsp;</view>
-      <view class="report-header-right" v-if="templateKey === 'reallyReceivable'">
-        <view class="tab">
-          <view
-            class="tab-item"
-            v-for="(item, index) in tabList"
-            :key="index"
-            :class="{'active': tabCur === item.value}"
-            @click="tabClick(item)"
-          >{{ item.label }}</view>
-        </view>
-      </view>
-      <view class="report-header-right" v-else>
-        <uni-datetime-picker v-model="curDate" type="daterange" @change="dateChange">
-          <u--text text="日期查询" color="#1767F2"></u--text>
-        </uni-datetime-picker>
+      <view class="report-header-left">
+        <template v-if="templateKey === 'reallyReceivable'">
+          <view class="tab">
+            <view
+              class="tab-item"
+              v-for="(item, index) in tabList"
+              :key="index"
+              :class="{'active': tabCur === item.value}"
+              @click="tabClick(item)"
+            >{{ item.label }}</view>
+          </view>
+        </template>
+        <template v-else>
+          <uni-datetime-picker v-model="curDate" type="daterange" @change="dateChange">
+            <u--text text="日期查询" color="#1767F2"></u--text>
+          </uni-datetime-picker>
+        </template>
       </view>
+      <view class="report-header-right">{{ currentDate }}</view>
     </view>
     <view class="report-content">
       <template v-if="templateKey === 'sectionBerth'">
@@ -110,9 +112,10 @@ export default {
       // 参数
       params: {
         reportType: 2,
-        queryDate: '',
-        title: ''
+        queryDate: ''
       },
+      title: '',
+      currentDate: '',
       // 年
       yearPicker: false,
       yearList: this.getYearList(),
@@ -133,6 +136,43 @@ export default {
       dayObj: {}
     };
   },
+  watch: {
+    title(val) {
+      if (val) {
+        if (typeof val === 'object') {
+          if (val.length) {
+            let startDateList = val[0].split('-'),
+              endDateList = val[1].split('-');
+            this.currentDate = `${Number(startDateList[0])}年${Number(
+              startDateList[1]
+            )}月${Number(startDateList[2])}日至${Number(
+              endDateList[0]
+            )}年${Number(endDateList[1])}月${Number(endDateList[2])}日`;
+          }
+        } else {
+          const dateArr = val.split('-');
+          switch (this.tabCur) {
+            case 0:
+              this.currentDate = `${Number(dateArr[0])}年${Number(
+                dateArr[1]
+              )}月${Number(dateArr[2])}日`;
+              break;
+            case 1:
+              this.currentDate = `${Number(dateArr[0])}年${Number(
+                dateArr[1]
+              )}月`;
+              break;
+            case 2:
+              this.currentDate = `${Number(dateArr[0])}年`;
+              break;
+            default:
+              this.currentDate = '--';
+              break;
+          }
+        }
+      }
+    }
+  },
   onLoad(options) {
     uni.setNavigationBarTitle({
       title: options.title || '路段报表'
@@ -153,10 +193,11 @@ export default {
       if (this.templateKey === 'reallyReceivable') {
         this.currentYear = this.yearList[0][4].value;
         this.yearObj = this.yearList[0][4];
-        this.params.title = this.yearList[0][4].text;
+        this.title = this.yearList[0][4].text;
         this.params.queryDate = `${this.currentYear}-${this.currentMonth}-${this.currentDay}`;
         this.$refs[this.templateKey].getData(this.params);
       } else {
+        this.title = this.curDate;
         this.$refs[this.templateKey].getData(this.curDate);
       }
     });
@@ -239,12 +280,13 @@ export default {
     },
     dateChange(e) {
       this.curDate = e;
+      this.title = this.curDate;
       this.$refs[this.templateKey].getData(this.curDate);
     },
     yearConfirm(e) {
       this.defaultYear = [e.indexs[0]];
       this.currentYear = e.value[0].value;
-      this.params.title = e.value[0].text;
+      this.title = e.value[0].text;
       this.yearObj = e.value[0];
       this.params.queryDate = `${this.currentYear}-${this.currentMonth}-${this.currentDay}`;
       this.$refs[this.templateKey].getData(this.params);
@@ -254,7 +296,7 @@ export default {
       this.defaultMonth = [e.indexs[0]];
       this.currentMonth = e.value[0].value;
       this.monthObj = e.value[0];
-      this.params.title = `${this.yearObj.text}-${this.monthObj.text}`;
+      this.title = `${this.yearObj.text}-${this.monthObj.text}`;
       this.params.queryDate = `${this.currentYear}-${this.currentMonth}-${this.currentDay}`;
       this.$refs[this.templateKey].getData(this.params);
       this.monthPicker = false;
@@ -265,7 +307,7 @@ export default {
       this.title = e.value[0].text;
       this.currentDay = e.value[0].value;
       this.dayObj = e.value[0];
-      this.params.title = `${this.yearObj.text}-${this.monthObj.text}-${this.dayObj.text}`;
+      this.title = `${this.yearObj.text}-${this.monthObj.text}-${this.dayObj.text}`;
       this.params.queryDate = `${this.currentYear}-${this.currentMonth}-${this.currentDay}`;
       this.$refs[this.templateKey].getData(this.params);
       this.dayPicker = false;

+ 44 - 48
pages/statisticalReport/styles/report.scss

@@ -1,49 +1,45 @@
 .report {
-	padding: 15px;
-	font-family: PingFangSC-Regular, PingFang SC;
-	&-header {
-		background-color: #fff;
-		border-radius: 5px;
-		padding: 15px;
-		display: flex;
-		justify-content: space-between;
-		align-items: center;
-		margin-bottom: 10px;
-		&-left {
-			display: flex;
-			align-items: center;
-			text {
-				margin-left: 5px;
-				color: #434343;
-				font-size: 15px;
-			}
-		}
-		&-right {
-			.tab {
-				display: flex;
-				border: solid 1px #1767F2;
-				&-item {
-					width: 40px;
-					height: 28px;
-					line-height: 28px;
-					text-align: center;
-					border-right: solid 1px #1767F2;
-					color: #1767F2;
-					font-size: 16px;
-					&:last-child {
-						border-right: none;
-					}
-				}
-				.active {
-					background-color: #1767f2;
-					color: #fff;
-				}
-			}
-		}
-	}
-	&-content {
-		// padding: 19px 15px;
-		// background-color: #fff;
-		// border-radius: 5px;
-	}
-}
+  padding: 15px;
+  font-family: PingFangSC-Regular, PingFang SC;
+  &-header {
+    background-color: #fff;
+    border-radius: 5px;
+    padding: 15px;
+    display: flex;
+    justify-content: space-between;
+    align-items: center;
+    margin-bottom: 10px;
+    font-size: 15px;
+    .tab {
+      display: flex;
+      border: solid 1px #1767f2;
+      &-item {
+        width: 40px;
+        height: 28px;
+        line-height: 28px;
+        text-align: center;
+        border-right: solid 1px #1767f2;
+        color: #1767f2;
+        font-size: 16px;
+        &:last-child {
+          border-right: none;
+        }
+      }
+      .active {
+        background-color: #1767f2;
+        color: #fff;
+      }
+    }
+  }
+}
+.total {
+  color: #caddfc;
+  margin-top: 24px;
+  text-align: center;
+  font-size: 14px;
+  line-height: 17px;
+  text {
+    color: #fff;
+    padding: 0 5px;
+  }
+}