From 3cfb2f9ae8b841a6e06d572a0ffd701b33f2be01 Mon Sep 17 00:00:00 2001 From: fengxiang <361798944@qq.com> Date: Fri, 12 Jan 2024 11:13:38 +0800 Subject: [PATCH] =?UTF-8?q?feat():=20=E6=96=B0=E5=A2=9E=E5=81=9C=E8=BD=A6?= =?UTF-8?q?=E5=8D=A1=E8=AF=81=E4=BB=B6=E8=AE=A4=E8=AF=81=E9=A1=B5=E9=9D=A2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ParkingCard/CertificateReview/index.jsx | 6 + .../ParkingCard/CertificateReview/index.scss | 64 +++++ .../ParkingCard/CertificateReview/loadable.jsx | 262 +++++++++++++++++++++ .../ParkingCard/ParkingCardMgm/loadable.jsx | 5 + .../OtherBusiness/ParkingCard/index.jsx | 4 +- src/router/menu.js | 7 +- src/router/router.config.js | 6 + .../OperationCenter/ParkingCardMgm/index.js | 22 +- 8 files changed, 373 insertions(+), 3 deletions(-) create mode 100644 src/pages/OperationCenter/OtherBusiness/ParkingCard/CertificateReview/index.jsx create mode 100644 src/pages/OperationCenter/OtherBusiness/ParkingCard/CertificateReview/index.scss create mode 100644 src/pages/OperationCenter/OtherBusiness/ParkingCard/CertificateReview/loadable.jsx diff --git a/src/pages/OperationCenter/OtherBusiness/ParkingCard/CertificateReview/index.jsx b/src/pages/OperationCenter/OtherBusiness/ParkingCard/CertificateReview/index.jsx new file mode 100644 index 0000000..fa20288 --- /dev/null +++ b/src/pages/OperationCenter/OtherBusiness/ParkingCard/CertificateReview/index.jsx @@ -0,0 +1,6 @@ +import React from "react" +import loadable from "@loadable/component" +import { LoadingImg } from "@/components" + +const MonitorCarAlarmLoadable = loadable(() => import("./loadable")) +export default (pros) => } /> \ No newline at end of file diff --git a/src/pages/OperationCenter/OtherBusiness/ParkingCard/CertificateReview/index.scss b/src/pages/OperationCenter/OtherBusiness/ParkingCard/CertificateReview/index.scss new file mode 100644 index 0000000..16d4163 --- /dev/null +++ b/src/pages/OperationCenter/OtherBusiness/ParkingCard/CertificateReview/index.scss @@ -0,0 +1,64 @@ +@import "@/assets/css/mixin.scss"; +$color-container-bg : var(--color-container-bg); +$color-user-list-bg : var(--color-user-list-bg); +$color-text : var(--color-text); +$color-primary : var(--color-primary); + +.certificate-modal { + .form-box { + width: 400px; + display: flex; + margin-bottom: 30px; + + >label { + text-align: right; + padding-right: 10px; + min-width: 120px; + + &.required::before { + margin-right: 4px; + color: #f56c6c; + font-family: SimSun, sans-serif; + content: "*"; + } + } + + .form-con { + flex: 1; + min-width: 190px; + } + } + + .pic-box { + margin-left: 80px; + margin-bottom: 30px; + width: 400px; + height: 300px; + + .ant-image { + width: 100%; + height: 100%; + + img { + width: 100%; + height: 100%; + object-fit: contain; + } + } + } + + .submitBtn { + text-align: center; + margin: 15px 0 5px; + cursor: pointer; + + .ant-btn { + min-width: 90px; + height: 34px; + + &:not(&:first-child) { + margin-left: 20px; + } + } + } +} \ No newline at end of file diff --git a/src/pages/OperationCenter/OtherBusiness/ParkingCard/CertificateReview/loadable.jsx b/src/pages/OperationCenter/OtherBusiness/ParkingCard/CertificateReview/loadable.jsx new file mode 100644 index 0000000..26a1308 --- /dev/null +++ b/src/pages/OperationCenter/OtherBusiness/ParkingCard/CertificateReview/loadable.jsx @@ -0,0 +1,262 @@ +import React, { useState, useRef, useEffect } from "react"; +import { message, Input, Select, Image, Modal, Button } from "antd"; +import { dictionary, utils } from "@/config/common"; +import moment from "moment"; +import ajax from "@/services"; +import { TableModule } from "@/components"; +import errorImg from "@/assets/images/layout/error.png"; +import "./index.scss"; + +function CertificateReview() { + const tableRef = useRef(null); + // 弹窗 + const [visible, setVisible] = useState(false); + // 拒绝弹窗 + const [visible1, setVisible1] = useState(false); + // 图片预览 + const [preview, setPreview] = useState(false); + // 表格数据 + const [rowData, setRowData] = useState({}); + const columns = [ + { + title: "提交人", + dataIndex: "submit", + align: "center", + }, + { + title: "审核人", + dataIndex: "check", + align: "center", + }, + { + title: "提交时间", + dataIndex: "submit_time", + align: "center", + }, + { + title: "审核时间", + dataIndex: "check_time", + align: "center", + }, + { + title: "状态", + dataIndex: "status", + align: "center", + render: (val, row, index) => + val == 2 ? "已拒绝" : val == 3 ? "已通过" : "待审核", + }, + { + title: "操作", + dataIndex: "handle", + align: "center", + width: 120, + render: (val, row, index) => { + const _status = row?.status; + return ( + { + setRowData(row); + setPreview(true); + setVisible(true); + }} + > + {_status == 2 || _status == 3 ? "查看" : "审核"} + + ); + }, + }, + ]; + const formSearch = [ + { + name: "status", + type: "Select", + label: "状态", + placeholder: "请选择状态", + options: [ + { + value: "", + label: "全部", + }, + { + value: "1", + label: "待审核", + }, + { + value: "2", + label: "已拒绝", + }, + { + value: "3", + label: "已通过", + }, + ], + }, + ]; + //搜索参数初始化 + const initFormData = { + status: "", + }; + + //搜索的结果 + const [tableData, setTableData] = useState([]); + //搜索的总结果数 + const [total, setTotal] = useState(0); + + // 列表查询 + function fetch(params) { + ajax.getCredentialList(params).then( + (res) => { + if (parseInt(res?.status) === 20000) { + const { list, total } = res?.data || {}; + setTableData(list || []); + setTotal(total || 0); + } + }, + (err) => { + console.log(err); + message.error("服务器异常"); + } + ); + } + + // 提交 + function handleSave(flag) { + if (flag == 2) { + setRowData({ ...rowData, text: "" }); + setVisible1(true); + } else { + doPost(flag); + } + } + + // 调用接口 + function doPost(flag) { + if (flag == 2 && !rowData?.text) { + message.error("请输入拒绝原因"); + return; + } + ajax + .doCredentialCheck({ id: rowData?.id, status: flag, text: rowData?.text }) + .then( + (res) => { + if (parseInt(res?.status) === 20000) { + message.success(res?.message); + setVisible1(false); + setVisible(false); + tableRef.current.fetch(); + } else { + message.error(res?.message); + } + }, + (err) => { + console.log(err); + message.error("服务器异常"); + } + ); + } + + return ( + <> + + setVisible(false)} + footer={null} + > +
+ + {rowData?.submit || "-"} +
+
+ setPreview(false)} + /> +
+ {rowData?.status == 2 ? ( +
+ + {rowData?.text || "-"} +
+ ) : null} +
+ {rowData?.status != 2 && rowData?.status != 3 ? ( + <> + + + + ) : null} + +
+
+ setVisible1(false)} + footer={null} + > +
+ + + setRowData({ + ...rowData, + text: e.target.value, + }) + } + /> +
+
+ + +
+
+ + ); +} + +export default CertificateReview; diff --git a/src/pages/OperationCenter/OtherBusiness/ParkingCard/ParkingCardMgm/loadable.jsx b/src/pages/OperationCenter/OtherBusiness/ParkingCard/ParkingCardMgm/loadable.jsx index ad7e398..c3e4307 100644 --- a/src/pages/OperationCenter/OtherBusiness/ParkingCard/ParkingCardMgm/loadable.jsx +++ b/src/pages/OperationCenter/OtherBusiness/ParkingCard/ParkingCardMgm/loadable.jsx @@ -121,6 +121,11 @@ function ParkingCardMgm(props) { key: 'card_num', }, { + title: '剩余停车卡数量', + dataIndex: 'residue', + key: 'residue', + }, + { title: '商品原价', dataIndex: 'original_price', key: 'original_price', diff --git a/src/pages/OperationCenter/OtherBusiness/ParkingCard/index.jsx b/src/pages/OperationCenter/OtherBusiness/ParkingCard/index.jsx index 4826e11..0bb6552 100644 --- a/src/pages/OperationCenter/OtherBusiness/ParkingCard/index.jsx +++ b/src/pages/OperationCenter/OtherBusiness/ParkingCard/index.jsx @@ -1,9 +1,11 @@ import ParkingCardMgm from "./ParkingCardMgm" import ParkingCardOrder from "./ParkingCardOrder" import ParkingCardStat from "./ParkingCardStat" +import CertificateReview from "./CertificateReview" export default { ParkingCardMgm, ParkingCardOrder, - ParkingCardStat + ParkingCardStat, + CertificateReview } \ No newline at end of file diff --git a/src/router/menu.js b/src/router/menu.js index 63b126c..47a4b83 100644 --- a/src/router/menu.js +++ b/src/router/menu.js @@ -152,7 +152,8 @@ "parkingCardStat", "StaggeredMgm", "staggeredOrder", - "staggeredStat" + "staggeredStat", + "certificateReview" ], "menus_new": { "inRoad": [{ @@ -848,6 +849,10 @@ "text": "停车卡", "icon": "", "children": [{ + "path": "/operationCenter/certificateReview", + "text": "停车卡证件认证", + "name": "certificateReview" + },{ "path": "/operationCenter/parkingCardMgm", "text": "停车卡管理", "name": "parkingCardMgm" diff --git a/src/router/router.config.js b/src/router/router.config.js index 1bc8737..4eed693 100644 --- a/src/router/router.config.js +++ b/src/router/router.config.js @@ -784,6 +784,12 @@ let routes = [ component: pages.CreditScoreMgm, }, { + path: "/operationCenter/certificateReview", + text: "停车卡证件认证", + name: "certificateReview", + component: pages.CertificateReview, + }, + { path: "/operationCenter/parkingCardMgm", text: "停车卡管理", name: "parkingCardMgm", diff --git a/src/services/OperationCenter/ParkingCardMgm/index.js b/src/services/OperationCenter/ParkingCardMgm/index.js index 89f3e23..22305fa 100644 --- a/src/services/OperationCenter/ParkingCardMgm/index.js +++ b/src/services/OperationCenter/ParkingCardMgm/index.js @@ -96,6 +96,24 @@ const cardStaData = (params) => { data:params }) } + +// 停车卡-证件审核-列表 +const getCredentialList = (params) => { + return ajax({ + url:'/api/ope/parkcard/credential_list', + type:'post', + data:params + }) +} + +// 停车卡-证件审核-审核 +const doCredentialCheck = (params) => { + return ajax({ + url:'/api/ope/parkcard/credential_check', + type:'post', + data:params + }) +} export default { getParkcardrList, getParkList, @@ -108,5 +126,7 @@ export default { exportOrder, editCardOrder, cardStaData, - addCardOrder + addCardOrder, + getCredentialList, + doCredentialCheck, }