فهرست منبع

对接营收统计

yangzj 2 سال پیش
والد
کامیت
fe6f789be8

+ 20 - 19
App.vue

@@ -28,25 +28,26 @@ export default {
 					if (res.code === 200) {
 						this.version = res.msg
 						if (res.msg !== config.version) {
-							uni.getNetworkType({
-								success: function(res) {
-									if (res.networkType === 'wifi') {
-										_this.downloadAppFileByBackstage()
-									} else {
-										uni.showModal({
-											title: '提示',
-											content: '当前网络非WIFI,继续更新可能会产生流量,确认要更新吗?',
-											confirmText: '更新',
-											confirmColor: '#EE8F57',
-											success: res => {
-												if (res.confirm) {
-													_this.downloadAppFileByBackstage()
-												}
-											}
-										});
-									}
-								}
-							});
+							_this.downloadAppFileByBackstage()
+							// uni.getNetworkType({
+							// 	success: function(res) {
+							// 		if (res.networkType === 'wifi') {
+							// 			_this.downloadAppFileByBackstage()
+							// 		} else {
+							// 			uni.showModal({
+							// 				title: '提示',
+							// 				content: '当前网络非WIFI,继续更新可能会产生流量,确认要更新吗?',
+							// 				confirmText: '更新',
+							// 				confirmColor: '#EE8F57',
+							// 				success: res => {
+							// 					if (res.confirm) {
+							// 						_this.downloadAppFileByBackstage()
+							// 					}
+							// 				}
+							// 			});
+							// 		}
+							// 	}
+							// });
 						}
 					}
 				});

+ 8 - 0
common/apiurl.js

@@ -75,8 +75,16 @@ export const apiurl = {
 		getParkingArrearsReportListUrl: '/admin/report/parkowe',
 		// 获取营收统计接口
 		getIncomeTotalUrl: '/admin/report/incometotal',
+		// 获取路段营收统计接口
+		getRoadIncomeTotalUrl: '/admin/report/incometotalroad',
+		// 获取停车场营收统计接口
+		getParkIncomeTotalUrl: '/admin/report/incometotalpark',
 		// 获取营收列表接口
 		getIncomeListUrl: '/admin/report/income',
+		// 获取路段营收列表接口
+		getRoadIncomeListUrl: '/admin/report/incomeroad',
+		// 获取停车场营收列表接口
+		getParkIncomeListUrl: '/admin/report/incomepark',
 		// 获取实收应收分析列表接口
 		getReallyReceivableListUrl: '/admin/report/amt',
 		// 获取实收应收分析列表(停车场)接口

+ 1 - 1
common/config.js

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

+ 16 - 0
common/http.api.js

@@ -154,10 +154,26 @@ const install = (Vue, vm) => {
 		getIncomeTotalApi: (params = {}) => vm.$u.http.get(apiurl.statisticalReport.getIncomeTotalUrl, {
 			params
 		}),
+		// 获取路段营收统计
+		getRoadIncomeTotalApi: (params = {}) => vm.$u.http.get(apiurl.statisticalReport.getRoadIncomeTotalUrl, {
+			params
+		}),
+		// 获取停车场营收统计
+		getParkIncomeTotalApi: (params = {}) => vm.$u.http.get(apiurl.statisticalReport.getParkIncomeTotalUrl, {
+			params
+		}),
 		// 获取营收列表
 		getIncomeListApi: (params = {}) => vm.$u.http.get(apiurl.statisticalReport.getIncomeListUrl, {
 			params
 		}),
+		// 获取路段营收列表
+		getRoadIncomeListApi: (params = {}) => vm.$u.http.get(apiurl.statisticalReport.getRoadIncomeListUrl, {
+			params
+		}),
+		// 获取停车场列表
+		getParkIncomeListApi: (params = {}) => vm.$u.http.get(apiurl.statisticalReport.getParkIncomeListUrl, {
+			params
+		}),
 		// 获取实收应收分析列表
 		getReallyReceivableListApi: (params = {}) => vm.$u.http.get(apiurl.statisticalReport.getReallyReceivableListUrl, {
 			params

+ 2 - 2
pages/appUpdate/appUpdate.vue

@@ -327,14 +327,14 @@ export default {
       height: 30rpx;
       min-width: 40rpx;
       border-radius: 100px;
-      background: url(/static/images/round.png) #5775e7 center right 4rpx no-repeat;
+      background: url(/static/images/round.png) #6526f3 center right 4rpx no-repeat;
       background-size: 26rpx 26rpx;
     }
   }
 
   .down-text {
     font-size: 24rpx;
-    color: #5674e5;
+    color: #6526f3;
     margin-top: 16rpx;
   }
 }

+ 131 - 102
pages/login/login.vue

@@ -1,113 +1,142 @@
 <template>
-	<view class="login">
-		<view class="login-box">
-			<view class="login-box-title">
-				<view>智慧停车</view>
-				<view>运营数据系统</view>
-			</view>
-			<view class="login-box-form">
-				<view class="login-box-form-box">
-					<u--form :model="form" :rules="rules" ref="uForm">
-						<u-form-item label="" prop="phoneNumber">
-							<u--input v-model="form.phoneNumber"
-								:prefixIcon="require('@/static/icons/job-number-icon.svg')" placeholder="请输入手机号"
-								:maxlength="11" type="number" border="none" class="custom-input"
-								:prefixIconStyle="{ marginRight: '10px' }" fontSize="14px" color="#ffffff" placeholderStyle="color: #fff"/>
-						</u-form-item>
-						<u-form-item label="" prop="password">
-							<u--input v-model="form.password" :prefixIcon="require('@/static/icons/password-icon.svg')"
-								placeholder="请输入密码" :password="true" border="none" class="custom-input"
-								:prefixIconStyle="{ marginRight: '10px' }" fontSize="14px" color="#ffffff" placeholderStyle="color: #fff"/>
-						</u-form-item>
-					</u--form>
-				</view>
-				<view class="login-box-form-btn">
-					<u-button class="login-btn" type="primary" text="登录" :loading="loading" @click="submitLogin">
-					</u-button>
-				</view>
-			</view>
-		</view>
-		<u-toast ref="uToast"></u-toast>
-	</view>
+  <view class="login">
+    <view class="login-box">
+      <view class="login-box-title">
+        <view>智慧停车</view>
+        <view>运营数据系统</view>
+      </view>
+      <view class="login-box-form">
+        <view class="login-box-form-box">
+          <u--form :model="form" :rules="rules" ref="uForm">
+            <u-form-item label prop="phoneNumber">
+              <u--input
+                v-model="form.phoneNumber"
+                :prefixIcon="require('@/static/icons/job-number-icon.svg')"
+                placeholder="请输入手机号"
+                :maxlength="11"
+                type="number"
+                border="none"
+                class="custom-input"
+                :prefixIconStyle="{ marginRight: '10px' }"
+                fontSize="14px"
+                color="#ffffff"
+                placeholderStyle="color: #fff"
+              />
+            </u-form-item>
+            <u-form-item label prop="password">
+              <u--input
+                v-model="form.password"
+                :prefixIcon="require('@/static/icons/password-icon.svg')"
+                placeholder="请输入密码"
+                :password="true"
+                border="none"
+                class="custom-input"
+                :prefixIconStyle="{ marginRight: '10px' }"
+                fontSize="14px"
+                color="#ffffff"
+                placeholderStyle="color: #fff"
+              />
+            </u-form-item>
+          </u--form>
+        </view>
+        <view class="login-box-form-btn">
+          <u-button
+            class="login-btn"
+            type="primary"
+            text="登录"
+            :loading="loading"
+            @click="submitLogin"
+          ></u-button>
+        </view>
+      </view>
+    </view>
+    <u-toast ref="uToast"></u-toast>
+  </view>
 </template>
 
 <script>
-	export default {
-		data() {
-			return {
-				form: {
-					phoneNumber: '',
-					password: ''
-				},
-				loading: false,
-				rules: {
-					phoneNumber: {
-						required: true,
-						message: '请输入手机号',
-						trigger: ['change', 'blur']
-					},
-					password: {
-						required: true,
-						message: '请输入密码',
-						trigger: ['change', 'blur']
-					}
-				}
-			}
-		},
-		methods: {
-			/**
-			 * 登录提交
-			 */
-			submitLogin() {
-				this.$refs.uForm.validate().then(res => {
-					this.loading = true
-					const form = {
-						...this.form
-					}
-					uni.$u.api.loginApi({
-						telephone: form.phoneNumber,
-						loginPwd: form.password
-					}).then(res => {
-						if (res.code === 200) {
-							uni.$u.vuex('vuex_token', res.data.token);
-							this.$u.vuex('vuex_user', res.data);
-							this.$u.vuex('vuex_isLogin', true);
-							this.$refs.uToast.show({
-								loading: true,
-								message: '登录成功!',
-								type: 'success',
-								complete() {
-									uni.$u.route({
-										url: 'pages/index/index',
-										type: 'redirect'
-									})
-								}
-							})
-						} else {
-							this.$refs.uToast.show({
-								loading: true,
-								message: res.msg || '登录失败',
-								type: 'error'
-							})
-						}
-					}).catch(err => {
-						this.loading = false
-					})
-				}).catch(errors => {
-					uni.$u.toast(errors[0].message || '必填项不能为空!')
-				})
-			}
-		}
-	}
+export default {
+  data() {
+    return {
+      form: {
+        phoneNumber: '',
+        password: ''
+      },
+      loading: false,
+      rules: {
+        phoneNumber: {
+          required: true,
+          message: '请输入手机号',
+          trigger: ['change', 'blur']
+        },
+        password: {
+          required: true,
+          message: '请输入密码',
+          trigger: ['change', 'blur']
+        }
+      }
+    };
+  },
+  methods: {
+    /**
+     * 登录提交
+     */
+    submitLogin() {
+      this.$refs.uForm
+        .validate()
+        .then((res) => {
+          this.loading = true;
+          const form = {
+            ...this.form
+          };
+          uni.$u.api
+            .loginApi({
+              telephone: form.phoneNumber,
+              loginPwd: form.password
+            })
+            .then((res) => {
+              if (res.code === 200) {
+                uni.$u.vuex('vuex_token', res.data.token);
+                this.$u.vuex('vuex_user', res.data);
+                this.$u.vuex('vuex_isLogin', true);
+                this.$refs.uToast.show({
+                  loading: true,
+                  message: '登录成功!',
+                  type: 'success',
+                  complete() {
+                    uni.$u.route({
+                      url: 'pages/index/index',
+                      type: 'redirect'
+                    });
+                  }
+                });
+              } else {
+                this.$refs.uToast.show({
+                  loading: true,
+                  message: res.msg || '登录失败',
+                  type: 'error'
+                });
+              }
+            })
+            .catch((err) => {
+              this.loading = false;
+            });
+        })
+        .catch((errors) => {
+          uni.$u.toast(errors[0].message || '必填项不能为空!');
+        });
+    }
+  }
+};
 </script>
 
 <style lang="scss">
-	page {
-		height: 100vh;
-		background: linear-gradient(183deg, #2D82FB 0%, #1558F8 100%);
-	}
+page {
+  height: 100vh;
+  background: linear-gradient(183deg, #2d82fb 0%, #1558f8 100%);
+}
 </style>
 
 <style lang="scss" scoped>
-	@import './login.scss';
+@import './login.scss';
 </style>

+ 154 - 135
pages/statisticalReport/parkModel/components/revenueReport.vue

@@ -1,144 +1,163 @@
 <!-- 营收统计 -->
 <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>
+  <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()
-			}
-		}
-	}
+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
+        .getParkIncomeTotalApi({
+          beginTime: this.beginTime,
+          endTime: this.endTime
+        })
+        .then((res) => {
+          if (res.code === 200) {
+            this.totalData = res.data;
+          }
+        });
+    },
+    getIncomeList() {
+      this.loading = true;
+      uni.$u.api.statisticalReportApi
+        .getParkIncomeListApi({
+          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 './../../styles/report.scss';
+@import './../../styles/report.scss';
 </style>

+ 154 - 135
pages/statisticalReport/roadModel/components/revenueReport.vue

@@ -1,144 +1,163 @@
 <!-- 营收统计 -->
 <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>
+  <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()
-			}
-		}
-	}
+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
+        .getRoadIncomeTotalApi({
+          beginTime: this.beginTime,
+          endTime: this.endTime
+        })
+        .then((res) => {
+          if (res.code === 200) {
+            this.totalData = res.data;
+          }
+        });
+    },
+    getIncomeList() {
+      this.loading = true;
+      uni.$u.api.statisticalReportApi
+        .getRoadIncomeListApi({
+          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 './../../styles/report.scss';
+@import './../../styles/report.scss';
 </style>