zbb 1 ano atrás
pai
commit
a445d5de19

+ 0 - 12
src/api/audit.js

@@ -17,16 +17,4 @@ export default {
17 17
   tccqkView(params) {
18 18
     return axios.get('/dash/parking/lot/situation/view', {params})
19 19
   },
20
-  // 收费趋势
21
-  sfqs(params) {
22
-    return axios.post('/dash/business/conditions/stat1', params)
23
-  },
24
-  // 车辆类型
25
-  cllx(params) {
26
-    return axios.post('/dash/parking/operate/stat4', params)
27
-  },
28
-  // // 经营情况_列表
29
-  // jyqk(params) {
30
-  //   return axios.get('/dash/business/conditions/page', {params})
31
-  // }
32 20
 }

+ 1 - 1
src/pages/index/components/demo1.vue

@@ -112,7 +112,7 @@
112 112
       const {pageNum, pageSize} = this
113 113
       let that = this
114 114
       let params4 = {current: pageNum, size: pageSize}
115
-      let requestList = [api.tccqkView(), api.sfqs(),api.cllx(), api.jyqk(params4)];
115
+      let requestList = [api.tccqkView(), api.sfqs(),api.cllx(), api.tccqkListByPage(params4)];
116 116
       Promise.all(requestList).then(res => {
117 117
         that.viewData = res[0].data
118 118
         that.linedata = res[1].data || []

+ 114 - 0
src/pages/index/components/parking_index.vue

@@ -0,0 +1,114 @@
1
+<template xmlns:piechart="http://www.w3.org/1999/html">
2
+  <div class="body-wrapper">
3
+    <div style="display: flex; justify-content: space-between;">
4
+      <div class="body-box" style="width: 43%;height:400px;border-radius: 5px;background-color: #f6f5f5;padding: 20px;color: #525252;">
5
+        <h2>概览</h2>
6
+        <div class="box-item" style="border: 2px dotted #a1a1a1;border-radius: 5px;padding: 20px 20px 40px 20px;margin-top: 15px">
7
+          <h4 style="float: left">停车场总数</h4>
8
+          <span style="float: right;color: red">{{viewData.totalParking}}</span>
9
+        </div>
10
+        <div class="box-item" style="border: 2px dotted #757575;border-radius: 5px;padding: 20px 20px 40px 20px;margin-top: 15px">
11
+          <h4 style="float: left">今日停车记录数</h4>
12
+          <span style="float: right;color: #fc6969">{{viewData.todayTotal}}</span>
13
+        </div>
14
+        <div class="box-item" style="border: 2px dotted #757575;border-radius: 5px;padding: 20px 20px 40px 20px;margin-top: 15px">
15
+          <h4 style="float: left">今日实收总额</h4>
16
+          <span style="float: right;color: #fc6969">{{viewData.todayInput}}</span>
17
+        </div>
18
+        <div class="box-item" style="border: 2px dotted #757575;border-radius: 5px;padding: 20px 20px 40px 20px;margin-top: 15px">
19
+          <h4 style="float: left">日均时长泊位利用率</h4>
20
+          <span style="float: right;color: #fc6969">{{viewData.dailyBerth}}</span>
21
+        </div>
22
+      </div>
23
+      <div class="body-box" style="width: 48%;height:400px;border-radius: 5px;background-color: #f6f5f5;padding: 20px;color: #525252;">
24
+        <h1>停车收入概览</h1>
25
+        <piechart
26
+          class="model-pie-body"
27
+          id="chart1"
28
+          :roseType="false"
29
+          :radiusArr="['30%', '70%']"
30
+          :colorArr="modelPieColor"
31
+          :labelFormat="['{name|{b}}', '{sub|{d}%}', '{hr|}']"
32
+          :dataset="modelData.list"
33
+          :encode="{ itemName: 'name', value: 'value' }"
34
+        />
35
+      </div>
36
+    </div>
37
+    <div style="display: flex; justify-content: space-between;">
38
+      <div class="body-box" style="width:98%;height:400px;border-radius: 5px;background-color: #f6f5f5;padding: 20px;margin-top: 20px;color: #525252;">
39
+        <h1>停车收入概览</h1>
40
+        <barchart
41
+          class="side-chart"
42
+          :autoStop="false"
43
+          :colorArr="['#ffd201', '#00eacb', '#01b4ff', '#5d78ff']"
44
+          legendIcon="react"
45
+          :bottom="30"
46
+          :xlabelFormat="xLabelFormat"
47
+          :top="60"
48
+          yAxisName="(个)"
49
+          :tooltip="tooltipFormat"
50
+          :dataset="bardata"
51
+          :encode="[
52
+            {x: 'month', y: 'hs', seriesName: '接入数量'}]"
53
+          :labelSize="15"
54
+          id="fxdqhszzt"
55
+        />
56
+      </div>
57
+    </div>
58
+  </div>
59
+</template>
60
+<script>
61
+import api from "@/api/audit.js";
62
+import  piechart from "@/components/pieChart";
63
+import barchart from "@/components/barChart";
64
+
65
+export default {
66
+  components: {
67
+    piechart,
68
+    barchart
69
+  },
70
+  data() {
71
+    return {
72
+      viewData:{
73
+        totalParking:"0",
74
+        todayTotal:"0",
75
+        todayInput:"0",
76
+        dailyBerth:"0"
77
+      },
78
+      modelPieColor: ["#4382f6", "#81f878", "#f2ff90", "#FF9800", "#9C27B0"],
79
+      modelData: {
80
+        list: [{name: '源汇区',value:'38.4'},{name:'郾城区',value:'26.4'}, {name:'召陵区',value:'35.2'}]
81
+      },
82
+      bardata: [{month:'源汇区',hs:'600'},{month:'郾城区',hs:'685'},{month:'召陵区',hs:'843'},],
83
+    }
84
+  },
85
+  mounted() {
86
+  },
87
+  watch: {
88
+  },
89
+  methods: {
90
+    tooltipFormat(params) {
91
+      const type = params[0].seriesType;
92
+      const data = params[0].data;
93
+      // ${params[0].name || "--"}月:
94
+      return `<div class="line-tooltip">
95
+<div>${params[0].seriesName}: ${
96
+        params[0].data.hs || "--"}个</div>
97
+</div>`;
98
+    },
99
+    xLabelFormat(name) {
100
+      const nameArr = []
101
+      for (let i = 0; i < name.length; i += 7) {
102
+        nameArr.push(name.substring(i, i + 7))
103
+      }
104
+      return nameArr.join('\n');
105
+    },
106
+  }
107
+}
108
+</script>
109
+<style  lang="scss" scoped>
110
+.body-wrapper {
111
+  padding: 20px;
112
+}
113
+
114
+</style>

+ 360 - 0
src/pages/index/components/parking_order.vue

@@ -0,0 +1,360 @@
1
+<template>
2
+  <div class="body-wrapper">
3
+    <el-tabs  v-model="activeName">
4
+      <el-tab-pane label="支付订单查询" name="支付订单查询">
5
+        <el-form class="form-wrapper" :inline="true" :model="formInline1" style="margin-bottom: 20px;">
6
+          <el-row>
7
+            <el-col :span="8">
8
+              <el-form-item label="订单号:">
9
+                <el-input v-model="formInline1.orderCode" placeholder="请输入"></el-input>
10
+              </el-form-item>
11
+            </el-col>
12
+            <el-col :span="8">
13
+              <el-form-item label="日期:">
14
+                <el-date-picker
15
+                  v-model="formInline1.time"
16
+                  type="daterange"
17
+                  align="right"
18
+                  unlink-panels
19
+                  range-separator="-"
20
+                  value-format="yyyy-MM-dd HH:mm:ss"
21
+                  start-placeholder="开始日期"
22
+                  end-placeholder="结束日期">
23
+                </el-date-picker>
24
+              </el-form-item>
25
+            </el-col>
26
+            <el-col :span="8">
27
+              <el-form-item>
28
+                <el-button type="primary" class="query-btn" @click="onSubmit1">查询</el-button>
29
+              </el-form-item>
30
+            </el-col>
31
+          </el-row>
32
+        </el-form>
33
+        <el-table :data="tableData1">
34
+          <el-table-column v-for="(item, index) in columns1" :key="index" :label="item.label" :prop="item.key">
35
+          </el-table-column>
36
+        </el-table>
37
+        <div class="table-pagination">
38
+          <el-pagination layout="prev, pager, next" :total="total1" @current-change="handlePageChange1"
39
+                         :current-page.sync="pageNum1" :page-size.sync="pageSize1">
40
+          </el-pagination>
41
+        </div>
42
+      </el-tab-pane>
43
+      <el-tab-pane label="欠费订单查询" name="欠费订单查询">
44
+        <el-form class="form-wrapper" :inline="true" :model="formInline2" style="margin-bottom: 20px;">
45
+          <el-row>
46
+            <el-col :span="8">
47
+              <el-form-item label="订单号: ">
48
+                <el-input v-model="formInline2.orderCode" placeholder="请输入"></el-input>
49
+              </el-form-item>
50
+            </el-col>
51
+            <el-col :span="8">
52
+              <el-form-item label="车牌号: ">
53
+                <el-input v-model="formInline2.plateNo" placeholder="请输入"></el-input>
54
+              </el-form-item>
55
+            </el-col>
56
+            <el-col :span="8">
57
+              <el-form-item>
58
+                <el-button type="primary" class="query-btn" @click="onSubmit2">查询</el-button>
59
+              </el-form-item>
60
+            </el-col>
61
+          </el-row>
62
+        </el-form>
63
+        <el-table :data="tableData2">
64
+          <el-table-column v-for="(item, index) in columns2" :key="index" :label="item.label" :prop="item.key">
65
+          </el-table-column>
66
+        </el-table>
67
+        <div class="table-pagination">
68
+          <el-pagination layout="prev, pager, next" :total="total1" @current-change="handlePageChange2"
69
+                         :current-page.sync="pageNum2" :page-size.sync="pageSize2">
70
+          </el-pagination>
71
+        </div>
72
+      </el-tab-pane>
73
+      <el-tab-pane label="查询欠费订单信息" name="查询欠费订单信息">
74
+        <el-form class="form-wrapper" :inline="true" :model="formInline3" style="margin-bottom: 20px;">
75
+          <el-row>
76
+            <el-col :span="6">
77
+              <el-form-item label="订单号:">
78
+                <el-input v-model="formInline3.orderCode" placeholder="请输入"></el-input>
79
+              </el-form-item>
80
+            </el-col>
81
+            <el-col :span="6">
82
+              <el-form-item label="泊位号:">
83
+                <el-input v-model="formInline3.berthCode" placeholder="请输入"></el-input>
84
+              </el-form-item>
85
+            </el-col>
86
+            <el-col :span="6">
87
+              <el-form-item label="车牌号:">
88
+                <el-input v-model="formInline3.plateNo" placeholder="请输入"></el-input>
89
+              </el-form-item>
90
+            </el-col>
91
+            <el-col :span="5">
92
+              <el-form-item>
93
+                <el-button type="primary" class="query-btn" @click="onSubmit3">查询</el-button>
94
+              </el-form-item>
95
+            </el-col>
96
+          </el-row>
97
+        </el-form>
98
+        <el-table :data="tableData3">
99
+          <el-table-column v-for="(item, index) in columns3" :key="index" :label="item.label" :prop="item.key">
100
+          </el-table-column>
101
+        </el-table>
102
+        <div class="table-pagination">
103
+          <el-pagination layout="prev, pager, next" :total="total3" @current-change="handlePageChange3"
104
+                         :current-page.sync="pageNum3" :page-size.sync="pageSize3">
105
+          </el-pagination>
106
+        </div>
107
+      </el-tab-pane>
108
+      <el-tab-pane label="查询预付订单信息" name="查询预付订单信息">
109
+        <el-form class="form-wrapper" :inline="true" :model="formInline4" style="margin-bottom: 20px;">
110
+          <el-row>
111
+            <el-col :span="6">
112
+              <el-form-item label="订单号:">
113
+                <el-input v-model="formInline4.orderCode" placeholder="请输入"></el-input>
114
+              </el-form-item>
115
+            </el-col>
116
+            <el-col :span="6">
117
+              <el-form-item label="泊位号:">
118
+                <el-input v-model="formInline4.berthCode" placeholder="请输入"></el-input>
119
+              </el-form-item>
120
+            </el-col>
121
+            <el-col :span="6">
122
+              <el-form-item label="车牌号:">
123
+                <el-input v-model="formInline4.plateNo" placeholder="请输入"></el-input>
124
+              </el-form-item>
125
+            </el-col>
126
+            <el-col :span="5">
127
+              <el-form-item>
128
+                <el-button type="primary" class="query-btn" @click="onSubmit3">查询</el-button>
129
+              </el-form-item>
130
+            </el-col>
131
+          </el-row>
132
+        </el-form>
133
+        <el-table :data="tableData4">
134
+          <el-table-column v-for="(item, index) in columns4" :key="index" :label="item.label" :prop="item.key">
135
+          </el-table-column>
136
+        </el-table>
137
+        <div class="table-pagination">
138
+          <el-pagination layout="prev, pager, next" :total="total4" @current-change="handlePageChange3"
139
+                         :current-page.sync="pageNum4" :page-size.sync="pageSize4">
140
+          </el-pagination>
141
+        </div>
142
+      </el-tab-pane>
143
+    </el-tabs>
144
+  </div>
145
+</template>
146
+<script>
147
+import api from "@/api/audit.js";
148
+import dictionary from "@/util/dictionary";
149
+
150
+export default {
151
+  components: {},
152
+  data() {
153
+    return {
154
+      activeName: '支付订单查询',
155
+      columns1: [
156
+        {
157
+          label: '订单号',
158
+          key: 'orderCode'
159
+        },
160
+        {
161
+          label: '支付日期',
162
+          key: ''
163
+        },
164
+        {
165
+          label: '支付金额',
166
+          key: ''
167
+        },
168
+        {
169
+          label: '泊位号',
170
+          key: ''
171
+        },
172
+        {
173
+          label: '车牌号',
174
+          key: ''
175
+        },
176
+        {
177
+          label: '入场日期',
178
+          key: ''
179
+        },
180
+        {
181
+          label: '出场日期',
182
+          key: ''
183
+        }
184
+      ],
185
+      tableData1: [],
186
+      total1: 0,
187
+      pageSize1: 10,
188
+      pageNum1: 1,
189
+      formInline1: {
190
+        orderCode: '',
191
+        time:''
192
+      },
193
+      columns2: [
194
+        {
195
+          label: '欠费订单号',
196
+          key: ''
197
+        },
198
+        {
199
+          label: '车牌号',
200
+          key: ''
201
+        },
202
+        {
203
+          label: '修改日期',
204
+          key: ''
205
+        },
206
+        {
207
+          label: '欠费金额',
208
+          key: ''
209
+        }
210
+      ],
211
+      tableData2: [],
212
+      total2: 0,
213
+      pageSize2: 10,
214
+      pageNum2: 1,
215
+      formInline2: {
216
+        orderCode: '',
217
+        plateNo:''
218
+      },
219
+      columns3: [
220
+        {
221
+          label: '订单号',
222
+          key: ''
223
+        },
224
+        {
225
+          label: '泊位号',
226
+          key: ''
227
+        },
228
+        {
229
+          label: '车牌号',
230
+          key: ''
231
+        },
232
+        {
233
+          label: '应付金额',
234
+          key: ''
235
+        },
236
+      ],
237
+      tableData3: [],
238
+      total3: 0,
239
+      pageSize3: 10,
240
+      pageNum3: 1,
241
+      formInline3: {
242
+        orderCode:'',
243
+        berthCode:'',
244
+        plateNo: ''
245
+      },
246
+      columns4: [
247
+        {
248
+          label: '订单号',
249
+          key: ''
250
+        },
251
+        {
252
+          label: '泊位号',
253
+          key: ''
254
+        },
255
+        {
256
+          label: '车牌号',
257
+          key: ''
258
+        },
259
+        {
260
+          label: '预付金额',
261
+          key: ''
262
+        },
263
+      ],
264
+      tableData4: [],
265
+      total4: 0,
266
+      pageSize4: 10,
267
+      pageNum4: 1,
268
+      formInline4: {
269
+        orderCode:'',
270
+        berthCode:'',
271
+        plateNo: ''
272
+      }
273
+    }
274
+  },
275
+  mounted() {
276
+    // this.getTableData1()
277
+    // this.getTableData2()
278
+    // this.getTableData3()
279
+  },
280
+  watch: {
281
+  },
282
+  methods: {
283
+    onSubmit1() {
284
+      this.pageNum1 = 1
285
+      this.getTableData1()
286
+    },
287
+    onSubmit2() {
288
+      this.pageNum2 = 1
289
+      this.getTableData2()
290
+    },
291
+    onSubmit3() {
292
+      this.pageNum3 = 1
293
+      this.getTableData3()
294
+    },
295
+    onSubmit4() {
296
+      this.pageNum4 = 1
297
+      this.getTableData4()
298
+    },
299
+    handlePageChange1() {
300
+      this.getTableData1()
301
+    },
302
+    getTableData1() {
303
+      const {pageNum1, pageSize1} = this
304
+      api.carListByPage({current: pageNum1, size: pageSize1, ...this.formInline1}).then(res => {
305
+        this.tableData1 = (res.data.records || []).map(item => ({...item, carType: dictionary.typeMap[item.carType]}))
306
+        this.total1 = res.data.total
307
+      })
308
+    },
309
+    handlePageChange2() {
310
+      this.getTableData2()
311
+    },
312
+    getTableData2() {
313
+      const {pageNum2, pageSize2} = this
314
+      api.gjListByPage({current: pageNum2, size: pageSize2, ...this.formInline2}).then(res => {
315
+        this.tableData2 = res.data.records || []
316
+        this.total2 = res.data.total
317
+      })
318
+    },
319
+    handlePageChange3() {
320
+      this.getTableData3()
321
+    },
322
+    getTableData3() {
323
+      const {pageNum3, pageSize3} = this
324
+      api.tcjlListByPage({current: pageNum3, size: pageSize3, ...this.formInline3}).then(res => {
325
+        this.tableData3 = res.data.records || []
326
+        this.total3 = res.data.total
327
+      })
328
+    },
329
+    handlePageChange4() {
330
+      this.getTableData3()
331
+    },
332
+    getTableData4() {
333
+      const {pageNum4, pageSize4} = this
334
+      api.tcjlListByPage({current: pageNum4, size: pageSize4, ...this.formInline4}).then(res => {
335
+        this.tableData4 = res.data.records || []
336
+        this.total4 = res.data.total
337
+      })
338
+    }
339
+  }
340
+}
341
+</script>
342
+<style  lang="scss" scoped>
343
+.body-wrapper {
344
+  padding: 20px;
345
+  .button-block{
346
+    text-align: right;
347
+    margin-bottom: 20px;
348
+  }
349
+  .table-pagination{
350
+    text-align: right;
351
+  }
352
+  .search-card{
353
+    margin-bottom: 20px;
354
+    text-align: center;
355
+    .input-wrapper{
356
+      width: 36%;
357
+    }
358
+  }
359
+}
360
+</style>

+ 121 - 0
src/pages/index/components/product_order_search.vue

@@ -0,0 +1,121 @@
1
+<template>
2
+  <div class="body-wrapper">
3
+    <el-form class="form-wrapper" :inline="true" :model="formInline1" style="margin-bottom: 20px;">
4
+      <el-row>
5
+        <el-col :span="8">
6
+          <el-form-item label="选择订单状态:">
7
+            <el-select clearable v-model="formInline1.orderStatus" placeholder="订单状态" popper-class="cur-select">
8
+              <el-option label="全部" value=""></el-option>
9
+              <el-option label="未处理" value="未处理"></el-option>
10
+              <el-option label="已处理" value="已处理"></el-option>
11
+            </el-select>
12
+          </el-form-item>
13
+        </el-col>
14
+        <el-col :span="8">
15
+          <el-form-item>
16
+            <el-button type="primary" class="query-btn" @click="onSubmit1">查询</el-button>
17
+          </el-form-item>
18
+        </el-col>
19
+      </el-row>
20
+    </el-form>
21
+    <el-table :data="tableData1">
22
+      <el-table-column v-for="(item, index) in columns1" :key="index" :label="item.label" :prop="item.key">
23
+      </el-table-column>
24
+    </el-table>
25
+    <div class="table-pagination">
26
+      <el-pagination layout="prev, pager, next" :total="total1" @current-change="handlePageChange1"
27
+                     :current-page.sync="pageNum1" :page-size.sync="pageSize1">
28
+      </el-pagination>
29
+    </div>
30
+
31
+  </div>
32
+</template>
33
+<script>
34
+import api from "@/api/audit.js";
35
+import dictionary from "@/util/dictionary";
36
+
37
+export default {
38
+  components: {},
39
+  data() {
40
+    return {
41
+      columns1: [
42
+        {
43
+          label: '订单编号',
44
+          key: 'orderCode'
45
+        },
46
+        {
47
+          label: '支付金额(元)',
48
+          key: 'payAmount'
49
+        },
50
+        {
51
+          label: '下单时间',
52
+          key: 'orderTime'
53
+        },
54
+        {
55
+          label: '订单状态',
56
+          key: 'orderType'
57
+        },
58
+        {
59
+          label: '修改日期',
60
+          key: 'modifiedTime'
61
+        },
62
+        {
63
+          label: '修改人',
64
+          key: 'modifiedPerson'
65
+        },
66
+      ],
67
+      tableData1: [],
68
+      total1: 0,
69
+      pageSize1: 10,
70
+      pageNum1: 1,
71
+      formInline1: {
72
+        orderStatus: ''
73
+      },
74
+    }
75
+  },
76
+  mounted() {
77
+    // this.getTableData1()
78
+  },
79
+  watch: {},
80
+  methods: {
81
+    onSubmit1() {
82
+      this.pageNum1 = 1
83
+      this.getTableData1()
84
+    },
85
+    handlePageChange1() {
86
+      this.getTableData1()
87
+    },
88
+    getTableData1() {
89
+      const {pageNum1, pageSize1} = this
90
+      api.carListByPage({current: pageNum1, size: pageSize1, ...this.formInline1}).then(res => {
91
+        this.tableData1 = (res.data.records || []).map(item => ({...item, carType: dictionary.typeMap[item.carType]}))
92
+        this.total1 = res.data.total
93
+      })
94
+    },
95
+
96
+  }
97
+}
98
+</script>
99
+<style lang="scss" scoped>
100
+.body-wrapper {
101
+  padding: 20px;
102
+
103
+  .button-block {
104
+    text-align: right;
105
+    margin-bottom: 20px;
106
+  }
107
+
108
+  .table-pagination {
109
+    text-align: right;
110
+  }
111
+
112
+  .search-card {
113
+    margin-bottom: 20px;
114
+    text-align: center;
115
+
116
+    .input-wrapper {
117
+      width: 40%;
118
+    }
119
+  }
120
+}
121
+</style>

+ 4 - 0
src/pages/index/layouts/indexLayout.vue

@@ -38,6 +38,10 @@ export default {
38 38
       menu: [
39 39
         {name: 'demo1', url: '/demo1'},
40 40
         {name: 'demo2', url: '/demo2'},
41
+        {name: '概览系统', url: '/parking_index'},
42
+        {name: '订单修改查询', url: '/product_order_search'},
43
+        {name: '停车订单查询', url: '/parking_order'},
44
+        {name: '泊位列表', url: '/berth_list'},
41 45
       ]
42 46
     }
43 47
   },

+ 15 - 0
src/router/index.js

@@ -27,6 +27,21 @@ export default new Router({
27 27
           path: "/demo2",
28 28
           component: () => import("../pages/index/components/demo2.vue")
29 29
         },
30
+        {
31
+          name: "parking_index",
32
+          path: "/parking_index",
33
+          component: () => import("../pages/index/components/parking_index.vue")
34
+        },
35
+        {
36
+          name: "product_order_search",
37
+          path: "/product_order_search",
38
+          component: () => import("../pages/index/components/product_order_search.vue")
39
+        },
40
+        {
41
+          name: "parking_order",
42
+          path: "/parking_order",
43
+          component: () => import("../pages/index/components/parking_order.vue")
44
+        },
30 45
         {
31 46
           name: "berth_list",
32 47
           path: "/berth_list",