task_recovery.vue 16 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509
  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.phoneNo" 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="onSubmit" icon="el-icon-search">查询</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 border :row-class-name="rowClassName" :data="tableData1" v-loading="loading1">
  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 v-if='scope.row.auditStatus ==="未审核"' type="primary" @click="handleEdit(scope.row)" slot="reference">修改</el-button>
  33. <el-popconfirm v-if='scope.row.auditStatus ==="未审核"' 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="total, prev, pager, next, jumper" :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="50%"
  48. custom-class="audit-dialog">
  49. <div class="form-div">
  50. <el-form label-position="left" :rules="rules" label-width="85px" ref="formLabelAlign" :model="formLabelAlign">
  51. <el-form-item label="停车场">
  52. <el-select filterable clearable v-model="formLabelAlign.parkLotId" placeholder="请选择">
  53. <el-option
  54. v-for="(item,index) in carParkingNameOptions"
  55. :key="index"
  56. :label="item.parkName"
  57. :value="item.id" />
  58. </el-select>
  59. </el-form-item>
  60. <el-form-item label="车牌号" prop="plateNo">
  61. <el-input v-model="formLabelAlign.plateNo"></el-input>
  62. </el-form-item>
  63. <el-form-item label="电话号码">
  64. <el-input v-model="formLabelAlign.phoneNo"></el-input>
  65. </el-form-item>
  66. <el-form-item label="欠缴金额">
  67. <el-input v-model="formLabelAlign.arrearsAmount"></el-input>
  68. </el-form-item>
  69. <!-- <el-form-item label="追缴详情">-->
  70. <!-- <el-input-->
  71. <!-- type="textarea"-->
  72. <!-- :rows="2"-->
  73. <!-- placeholder="请输入内容"-->
  74. <!-- v-model="formLabelAlign.recoveryDetail">-->
  75. <!-- </el-input>-->
  76. <!-- </el-form-item>-->
  77. <!-- <el-form-item label="追缴日期">-->
  78. <!-- <el-date-picker-->
  79. <!-- v-model="formLabelAlign.recoveryTime"-->
  80. <!-- type="datetime"-->
  81. <!-- value-format="yyyy-MM-dd HH:mm:ss"-->
  82. <!-- placeholder="选择日期时间">-->
  83. <!-- </el-date-picker>-->
  84. <!-- </el-form-item>-->
  85. <!-- <el-form-item label="追缴结果">-->
  86. <!-- <el-input v-model="formLabelAlign.recoveryResult"></el-input>-->
  87. <!-- </el-form-item>-->
  88. </el-form>
  89. </div>
  90. <span slot="footer" class="dialog-footer">
  91. <el-button @click="dialogVisible = false">取 消</el-button>
  92. <el-button type="primary" @click="handleConfirm">确 定</el-button>
  93. </span>
  94. </el-dialog>
  95. </el-tab-pane>
  96. <el-tab-pane label="短信追缴" name="短信追缴">
  97. <el-form class="form-wrapper" :model="formInline2" :inline="true" style="margin-bottom: 20px;">
  98. <el-row>
  99. <el-col :span="6">
  100. <el-form-item label="车牌号: " prop="plateNo">
  101. <el-input v-model="formInline2.plateNo" placeholder="请输入"></el-input>
  102. </el-form-item>
  103. </el-col>
  104. <el-col :span="6">
  105. <el-form-item label="电话号码: ">
  106. <el-input v-model="formInline2.phoneNo" placeholder="请输入"></el-input>
  107. </el-form-item>
  108. </el-col>
  109. <el-col :span="6">
  110. <el-form-item>
  111. <el-button type="primary" class="query-btn" @click="onSubmit2" icon="el-icon-search">查询</el-button>
  112. <el-button type="success" @click="handleAdd2">新增</el-button>
  113. </el-form-item>
  114. </el-col>
  115. </el-row>
  116. </el-form>
  117. <el-table border :row-class-name="rowClassName" :data="tableData2" v-loading="loading2">
  118. <el-table-column v-for="(item, index) in columns2" :key="index" :label="item.label" :prop="item.key">
  119. </el-table-column>
  120. <el-table-column
  121. label="操作"
  122. width="200">
  123. <template slot-scope="scope" style="display: inline-block">
  124. <el-button v-if='scope.row.auditStatus ==="未审核"' type="primary" @click="handleEdit2(scope.row)" slot="reference">修改</el-button>
  125. <el-popconfirm v-if='scope.row.auditStatus ==="未审核"' title="确定删除吗?" @confirm="deleteRow2(scope.row)">
  126. <el-button type="danger" slot="reference">删除</el-button>
  127. </el-popconfirm>
  128. </template>
  129. </el-table-column>
  130. </el-table>
  131. <div class="table-pagination">
  132. <el-pagination layout="total, prev, pager, next, jumper" :total="total2" @current-change="handlePageChange2"
  133. :current-page.sync="pageNum2" :page-size.sync="pageSize2">
  134. </el-pagination>
  135. </div>
  136. <el-dialog
  137. :title="title2"
  138. :visible.sync="dialogVisible2"
  139. width="50%"
  140. custom-class="audit-dialog">
  141. <div class="form-div">
  142. <el-form label-position="left" label-width="85px" :model="formLabelAlign2">
  143. <el-form-item label="停车场: ">
  144. <el-select filterable clearable v-model="formLabelAlign2.parkLotId" placeholder="请选择">
  145. <el-option
  146. v-for="(item,index) in carParkingNameOptions"
  147. :key="index"
  148. :label="item.parkName"
  149. :value="item.id" />
  150. </el-select>
  151. </el-form-item>
  152. <el-form-item label="车牌号">
  153. <el-input v-model="formLabelAlign2.plateNo"></el-input>
  154. </el-form-item>
  155. <el-form-item label="电话号码">
  156. <el-input v-model="formLabelAlign2.phoneNo"></el-input>
  157. </el-form-item>
  158. <el-form-item label="欠缴金额">
  159. <el-input v-model="formLabelAlign2.arrearsAmount"></el-input>
  160. </el-form-item>
  161. <!-- <el-form-item label="追缴详情">-->
  162. <!-- <el-input-->
  163. <!-- type="textarea"-->
  164. <!-- :rows="2"-->
  165. <!-- placeholder="请输入内容"-->
  166. <!-- v-model="formLabelAlign2.recoveryDetail">-->
  167. <!-- </el-input>-->
  168. <!-- </el-form-item>-->
  169. <!-- <el-form-item label="追缴日期">-->
  170. <!-- <el-date-picker-->
  171. <!-- v-model="formLabelAlign2.recoveryTime"-->
  172. <!-- type="datetime"-->
  173. <!-- value-format="yyyy-MM-dd HH:mm:ss"-->
  174. <!-- placeholder="选择日期时间">-->
  175. <!-- </el-date-picker>-->
  176. <!-- </el-form-item>-->
  177. <!-- <el-form-item label="追缴结果">-->
  178. <!-- <el-input v-model="formLabelAlign2.recoveryResult"></el-input>-->
  179. <!-- </el-form-item>-->
  180. </el-form>
  181. </div>
  182. <span slot="footer" class="dialog-footer">
  183. <el-button @click="dialogVisible2 = false">取 消</el-button>
  184. <el-button type="primary" @click="handleConfirm2">确 定</el-button>
  185. </span>
  186. </el-dialog>
  187. </el-tab-pane>
  188. </el-tabs>
  189. </div>
  190. </template>
  191. <script>
  192. import api_z from "@/api/article_z.js";
  193. import {vehicleNumber} from '@/util/common'
  194. export default {
  195. components: {},
  196. data() {
  197. return {
  198. loading1: false,
  199. loading2: false,
  200. carParkingNameOptions: [],
  201. activeName: '电话追缴',
  202. columns1: [
  203. {
  204. label: '车牌号',
  205. key: 'plateNo'
  206. },
  207. {
  208. label: '停车场',
  209. key: 'parkName'
  210. },
  211. {
  212. label: '电话号码',
  213. key: 'phoneNo'
  214. },
  215. {
  216. label: '欠缴金额',
  217. key: 'arrearsAmount'
  218. },
  219. {
  220. label: '审核状态',
  221. key: 'auditStatus'
  222. },
  223. {
  224. label: '创建日期',
  225. key: 'createTime'
  226. },
  227. // {
  228. // label: '追缴日期',
  229. // key: 'recoveryTime'
  230. // },
  231. // {
  232. // label: '追缴状态',
  233. // key: 'recoveryStatus'
  234. // },
  235. // {
  236. // label: '追缴结果',
  237. // key: 'recoveryResult'
  238. // },
  239. ],
  240. tableData1: [],
  241. total1: 0,
  242. pageSize1: 10,
  243. pageNum1: 1,
  244. title: '',
  245. dialogVisible: false,
  246. rules: {
  247. plateNo: [
  248. { required: true, message: "车牌号不能为空", trigger: "blur" },
  249. {
  250. validator: vehicleNumber,
  251. trigger: "blur",
  252. },
  253. ],
  254. },
  255. formLabelAlign: {
  256. parkLotId: '',
  257. plateNo: '',
  258. phone: '',
  259. arrearsAmount: '',
  260. recoveryDetail: '',
  261. recoveryTime: '',
  262. recoveryResult: '',
  263. },
  264. columns2: [
  265. {
  266. label: '车牌号',
  267. key: 'plateNo'
  268. },
  269. {
  270. label: '停车场',
  271. key: 'parkName'
  272. },
  273. {
  274. label: '电话号码',
  275. key: 'phoneNo'
  276. },
  277. {
  278. label: '欠缴金额',
  279. key: 'arrearsAmount'
  280. },
  281. {
  282. label: '审核状态',
  283. key: 'auditStatus'
  284. },
  285. {
  286. label: '创建日期',
  287. key: 'createTime'
  288. },
  289. // {
  290. // label: '追缴状态',
  291. // key: 'recoveryStatus'
  292. // },
  293. // {
  294. // label: '追缴结果',
  295. // key: 'recoveryResult'
  296. // },
  297. ],
  298. tableData2: [],
  299. total2: 0,
  300. radio: '2',
  301. pageSize2: 10,
  302. pageNum2: 1,
  303. formInline1: {
  304. plateNo: '',
  305. phoneNo: '',
  306. },
  307. formInline2: {
  308. plateNo: '',
  309. phoneNo: '',
  310. },
  311. title2: '',
  312. dialogVisible2: false,
  313. formLabelAlign2: {
  314. parkLotId: '',
  315. plateNo: '',
  316. phone: '',
  317. arrearsAmount: '',
  318. recoveryDetail: '',
  319. recoveryTime: '',
  320. recoveryResult: '',
  321. },
  322. }
  323. },
  324. mounted() {
  325. this.getCarParkingName()
  326. this.getTableData1()
  327. this.getTableData2()
  328. },
  329. watch: {},
  330. methods: {
  331. rowClassName({ rowIndex }) {
  332. // 偶数行和奇数行分别返回不同的类名,也可以根据实际需求基于rowData进行条件判断
  333. return rowIndex % 2 === 0 ? 'even-row' : 'odd-row';
  334. },
  335. //车场
  336. getCarParkingName() {
  337. api_z.querySelectParkListByPage().then(res => {
  338. this.carParkingNameOptions=res.data
  339. })
  340. },
  341. onSubmit() {
  342. this.pageNum1 = 1
  343. this.getTableData1()
  344. },
  345. handleAdd() {
  346. this.title = '添加'
  347. this.formLabelAlign = {}
  348. this.dialogVisible = true
  349. },
  350. handleEdit(row) {
  351. this.title = '修改'
  352. this.formLabelAlign = {...row}
  353. this.dialogVisible = true
  354. },
  355. deleteRow(record) {
  356. api_z.deleteTaskRecovery([{id: record.id}]).then(res => {
  357. if (res.code === 200) {
  358. this.$message({type: 'success', message: '删除成功!'})
  359. this.getTableData1()
  360. }
  361. })
  362. },
  363. handleConfirm() {
  364. if (this.title === '修改') {
  365. api_z.editTaskRecovery({...this.formLabelAlign}).then(res => {
  366. if (res.code === 200) {
  367. this.dialogVisible = false
  368. this.$message({
  369. message: '修改成功!',
  370. type: 'success'
  371. })
  372. this.getTableData1()
  373. }
  374. })
  375. } else {
  376. api_z.addTaskRecovery({...this.formLabelAlign, recoveryType: '电话'}).then(res => {
  377. if (res.code === 200) {
  378. this.dialogVisible = false
  379. this.$message({
  380. message: '添加成功!',
  381. type: 'success'
  382. })
  383. this.getTableData1()
  384. }
  385. })
  386. }
  387. },
  388. handleAdd2() {
  389. this.title2 = '添加'
  390. this.formLabelAlign2 = {}
  391. this.dialogVisible2 = true
  392. },
  393. handleEdit2(row) {
  394. this.title2 = '修改'
  395. this.formLabelAlign2 = {...row}
  396. this.dialogVisible2 = true
  397. },
  398. deleteRow2(record) {
  399. api_z.deleteTaskRecovery([{id: record.id}]).then(res => {
  400. if (res.code === 200) {
  401. this.$message({type: 'success', message: '删除成功!'})
  402. this.getTableData2()
  403. }
  404. })
  405. },
  406. onSubmit2() {
  407. this.pageNum2 = 1
  408. this.getTableData2()
  409. },
  410. handleConfirm2() {
  411. if (this.title2 === '修改') {
  412. api_z.editTaskRecovery({...this.formLabelAlign2}).then(res => {
  413. if (res.code === 200) {
  414. this.dialogVisible2 = false
  415. this.$message({
  416. message: '修改成功!',
  417. type: 'success'
  418. })
  419. this.getTableData2()
  420. }
  421. })
  422. } else {
  423. api_z.addTaskRecovery({...this.formLabelAlign2, recoveryType: '短信'}).then(res => {
  424. if (res.code === 200) {
  425. this.dialogVisible2 = false
  426. this.$message({
  427. message: '添加成功!',
  428. type: 'success'
  429. })
  430. this.getTableData2()
  431. }
  432. })
  433. }
  434. },
  435. handlePageChange1() {
  436. this.getTableData1()
  437. },
  438. getTableData1() {
  439. this.loading1 = true
  440. const {pageNum1, pageSize1} = this
  441. api_z.queryTaskRecoveryPhoneByPage({current: pageNum1, size: pageSize1, ...this.formInline1}).then(res => {
  442. this.tableData1 = res.data.records || []
  443. this.total1 = res.data.total
  444. this.loading1 = false
  445. })
  446. },
  447. handlePageChange2() {
  448. this.getTableData2()
  449. },
  450. getTableData2() {
  451. this.loading2 = true
  452. const {pageNum2, pageSize2} = this
  453. api_z.queryTaskRecoverySmsByPage({current: pageNum2, size: pageSize2, ...this.formInline2}).then(res => {
  454. this.tableData2 = res.data.records || []
  455. this.total2 = res.data.total
  456. this.loading2 = false
  457. })
  458. },
  459. }
  460. }
  461. </script>
  462. <style lang="scss" scoped>
  463. .body-wrapper {
  464. .form-wrapper {
  465. .el-form-item {
  466. margin-bottom: 0px;
  467. }
  468. }
  469. .button-block {
  470. text-align: right;
  471. margin-bottom: 20px;
  472. }
  473. .table-pagination {
  474. text-align: right;
  475. }
  476. .search-card {
  477. margin-bottom: 20px;
  478. text-align: center;
  479. .input-wrapper {
  480. width: 36%;
  481. }
  482. }
  483. .audit-dialog {
  484. .mg-bt {
  485. margin-bottom: 24px;
  486. }
  487. .label {
  488. text-align: right;
  489. }
  490. .form-div {
  491. /deep/ .el-input__inner {
  492. height: 35px;
  493. width: 99%;
  494. border: 1px solid #a6a5a5;
  495. }
  496. }
  497. }
  498. }
  499. </style>