duwendi 1 gadu atpakaļ
vecāks
revīzija
fafd74858c

+ 138 - 0
src/pages/index/components/defaulting_subscrlber.vue

@@ -0,0 +1,138 @@
1
+<template>
2
+  <div class="body-wrapper">
3
+    <div style="display: flex; justify-content: space-between;">
4
+      <div style="width: 100%">
5
+        <h4>欠费用户</h4>
6
+        <br>
7
+        <el-form class="form-wrapper" :inline="true" :model="formInline" style="margin-bottom: 20px;">
8
+          <el-row>
9
+            <el-col :span="6">
10
+              <el-form-item label="会员ID:">
11
+                <el-input v-model="formInline.memberId" placeholder="请输入"></el-input>
12
+              </el-form-item>
13
+            </el-col>
14
+            <el-col :span="6">
15
+              <el-form-item label="停车场名称:">
16
+                <el-input v-model="formInline.parkName" placeholder="请输入"></el-input>
17
+              </el-form-item>
18
+            </el-col>
19
+            <el-col :span="6">
20
+              <el-form-item label="车牌号:">
21
+                <el-input v-model="formInline.plateNo" placeholder="请输入"></el-input>
22
+              </el-form-item>
23
+            </el-col>
24
+            <el-col :span="4">
25
+              <el-form-item>
26
+                <el-button type="primary" class="query-btn" @click="onSubmit">查询</el-button>
27
+              </el-form-item>
28
+            </el-col>
29
+          </el-row>
30
+        </el-form>
31
+        <br>
32
+        <el-table :data="tableData">
33
+          <el-table-column v-for="(item, index) in columns" :key="index" :label="item.label" :prop="item.key">
34
+          </el-table-column>
35
+        </el-table>
36
+
37
+        <div class="table-pagination">
38
+          <el-pagination :background="false" layout="total, prev, pager, next" :total="total" @current-change="handlePageChange"
39
+                         :current-page.sync="pageNum" :page-size.sync="pageSize">
40
+          </el-pagination>
41
+        </div>
42
+      </div>
43
+    </div>
44
+  </div>
45
+</template>
46
+<script>
47
+import api from "@/api/audit";
48
+
49
+
50
+export default {
51
+  components: {
52
+
53
+  },
54
+  data() {
55
+    return {
56
+      formInline: {
57
+        memberId: '',
58
+        parkName: '',
59
+        plateNo: ''
60
+      },
61
+      columns: [
62
+        {
63
+          label: '停车场',
64
+          key: 'parkName'
65
+        },
66
+        {
67
+          label: '泊位号',
68
+          key: 'berthCode'
69
+        },
70
+        {
71
+          label: '泊车状态',
72
+          key: 'berthIsorno'
73
+        },
74
+        {
75
+          label: '是否潮汐车位',
76
+          key: 'isTidalPark'
77
+        },
78
+        {
79
+          label: '是否充电泊位',
80
+          key: 'hasChargingPile'
81
+        },
82
+        {
83
+          label: '是否共享泊位',
84
+          key: 'isSharePark'
85
+        },
86
+      ],
87
+      tableData:[],
88
+      total: 0,
89
+      pageSize: 5,
90
+      pageNum: 1,
91
+    }
92
+  },
93
+  mounted() {
94
+    this.getTableData()
95
+  },
96
+  watch: {},
97
+  methods: {
98
+    onSubmit() {
99
+      this.pageNum = 1
100
+      this.getTableData()
101
+    },
102
+    handlePageChange() {
103
+      this.getTableData()
104
+    },
105
+    getTableData() {
106
+      const {pageNum, pageSize} = this
107
+      api.berthListByPage({current: pageNum, size: pageSize, ...this.formInline}).then(res => {
108
+        this.tableData = (res.data.records || []).map(item => ({...item, berthIsorno: (item.berthIsorno === '0' ? '否':'是'),isTidalPark: (item.isTidalPark === '0' ? '否':'是'),hasChargingPile: (item.hasChargingPile === '0' ? '否':'是'),isSharePark: (item.isSharePark === '0' ? '否':'是'),}))
109
+        this.total = res.data.total
110
+      })
111
+    },
112
+  }
113
+}
114
+</script>
115
+<style lang="scss" scoped>
116
+.body-wrapper {
117
+  padding: 20px;
118
+
119
+  .button-block {
120
+    text-align: right;
121
+    margin-bottom: 20px;
122
+  }
123
+
124
+  .table-pagination {
125
+    text-align: right;
126
+  }
127
+
128
+  .search-card {
129
+    margin-bottom: 20px;
130
+    text-align: center;
131
+
132
+    .input-wrapper {
133
+      width: 40%;
134
+    }
135
+  }
136
+}
137
+
138
+</style>

+ 325 - 0
src/pages/index/components/lead_system.vue

@@ -0,0 +1,325 @@
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-tabs>
109
+  </div>
110
+</template>
111
+<script>
112
+import api from "@/api/audit.js";
113
+import dictionary from "@/util/dictionary";
114
+
115
+export default {
116
+  components: {},
117
+  data() {
118
+    return {
119
+      activeName: '停车卡订单查询',
120
+      columns1: [
121
+        {
122
+          label: '订单号',
123
+          key: 'orderCode'
124
+        },
125
+        {
126
+          label: '支付日期',
127
+          key: ''
128
+        },
129
+        {
130
+          label: '支付金额',
131
+          key: ''
132
+        },
133
+        {
134
+          label: '泊位号',
135
+          key: ''
136
+        },
137
+        {
138
+          label: '车牌号',
139
+          key: ''
140
+        },
141
+        {
142
+          label: '入场日期',
143
+          key: ''
144
+        },
145
+        {
146
+          label: '出场日期',
147
+          key: ''
148
+        }
149
+      ],
150
+      tableData1: [],
151
+      total1: 0,
152
+      pageSize1: 10,
153
+      pageNum1: 1,
154
+      formInline1: {
155
+        orderCode: '',
156
+        time:''
157
+      },
158
+      columns2: [
159
+        {
160
+          label: '欠费订单号',
161
+          key: ''
162
+        },
163
+        {
164
+          label: '车牌号',
165
+          key: ''
166
+        },
167
+        {
168
+          label: '修改日期',
169
+          key: ''
170
+        },
171
+        {
172
+          label: '欠费金额',
173
+          key: ''
174
+        }
175
+      ],
176
+      tableData2: [],
177
+      total2: 0,
178
+      pageSize2: 10,
179
+      pageNum2: 1,
180
+      formInline2: {
181
+        orderCode: '',
182
+        plateNo:''
183
+      },
184
+      columns3: [
185
+        {
186
+          label: '订单号',
187
+          key: ''
188
+        },
189
+        {
190
+          label: '泊位号',
191
+          key: ''
192
+        },
193
+        {
194
+          label: '车牌号',
195
+          key: ''
196
+        },
197
+        {
198
+          label: '应付金额',
199
+          key: ''
200
+        },
201
+      ],
202
+      tableData3: [],
203
+      total3: 0,
204
+      pageSize3: 10,
205
+      pageNum3: 1,
206
+      formInline3: {
207
+        orderCode:'',
208
+        berthCode:'',
209
+        plateNo: ''
210
+      },
211
+      columns4: [
212
+        {
213
+          label: '订单号',
214
+          key: ''
215
+        },
216
+        {
217
+          label: '泊位号',
218
+          key: ''
219
+        },
220
+        {
221
+          label: '车牌号',
222
+          key: ''
223
+        },
224
+        {
225
+          label: '预付金额',
226
+          key: ''
227
+        },
228
+      ],
229
+      tableData4: [],
230
+      total4: 0,
231
+      pageSize4: 10,
232
+      pageNum4: 1,
233
+      formInline4: {
234
+        orderCode:'',
235
+        berthCode:'',
236
+        plateNo: ''
237
+      }
238
+    }
239
+  },
240
+  mounted() {
241
+    // this.getTableData1()
242
+    // this.getTableData2()
243
+    // this.getTableData3()
244
+  },
245
+  watch: {
246
+  },
247
+  methods: {
248
+    onSubmit1() {
249
+      this.pageNum1 = 1
250
+      this.getTableData1()
251
+    },
252
+    onSubmit2() {
253
+      this.pageNum2 = 1
254
+      this.getTableData2()
255
+    },
256
+    onSubmit3() {
257
+      this.pageNum3 = 1
258
+      this.getTableData3()
259
+    },
260
+    onSubmit4() {
261
+      this.pageNum4 = 1
262
+      this.getTableData4()
263
+    },
264
+    handlePageChange1() {
265
+      this.getTableData1()
266
+    },
267
+    getTableData1() {
268
+      const {pageNum1, pageSize1} = this
269
+      api.carListByPage({current: pageNum1, size: pageSize1, ...this.formInline1}).then(res => {
270
+        this.tableData1 = (res.data.records || []).map(item => ({...item, carType: dictionary.typeMap[item.carType]}))
271
+        this.total1 = res.data.total
272
+      })
273
+    },
274
+    handlePageChange2() {
275
+      this.getTableData2()
276
+    },
277
+    getTableData2() {
278
+      const {pageNum2, pageSize2} = this
279
+      api.gjListByPage({current: pageNum2, size: pageSize2, ...this.formInline2}).then(res => {
280
+        this.tableData2 = res.data.records || []
281
+        this.total2 = res.data.total
282
+      })
283
+    },
284
+    handlePageChange3() {
285
+      this.getTableData3()
286
+    },
287
+    getTableData3() {
288
+      const {pageNum3, pageSize3} = this
289
+      api.tcjlListByPage({current: pageNum3, size: pageSize3, ...this.formInline3}).then(res => {
290
+        this.tableData3 = res.data.records || []
291
+        this.total3 = res.data.total
292
+      })
293
+    },
294
+    handlePageChange4() {
295
+      this.getTableData3()
296
+    },
297
+    getTableData4() {
298
+      const {pageNum4, pageSize4} = this
299
+      api.tcjlListByPage({current: pageNum4, size: pageSize4, ...this.formInline4}).then(res => {
300
+        this.tableData4 = res.data.records || []
301
+        this.total4 = res.data.total
302
+      })
303
+    }
304
+  }
305
+}
306
+</script>
307
+<style  lang="scss" scoped>
308
+.body-wrapper {
309
+  padding: 20px;
310
+  .button-block{
311
+    text-align: right;
312
+    margin-bottom: 20px;
313
+  }
314
+  .table-pagination{
315
+    text-align: right;
316
+  }
317
+  .search-card{
318
+    margin-bottom: 20px;
319
+    text-align: center;
320
+    .input-wrapper{
321
+      width: 36%;
322
+    }
323
+  }
324
+}
325
+</style>

+ 325 - 0
src/pages/index/components/product_order.vue

@@ -0,0 +1,325 @@
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-tabs>
109
+  </div>
110
+</template>
111
+<script>
112
+import api from "@/api/audit.js";
113
+import dictionary from "@/util/dictionary";
114
+
115
+export default {
116
+  components: {},
117
+  data() {
118
+    return {
119
+      activeName: '停车卡订单查询',
120
+      columns1: [
121
+        {
122
+          label: '订单号',
123
+          key: 'orderCode'
124
+        },
125
+        {
126
+          label: '支付日期',
127
+          key: ''
128
+        },
129
+        {
130
+          label: '支付金额',
131
+          key: ''
132
+        },
133
+        {
134
+          label: '泊位号',
135
+          key: ''
136
+        },
137
+        {
138
+          label: '车牌号',
139
+          key: ''
140
+        },
141
+        {
142
+          label: '入场日期',
143
+          key: ''
144
+        },
145
+        {
146
+          label: '出场日期',
147
+          key: ''
148
+        }
149
+      ],
150
+      tableData1: [],
151
+      total1: 0,
152
+      pageSize1: 10,
153
+      pageNum1: 1,
154
+      formInline1: {
155
+        orderCode: '',
156
+        time:''
157
+      },
158
+      columns2: [
159
+        {
160
+          label: '欠费订单号',
161
+          key: ''
162
+        },
163
+        {
164
+          label: '车牌号',
165
+          key: ''
166
+        },
167
+        {
168
+          label: '修改日期',
169
+          key: ''
170
+        },
171
+        {
172
+          label: '欠费金额',
173
+          key: ''
174
+        }
175
+      ],
176
+      tableData2: [],
177
+      total2: 0,
178
+      pageSize2: 10,
179
+      pageNum2: 1,
180
+      formInline2: {
181
+        orderCode: '',
182
+        plateNo:''
183
+      },
184
+      columns3: [
185
+        {
186
+          label: '订单号',
187
+          key: ''
188
+        },
189
+        {
190
+          label: '泊位号',
191
+          key: ''
192
+        },
193
+        {
194
+          label: '车牌号',
195
+          key: ''
196
+        },
197
+        {
198
+          label: '应付金额',
199
+          key: ''
200
+        },
201
+      ],
202
+      tableData3: [],
203
+      total3: 0,
204
+      pageSize3: 10,
205
+      pageNum3: 1,
206
+      formInline3: {
207
+        orderCode:'',
208
+        berthCode:'',
209
+        plateNo: ''
210
+      },
211
+      columns4: [
212
+        {
213
+          label: '订单号',
214
+          key: ''
215
+        },
216
+        {
217
+          label: '泊位号',
218
+          key: ''
219
+        },
220
+        {
221
+          label: '车牌号',
222
+          key: ''
223
+        },
224
+        {
225
+          label: '预付金额',
226
+          key: ''
227
+        },
228
+      ],
229
+      tableData4: [],
230
+      total4: 0,
231
+      pageSize4: 10,
232
+      pageNum4: 1,
233
+      formInline4: {
234
+        orderCode:'',
235
+        berthCode:'',
236
+        plateNo: ''
237
+      }
238
+    }
239
+  },
240
+  mounted() {
241
+    // this.getTableData1()
242
+    // this.getTableData2()
243
+    // this.getTableData3()
244
+  },
245
+  watch: {
246
+  },
247
+  methods: {
248
+    onSubmit1() {
249
+      this.pageNum1 = 1
250
+      this.getTableData1()
251
+    },
252
+    onSubmit2() {
253
+      this.pageNum2 = 1
254
+      this.getTableData2()
255
+    },
256
+    onSubmit3() {
257
+      this.pageNum3 = 1
258
+      this.getTableData3()
259
+    },
260
+    onSubmit4() {
261
+      this.pageNum4 = 1
262
+      this.getTableData4()
263
+    },
264
+    handlePageChange1() {
265
+      this.getTableData1()
266
+    },
267
+    getTableData1() {
268
+      const {pageNum1, pageSize1} = this
269
+      api.carListByPage({current: pageNum1, size: pageSize1, ...this.formInline1}).then(res => {
270
+        this.tableData1 = (res.data.records || []).map(item => ({...item, carType: dictionary.typeMap[item.carType]}))
271
+        this.total1 = res.data.total
272
+      })
273
+    },
274
+    handlePageChange2() {
275
+      this.getTableData2()
276
+    },
277
+    getTableData2() {
278
+      const {pageNum2, pageSize2} = this
279
+      api.gjListByPage({current: pageNum2, size: pageSize2, ...this.formInline2}).then(res => {
280
+        this.tableData2 = res.data.records || []
281
+        this.total2 = res.data.total
282
+      })
283
+    },
284
+    handlePageChange3() {
285
+      this.getTableData3()
286
+    },
287
+    getTableData3() {
288
+      const {pageNum3, pageSize3} = this
289
+      api.tcjlListByPage({current: pageNum3, size: pageSize3, ...this.formInline3}).then(res => {
290
+        this.tableData3 = res.data.records || []
291
+        this.total3 = res.data.total
292
+      })
293
+    },
294
+    handlePageChange4() {
295
+      this.getTableData3()
296
+    },
297
+    getTableData4() {
298
+      const {pageNum4, pageSize4} = this
299
+      api.tcjlListByPage({current: pageNum4, size: pageSize4, ...this.formInline4}).then(res => {
300
+        this.tableData4 = res.data.records || []
301
+        this.total4 = res.data.total
302
+      })
303
+    }
304
+  }
305
+}
306
+</script>
307
+<style  lang="scss" scoped>
308
+.body-wrapper {
309
+  padding: 20px;
310
+  .button-block{
311
+    text-align: right;
312
+    margin-bottom: 20px;
313
+  }
314
+  .table-pagination{
315
+    text-align: right;
316
+  }
317
+  .search-card{
318
+    margin-bottom: 20px;
319
+    text-align: center;
320
+    .input-wrapper{
321
+      width: 36%;
322
+    }
323
+  }
324
+}
325
+</style>

+ 318 - 0
src/pages/index/components/task_audit.vue

@@ -0,0 +1,318 @@
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" :model="formInline1" :inline="true" style="margin-bottom: 20px;">
6
+          <el-row>
7
+            <el-col :span="6">
8
+              <el-form-item label="车牌号: ">
9
+                <el-input v-model="formInline1.plateNo" placeholder="请输入"></el-input>
10
+              </el-form-item>
11
+            </el-col>
12
+            <el-col :span="6">
13
+              <el-form-item label="电话号码: ">
14
+                <el-input v-model="formInline1.phone" placeholder="请输入"></el-input>
15
+              </el-form-item>
16
+            </el-col>
17
+            <el-col :span="6">
18
+              <el-form-item>
19
+                <el-button type="primary" class="query-btn" @click="onSubmit2">查询</el-button>
20
+              </el-form-item>
21
+            </el-col>
22
+          </el-row>
23
+        </el-form>
24
+        <el-table :data="tableData1">
25
+          <el-table-column v-for="(item, index) in columns1" :key="index" :label="item.label" :prop="item.key">
26
+          </el-table-column>
27
+          <el-table-column
28
+            label="操作"
29
+            width="200">
30
+            <template slot-scope="scope" style="display: inline-block">
31
+              <el-button type="primary" @click="handleAudit1(scope.row)" slot="reference">审核</el-button>
32
+            </template>
33
+          </el-table-column>
34
+        </el-table>
35
+        <div class="table-pagination">
36
+          <el-pagination layout="prev, pager, next" :total="total1" @current-change="handlePageChange1"
37
+                         :current-page.sync="pageNum1" :page-size.sync="pageSize1">
38
+          </el-pagination>
39
+        </div>
40
+        <el-dialog
41
+          :title="title"
42
+          :visible.sync="dialogVisible"
43
+          width="45%"
44
+          custom-class="audit-dialog">
45
+          <div class="form-div">
46
+            <el-form label-position="left" label-width="85px" :model="formLabelAlign">
47
+              <el-form-item label="审核状态">
48
+                <el-radio-group v-model="formLabelAlign.status">
49
+                  <el-radio label="同意"></el-radio>
50
+                  <el-radio label="拒绝"></el-radio>
51
+                </el-radio-group>
52
+              </el-form-item>
53
+              <el-form-item label="备注">
54
+                <el-input
55
+                  type="textarea"
56
+                  :rows="2"
57
+                  placeholder="请输入内容"
58
+                  v-model="formLabelAlign.remark">
59
+                </el-input>
60
+              </el-form-item>
61
+            </el-form>
62
+          </div>
63
+          <span slot="footer" class="dialog-footer">
64
+            <el-button @click="dialogVisible = false">取 消</el-button>
65
+            <el-button type="primary" @click="handleConfirm">确 定</el-button>
66
+        </span>
67
+        </el-dialog>
68
+      </el-tab-pane>
69
+      <el-tab-pane label="短信追缴" name="短信追缴">
70
+        <el-form class="form-wrapper" :model="formInline1" :inline="true" style="margin-bottom: 20px;">
71
+          <el-row>
72
+            <el-col :span="6">
73
+              <el-form-item label="车牌号: ">
74
+                <el-input v-model="formInline2.plateNo" placeholder="请输入"></el-input>
75
+              </el-form-item>
76
+            </el-col>
77
+            <el-col :span="6">
78
+              <el-form-item label="电话号码: ">
79
+                <el-input v-model="formInline2.phone" placeholder="请输入"></el-input>
80
+              </el-form-item>
81
+            </el-col>
82
+            <el-col :span="6">
83
+              <el-form-item>
84
+                <el-button type="primary" class="query-btn" @click="onSubmit2">查询</el-button>
85
+              </el-form-item>
86
+            </el-col>
87
+          </el-row>
88
+        </el-form>
89
+        <el-table :data="tableData2">
90
+          <el-table-column v-for="(item, index) in columns2" :key="index" :label="item.label" :prop="item.key">
91
+          </el-table-column>
92
+          <el-table-column
93
+            label="操作"
94
+            width="200">
95
+            <template slot-scope="scope" style="display: inline-block">
96
+              <el-button type="primary" @click="handleAudit2(scope.row)" slot="reference">审核</el-button>
97
+            </template>
98
+          </el-table-column>
99
+        </el-table>
100
+        <div class="table-pagination">
101
+          <el-pagination layout="prev, pager, next" :total="total1" @current-change="handlePageChange1"
102
+                         :current-page.sync="pageNum1" :page-size.sync="pageSize1">
103
+          </el-pagination>
104
+        </div>
105
+        <el-dialog
106
+          :title="title"
107
+          :visible.sync="dialogVisible2"
108
+          width="45%"
109
+          custom-class="audit-dialog">
110
+          <div class="form-div">
111
+            <el-form label-position="left" label-width="85px" :model="formLabelAlign2">
112
+              <el-form-item label="审核状态">
113
+                <el-radio-group v-model="formLabelAlign2.status">
114
+                  <el-radio label="同意"></el-radio>
115
+                  <el-radio label="拒绝"></el-radio>
116
+                </el-radio-group>
117
+              </el-form-item>
118
+              <el-form-item label="备注">
119
+                <el-input
120
+                  type="textarea"
121
+                  :rows="2"
122
+                  placeholder="请输入内容"
123
+                  v-model="formLabelAlign2.remark">
124
+                </el-input>
125
+              </el-form-item>
126
+            </el-form>
127
+          </div>
128
+          <span slot="footer" class="dialog-footer">
129
+            <el-button @click="dialogVisible = false">取 消</el-button>
130
+            <el-button type="primary" @click="handleConfirm">确 定</el-button>
131
+        </span>
132
+        </el-dialog>
133
+      </el-tab-pane>
134
+    </el-tabs>
135
+  </div>
136
+</template>
137
+<script>
138
+import api from "@/api/audit.js";
139
+import dictionary from "@/util/dictionary";
140
+
141
+export default {
142
+  components: {},
143
+  data() {
144
+    return {
145
+      activeName: '电话追缴',
146
+      columns1: [
147
+        {
148
+          label: '车牌号',
149
+          key: 'plateNo'
150
+        },
151
+        {
152
+          label: '电话号码',
153
+          key: 'phone'
154
+        },
155
+        {
156
+          label: '欠缴金额',
157
+          key: 'questionDescription'
158
+        },
159
+        {
160
+          label: '追缴日期',
161
+          key: 'creatTime'
162
+        },
163
+        {
164
+          label: '追缴状态',
165
+          key: 'creatTime'
166
+        },
167
+      ],
168
+      tableData1: [{parkingCardName:'昌建东外滩西南停车场',type:'实地考察',questionDescription:'部分车位存在一车多位的占用现象',creatTime:'2023-12-30'}],
169
+      total1: 0,
170
+      pageSize1: 10,
171
+      pageNum1: 1,
172
+      title:'任务审核',
173
+      dialogVisible:false,
174
+      formLabelAlign: {
175
+        status: '',
176
+        ramark: '',
177
+      },
178
+      columns2: [
179
+        {
180
+          label: '稽查对象',
181
+          key: 'parkingCardName'
182
+        },
183
+        {
184
+          label: '取证类型',
185
+          key: 'type'
186
+        },
187
+        {
188
+          label: '问题描述',
189
+          key: 'questionDescription'
190
+        },
191
+        {
192
+          label: '创建日期',
193
+          key: 'creatTime'
194
+        },
195
+      ],
196
+      tableData2: [{parkingCardName:'昌建东外滩西南停车场',type:'实地考察',questionDescription:'部分车位存在一车多位的占用现象',creatTime:'2023-12-30'}],
197
+      total2: 0,
198
+      radio: '2',
199
+      pageSize2: 10,
200
+      pageNum2: 1,
201
+      formInline1: {
202
+        plateNo: '',
203
+        phone:'',
204
+      },
205
+      formInline2: {
206
+        plateNo: '',
207
+        phone:'',
208
+      },
209
+      dialogVisible2:false,
210
+      formLabelAlign2: {
211
+        status: '',
212
+        ramark: '',
213
+      },
214
+    }
215
+  },
216
+  mounted() {
217
+    this.getTableData1()
218
+    this.getTableData2()
219
+  },
220
+  watch: {
221
+  },
222
+  methods: {
223
+    onSubmit2() {
224
+      this.pageNum2 = 1
225
+      this.getTableData2()
226
+    },
227
+    handleAudit1(row) {
228
+      this.formLabelAlign = row
229
+      this.dialogVisible = true
230
+    },
231
+    handleAudit2(row) {
232
+      this.formLabelAlign2 = row
233
+      this.dialogVisible2 = true
234
+    },
235
+    handleConfirm() {
236
+      const {id} = this.formLabelAlign2.id
237
+      api.applyResource({id, applyType: this.radio}).then(res => {
238
+        if(res.code === 200) {
239
+          this.dialogVisible2 = false
240
+          this.$message({
241
+            message: '操作成功!',
242
+            type: 'success'
243
+          })
244
+          this.getTableData2()
245
+        }
246
+      })
247
+    },
248
+    handleConfirm2() {
249
+      const {id} = this.formLabelAlign2.id
250
+      api.applyResource({id, applyType: this.radio}).then(res => {
251
+        if(res.code === 200) {
252
+          this.dialogVisible2 = false
253
+          this.$message({
254
+            message: '审核成功!',
255
+            type: 'success'
256
+          })
257
+          this.getTableData2()
258
+        }
259
+      })
260
+    },
261
+    handlePageChange1() {
262
+      this.getTableData1()
263
+    },
264
+    getTableData1() {
265
+      const {pageNum1, pageSize1} = this
266
+      api.carListByPage({current: pageNum1, size: pageSize1, ...this.formInline1}).then(res => {
267
+        this.tableData1 = (res.data.records || []).map(item => ({...item, carType: dictionary.typeMap[item.carType]}))
268
+        this.total1 = res.data.total
269
+      })
270
+    },
271
+    handlePageChange2() {
272
+      this.getTableData2()
273
+    },
274
+    getTableData2() {
275
+      const {pageNum2, pageSize2} = this
276
+      api.gjListByPage({current: pageNum2, size: pageSize2, ...this.formInline2}).then(res => {
277
+        this.tableData2 = res.data.records || []
278
+        this.total2 = res.data.total
279
+      })
280
+    },
281
+  }
282
+}
283
+</script>
284
+<style  lang="scss" scoped>
285
+.body-wrapper {
286
+  padding: 20px;
287
+  .button-block{
288
+    text-align: right;
289
+    margin-bottom: 20px;
290
+  }
291
+  .table-pagination{
292
+    text-align: right;
293
+  }
294
+  .search-card{
295
+    margin-bottom: 20px;
296
+    text-align: center;
297
+    .input-wrapper{
298
+      width: 36%;
299
+    }
300
+  }
301
+
302
+  .audit-dialog{
303
+    .mg-bt{
304
+      margin-bottom: 24px;
305
+    }
306
+    .label{
307
+      text-align: right;
308
+    }
309
+    .form-div{
310
+      /deep/ .el-input__inner{
311
+        height: 35px;
312
+        width: 90%;
313
+        border: 1px solid #a6a5a5;
314
+      }
315
+    }
316
+  }
317
+}
318
+</style>

+ 413 - 0
src/pages/index/components/task_recovery.vue

@@ -0,0 +1,413 @@
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" :model="formInline1" :inline="true" style="margin-bottom: 20px;">
6
+          <el-row>
7
+            <el-col :span="6">
8
+              <el-form-item label="车牌号: ">
9
+                <el-input v-model="formInline1.plateNo" placeholder="请输入"></el-input>
10
+              </el-form-item>
11
+            </el-col>
12
+            <el-col :span="6">
13
+              <el-form-item label="电话号码: ">
14
+                <el-input v-model="formInline1.phone" placeholder="请输入"></el-input>
15
+              </el-form-item>
16
+            </el-col>
17
+            <el-col :span="6">
18
+              <el-form-item>
19
+                <el-button type="primary" class="query-btn" @click="onSubmit2">查询</el-button>
20
+                <el-button type="success" @click="handleAdd">新增</el-button>
21
+              </el-form-item>
22
+            </el-col>
23
+          </el-row>
24
+        </el-form>
25
+        <el-table :data="tableData1">
26
+          <el-table-column v-for="(item, index) in columns1" :key="index" :label="item.label" :prop="item.key">
27
+          </el-table-column>
28
+          <el-table-column
29
+            label="操作"
30
+            width="200">
31
+            <template slot-scope="scope" style="display: inline-block">
32
+              <el-button type="primary" @click="handleEdit(scope.row)" slot="reference">修改</el-button>
33
+              <el-popconfirm title="确定删除吗?" @confirm="deleteRow(scope.row)">
34
+                <el-button type="danger" slot="reference">删除</el-button>
35
+              </el-popconfirm>
36
+            </template>
37
+          </el-table-column>
38
+        </el-table>
39
+        <div class="table-pagination">
40
+          <el-pagination layout="prev, pager, next" :total="total1" @current-change="handlePageChange1"
41
+                         :current-page.sync="pageNum1" :page-size.sync="pageSize1">
42
+          </el-pagination>
43
+        </div>
44
+        <el-dialog
45
+          :title="title"
46
+          :visible.sync="dialogVisible"
47
+          width="45%"
48
+          custom-class="audit-dialog">
49
+          <div class="form-div">
50
+            <el-form label-position="left" label-width="85px" :model="formLabelAlign">
51
+              <el-form-item label="车牌号">
52
+                <el-input v-model="formLabelAlign.plateNo"></el-input>
53
+              </el-form-item>
54
+              <el-form-item label="电话号码">
55
+                <el-input v-model="formLabelAlign.phone"></el-input>
56
+              </el-form-item>
57
+              <el-form-item label="欠缴金额">
58
+                <el-input v-model="formLabelAlign.recoveryAmount"></el-input>
59
+              </el-form-item>
60
+              <el-form-item label="追缴详情">
61
+                <el-input
62
+                  type="textarea"
63
+                  :rows="2"
64
+                  placeholder="请输入内容"
65
+                  v-model="formLabelAlign.recoveryDetail">
66
+                </el-input>
67
+              </el-form-item>
68
+            </el-form>
69
+          </div>
70
+          <span slot="footer" class="dialog-footer">
71
+            <el-button @click="dialogVisible = false">取 消</el-button>
72
+            <el-button type="primary" @click="handleConfirm">确 定</el-button>
73
+        </span>
74
+        </el-dialog>
75
+      </el-tab-pane>
76
+      <el-tab-pane label="短信追缴" name="短信追缴">
77
+        <el-form class="form-wrapper" :model="formInline1" :inline="true" style="margin-bottom: 20px;">
78
+          <el-row>
79
+            <el-col :span="6">
80
+              <el-form-item label="车牌号: ">
81
+                <el-input v-model="formInline2.plateNo" placeholder="请输入"></el-input>
82
+              </el-form-item>
83
+            </el-col>
84
+            <el-col :span="6">
85
+              <el-form-item label="电话号码: ">
86
+                <el-input v-model="formInline2.phone" placeholder="请输入"></el-input>
87
+              </el-form-item>
88
+            </el-col>
89
+            <el-col :span="6">
90
+              <el-form-item>
91
+                <el-button type="primary" class="query-btn" @click="onSubmit2">查询</el-button>
92
+                <el-button type="success" @click="handleAdd">新增</el-button>
93
+              </el-form-item>
94
+            </el-col>
95
+          </el-row>
96
+        </el-form>
97
+        <el-table :data="tableData2">
98
+          <el-table-column v-for="(item, index) in columns2" :key="index" :label="item.label" :prop="item.key">
99
+          </el-table-column>
100
+          <el-table-column
101
+            label="操作"
102
+            width="200">
103
+            <template slot-scope="scope" style="display: inline-block">
104
+              <el-button type="primary" @click="handleEdit(scope.row)" slot="reference">修改</el-button>
105
+              <el-popconfirm title="确定删除吗?" @confirm="deleteRow(scope.row)">
106
+                <el-button type="danger" slot="reference">删除</el-button>
107
+              </el-popconfirm>
108
+            </template>
109
+          </el-table-column>
110
+        </el-table>
111
+        <div class="table-pagination">
112
+          <el-pagination layout="prev, pager, next" :total="total1" @current-change="handlePageChange1"
113
+                         :current-page.sync="pageNum1" :page-size.sync="pageSize1">
114
+          </el-pagination>
115
+        </div>
116
+        <el-dialog
117
+          :title="title"
118
+          :visible.sync="dialogVisible"
119
+          width="45%"
120
+          custom-class="audit-dialog">
121
+          <div class="form-div">
122
+            <el-form label-position="left" label-width="85px" :model="formLabelAlign2">
123
+              <el-form-item label="车牌号">
124
+                <el-input v-model="formLabelAlign2.plateNo"></el-input>
125
+              </el-form-item>
126
+              <el-form-item label="电话号码">
127
+                <el-input v-model="formLabelAlign2.phone"></el-input>
128
+              </el-form-item>
129
+              <el-form-item label="欠缴金额">
130
+                <el-input v-model="formLabelAlign2.recoveryAmount"></el-input>
131
+              </el-form-item>
132
+              <el-form-item label="追缴详情">
133
+                <el-input
134
+                  type="textarea"
135
+                  :rows="2"
136
+                  placeholder="请输入内容"
137
+                  v-model="formLabelAlign.recoveryDetail">
138
+                </el-input>
139
+              </el-form-item>
140
+            </el-form>
141
+          </div>
142
+          <span slot="footer" class="dialog-footer">
143
+            <el-button @click="dialogVisible = false">取 消</el-button>
144
+            <el-button type="primary" @click="handleConfirm">确 定</el-button>
145
+        </span>
146
+        </el-dialog>
147
+      </el-tab-pane>
148
+    </el-tabs>
149
+  </div>
150
+</template>
151
+<script>
152
+import api from "@/api/audit.js";
153
+import dictionary from "@/util/dictionary";
154
+
155
+export default {
156
+  components: {},
157
+  data() {
158
+    return {
159
+      activeName: '电话追缴',
160
+      columns1: [
161
+        {
162
+          label: '车牌号',
163
+          key: 'plateNo'
164
+        },
165
+        {
166
+          label: '电话号码',
167
+          key: 'phone'
168
+        },
169
+        {
170
+          label: '欠缴金额',
171
+          key: 'questionDescription'
172
+        },
173
+        {
174
+          label: '追缴日期',
175
+          key: 'creatTime'
176
+        },
177
+        {
178
+          label: '追缴状态',
179
+          key: 'creatTime'
180
+        },
181
+      ],
182
+      tableData1: [{parkingCardName:'昌建东外滩西南停车场',type:'实地考察',questionDescription:'部分车位存在一车多位的占用现象',creatTime:'2023-12-30'}],
183
+      total1: 0,
184
+      pageSize1: 10,
185
+      pageNum1: 1,
186
+      title:'',
187
+      dialogVisible:false,
188
+      formLabelAlign: {
189
+        plateNo: '',
190
+        phone: '',
191
+        recoveryAmount: '',
192
+        recoveryDetail: ''
193
+      },
194
+      columns2: [
195
+        {
196
+          label: '稽查对象',
197
+          key: 'parkingCardName'
198
+        },
199
+        {
200
+          label: '取证类型',
201
+          key: 'type'
202
+        },
203
+        {
204
+          label: '问题描述',
205
+          key: 'questionDescription'
206
+        },
207
+        {
208
+          label: '创建日期',
209
+          key: 'creatTime'
210
+        },
211
+      ],
212
+      tableData2: [{parkingCardName:'昌建东外滩西南停车场',type:'实地考察',questionDescription:'部分车位存在一车多位的占用现象',creatTime:'2023-12-30'}],
213
+      total2: 0,
214
+      radio: '2',
215
+      pageSize2: 10,
216
+      pageNum2: 1,
217
+      formInline1: {
218
+        plateNo: '',
219
+        phone:'',
220
+      },
221
+      formInline2: {
222
+        orderCode: '',
223
+        orderStatus:'',
224
+      },
225
+      title2:'',
226
+      dialogVisible2:false,
227
+      formLabelAlign2: {
228
+        id: '',
229
+        parkingCardName: '',
230
+        type: '',
231
+        questionDescription: '',
232
+      },
233
+      columns3: [
234
+        {
235
+          label: '稽查对象',
236
+          key: 'parkingCardName'
237
+        },
238
+        {
239
+          label: '取证类型',
240
+          key: 'type'
241
+        },
242
+        {
243
+          label: '问题描述',
244
+          key: 'questionDescription'
245
+        },
246
+        {
247
+          label: '审核日期',
248
+          key: ''
249
+        },
250
+        {
251
+          label: '审核日期',
252
+          key: ''
253
+        },
254
+        {
255
+          label: '处理人',
256
+          key: ''
257
+        },
258
+      ],
259
+      tableData3: [],
260
+      total3: 0,
261
+      pageSize3: 10,
262
+      pageNum3: 1,
263
+      formInline3: {
264
+        parkingCardName: ''
265
+      },
266
+    }
267
+  },
268
+  mounted() {
269
+    // this.getTableData1()
270
+    // this.getTableData2()
271
+    // this.getTableData3()
272
+  },
273
+  watch: {
274
+  },
275
+  methods: {
276
+    handleAdd () {
277
+      this.title = '添加配置'
278
+      this.formLabelAlign = {}
279
+      this.dialogVisible = true
280
+    },
281
+    handleEdit(row) {
282
+      this.title = '修改配置'
283
+      this.formLabelAlign = row
284
+      this.dialogVisible = true
285
+    },
286
+    deleteRow (record) {
287
+      api.deleteWhiteIp({id: record.id}).then(res => {
288
+        if (res.code === 200) {
289
+          this.$message({type: 'success', message: '删除成功!'})
290
+          this.getTableData1()
291
+        }
292
+      })
293
+    },
294
+    handleConfirm() {
295
+      if (this.title === '修改配置') {
296
+        api.addWhiteIp({...this.formLabelAlign, plateNo: this.formLabelAlign.plateNo, phone: this.formLabelAlign.phone, recoveryAmount: this.formLabelAlign.recoveryAmount, recoveryDetail: this.formLabelAlign.recoveryDetail}).then(res => {
297
+          if (res.code === 200) {
298
+            this.dialogVisible = false
299
+            this.$message({
300
+              message: '修改成功!',
301
+              type: 'success'
302
+            })
303
+            this.getTableData1()
304
+          }
305
+        })
306
+      } else {
307
+        api.addWhiteIp(this.formLabelAlign).then(res => {
308
+          if (res.code === 200) {
309
+            this.dialogVisible = false
310
+            this.$message({
311
+              message: '添加成功!',
312
+              type: 'success'
313
+            })
314
+            this.getTableData1()
315
+          }
316
+        })
317
+      }
318
+    },
319
+    onSubmit2() {
320
+      this.pageNum2 = 1
321
+      this.getTableData2()
322
+    },
323
+    handleAudit(row) {
324
+      this.formLabelAlign2 = row
325
+      this.dialogVisible2 = true
326
+    },
327
+
328
+    handleConfirm2() {
329
+      const {id} = this.formLabelAlign2.id
330
+      console.log('radio', this.radio)
331
+      api.applyResource({id, applyType: this.radio}).then(res => {
332
+        if(res.code === 200) {
333
+          this.dialogVisible2 = false
334
+          this.$message({
335
+            message: '审核成功!',
336
+            type: 'success'
337
+          })
338
+          this.getTableData2()
339
+        }
340
+      })
341
+    },
342
+    onSubmit3() {
343
+      this.pageNum3 = 1
344
+      this.getTableData3()
345
+    },
346
+    handlePageChange1() {
347
+      this.getTableData1()
348
+    },
349
+    getTableData1() {
350
+      const {pageNum1, pageSize1} = this
351
+      api.carListByPage({current: pageNum1, size: pageSize1, ...this.formInline1}).then(res => {
352
+        this.tableData1 = (res.data.records || []).map(item => ({...item, carType: dictionary.typeMap[item.carType]}))
353
+        this.total1 = res.data.total
354
+      })
355
+    },
356
+    handlePageChange2() {
357
+      this.getTableData2()
358
+    },
359
+    getTableData2() {
360
+      const {pageNum2, pageSize2} = this
361
+      api.gjListByPage({current: pageNum2, size: pageSize2, ...this.formInline2}).then(res => {
362
+        this.tableData2 = res.data.records || []
363
+        this.total2 = res.data.total
364
+      })
365
+    },
366
+    handlePageChange3() {
367
+      this.getTableData3()
368
+    },
369
+    getTableData3() {
370
+      const {pageNum3, pageSize3} = this
371
+      api.tcjlListByPage({current: pageNum3, size: pageSize3, ...this.formInline3}).then(res => {
372
+        this.tableData3 = res.data.records || []
373
+        this.total3 = res.data.total
374
+      })
375
+    },
376
+  }
377
+}
378
+</script>
379
+<style  lang="scss" scoped>
380
+.body-wrapper {
381
+  padding: 20px;
382
+  .button-block{
383
+    text-align: right;
384
+    margin-bottom: 20px;
385
+  }
386
+  .table-pagination{
387
+    text-align: right;
388
+  }
389
+  .search-card{
390
+    margin-bottom: 20px;
391
+    text-align: center;
392
+    .input-wrapper{
393
+      width: 36%;
394
+    }
395
+  }
396
+
397
+  .audit-dialog{
398
+    .mg-bt{
399
+      margin-bottom: 24px;
400
+    }
401
+    .label{
402
+      text-align: right;
403
+    }
404
+    .form-div{
405
+      /deep/ .el-input__inner{
406
+        height: 35px;
407
+        width: 90%;
408
+        border: 1px solid #a6a5a5;
409
+      }
410
+    }
411
+  }
412
+}
413
+</style>

+ 136 - 0
src/pages/index/components/task_report.vue

@@ -0,0 +1,136 @@
1
+<template>
2
+  <div class="body-wrapper">
3
+    <div style="display: flex; justify-content: space-between;">
4
+      <div style="width: 100%">
5
+        <h4>任务报表</h4>
6
+        <br>
7
+        <el-form class="form-wrapper" :inline="true" :model="formInline" style="margin-bottom: 20px;">
8
+          <el-row>
9
+            <el-col :span="6">
10
+              <el-form-item label="车牌号:">
11
+                <el-input v-model="formInline.plateNo" placeholder="请输入"></el-input>
12
+              </el-form-item>
13
+            </el-col>
14
+            <el-col :span="6">
15
+              <el-form-item label="追缴形式:">
16
+                <el-select clearable v-model="formInline.errorType" placeholder="错误类型" popper-class="cur-select">
17
+                  <el-option label="全部" value=""></el-option>
18
+                  <el-option label="电话追缴" value="电话追缴"></el-option>
19
+                  <el-option label="短信追缴" value="短信追缴"></el-option>
20
+                </el-select>
21
+              </el-form-item>
22
+            </el-col>
23
+            <el-col :span="4">
24
+              <el-form-item>
25
+                <el-button type="primary" class="query-btn" @click="onSubmit">查询</el-button>
26
+              </el-form-item>
27
+            </el-col>
28
+          </el-row>
29
+        </el-form>
30
+        <br>
31
+        <el-table :data="tableData">
32
+          <el-table-column v-for="(item, index) in columns" :key="index" :label="item.label" :prop="item.key">
33
+          </el-table-column>
34
+        </el-table>
35
+
36
+        <div class="table-pagination">
37
+          <el-pagination :background="false" layout="total, prev, pager, next" :total="total" @current-change="handlePageChange"
38
+                         :current-page.sync="pageNum" :page-size.sync="pageSize">
39
+          </el-pagination>
40
+        </div>
41
+      </div>
42
+    </div>
43
+  </div>
44
+</template>
45
+<script>
46
+import api from "@/api/audit";
47
+
48
+
49
+export default {
50
+  components: {
51
+
52
+  },
53
+  data() {
54
+    return {
55
+      formInline: {
56
+        plateNo: '',
57
+        way: '',
58
+      },
59
+      columns: [
60
+        {
61
+          label: '追缴形式',
62
+          key: 'parkName'
63
+        },
64
+        {
65
+          label: '车牌号',
66
+          key: 'berthCode'
67
+        },
68
+        {
69
+          label: '手机号',
70
+          key: 'berthIsorno'
71
+        },
72
+        {
73
+          label: '执行时间',
74
+          key: 'isTidalPark'
75
+        },
76
+        {
77
+          label: '追缴金额',
78
+          key: 'hasChargingPile'
79
+        },
80
+        {
81
+          label: '执行结果',
82
+          key: 'isSharePark'
83
+        },
84
+      ],
85
+      tableData:[],
86
+      total: 0,
87
+      pageSize: 5,
88
+      pageNum: 1,
89
+    }
90
+  },
91
+  mounted() {
92
+    this.getTableData()
93
+  },
94
+  watch: {},
95
+  methods: {
96
+    onSubmit() {
97
+      this.pageNum = 1
98
+      this.getTableData()
99
+    },
100
+    handlePageChange() {
101
+      this.getTableData()
102
+    },
103
+    getTableData() {
104
+      const {pageNum, pageSize} = this
105
+      api.berthListByPage({current: pageNum, size: pageSize, ...this.formInline}).then(res => {
106
+        this.tableData = (res.data.records || []).map(item => ({...item, berthIsorno: (item.berthIsorno === '0' ? '否':'是'),isTidalPark: (item.isTidalPark === '0' ? '否':'是'),hasChargingPile: (item.hasChargingPile === '0' ? '否':'是'),isSharePark: (item.isSharePark === '0' ? '否':'是'),}))
107
+        this.total = res.data.total
108
+      })
109
+    },
110
+  }
111
+}
112
+</script>
113
+<style lang="scss" scoped>
114
+.body-wrapper {
115
+  padding: 20px;
116
+
117
+  .button-block {
118
+    text-align: right;
119
+    margin-bottom: 20px;
120
+  }
121
+
122
+  .table-pagination {
123
+    text-align: right;
124
+  }
125
+
126
+  .search-card {
127
+    margin-bottom: 20px;
128
+    text-align: center;
129
+
130
+    .input-wrapper {
131
+      width: 40%;
132
+    }
133
+  }
134
+}
135
+
136
+</style>

+ 133 - 0
src/pages/index/components/telephone_management.vue

@@ -0,0 +1,133 @@
1
+<template>
2
+  <div class="body-wrapper">
3
+    <div style="display: flex; justify-content: space-between;">
4
+      <div style="width: 100%">
5
+        <h4>电话管理</h4>
6
+        <br>
7
+        <el-form class="form-wrapper" :inline="true" :model="formInline" style="margin-bottom: 20px;">
8
+          <el-row>
9
+            <el-col :span="6">
10
+              <el-form-item label="车牌号:">
11
+                <el-input v-model="formInline.plateNo" placeholder="请输入"></el-input>
12
+              </el-form-item>
13
+            </el-col>
14
+            <el-col :span="6">
15
+              <el-form-item label="电话号码:">
16
+                <el-input v-model="formInline.phone" placeholder="请输入"></el-input>
17
+              </el-form-item>
18
+            </el-col>
19
+            <el-col :span="6">
20
+              <el-form-item label="电话是否有效:">
21
+                <el-select clearable v-model="formInline.type" placeholder="错误类型" popper-class="cur-select">
22
+                  <el-option label="全部" value=""></el-option>
23
+                  <el-option label="有效" value="有效"></el-option>
24
+                  <el-option label="无效" value="无效"></el-option>
25
+                </el-select>
26
+              </el-form-item>
27
+            </el-col>
28
+            <el-col :span="4">
29
+              <el-form-item>
30
+                <el-button type="primary" class="query-btn" @click="onSubmit">查询</el-button>
31
+              </el-form-item>
32
+            </el-col>
33
+          </el-row>
34
+        </el-form>
35
+        <br>
36
+        <el-table :data="tableData">
37
+          <el-table-column v-for="(item, index) in columns" :key="index" :label="item.label" :prop="item.key">
38
+          </el-table-column>
39
+        </el-table>
40
+        <div class="table-pagination">
41
+          <el-pagination :background="false" layout="total, prev, pager, next" :total="total" @current-change="handlePageChange"
42
+                         :current-page.sync="pageNum" :page-size.sync="pageSize">
43
+          </el-pagination>
44
+        </div>
45
+      </div>
46
+    </div>
47
+  </div>
48
+</template>
49
+<script>
50
+import api from "@/api/audit";
51
+
52
+
53
+export default {
54
+  components: {
55
+
56
+  },
57
+  data() {
58
+    return {
59
+      formInline: {
60
+        plateNo: '',
61
+        phone: '',
62
+        type: ''
63
+      },
64
+      columns: [
65
+        {
66
+          label: '车牌号',
67
+          key: 'parkName'
68
+        },
69
+        {
70
+          label: '电话号码',
71
+          key: 'berthCode'
72
+        },
73
+        {
74
+          label: '导入时间',
75
+          key: 'berthIsorno'
76
+        },
77
+        {
78
+          label: '状态',
79
+          key: 'isTidalPark'
80
+        },
81
+      ],
82
+      tableData:[],
83
+      total: 0,
84
+      pageSize: 10,
85
+      pageNum: 1,
86
+    }
87
+  },
88
+  mounted() {
89
+    this.getTableData()
90
+  },
91
+  watch: {},
92
+  methods: {
93
+    onSubmit() {
94
+      this.pageNum = 1
95
+      this.getTableData()
96
+    },
97
+    handlePageChange() {
98
+      this.getTableData()
99
+    },
100
+    getTableData() {
101
+      const {pageNum, pageSize} = this
102
+      api.berthListByPage({current: pageNum, size: pageSize, ...this.formInline}).then(res => {
103
+        this.tableData = (res.data.records || []).map(item => ({...item, berthIsorno: (item.berthIsorno === '0' ? '否':'是'),isTidalPark: (item.isTidalPark === '0' ? '否':'是'),hasChargingPile: (item.hasChargingPile === '0' ? '否':'是'),isSharePark: (item.isSharePark === '0' ? '否':'是'),}))
104
+        this.total = res.data.total
105
+      })
106
+    },
107
+  }
108
+}
109
+</script>
110
+<style lang="scss" scoped>
111
+.body-wrapper {
112
+  padding: 20px;
113
+
114
+  .button-block {
115
+    text-align: right;
116
+    margin-bottom: 20px;
117
+  }
118
+
119
+  .table-pagination {
120
+    text-align: right;
121
+  }
122
+
123
+  .search-card {
124
+    margin-bottom: 20px;
125
+    text-align: center;
126
+
127
+    .input-wrapper {
128
+      width: 40%;
129
+    }
130
+  }
131
+}
132
+
133
+</style>

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

@@ -41,6 +41,7 @@ export default {
41 41
         {name: '概览系统', url: '/parking_index'},
42 42
         {name: '订单修改查询', url: '/product_order_search'},
43 43
         {name: '停车订单查询', url: '/parking_order'},
44
+        {name: '商品订单查询', url: '/product_order'},
44 45
         {name: '泊位列表', url: '/berth_list'},
45 46
         {name: '停车卡', url: '/parking_card'},
46 47
         {name: '错峰停车', url: '/parking_unpeak'},
@@ -54,6 +55,12 @@ export default {
54 55
         {name: '异常管理', url: '/exception_handing'},
55 56
         {name: '基础配置', url: '/basic_configuration'},
56 57
         {name: '岗亭操作', url: '/parking_outside_operation'},
58
+        {name: '欠费用户', url: '/defaulting_subscrlber'},
59
+        {name: '任务追缴', url: '/task_recovery'},
60
+        {name: '任务审核', url: '/task_audit'},
61
+        {name: '任务报表', url: '/task_report'},
62
+        {name: '电话管理', url: '/telephone_management'},
63
+        {name: '领导数字驾驶舱系统', url: '/lead_system'},
57 64
       ]
58 65
     }
59 66
   },

+ 35 - 0
src/router/index.js

@@ -107,6 +107,41 @@ export default new Router({
107 107
           path: "/parking_outside_operation",
108 108
           component: () => import("../pages/index/components/parking_outside_operation.vue")
109 109
         },
110
+        {
111
+          name: "defaulting_subscrlber",
112
+          path: "/defaulting_subscrlber",
113
+          component: () => import("../pages/index/components/defaulting_subscrlber.vue")
114
+        },
115
+        {
116
+          name: "task_recovery",
117
+          path: "/task_recovery",
118
+          component: () => import("../pages/index/components/task_recovery.vue")
119
+        },
120
+        {
121
+          name: "task_audit",
122
+          path: "/task_audit",
123
+          component: () => import("../pages/index/components/task_audit.vue")
124
+        },
125
+        {
126
+          name: "task_report",
127
+          path: "/task_report",
128
+          component: () => import("../pages/index/components/task_report.vue")
129
+        },
130
+        {
131
+          name: "telephone_management",
132
+          path: "/telephone_management",
133
+          component: () => import("../pages/index/components/telephone_management.vue")
134
+        },
135
+        {
136
+          name: "product_order",
137
+          path: "/product_order",
138
+          component: () => import("../pages/index/components/product_order.vue")
139
+        },
140
+        {
141
+          name: "lead_system",
142
+          path: "/lead_system",
143
+          component: () => import("../pages/index/components/lead_system.vue")
144
+        },
110 145
       ]
111 146
     }
112 147
   ]