临时人员管理、临时车辆管理
parent
d8af77fa14
commit
8ee9ee55a7
|
|
@ -34,7 +34,7 @@
|
||||||
"react": "^18.2.0",
|
"react": "^18.2.0",
|
||||||
"react-dom": "^18.2.0",
|
"react-dom": "^18.2.0",
|
||||||
"react-signature-canvas": "^1.1.0-alpha.2",
|
"react-signature-canvas": "^1.1.0-alpha.2",
|
||||||
"zy-react-library": "^1.2.5"
|
"zy-react-library": "^1.2.6"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@antfu/eslint-config": "^5.4.1",
|
"@antfu/eslint-config": "^5.4.1",
|
||||||
|
|
|
||||||
222
router.md
222
router.md
|
|
@ -1,89 +1,169 @@
|
||||||
### 监管端
|
### 监管端
|
||||||
#### 一级口门管理
|
#### 一级口门管理
|
||||||
- `/primeport/container/supervision/firstLevelDoor/approverUser` 门禁审批人管理
|
- 门禁审批人管理 #
|
||||||
- `/primeport/container/supervision/firstLevelDoor/basicInfo/firstLevelDoorInfo/list` 基本信息管理/一级口门信息管理
|
`/primeport/container/supervision/firstLevelDoor/approverUser`
|
||||||
- `/primeport/container/supervision/firstLevelDoor/portEntryApproval/personnelApproval/relatedPersonnel` 进港审批管理/人员审批管理/相关方人员进港审批
|
- 基本信息管理/一级口门信息管理 #
|
||||||
- `/primeport/container/supervision/firstLevelDoor/portEntryApproval/longTermVehicleApproval/shareVehicles` 进港审批管理/长期车辆审批管理/股份车辆审批
|
`/primeport/container/supervision/firstLevelDoor/basicInfo/firstLevelDoorInfo/list`
|
||||||
- `/primeport/container/supervision/firstLevelDoor/portEntryApproval/longTermVehicleApproval/relatedVehicles` 进港审批管理/长期车辆审批管理/相关方车辆审批
|
- 进港审批管理/人员审批管理/相关方人员进港审批 #
|
||||||
- `/primeport/container/supervision/firstLevelDoor/portEntryApproval/temporaryVisitor/temporaryPersonnel/list` 进港审批管理/临时访客管理/临时人员管理
|
`/primeport/container/supervision/firstLevelDoor/portEntryApproval/personnelApproval/relatedPersonnel`
|
||||||
- `/primeport/container/supervision/firstLevelDoor/portEntryApproval/temporaryVisitor/temporaryVehicle/list` 进港审批管理/临时访客管理/临时车辆管理
|
- 进港审批管理/人员审批管理/相关方人员进港审批记录
|
||||||
- `/primeport/container/supervision/firstLevelDoor/importAndExportPortInfo/stockPersonnelAndVehicles/list` 进出港信息管理/股份人员及车辆管理
|
`/primeport/container/supervision/firstLevelDoor/portEntryApproval/personnelApproval/relatedPersonnelRecords`
|
||||||
- `/primeport/container/supervision/firstLevelDoor/importAndExportPortInfo/personalVehicle/list` 进出港信息管理/个人车辆管理
|
- 进港审批管理/长期车辆审批管理/股份车辆审批 #
|
||||||
- `/primeport/container/supervision/firstLevelDoor/importAndExportPortInfo/stockVehicles/list` 进出港信息管理/股份单位车辆管理
|
`/primeport/container/supervision/firstLevelDoor/portEntryApproval/longTermVehicleApproval/shareVehicles`
|
||||||
- `/primeport/container/supervision/firstLevelDoor/importAndExportPortInfo/branchPersonnelAndVehicles/list` 进出港信息管理/分公司人员及车辆管理
|
- 进港审批管理/长期车辆审批管理/股份车辆审批记录 #
|
||||||
- `/primeport/container/supervision/firstLevelDoor/importAndExportPortInfo/stakeholderPersonnelAndVehicles/list` 进出港信息管理/相关方人员及车辆管理
|
`/primeport/container/supervision/firstLevelDoor/portEntryApproval/longTermVehicleApproval/shareVehiclesRecords`
|
||||||
- `/primeport/container/supervision/firstLevelDoor/importAndExportPortInfo/portBasedUnitsPersonnelAndVehicles/list` 进出港信息管理/驻港单位人员及车辆管理
|
- 进港审批管理/长期车辆审批管理/相关方车辆审批 #
|
||||||
- `/primeport/container/supervision/firstLevelDoor/importAndExportPortInfo/inspectDepartmentVehicles/list` 进出港信息管理/检查部门车辆管理
|
`/primeport/container/supervision/firstLevelDoor/portEntryApproval/longTermVehicleApproval/relatedVehicles`
|
||||||
- `/primeport/container/supervision/firstLevelDoor/importAndExportPortInfo/vehiclesViolation/vehiclesViolation/list` 进出港信息管理/车辆违规管理/车辆违规管理
|
- 进港审批管理/长期车辆审批管理/相关方车辆审批记录 #
|
||||||
- `/primeport/container/supervision/firstLevelDoor/importAndExportPortInfo/vehiclesViolation/vehicleBlacklist/list` 进出港信息管理/车辆违规管理/车辆黑名单管理
|
`/primeport/container/supervision/firstLevelDoor/portEntryApproval/longTermVehicleApproval/relatedVehiclesRecords`
|
||||||
|
- 进港审批管理/临时访客管理/临时人员管理 #
|
||||||
|
`/primeport/container/supervision/firstLevelDoor/portEntryApproval/temporaryVisitor/temporaryPersonnel/list`
|
||||||
|
- 进港审批管理/临时访客管理/临时人员管理记录 #
|
||||||
|
`/primeport/container/supervision/firstLevelDoor/portEntryApproval/temporaryVisitor/temporaryPersonnelRecords/list`
|
||||||
|
- 进港审批管理/临时访客管理/临时车辆管理 #
|
||||||
|
`/primeport/container/supervision/firstLevelDoor/portEntryApproval/temporaryVisitor/temporaryVehicle/list`
|
||||||
|
- 进港审批管理/临时访客管理/临时车辆管理记录 #
|
||||||
|
`/primeport/container/supervision/firstLevelDoor/portEntryApproval/temporaryVisitor/temporaryVehicleRecords/list`
|
||||||
|
- 进出港信息管理/股份人员及车辆管理
|
||||||
|
`/primeport/container/supervision/firstLevelDoor/importAndExportPortInfo/stockPersonnelAndVehicles/list`
|
||||||
|
- 进出港信息管理/个人车辆管理 #
|
||||||
|
`/primeport/container/supervision/firstLevelDoor/importAndExportPortInfo/personalVehicle/list`
|
||||||
|
- 进出港信息管理/股份单位车辆管理 #
|
||||||
|
`/primeport/container/supervision/firstLevelDoor/importAndExportPortInfo/stockVehicles/list`
|
||||||
|
- 进出港信息管理/分公司人员及车辆管理
|
||||||
|
`/primeport/container/supervision/firstLevelDoor/importAndExportPortInfo/branchPersonnelAndVehicles/list`
|
||||||
|
- 进出港信息管理/相关方人员及车辆管理
|
||||||
|
`/primeport/container/supervision/firstLevelDoor/importAndExportPortInfo/stakeholderPersonnelAndVehicles/list`
|
||||||
|
- 进出港信息管理/驻港单位人员及车辆管理
|
||||||
|
`/primeport/container/supervision/firstLevelDoor/importAndExportPortInfo/portBasedUnitsPersonnelAndVehicles/list`
|
||||||
|
- 进出港信息管理/检查部门车辆管理
|
||||||
|
`/primeport/container/supervision/firstLevelDoor/importAndExportPortInfo/inspectDepartmentVehicles/list`
|
||||||
|
- 进出港信息管理/车辆违规管理/车辆违规管理 #
|
||||||
|
`/primeport/container/supervision/firstLevelDoor/importAndExportPortInfo/vehiclesViolation/vehiclesViolation/list`
|
||||||
|
- 进出港信息管理/车辆违规管理/车辆黑名单管理 #
|
||||||
|
`/primeport/container/supervision/firstLevelDoor/importAndExportPortInfo/vehiclesViolation/vehicleBlacklist/list`
|
||||||
|
|
||||||
#### 封闭区域管理
|
#### 封闭区域管理
|
||||||
- `/primeport/container/supervision/enclosedArea/areaAndEntrance/enclosedArea/list` 封闭区域管理/封闭区域管理
|
- 封闭区域管理/封闭区域管理
|
||||||
- `/primeport/container/supervision/enclosedArea/areaAndEntrance/enclosedAreaDoor/list` 封闭区域管理/封闭区域口门管理
|
`/primeport/container/supervision/enclosedArea/areaAndEntrance/enclosedArea/list`
|
||||||
- `/primeport/container/supervision/enclosedArea/apply/personnel/list` 封闭区域申请/人员封闭区域申请
|
- 封闭区域管理/封闭区域口门管理
|
||||||
- `/primeport/container/supervision/enclosedArea/apply/vehicle/list` 封闭区域申请/车辆封闭区域申请
|
`/primeport/container/supervision/enclosedArea/areaAndEntrance/enclosedAreaDoor/list`
|
||||||
- `/primeport/container/supervision/enclosedArea/apply/personnelRecords/list` 封闭区域申请/人员封闭区域申请记录
|
- 封闭区域申请/人员封闭区域申请
|
||||||
- `/primeport/container/supervision/enclosedArea/apply/vehicleRecords/list` 封闭区域申请/车辆封闭区域申请记录
|
`/primeport/container/supervision/enclosedArea/apply/personnel/list`
|
||||||
- `/primeport/container/supervision/enclosedArea/personnelAndVehicleStatistics/list` 区域人员及车辆统计
|
- 封闭区域申请/车辆封闭区域申请
|
||||||
|
`/primeport/container/supervision/enclosedArea/apply/vehicle/list`
|
||||||
|
- 封闭区域申请/人员封闭区域申请记录
|
||||||
|
`/primeport/container/supervision/enclosedArea/apply/personnelRecords/list`
|
||||||
|
- 封闭区域申请/车辆封闭区域申请记录
|
||||||
|
`/primeport/container/supervision/enclosedArea/apply/vehicleRecords/list`
|
||||||
|
- 区域人员及车辆统计
|
||||||
|
`/primeport/container/supervision/enclosedArea/personnelAndVehicleStatistics/list`
|
||||||
|
|
||||||
|
|
||||||
### 企业端
|
### 企业端
|
||||||
#### 一级口门管理
|
#### 一级口门管理
|
||||||
- `/primeport/container/enterprise/firstLevelDoor/approverUser` 门禁审批人管理
|
- 门禁审批人管理
|
||||||
- `/primeport/container/enterprise/firstLevelDoor/portEntryApproval/personnelApproval/relatedPersonnel` 进港审批管理/人员审批管理/相关方人员进港审批
|
`/primeport/container/enterprise/firstLevelDoor/approverUser`
|
||||||
- `/primeport/container/enterprise/firstLevelDoor/portEntryApproval/longTermVehicleApproval/shareVehicles` 进港审批管理/长期车辆审批管理/车辆审批
|
- 进港审批管理/人员审批管理/相关方人员进港审批
|
||||||
- `/primeport/container/enterprise/firstLevelDoor/portEntryApproval/longTermVehicleApproval/relatedVehicles` 进港审批管理/长期车辆审批管理/相关方车辆审批
|
`/primeport/container/enterprise/firstLevelDoor/portEntryApproval/personnelApproval/relatedPersonnel`
|
||||||
- `/primeport/container/enterprise/firstLevelDoor/portEntryApproval/temporaryVisitor/temporaryPersonnel/list` 进港审批管理/临时访客管理/临时人员管理
|
- 进港审批管理/长期车辆审批管理/车辆审批
|
||||||
- `/primeport/container/enterprise/firstLevelDoor/portEntryApproval/temporaryVisitor/temporaryVehicle/list` 进港审批管理/临时访客管理/临时车辆管理
|
`/primeport/container/enterprise/firstLevelDoor/portEntryApproval/longTermVehicleApproval/shareVehicles`
|
||||||
- `/primeport/container/enterprise/firstLevelDoor/importAndExportPortInfo/stockPersonnelAndVehicles/list` 进出港信息管理/人员及车辆管理
|
- 进港审批管理/长期车辆审批管理/相关方车辆审批
|
||||||
- `/primeport/container/enterprise/firstLevelDoor/importAndExportPortInfo/personalVehicle/list` 进出港信息管理/个人车辆管理
|
`/primeport/container/enterprise/firstLevelDoor/portEntryApproval/longTermVehicleApproval/relatedVehicles`
|
||||||
- `/primeport/container/enterprise/firstLevelDoor/importAndExportPortInfo/stockVehicles/list` 进出港信息管理/单位车辆管理
|
- 进港审批管理/临时访客管理/临时人员管理
|
||||||
- `/primeport/container/enterprise/firstLevelDoor/importAndExportPortInfo/stakeholderPersonnelAndVehicles/list` 进出港信息管理/相关方人员及车辆管理
|
`/primeport/container/enterprise/firstLevelDoor/portEntryApproval/temporaryVisitor/temporaryPersonnel/list`
|
||||||
- `/primeport/container/enterprise/firstLevelDoor/importAndExportPortInfo/vehiclesViolation/vehiclesViolation/list` 进出港信息管理/车辆违规管理/车辆违规管理
|
- 进港审批管理/临时访客管理/临时车辆管理
|
||||||
- `/primeport/container/enterprise/firstLevelDoor/importAndExportPortInfo/vehiclesViolation/vehicleBlacklist/list` 进出港信息管理/车辆违规管理/车辆黑名单管理
|
`/primeport/container/enterprise/firstLevelDoor/portEntryApproval/temporaryVisitor/temporaryVehicle/list`
|
||||||
|
- 进出港信息管理/人员及车辆管理
|
||||||
|
`/primeport/container/enterprise/firstLevelDoor/importAndExportPortInfo/stockPersonnelAndVehicles/list`
|
||||||
|
- 进出港信息管理/个人车辆管理
|
||||||
|
`/primeport/container/enterprise/firstLevelDoor/importAndExportPortInfo/personalVehicle/list`
|
||||||
|
- 进出港信息管理/单位车辆管理
|
||||||
|
`/primeport/container/enterprise/firstLevelDoor/importAndExportPortInfo/stockVehicles/list`
|
||||||
|
- 进出港信息管理/相关方人员及车辆管理
|
||||||
|
`/primeport/container/enterprise/firstLevelDoor/importAndExportPortInfo/stakeholderPersonnelAndVehicles/list`
|
||||||
|
- 进出港信息管理/车辆违规管理/车辆违规管理
|
||||||
|
`/primeport/container/enterprise/firstLevelDoor/importAndExportPortInfo/vehiclesViolation/vehiclesViolation/list`
|
||||||
|
- 进出港信息管理/车辆违规管理/车辆黑名单管理
|
||||||
|
`/primeport/container/enterprise/firstLevelDoor/importAndExportPortInfo/vehiclesViolation/vehicleBlacklist/list`
|
||||||
|
|
||||||
#### 封闭区域管理
|
#### 封闭区域管理
|
||||||
- `/primeport/container/enterprise/enclosedArea/areaAndEntrance/enclosedArea/list` 封闭区域管理/封闭区域管理
|
- 封闭区域管理/封闭区域管理
|
||||||
- `/primeport/container/enterprise/enclosedArea/areaAndEntrance/enclosedAreaDoor/list` 封闭区域管理/封闭区域口门管理
|
`/primeport/container/enterprise/enclosedArea/areaAndEntrance/enclosedArea/list`
|
||||||
- `/primeport/container/enterprise/enclosedArea/apply/personnel/list` 封闭区域申请/人员封闭区域申请
|
- 封闭区域管理/封闭区域口门管理
|
||||||
- `/primeport/container/enterprise/enclosedArea/apply/vehicle/list` 封闭区域申请/车辆封闭区域申请
|
`/primeport/container/enterprise/enclosedArea/areaAndEntrance/enclosedAreaDoor/list`
|
||||||
- `/primeport/container/enterprise/enclosedArea/apply/personnelRecords/list` 封闭区域申请/人员封闭区域申请记录
|
- 封闭区域申请/人员封闭区域申请
|
||||||
- `/primeport/container/enterprise/enclosedArea/apply/vehicleRecords/list` 封闭区域申请/车辆封闭区域申请记录
|
`/primeport/container/enterprise/enclosedArea/apply/personnel/list`
|
||||||
- `/primeport/container/enterprise/enclosedArea/personnelAndVehicleStatistics/list` 区域人员及车辆统计
|
- 封闭区域申请/车辆封闭区域申请
|
||||||
- `/primeport/container/enterprise/enclosedArea/enterprisePersonnelPermissions/list` 企业人员权限
|
`/primeport/container/enterprise/enclosedArea/apply/vehicle/list`
|
||||||
- `/primeport/container/enterprise/enclosedArea/personnelReview/longTermPersonnelReview/list` 人员审核/长期人员审核
|
- 封闭区域申请/人员封闭区域申请记录
|
||||||
- `/primeport/container/enterprise/enclosedArea/personnelReview/temporaryPersonnelReview/list` 人员审核/临时人员审核
|
`/primeport/container/enterprise/enclosedArea/apply/personnelRecords/list`
|
||||||
- `/primeport/container/enterprise/enclosedArea/personnelReview/longTermPersonnelReviewRecords/list` 人员审核/长期人员审核记录
|
- 封闭区域申请/车辆封闭区域申请记录
|
||||||
- `/primeport/container/enterprise/enclosedArea/personnelReview/temporaryPersonnelReviewRecords/list` 人员审核/临时访客人员记录
|
`/primeport/container/enterprise/enclosedArea/apply/vehicleRecords/list`
|
||||||
- `/primeport/container/enterprise/enclosedArea/vehicleReview/longTermVehicleReview/list` 车辆审核/长期车辆审核
|
- 区域人员及车辆统计
|
||||||
- `/primeport/container/enterprise/enclosedArea/vehicleReview/temporaryVehicleReview/list` 车辆审核/临时车辆审核
|
`/primeport/container/enterprise/enclosedArea/personnelAndVehicleStatistics/list`
|
||||||
- `/primeport/container/enterprise/enclosedArea/vehicleReview/longTermVehicleReviewRecords/list` 车辆审核/长期车辆审核记录
|
- 企业人员权限
|
||||||
- `/primeport/container/enterprise/enclosedArea/vehicleReview/temporaryVehicleReviewRecords/list` 车辆审核/临时车辆审核记录
|
`/primeport/container/enterprise/enclosedArea/enterprisePersonnelPermissions/list`
|
||||||
|
- 人员审核/长期人员审核
|
||||||
|
`/primeport/container/enterprise/enclosedArea/personnelReview/longTermPersonnelReview/list`
|
||||||
|
- 人员审核/临时人员审核
|
||||||
|
`/primeport/container/enterprise/enclosedArea/personnelReview/temporaryPersonnelReview/list`
|
||||||
|
- 人员审核/长期人员审核记录
|
||||||
|
`/primeport/container/enterprise/enclosedArea/personnelReview/longTermPersonnelReviewRecords/list`
|
||||||
|
- 人员审核/临时访客人员记录
|
||||||
|
`/primeport/container/enterprise/enclosedArea/personnelReview/temporaryPersonnelReviewRecords/list`
|
||||||
|
- 车辆审核/长期车辆审核
|
||||||
|
`/primeport/container/enterprise/enclosedArea/vehicleReview/longTermVehicleReview/list`
|
||||||
|
- 车辆审核/临时车辆审核
|
||||||
|
`/primeport/container/enterprise/enclosedArea/vehicleReview/temporaryVehicleReview/list`
|
||||||
|
- 车辆审核/长期车辆审核记录
|
||||||
|
`/primeport/container/enterprise/enclosedArea/vehicleReview/longTermVehicleReviewRecords/list`
|
||||||
|
- 车辆审核/临时车辆审核记录
|
||||||
|
`/primeport/container/enterprise/enclosedArea/vehicleReview/temporaryVehicleReviewRecords/list`
|
||||||
|
|
||||||
|
|
||||||
### 相关方端
|
### 相关方端
|
||||||
#### 一级口门管理
|
#### 一级口门管理
|
||||||
- `/primeport/container/stakeholder/firstLevelDoor/approverUser` 门禁审批人管理
|
- 门禁审批人管理
|
||||||
- `/primeport/container/stakeholder/firstLevelDoor/portEntryApproval/longTermVehicleApproval/shareVehicles` 进港审批管理/长期车辆审批管理/车辆审批
|
`/primeport/container/stakeholder/firstLevelDoor/approverUser`
|
||||||
- `/primeport/container/stakeholder/firstLevelDoor/portEntryApproval/temporaryVisitor/temporaryPersonnel/list` 进港审批管理/临时访客管理/临时人员管理
|
- 进港审批管理/长期车辆审批管理/车辆审批
|
||||||
- `/primeport/container/stakeholder/firstLevelDoor/portEntryApproval/temporaryVisitor/temporaryVehicle/list` 进港审批管理/临时访客管理/临时车辆管理
|
`/primeport/container/stakeholder/firstLevelDoor/portEntryApproval/longTermVehicleApproval/shareVehicles`
|
||||||
- `/primeport/container/stakeholder/firstLevelDoor/importAndExportPortInfo/stockPersonnelAndVehicles/list` 进出港信息管理/人员及车辆管理
|
- 进港审批管理/临时访客管理/临时人员管理
|
||||||
- `/primeport/container/stakeholder/firstLevelDoor/importAndExportPortInfo/personalVehicle/list` 进出港信息管理/个人车辆管理
|
`/primeport/container/stakeholder/firstLevelDoor/portEntryApproval/temporaryVisitor/temporaryPersonnel/list`
|
||||||
- `/primeport/container/stakeholder/firstLevelDoor/importAndExportPortInfo/vehiclesViolation/vehiclesViolation/list` 进出港信息管理/车辆违规管理/车辆违规管理
|
- 进港审批管理/临时访客管理/临时车辆管理
|
||||||
- `/primeport/container/stakeholder/firstLevelDoor/importAndExportPortInfo/vehiclesViolation/vehicleBlacklist/list` 进出港信息管理/车辆违规管理/车辆黑名单管理
|
`/primeport/container/stakeholder/firstLevelDoor/portEntryApproval/temporaryVisitor/temporaryVehicle/list`
|
||||||
- `/primeport/container/stakeholder/firstLevelDoor/personnelPermissionRecords/list` 人员权限记录
|
- 进出港信息管理/人员及车辆管理
|
||||||
- `/primeport/container/stakeholder/firstLevelDoor/personnelApplication/list` 人员申请
|
`/primeport/container/stakeholder/firstLevelDoor/importAndExportPortInfo/stockPersonnelAndVehicles/list`
|
||||||
- `/primeport/container/stakeholder/firstLevelDoor/vehicleApplication/list` 车辆申请
|
- 进出港信息管理/个人车辆管理
|
||||||
- `/primeport/container/stakeholder/firstLevelDoor/personnelApplicationRecords/list` 人员申请记录
|
`/primeport/container/stakeholder/firstLevelDoor/importAndExportPortInfo/personalVehicle/list`
|
||||||
- `/primeport/container/stakeholder/firstLevelDoor/vehicleApplicationRecords/list` 车辆申请记录
|
- 进出港信息管理/车辆违规管理/车辆违规管理
|
||||||
|
`/primeport/container/stakeholder/firstLevelDoor/importAndExportPortInfo/vehiclesViolation/vehiclesViolation/list`
|
||||||
|
- 进出港信息管理/车辆违规管理/车辆黑名单管理
|
||||||
|
`/primeport/container/stakeholder/firstLevelDoor/importAndExportPortInfo/vehiclesViolation/vehicleBlacklist/list`
|
||||||
|
- 人员权限记录
|
||||||
|
`/primeport/container/stakeholder/firstLevelDoor/personnelPermissionRecords/list`
|
||||||
|
- 人员申请
|
||||||
|
`/primeport/container/stakeholder/firstLevelDoor/personnelApplication/list`
|
||||||
|
- 车辆申请
|
||||||
|
`/primeport/container/stakeholder/firstLevelDoor/vehicleApplication/list`
|
||||||
|
- 人员申请记录
|
||||||
|
`/primeport/container/stakeholder/firstLevelDoor/personnelApplicationRecords/list`
|
||||||
|
- 车辆申请记录
|
||||||
|
`/primeport/container/stakeholder/firstLevelDoor/vehicleApplicationRecords/list`
|
||||||
|
|
||||||
#### 封闭区域管理
|
#### 封闭区域管理
|
||||||
- `/primeport/container/stakeholder/enclosedArea/apply/personnel/list` 封闭区域申请/人员封闭区域申请
|
- 封闭区域申请/人员封闭区域申请
|
||||||
- `/primeport/container/stakeholder/enclosedArea/apply/vehicle/list` 封闭区域申请/车辆封闭区域申请
|
`/primeport/container/stakeholder/enclosedArea/apply/personnel/list`
|
||||||
- `/primeport/container/stakeholder/enclosedArea/apply/personnelRecords/list` 封闭区域申请/人员封闭区域申请记录
|
- 封闭区域申请/车辆封闭区域申请
|
||||||
- `/primeport/container/stakeholder/enclosedArea/apply/vehicleRecords/list` 封闭区域申请/车辆封闭区域申请记录
|
`/primeport/container/stakeholder/enclosedArea/apply/vehicle/list`
|
||||||
|
- 封闭区域申请/人员封闭区域申请记录
|
||||||
|
`/primeport/container/stakeholder/enclosedArea/apply/personnelRecords/list`
|
||||||
|
- 封闭区域申请/车辆封闭区域申请记录
|
||||||
|
`/primeport/container/stakeholder/enclosedArea/apply/vehicleRecords/list`
|
||||||
|
|
||||||
|
|
||||||
### H5端
|
### H5 端
|
||||||
- `/primeport/container/mobile/firstLevelDoor/personnelApplication/apply` 人员申请/申请
|
- 人员申请/申请
|
||||||
- `/primeport/container/mobile/firstLevelDoor/personnelApplication/applyList` 人员申请/申请记录
|
`/primeport/container/mobile/firstLevelDoor/personnelApplication/apply`
|
||||||
|
- 人员申请/申请记录
|
||||||
|
`/primeport/container/mobile/firstLevelDoor/personnelApplication/applyList`
|
||||||
|
|
|
||||||
|
|
@ -2,19 +2,19 @@ import { declareRequest } from "@cqsjjb/jjb-dva-runtime";
|
||||||
|
|
||||||
export const temporaryPersonnelList = declareRequest(
|
export const temporaryPersonnelList = declareRequest(
|
||||||
"temporaryPersonnelLoading",
|
"temporaryPersonnelLoading",
|
||||||
`Post > @/primeport/`,
|
`Post > @/primeport/personApply/xgfPersonAuditList`,
|
||||||
);
|
);
|
||||||
export const temporaryPersonnelAdd = declareRequest(
|
export const temporaryPersonnelAdd = declareRequest(
|
||||||
"temporaryPersonnelLoading",
|
"temporaryPersonnelLoading",
|
||||||
`Post > @/primeport/`,
|
`Post > @/primeport/vehicleApply/saveTemporaryVisitors`,
|
||||||
);
|
);
|
||||||
export const temporaryPersonnelInfo = declareRequest(
|
export const temporaryPersonnelInfo = declareRequest(
|
||||||
"temporaryPersonnelLoading",
|
"temporaryPersonnelLoading",
|
||||||
`Post > @/primeport/`,
|
`Post > @/primeport/personApply/xgfPersonApplyInfoById`,
|
||||||
);
|
);
|
||||||
export const temporaryPersonnelReview = declareRequest(
|
export const temporaryPersonnelReview = declareRequest(
|
||||||
"temporaryPersonnelLoading",
|
"temporaryPersonnelLoading",
|
||||||
`Post > @/primeport/`,
|
`Post > @/primeport/personApply/xgfPersonAudit`,
|
||||||
);
|
);
|
||||||
export const temporaryPersonnelReviewList = declareRequest(
|
export const temporaryPersonnelReviewList = declareRequest(
|
||||||
"temporaryPersonnelLoading",
|
"temporaryPersonnelLoading",
|
||||||
|
|
|
||||||
|
|
@ -1,20 +1,8 @@
|
||||||
import { declareRequest } from "@cqsjjb/jjb-dva-runtime";
|
import { declareRequest } from "@cqsjjb/jjb-dva-runtime";
|
||||||
|
|
||||||
export const temporaryVehicleList = declareRequest(
|
|
||||||
"temporaryVehicleLoading",
|
|
||||||
`Post > @/primeport/`,
|
|
||||||
);
|
|
||||||
export const temporaryVehicleAdd = declareRequest(
|
export const temporaryVehicleAdd = declareRequest(
|
||||||
"temporaryVehicleLoading",
|
"temporaryVehicleLoading",
|
||||||
`Post > @/primeport/`,
|
`Post > @/primeport/vehicleApply/saveTemporaryVisitors`,
|
||||||
);
|
|
||||||
export const temporaryVehicleInfo = declareRequest(
|
|
||||||
"temporaryVehicleLoading",
|
|
||||||
`Post > @/primeport/`,
|
|
||||||
);
|
|
||||||
export const temporaryVehicleReview = declareRequest(
|
|
||||||
"temporaryVehicleLoading",
|
|
||||||
`Post > @/primeport/`,
|
|
||||||
);
|
);
|
||||||
export const temporaryVehicleReviewList = declareRequest(
|
export const temporaryVehicleReviewList = declareRequest(
|
||||||
"temporaryVehicleLoading",
|
"temporaryVehicleLoading",
|
||||||
|
|
|
||||||
|
|
@ -223,7 +223,7 @@ function Add(props) {
|
||||||
label: "审批人",
|
label: "审批人",
|
||||||
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||||
items: approvalUserListAll,
|
items: approvalUserListAll,
|
||||||
itemsField: { labelKey: "userName", valueKey: "userId" },
|
itemsField: { labelKey: item => `${item.userName}(${item.corpName})(${item.deptName})`, valueKey: "userId" },
|
||||||
span: 24,
|
span: 24,
|
||||||
componentProps: {
|
componentProps: {
|
||||||
onChange: (value) => {
|
onChange: (value) => {
|
||||||
|
|
|
||||||
|
|
@ -126,7 +126,7 @@ const AddModalComponent = (props) => {
|
||||||
const { id: illegalImagesId } = await uploadFile({
|
const { id: illegalImagesId } = await uploadFile({
|
||||||
single: false,
|
single: false,
|
||||||
files: values.illegalImages,
|
files: values.illegalImages,
|
||||||
params: { foreignKey: "", type: UPLOAD_FILE_TYPE_ENUM[607] },
|
params: { type: UPLOAD_FILE_TYPE_ENUM[607] },
|
||||||
});
|
});
|
||||||
const { success } = await props["vehiclesViolationAdd"]({ ...values, illegalImagesId });
|
const { success } = await props["vehiclesViolationAdd"]({ ...values, illegalImagesId });
|
||||||
if (success) {
|
if (success) {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
import { Button, Descriptions, Divider, message, Modal, Space } from "antd";
|
import { Button, Descriptions, Divider, message, Modal, Space, Spin } from "antd";
|
||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import FormBuilder from "zy-react-library/components/FormBuilder";
|
import FormBuilder from "zy-react-library/components/FormBuilder";
|
||||||
import Page from "zy-react-library/components/Page";
|
import Page from "zy-react-library/components/Page";
|
||||||
|
|
@ -19,11 +19,12 @@ function RelatedVehicles(props) {
|
||||||
const [reviewModalVisible, setReviewModalVisible] = useState(false);
|
const [reviewModalVisible, setReviewModalVisible] = useState(false);
|
||||||
const [infoModalVisible, setInfoModalVisible] = useState(false);
|
const [infoModalVisible, setInfoModalVisible] = useState(false);
|
||||||
const [viewRejectReasonModalVisible, setViewRejectReasonModalVisible] = useState(false);
|
const [viewRejectReasonModalVisible, setViewRejectReasonModalVisible] = useState(false);
|
||||||
|
const [remarks, setRemarks] = useState("");
|
||||||
|
|
||||||
const [form] = Search.useForm();
|
const [form] = Search.useForm();
|
||||||
const { tableProps, getData } = useTable(props["vehicleAuditList"], {
|
const { tableProps, getData } = useTable(props["vehicleAuditList"], {
|
||||||
form,
|
form,
|
||||||
params: { vehicleBelongTypeArr: "5" },
|
params: { vehicleBelongTypeArr: "5", processOrRecord: !props.isRecords ? 1 : 2 },
|
||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
@ -62,15 +63,17 @@ function RelatedVehicles(props) {
|
||||||
width: 150,
|
width: 150,
|
||||||
render: (_, record) => (
|
render: (_, record) => (
|
||||||
<Space>
|
<Space>
|
||||||
<Button
|
{(!props.isRecords && record.currentUserCanAudit === 1) && (
|
||||||
type="link"
|
<Button
|
||||||
onClick={() => {
|
type="link"
|
||||||
setReviewModalVisible(true);
|
onClick={() => {
|
||||||
setCurrentId(record.id);
|
setReviewModalVisible(true);
|
||||||
}}
|
setCurrentId(record.id);
|
||||||
>
|
}}
|
||||||
审核
|
>
|
||||||
</Button>
|
审核
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
<Button
|
<Button
|
||||||
type="link"
|
type="link"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
|
|
@ -85,7 +88,7 @@ function RelatedVehicles(props) {
|
||||||
type="link"
|
type="link"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
setViewRejectReasonModalVisible(true);
|
setViewRejectReasonModalVisible(true);
|
||||||
setCurrentId(record.id);
|
setRemarks(record.remarks);
|
||||||
}}
|
}}
|
||||||
>
|
>
|
||||||
查看原因
|
查看原因
|
||||||
|
|
@ -138,10 +141,10 @@ function RelatedVehicles(props) {
|
||||||
{
|
{
|
||||||
viewRejectReasonModalVisible && (
|
viewRejectReasonModalVisible && (
|
||||||
<ViewRejectReasonModal
|
<ViewRejectReasonModal
|
||||||
id={currentId}
|
remarks={remarks}
|
||||||
onCancel={() => {
|
onCancel={() => {
|
||||||
setViewRejectReasonModalVisible(false);
|
setViewRejectReasonModalVisible(false);
|
||||||
setCurrentId("");
|
setRemarks("");
|
||||||
}}
|
}}
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
|
|
@ -175,48 +178,39 @@ const ReviewModalComponent = (props) => {
|
||||||
width={800}
|
width={800}
|
||||||
confirmLoading={props.vehicleAudit.vehicleAuditLoading}
|
confirmLoading={props.vehicleAudit.vehicleAuditLoading}
|
||||||
>
|
>
|
||||||
<InfoModal id={props.id} />
|
<Spin spinning={props.vehicleAudit.vehicleAuditLoading}>
|
||||||
<FormBuilder
|
<InfoModal id={props.id} />
|
||||||
form={form}
|
<FormBuilder
|
||||||
onFinish={onSubmit}
|
form={form}
|
||||||
labelCol={{ span: 8 }}
|
onFinish={onSubmit}
|
||||||
span={24}
|
labelCol={{ span: 8 }}
|
||||||
values={{
|
span={24}
|
||||||
auditStatus: "2",
|
values={{
|
||||||
}}
|
auditStatus: "2",
|
||||||
showActionButtons={false}
|
}}
|
||||||
options={[
|
showActionButtons={false}
|
||||||
{
|
options={[
|
||||||
name: "auditStatus",
|
{
|
||||||
label: "是否通过审核",
|
name: "auditStatus",
|
||||||
render: FORM_ITEM_RENDER_ENUM.RADIO,
|
label: "是否通过审核",
|
||||||
items: VEHICLE_AUDIT_STATUS_ENUM,
|
render: FORM_ITEM_RENDER_ENUM.RADIO,
|
||||||
},
|
items: VEHICLE_AUDIT_STATUS_ENUM,
|
||||||
{
|
},
|
||||||
name: "remarks",
|
{
|
||||||
label: "驳回原因",
|
name: "remarks",
|
||||||
render: FORM_ITEM_RENDER_ENUM.TEXTAREA,
|
label: "驳回原因",
|
||||||
dependencies: ["auditStatus"],
|
render: FORM_ITEM_RENDER_ENUM.TEXTAREA,
|
||||||
hidden: formValues => !(formValues.auditStatus === "3"),
|
dependencies: ["auditStatus"],
|
||||||
},
|
hidden: formValues => !(formValues.auditStatus === "3"),
|
||||||
]}
|
},
|
||||||
/>
|
]}
|
||||||
|
/>
|
||||||
|
</Spin>
|
||||||
</Modal>
|
</Modal>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const ViewRejectReasonModalComponent = (props) => {
|
const ViewRejectReasonModalComponent = (props) => {
|
||||||
const [info, setInfo] = useState({});
|
|
||||||
const getData = async () => {
|
|
||||||
// TODO
|
|
||||||
const { data } = await props["vehicleAuditRejectReason"]({ id: props.id });
|
|
||||||
setInfo(data);
|
|
||||||
};
|
|
||||||
|
|
||||||
useEffect(() => {
|
|
||||||
getData();
|
|
||||||
}, []);
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal
|
<Modal
|
||||||
open
|
open
|
||||||
|
|
@ -234,7 +228,7 @@ const ViewRejectReasonModalComponent = (props) => {
|
||||||
bordered
|
bordered
|
||||||
styles={{ label: { width: 200 } }}
|
styles={{ label: { width: 200 } }}
|
||||||
items={[
|
items={[
|
||||||
{ label: "驳回原因", children: info.todo1 },
|
{ label: "驳回原因", children: props.remarks },
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
import RelatedVehiclesPage from "../RelatedVehicles";
|
||||||
|
|
||||||
|
function RelatedVehiclesRecords(props) {
|
||||||
|
return (<RelatedVehiclesPage isRecords={true} {...props} />);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default RelatedVehiclesRecords;
|
||||||
|
|
@ -1,5 +1,5 @@
|
||||||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
import { Button, Descriptions, Divider, message, Modal, Spin } from "antd";
|
import { Button, Descriptions, Divider, message, Modal, Space, Spin } from "antd";
|
||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import FormBuilder from "zy-react-library/components/FormBuilder";
|
import FormBuilder from "zy-react-library/components/FormBuilder";
|
||||||
import Page from "zy-react-library/components/Page";
|
import Page from "zy-react-library/components/Page";
|
||||||
|
|
@ -18,12 +18,13 @@ import { NS_VEHICLE_AUDIT } from "~/enumerate/namespace";
|
||||||
|
|
||||||
function ShareVehicles(props) {
|
function ShareVehicles(props) {
|
||||||
const [reviewModalVisible, setReviewModalVisible] = useState(false);
|
const [reviewModalVisible, setReviewModalVisible] = useState(false);
|
||||||
|
const [infoModalVisible, setInfoModalVisible] = useState(false);
|
||||||
const [currentId, setCurrentId] = useState("");
|
const [currentId, setCurrentId] = useState("");
|
||||||
|
|
||||||
const [form] = Search.useForm();
|
const [form] = Search.useForm();
|
||||||
const { tableProps, getData } = useTable(props["vehicleAuditList"], {
|
const { tableProps, getData } = useTable(props["vehicleAuditList"], {
|
||||||
form,
|
form,
|
||||||
params: { vehicleBelongTypeArr: "1,2" },
|
params: { vehicleBelongTypeArr: "1,2", processOrRecord: !props.isRecords ? 1 : 2 },
|
||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
@ -63,15 +64,28 @@ function ShareVehicles(props) {
|
||||||
title: "操作",
|
title: "操作",
|
||||||
width: 100,
|
width: 100,
|
||||||
render: (_, record) => (
|
render: (_, record) => (
|
||||||
<Button
|
<Space>
|
||||||
type="link"
|
{(!props.isRecords && record.currentUserCanAudit === 1) && (
|
||||||
onClick={() => {
|
<Button
|
||||||
setReviewModalVisible(true);
|
type="link"
|
||||||
setCurrentId(record.id);
|
onClick={() => {
|
||||||
}}
|
setReviewModalVisible(true);
|
||||||
>
|
setCurrentId(record.id);
|
||||||
审核
|
}}
|
||||||
</Button>
|
>
|
||||||
|
审核
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
|
<Button
|
||||||
|
type="link"
|
||||||
|
onClick={() => {
|
||||||
|
setInfoModalVisible(true);
|
||||||
|
setCurrentId(record.id);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
查看
|
||||||
|
</Button>
|
||||||
|
</Space>
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
]}
|
]}
|
||||||
|
|
@ -89,13 +103,95 @@ function ShareVehicles(props) {
|
||||||
/>
|
/>
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
{
|
||||||
|
infoModalVisible && (
|
||||||
|
<Modal
|
||||||
|
open
|
||||||
|
title="查看"
|
||||||
|
maskClosable={false}
|
||||||
|
onCancel={() => {
|
||||||
|
setInfoModalVisible(false);
|
||||||
|
}}
|
||||||
|
width={600}
|
||||||
|
footer={[
|
||||||
|
<Button
|
||||||
|
key="cancel"
|
||||||
|
onClick={() => {
|
||||||
|
setInfoModalVisible(false);
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
取消
|
||||||
|
</Button>,
|
||||||
|
]}
|
||||||
|
loading={props.vehicleAudit.vehicleAuditLoading}
|
||||||
|
>
|
||||||
|
<InfoModal id={currentId} />
|
||||||
|
</Modal>
|
||||||
|
)
|
||||||
|
}
|
||||||
</Page>
|
</Page>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function ReviewModalComponent(props) {
|
function ReviewModalComponent(props) {
|
||||||
const [form] = FormBuilder.useForm();
|
const [form] = FormBuilder.useForm();
|
||||||
const { loading: getFileLoading, getFile } = useGetFile();
|
|
||||||
|
const onSubmit = async (values) => {
|
||||||
|
const { success } = await props["vehicleAuditApproval"]({
|
||||||
|
...values,
|
||||||
|
id: props.id,
|
||||||
|
});
|
||||||
|
if (success) {
|
||||||
|
message.success("操作成功");
|
||||||
|
props.onCancel();
|
||||||
|
props.getData();
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
return (
|
||||||
|
<Modal
|
||||||
|
open
|
||||||
|
title="审批"
|
||||||
|
maskClosable={false}
|
||||||
|
onCancel={props.onCancel}
|
||||||
|
onOk={form.submit}
|
||||||
|
width={800}
|
||||||
|
confirmLoading={props.vehicleAudit.vehicleAuditLoading}
|
||||||
|
>
|
||||||
|
<Spin spinning={props.vehicleAudit.vehicleAuditLoading}>
|
||||||
|
<InfoModal id={props.id} />
|
||||||
|
<FormBuilder
|
||||||
|
form={form}
|
||||||
|
showActionButtons={false}
|
||||||
|
span={24}
|
||||||
|
onFinish={onSubmit}
|
||||||
|
labelCol={{ span: 8 }}
|
||||||
|
values={{
|
||||||
|
auditStatus: "2",
|
||||||
|
}}
|
||||||
|
options={[
|
||||||
|
{
|
||||||
|
name: "auditStatus",
|
||||||
|
label: "是否通过",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.RADIO,
|
||||||
|
items: VEHICLE_AUDIT_STATUS_ENUM,
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "remarks",
|
||||||
|
label: "打回意见",
|
||||||
|
render: FORM_ITEM_RENDER_ENUM.TEXTAREA,
|
||||||
|
dependencies: ["auditStatus"],
|
||||||
|
hidden: formValues => !(formValues.auditStatus === "3"),
|
||||||
|
},
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
</Spin>
|
||||||
|
</Modal>
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
function InfoModalComponent(props) {
|
||||||
|
const { getFile } = useGetFile();
|
||||||
|
|
||||||
const [changeAfter, setChangeAfter] = useState({});
|
const [changeAfter, setChangeAfter] = useState({});
|
||||||
const [changeBefore, setChangeBefore] = useState({});
|
const [changeBefore, setChangeBefore] = useState({});
|
||||||
|
|
@ -139,57 +235,36 @@ function ReviewModalComponent(props) {
|
||||||
getRecordsList();
|
getRecordsList();
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const onSubmit = async (values) => {
|
|
||||||
const { success } = await props["vehicleAuditApproval"]({
|
|
||||||
...values,
|
|
||||||
id: props.id,
|
|
||||||
});
|
|
||||||
if (success) {
|
|
||||||
message.success("操作成功");
|
|
||||||
props.onCancel();
|
|
||||||
props.getData();
|
|
||||||
}
|
|
||||||
};
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Modal
|
<div>
|
||||||
open
|
<Divider orientation="left">申请信息</Divider>
|
||||||
title="审批"
|
{
|
||||||
maskClosable={false}
|
batchState === 1
|
||||||
onCancel={props.onCancel}
|
? (
|
||||||
onOk={form.submit}
|
<Descriptions
|
||||||
width={800}
|
column={1}
|
||||||
confirmLoading={props.vehicleAudit.vehicleAuditLoading || getFileLoading}
|
bordered
|
||||||
>
|
styles={{ label: { width: 200 } }}
|
||||||
<Spin spinning={props.vehicleAudit.vehicleAuditLoading || getFileLoading}>
|
items={[
|
||||||
<Divider orientation="left">申请信息</Divider>
|
{ label: "车辆所属类型", children: getLabelName({ list: VEHICLE_TYPE_ENUM, status: changeAfter.vehicleBelongType }) },
|
||||||
{
|
{ label: "车辆所属部门", children: changeAfter.vehicleDepartmentName },
|
||||||
batchState === 1
|
...(changeAfter.vehicleBelongType === 1 ? [{ label: "车辆归属人", children: changeAfter.employeeVehicleUserName }] : []),
|
||||||
? (
|
{ label: "车牌号", children: changeAfter.licenceNo },
|
||||||
<Descriptions
|
{ label: "车牌类型", children: changeAfter.licenceTypeName },
|
||||||
column={1}
|
{ label: "车辆类型", children: changeAfter.vehicleTypeName },
|
||||||
bordered
|
{ label: "访问港区范围", children: JSON.parse(changeAfter.gateLevelAuthArea)?.area?.map(item => item.value)?.join("、") },
|
||||||
styles={{ label: { width: 200 } }}
|
{ label: "访问开始时间", children: changeAfter.visitStartTime },
|
||||||
items={[
|
{ label: "访问结束时间", children: changeAfter.visitEndTime },
|
||||||
{ label: "车辆所属类型", children: getLabelName({ list: VEHICLE_TYPE_ENUM, status: changeAfter.vehicleBelongType }) },
|
{ label: "行驶证照片", children: (<PreviewImg files={changeAfter.drivingLicenseFile} />) },
|
||||||
{ label: "车辆所属部门", children: changeAfter.vehicleDepartmentName },
|
{ label: "车辆照片", children: (<PreviewImg files={changeAfter.attachmentFile} />) },
|
||||||
...(changeAfter.vehicleBelongType === 1 ? [{ label: "车辆归属人", children: changeAfter.employeeVehicleUserName }] : []),
|
{ label: "审批人", children: changeAfter.auditUserName },
|
||||||
{ label: "车牌号", children: changeAfter.licenceNo },
|
]}
|
||||||
{ label: "车牌类型", children: changeAfter.licenceTypeName },
|
/>
|
||||||
{ label: "车辆类型", children: changeAfter.vehicleTypeName },
|
)
|
||||||
{ label: "访问港区范围", children: JSON.parse(changeAfter.gateLevelAuthArea)?.area?.map(item => item.value)?.join("、") },
|
: (
|
||||||
{ label: "访问开始时间", children: changeAfter.visitStartTime },
|
<div>
|
||||||
{ label: "访问结束时间", children: changeAfter.visitEndTime },
|
<style>
|
||||||
{ label: "行驶证照片", children: (<PreviewImg files={changeAfter.drivingLicenseFile} />) },
|
{`
|
||||||
{ label: "车辆照片", children: (<PreviewImg files={changeAfter.attachmentFile} />) },
|
|
||||||
{ label: "审批人", children: changeAfter.auditUserName },
|
|
||||||
]}
|
|
||||||
/>
|
|
||||||
)
|
|
||||||
: (
|
|
||||||
<div>
|
|
||||||
<style>
|
|
||||||
{`
|
|
||||||
.comparison-table {
|
.comparison-table {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
border-collapse: collapse;
|
border-collapse: collapse;
|
||||||
|
|
@ -213,127 +288,102 @@ function ReviewModalComponent(props) {
|
||||||
width: 40%;
|
width: 40%;
|
||||||
}
|
}
|
||||||
`}
|
`}
|
||||||
</style>
|
</style>
|
||||||
<table className="comparison-table">
|
<table className="comparison-table">
|
||||||
<thead>
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th className="name-col">名称</th>
|
||||||
|
<th className="before-col">变更前</th>
|
||||||
|
<th className="after-col">变更后</th>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<tr>
|
||||||
|
<th>车辆所属类型</th>
|
||||||
|
<td>{getLabelName({ list: VEHICLE_TYPE_ENUM, status: changeBefore.vehicleBelongType })}</td>
|
||||||
|
<td>{getLabelName({ list: VEHICLE_TYPE_ENUM, status: changeAfter.vehicleBelongType })}</td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<th>车辆所属部门</th>
|
||||||
|
<td>{changeBefore.vehicleDepartmentName}</td>
|
||||||
|
<td>{changeAfter.vehicleDepartmentName}</td>
|
||||||
|
</tr>
|
||||||
|
{changeBefore.vehicleBelongType === 1 && (
|
||||||
<tr>
|
<tr>
|
||||||
<th className="name-col">名称</th>
|
<th>车辆归属人</th>
|
||||||
<th className="before-col">变更前</th>
|
<td>{changeBefore.employeeVehicleUserName}</td>
|
||||||
<th className="after-col">变更后</th>
|
<td>{changeAfter.employeeVehicleUserName}</td>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
)}
|
||||||
<tbody>
|
<tr>
|
||||||
<tr>
|
<th>车牌号</th>
|
||||||
<th>车辆所属类型</th>
|
<td>{changeBefore.licenceNo}</td>
|
||||||
<td>{getLabelName({ list: VEHICLE_TYPE_ENUM, status: changeBefore.vehicleBelongType })}</td>
|
<td>{changeAfter.licenceNo}</td>
|
||||||
<td>{getLabelName({ list: VEHICLE_TYPE_ENUM, status: changeAfter.vehicleBelongType })}</td>
|
</tr>
|
||||||
</tr>
|
<tr>
|
||||||
<tr>
|
<th>车牌类型</th>
|
||||||
<th>车辆所属部门</th>
|
<td>{changeBefore.licenceTypeName}</td>
|
||||||
<td>{changeBefore.vehicleDepartmentName}</td>
|
<td>{changeAfter.licenceTypeName}</td>
|
||||||
<td>{changeAfter.vehicleDepartmentName}</td>
|
</tr>
|
||||||
</tr>
|
<tr>
|
||||||
{changeBefore.vehicleBelongType === 1 && (
|
<th>车辆类型</th>
|
||||||
<tr>
|
<td>{changeBefore.vehicleTypeName}</td>
|
||||||
<th>车辆归属人</th>
|
<td>{changeAfter.vehicleTypeName}</td>
|
||||||
<td>{changeBefore.employeeVehicleUserName}</td>
|
</tr>
|
||||||
<td>{changeAfter.employeeVehicleUserName}</td>
|
<tr>
|
||||||
</tr>
|
<th>访问港区范围</th>
|
||||||
)}
|
<td>{JSON.parse(changeBefore.gateLevelAuthArea)?.area?.map(item => item.value)?.join("、")}</td>
|
||||||
<tr>
|
<td>{JSON.parse(changeAfter.gateLevelAuthArea)?.area?.map(item => item.value)?.join("、")}</td>
|
||||||
<th>车牌号</th>
|
</tr>
|
||||||
<td>{changeBefore.licenceNo}</td>
|
<tr>
|
||||||
<td>{changeAfter.licenceNo}</td>
|
<th>访问开始时间</th>
|
||||||
</tr>
|
<td>{changeBefore.visitStartTime}</td>
|
||||||
<tr>
|
<td>{changeAfter.visitStartTime}</td>
|
||||||
<th>车牌类型</th>
|
</tr>
|
||||||
<td>{changeBefore.licenceTypeName}</td>
|
<tr>
|
||||||
<td>{changeAfter.licenceTypeName}</td>
|
<th>访问结束时间</th>
|
||||||
</tr>
|
<td>{changeBefore.visitEndTime}</td>
|
||||||
<tr>
|
<td>{changeAfter.visitEndTime}</td>
|
||||||
<th>车辆类型</th>
|
</tr>
|
||||||
<td>{changeBefore.vehicleTypeName}</td>
|
<tr>
|
||||||
<td>{changeAfter.vehicleTypeName}</td>
|
<th>行驶证照片</th>
|
||||||
</tr>
|
<td><PreviewImg files={changeBefore.drivingLicenseFile} /></td>
|
||||||
<tr>
|
<td><PreviewImg files={changeAfter.drivingLicenseFile} /></td>
|
||||||
<th>访问港区范围</th>
|
</tr>
|
||||||
<td>{JSON.parse(changeBefore.gateLevelAuthArea)?.area?.map(item => item.value)?.join("、")}</td>
|
<tr>
|
||||||
<td>{JSON.parse(changeAfter.gateLevelAuthArea)?.area?.map(item => item.value)?.join("、")}</td>
|
<th>车辆照片</th>
|
||||||
</tr>
|
<td><PreviewImg files={changeBefore.attachmentFile} /></td>
|
||||||
<tr>
|
<td><PreviewImg files={changeAfter.attachmentFile} /></td>
|
||||||
<th>访问开始时间</th>
|
</tr>
|
||||||
<td>{changeBefore.visitStartTime}</td>
|
<tr>
|
||||||
<td>{changeAfter.visitStartTime}</td>
|
<th>审批人</th>
|
||||||
</tr>
|
<td>{changeBefore.auditUserName}</td>
|
||||||
<tr>
|
<td>{changeAfter.auditUserName}</td>
|
||||||
<th>访问结束时间</th>
|
</tr>
|
||||||
<td>{changeBefore.visitEndTime}</td>
|
</tbody>
|
||||||
<td>{changeAfter.visitEndTime}</td>
|
</table>
|
||||||
</tr>
|
</div>
|
||||||
<tr>
|
)
|
||||||
<th>行驶证照片</th>
|
}
|
||||||
<td><PreviewImg files={changeBefore.drivingLicenseFile} /></td>
|
<Divider orientation="left">审批信息</Divider>
|
||||||
<td><PreviewImg files={changeAfter.drivingLicenseFile} /></td>
|
{recordsList.map((record, index) => (
|
||||||
</tr>
|
<Descriptions
|
||||||
<tr>
|
key={index}
|
||||||
<th>车辆照片</th>
|
column={1}
|
||||||
<td><PreviewImg files={changeBefore.attachmentFile} /></td>
|
bordered
|
||||||
<td><PreviewImg files={changeAfter.attachmentFile} /></td>
|
styles={{ label: { width: 200 } }}
|
||||||
</tr>
|
items={[
|
||||||
<tr>
|
{ label: "审批人", children: record.auditUserName },
|
||||||
<th>审批人</th>
|
{ label: "审批时间", children: record.todo },
|
||||||
<td>{changeBefore.auditUserName}</td>
|
{ label: "审批状态", children: getLabelName({ list: VEHICLE_AUDIT_STATUS_ENUM, status: record.auditStatus }) },
|
||||||
<td>{changeAfter.auditUserName}</td>
|
...(record.auditStatus === 3 ? [{ label: "打回意见", children: record.remarks }] : []),
|
||||||
</tr>
|
|
||||||
</tbody>
|
|
||||||
</table>
|
|
||||||
</div>
|
|
||||||
)
|
|
||||||
}
|
|
||||||
<Divider orientation="left">审批信息</Divider>
|
|
||||||
{recordsList.map((record, index) => (
|
|
||||||
<Descriptions
|
|
||||||
key={index}
|
|
||||||
column={1}
|
|
||||||
bordered
|
|
||||||
styles={{ label: { width: 200 } }}
|
|
||||||
items={[
|
|
||||||
{ label: "审批人", children: record.auditUserName },
|
|
||||||
{ label: "审批时间", children: record.todo },
|
|
||||||
{ label: "审批状态", children: getLabelName({ list: VEHICLE_AUDIT_STATUS_ENUM, status: record.auditStatus }) },
|
|
||||||
...(record.auditStatus === 3 ? [{ label: "打回意见", children: record.remarks }] : []),
|
|
||||||
]}
|
|
||||||
/>
|
|
||||||
))}
|
|
||||||
<FormBuilder
|
|
||||||
form={form}
|
|
||||||
showActionButtons={false}
|
|
||||||
span={24}
|
|
||||||
onFinish={onSubmit}
|
|
||||||
labelCol={{ span: 8 }}
|
|
||||||
values={{
|
|
||||||
auditStatus: "2",
|
|
||||||
}}
|
|
||||||
options={[
|
|
||||||
{
|
|
||||||
name: "auditStatus",
|
|
||||||
label: "是否通过",
|
|
||||||
render: FORM_ITEM_RENDER_ENUM.RADIO,
|
|
||||||
items: VEHICLE_AUDIT_STATUS_ENUM,
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "remarks",
|
|
||||||
label: "打回意见",
|
|
||||||
render: FORM_ITEM_RENDER_ENUM.TEXTAREA,
|
|
||||||
dependencies: ["auditStatus"],
|
|
||||||
hidden: formValues => !(formValues.auditStatus === "3"),
|
|
||||||
},
|
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
</Spin>
|
))}
|
||||||
</Modal>
|
</div>
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
const ReviewModal = Connect([NS_VEHICLE_AUDIT], true)(ReviewModalComponent);
|
const ReviewModal = Connect([NS_VEHICLE_AUDIT], true)(ReviewModalComponent);
|
||||||
|
const InfoModal = Connect([NS_VEHICLE_AUDIT], true)(InfoModalComponent);
|
||||||
export default Connect([NS_VEHICLE_AUDIT], true)(ShareVehicles);
|
export default Connect([NS_VEHICLE_AUDIT], true)(ShareVehicles);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
import ShareVehiclesPage from "../ShareVehicles";
|
||||||
|
|
||||||
|
function ShareVehiclesRecords(props) {
|
||||||
|
return (<ShareVehiclesPage isRecords={true} {...props} />);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default ShareVehiclesRecords;
|
||||||
|
|
@ -45,15 +45,17 @@ function RelatedPersonnel(props) {
|
||||||
width: 150,
|
width: 150,
|
||||||
render: (_, record) => (
|
render: (_, record) => (
|
||||||
<Space>
|
<Space>
|
||||||
<Button
|
{!props.isRecords && (
|
||||||
type="link"
|
<Button
|
||||||
onClick={() => {
|
type="link"
|
||||||
setReviewModalVisible(true);
|
onClick={() => {
|
||||||
setCurrentId(record.id);
|
setReviewModalVisible(true);
|
||||||
}}
|
setCurrentId(record.id);
|
||||||
>
|
}}
|
||||||
审核
|
>
|
||||||
</Button>
|
审核
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
<Button
|
<Button
|
||||||
type="link"
|
type="link"
|
||||||
onClick={() => {
|
onClick={() => {
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,7 @@
|
||||||
|
import RelatedPersonnelPage from "../RelatedPersonnel";
|
||||||
|
|
||||||
|
function RelatedPersonnelRecords(props) {
|
||||||
|
return (<RelatedPersonnelPage isRecords={true} {...props} />);
|
||||||
|
}
|
||||||
|
|
||||||
|
export default RelatedPersonnelRecords;
|
||||||
|
|
@ -1,20 +1,46 @@
|
||||||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
import { Button, Form, message } from "antd";
|
import { Button, message } from "antd";
|
||||||
|
import { useEffect, useState } from "react";
|
||||||
import FormBuilder from "zy-react-library/components/FormBuilder";
|
import FormBuilder from "zy-react-library/components/FormBuilder";
|
||||||
import Page from "zy-react-library/components/Page";
|
import Page from "zy-react-library/components/Page";
|
||||||
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||||
import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj";
|
|
||||||
import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj";
|
|
||||||
import Upload from "zy-react-library/components/Upload";
|
import Upload from "zy-react-library/components/Upload";
|
||||||
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
|
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
|
||||||
|
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
|
||||||
|
import useUploadFile from "zy-react-library/hooks/useUploadFile";
|
||||||
import { ID_NUMBER, PHONE } from "zy-react-library/regular";
|
import { ID_NUMBER, PHONE } from "zy-react-library/regular";
|
||||||
import { NS_TEMPORARY_PERSONNEL } from "~/enumerate/namespace";
|
import { NS_APPROVER_USER, NS_TEMPORARY_PERSONNEL } from "~/enumerate/namespace";
|
||||||
|
|
||||||
function Add(props) {
|
function Add(props) {
|
||||||
const [form] = Form.useForm();
|
const [form] = FormBuilder.useForm();
|
||||||
|
const { loading: uploadFileLoading, uploadFile } = useUploadFile();
|
||||||
|
|
||||||
|
const [approvalUserListAll, setApprovalUserListAll] = useState([]);
|
||||||
|
|
||||||
|
const getApprovalUserListAll = async () => {
|
||||||
|
const { data } = await props["approvalUserListAll"]();
|
||||||
|
setApprovalUserListAll(data);
|
||||||
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
getApprovalUserListAll();
|
||||||
|
}, []);
|
||||||
|
|
||||||
const onSubmit = async (values) => {
|
const onSubmit = async (values) => {
|
||||||
const { success } = await props["temporaryPersonnelAdd"](values);
|
const { filePath: userFaceUrl } = await uploadFile({
|
||||||
|
files: values.userFace,
|
||||||
|
params: { type: UPLOAD_FILE_TYPE_ENUM[608] },
|
||||||
|
});
|
||||||
|
const { success } = await props["temporaryPersonnelAdd"]({
|
||||||
|
...values,
|
||||||
|
personBelongType: 4,
|
||||||
|
personApplyList: [
|
||||||
|
{ userFaceUrl },
|
||||||
|
{ employeePersonUserName: values.employeePersonUserName },
|
||||||
|
{ userPhone: values.userPhone },
|
||||||
|
{ userCard: values.userCard },
|
||||||
|
],
|
||||||
|
});
|
||||||
if (success) {
|
if (success) {
|
||||||
message.success("新增成功");
|
message.success("新增成功");
|
||||||
props.history.goBack();
|
props.history.goBack();
|
||||||
|
|
@ -26,19 +52,20 @@ function Add(props) {
|
||||||
<FormBuilder
|
<FormBuilder
|
||||||
form={form}
|
form={form}
|
||||||
onFinish={onSubmit}
|
onFinish={onSubmit}
|
||||||
loading={props.temporaryPersonnel.temporaryPersonnelLoading}
|
loading={props.temporaryPersonnel.temporaryPersonnelLoading || uploadFileLoading}
|
||||||
options={[
|
options={[
|
||||||
{ label: "申请信息", render: FORM_ITEM_RENDER_ENUM.DIVIDER },
|
{ label: "申请信息", render: FORM_ITEM_RENDER_ENUM.DIVIDER },
|
||||||
{ name: "todo1", label: "访问人姓名", span: 24 },
|
{ name: "employeePersonUserName", label: "访问人姓名", span: 24 },
|
||||||
{ name: "todo2", label: "手机号", rules: [{ pattern: PHONE, message: "请输入正确的手机号" }] },
|
{ name: "userPhone", label: "手机号", rules: [{ pattern: PHONE, message: "请输入正确的手机号" }] },
|
||||||
{ name: "todo3", label: "身份证号", rules: [{ pattern: ID_NUMBER, message: "请输入正确的身份证号" }] },
|
{ name: "userCard", label: "身份证号", rules: [{ pattern: ID_NUMBER, message: "请输入正确的身份证号" }] },
|
||||||
{ name: "todo4", label: "访问开始时间", render: FORM_ITEM_RENDER_ENUM.DATE },
|
{ name: "visitStartTime", label: "访问开始时间", render: FORM_ITEM_RENDER_ENUM.DATE },
|
||||||
{ name: "todo5", label: "访问结束时间", render: FORM_ITEM_RENDER_ENUM.DATE },
|
{ name: "visitEndTime", label: "访问结束时间", render: FORM_ITEM_RENDER_ENUM.DATE },
|
||||||
{ name: "todo6", label: "访问港区", render: <DictionarySelect dictValue="HG_AUTH_AREA" /> },
|
{ name: "gateLevelAuthArea", label: "访问港区", render: <DictionarySelect dictValue="HG_AUTH_AREA" /> },
|
||||||
{ name: "todo7", label: "访问口门名称" },
|
{ name: "mkmjId", label: "访问口门名称", render: FORM_ITEM_RENDER_ENUM.SELECT, items: [] }, // todo
|
||||||
{ name: "todo8", label: "来访事由", span: 24, render: FORM_ITEM_RENDER_ENUM.TEXTAREA },
|
{ name: "mkmjName", label: "访问口门名称", onlyForLabel: true },
|
||||||
|
{ name: "reasonVisit", label: "来访事由", span: 24, render: FORM_ITEM_RENDER_ENUM.TEXTAREA },
|
||||||
{
|
{
|
||||||
name: "todo9",
|
name: "userFace",
|
||||||
label: "人脸照片",
|
label: "人脸照片",
|
||||||
span: 24,
|
span: 24,
|
||||||
render: (
|
render: (
|
||||||
|
|
@ -59,18 +86,41 @@ function Add(props) {
|
||||||
},
|
},
|
||||||
{ label: "审批信息", render: FORM_ITEM_RENDER_ENUM.DIVIDER },
|
{ label: "审批信息", render: FORM_ITEM_RENDER_ENUM.DIVIDER },
|
||||||
{
|
{
|
||||||
name: "todo10",
|
name: "auditUserId",
|
||||||
label: "审批企业",
|
label: "审批人",
|
||||||
render: (<DepartmentSelectTree searchType="inType" params={{ enterpriseType: [1, 2] }} />),
|
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||||
|
items: approvalUserListAll,
|
||||||
|
itemsField: { labelKey: item => `${item.userName}(${item.corpName})(${item.deptName})`, valueKey: "userId" },
|
||||||
|
span: 24,
|
||||||
|
componentProps: {
|
||||||
|
onChange: (value) => {
|
||||||
|
const item = approvalUserListAll.find(item => item.userId === value);
|
||||||
|
form.setFieldValue("auditUserName", item.userName);
|
||||||
|
form.setFieldValue("auditCorpId", item.corpId);
|
||||||
|
form.setFieldValue("auditCorpName", item.corpName);
|
||||||
|
form.setFieldValue("auditDeptId", item.deptId);
|
||||||
|
form.setFieldValue("auditDeptName", item.deptName);
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{ name: "todo11", label: "审批人", render: (<PersonnelSelect params={{ departmentId: "" }} />) },
|
{ name: "auditUserName", label: "审批人名称", onlyForLabel: true },
|
||||||
|
{ name: "auditDeptId", label: "审批企业ID", onlyForLabel: true },
|
||||||
|
{ name: "auditDeptName", label: "审批企业名称", onlyForLabel: true },
|
||||||
|
{ name: "auditCorpId", label: "审批企业ID", onlyForLabel: true },
|
||||||
|
{ name: "auditCorpName", label: "审批企业名称", onlyForLabel: true },
|
||||||
{
|
{
|
||||||
name: "todo12",
|
name: "securityProtocol",
|
||||||
label: " ",
|
label: " ",
|
||||||
span: 24,
|
span: 24,
|
||||||
required: false,
|
required: false,
|
||||||
rules: [{ required: true, message: "请勾选" }],
|
rules: [{ required: true, message: "请勾选" }],
|
||||||
formItemProps: { colon: false, required: false, style: { textAlign: "center" }, labelCol: { span: 0 }, wrapperCol: { span: 24 } },
|
formItemProps: {
|
||||||
|
colon: false,
|
||||||
|
required: false,
|
||||||
|
style: { textAlign: "center" },
|
||||||
|
labelCol: { span: 0 },
|
||||||
|
wrapperCol: { span: 24 },
|
||||||
|
},
|
||||||
render: FORM_ITEM_RENDER_ENUM.CHECKBOX,
|
render: FORM_ITEM_RENDER_ENUM.CHECKBOX,
|
||||||
items: [{
|
items: [{
|
||||||
bianma: "1",
|
bianma: "1",
|
||||||
|
|
@ -88,4 +138,4 @@ function Add(props) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Connect([NS_TEMPORARY_PERSONNEL], true)(Add);
|
export default Connect([NS_TEMPORARY_PERSONNEL, NS_APPROVER_USER], true)(Add);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import { CameraOutlined } from "@ant-design/icons";
|
import { CameraOutlined } from "@ant-design/icons";
|
||||||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
import { Button, Descriptions, Divider, Form, message, Modal, QRCode, Space } from "antd";
|
import { Button, Descriptions, Divider, message, Modal, QRCode, Space, Spin } from "antd";
|
||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import FormBuilder from "zy-react-library/components/FormBuilder";
|
import FormBuilder from "zy-react-library/components/FormBuilder";
|
||||||
import AddIcon from "zy-react-library/components/Icon/AddIcon";
|
import AddIcon from "zy-react-library/components/Icon/AddIcon";
|
||||||
|
|
@ -9,14 +9,16 @@ import PreviewImg from "zy-react-library/components/PreviewImg";
|
||||||
import Search from "zy-react-library/components/Search";
|
import Search from "zy-react-library/components/Search";
|
||||||
import Table from "zy-react-library/components/Table";
|
import Table from "zy-react-library/components/Table";
|
||||||
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
|
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
|
||||||
|
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
|
||||||
|
import useGetFile from "zy-react-library/hooks/useGetFile";
|
||||||
import useTable from "zy-react-library/hooks/useTable";
|
import useTable from "zy-react-library/hooks/useTable";
|
||||||
import { getLabelName } from "zy-react-library/utils";
|
import { getLabelName } from "zy-react-library/utils";
|
||||||
import { NS_TEMPORARY_PERSONNEL } from "~/enumerate/namespace";
|
import { NS_TEMPORARY_PERSONNEL } from "~/enumerate/namespace";
|
||||||
|
|
||||||
const STATUS_ENUM = [
|
const STATUS_ENUM = [
|
||||||
{ bianma: "1", name: "通过" },
|
{ bianma: "1", name: "审核中" },
|
||||||
{ bianma: "2", name: "不通过" },
|
{ bianma: "2", name: "通过" },
|
||||||
{ bianma: "3", name: "审核中" },
|
{ bianma: "3", name: "不通过" },
|
||||||
];
|
];
|
||||||
|
|
||||||
function List(props) {
|
function List(props) {
|
||||||
|
|
@ -25,9 +27,10 @@ function List(props) {
|
||||||
const [approvalDetailsModalVisible, setApprovalDetailsModalVisible] = useState(false);
|
const [approvalDetailsModalVisible, setApprovalDetailsModalVisible] = useState(false);
|
||||||
const [currentId, setCurrentId] = useState("");
|
const [currentId, setCurrentId] = useState("");
|
||||||
|
|
||||||
const [form] = Form.useForm();
|
const [form] = Search.useForm();
|
||||||
const { tableProps, getData } = useTable(props["temporaryPersonnelList"], {
|
const { tableProps, getData } = useTable(props["temporaryPersonnelList"], {
|
||||||
form,
|
form,
|
||||||
|
params: { processOrRecord: !props.isRecords ? 1 : 2 },
|
||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
@ -39,45 +42,49 @@ function List(props) {
|
||||||
{ name: "todo1", label: "访问人姓名" },
|
{ name: "todo1", label: "访问人姓名" },
|
||||||
{ name: "todo2", label: "访问开始时间" },
|
{ name: "todo2", label: "访问开始时间" },
|
||||||
{ name: "todo3", label: "访问结束时间" },
|
{ name: "todo3", label: "访问结束时间" },
|
||||||
{ name: "todo4", label: "审批状态", render: FORM_ITEM_RENDER_ENUM.SELECT, items: STATUS_ENUM },
|
{ name: "auditFlag", label: "审批状态", render: FORM_ITEM_RENDER_ENUM.SELECT, items: STATUS_ENUM },
|
||||||
{ name: "todo5", label: "访问口门名称" },
|
{ name: "todo5", label: "访问口门名称", render: FORM_ITEM_RENDER_ENUM.SELECT, items: [] },
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
<Table
|
<Table
|
||||||
toolBarRender={() => (
|
toolBarRender={() => (
|
||||||
<Space>
|
<Space>
|
||||||
<Button
|
{!props.isRecords && (
|
||||||
type="primary"
|
<Button
|
||||||
icon={(<AddIcon />)}
|
type="primary"
|
||||||
onClick={() => {
|
icon={(<AddIcon />)}
|
||||||
props.history.push("./add");
|
onClick={() => {
|
||||||
}}
|
props.history.push("./add");
|
||||||
>
|
}}
|
||||||
新增
|
>
|
||||||
</Button>
|
新增
|
||||||
<Button
|
</Button>
|
||||||
type="primary"
|
)}
|
||||||
icon={(<CameraOutlined />)}
|
{!props.isRecords && (
|
||||||
onClick={() => {
|
<Button
|
||||||
setQrCodeModalVisible(true);
|
type="primary"
|
||||||
}}
|
icon={(<CameraOutlined />)}
|
||||||
>
|
onClick={() => {
|
||||||
访客二维码
|
setQrCodeModalVisible(true);
|
||||||
</Button>
|
}}
|
||||||
|
>
|
||||||
|
访客二维码
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
</Space>
|
</Space>
|
||||||
)}
|
)}
|
||||||
columns={[
|
columns={[
|
||||||
{ title: "访问人姓名", dataIndex: "todo1" },
|
{ title: "访问人姓名", dataIndex: "todo1" },
|
||||||
{ title: "手机号", dataIndex: "todo2" },
|
{ title: "手机号", dataIndex: "todo2" },
|
||||||
{ title: "身份证号", dataIndex: "todo3" },
|
{ title: "身份证号", dataIndex: "todo3" },
|
||||||
{ title: "来访事由", dataIndex: "todo4" },
|
{ title: "来访事由", dataIndex: "reasonVisit" },
|
||||||
{ title: "访问开始时间", dataIndex: "todo5" },
|
{ title: "访问开始时间", dataIndex: "visitStartTime" },
|
||||||
{ title: "访问结束时间", dataIndex: "todo6" },
|
{ title: "访问结束时间", dataIndex: "visitEndTime" },
|
||||||
{ title: "访问口门名称", dataIndex: "todo7" },
|
{ title: "访问口门名称", dataIndex: "mkmjName" },
|
||||||
{
|
{
|
||||||
title: "审批状态",
|
title: "审批状态",
|
||||||
dataIndex: "todo8",
|
dataIndex: "auditFlag",
|
||||||
render: (_, record) => getLabelName({ list: STATUS_ENUM, status: record.todo8 }),
|
render: (_, record) => getLabelName({ list: STATUS_ENUM, status: record.auditFlag }),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "操作",
|
title: "操作",
|
||||||
|
|
@ -101,15 +108,17 @@ function List(props) {
|
||||||
>
|
>
|
||||||
审批详情
|
审批详情
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
{(!props.isRecords && record.currentUserCanAudit === 1) && (
|
||||||
type="link"
|
<Button
|
||||||
onClick={() => {
|
type="link"
|
||||||
setReviewModalVisible(true);
|
onClick={() => {
|
||||||
setCurrentId(record.id);
|
setReviewModalVisible(true);
|
||||||
}}
|
setCurrentId(record.id);
|
||||||
>
|
}}
|
||||||
审核
|
>
|
||||||
</Button>
|
审核
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
</Space>
|
</Space>
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
|
|
@ -166,7 +175,7 @@ const QrCodeModal = (props) => {
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<div style={{ textAlign: "center" }}>
|
<div style={{ textAlign: "center" }}>
|
||||||
<QRCode value="-" style={{ margin: "0 auto", marginBottom: 10 }} />
|
<QRCode value="todo" style={{ margin: "0 auto", marginBottom: 10 }} />
|
||||||
<div>温馨提示:此二维码支持临时入港申请预约及预约结果查询</div>
|
<div>温馨提示:此二维码支持临时入港申请预约及预约结果查询</div>
|
||||||
</div>
|
</div>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
|
@ -174,12 +183,18 @@ const QrCodeModal = (props) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const ReviewModalComponent = (props) => {
|
const ReviewModalComponent = (props) => {
|
||||||
const [form] = Form.useForm();
|
const [form] = FormBuilder.useForm();
|
||||||
const [info, setInfo] = useState({});
|
const [info, setInfo] = useState({});
|
||||||
|
|
||||||
|
const { loading: getFileLoading, getFile } = useGetFile();
|
||||||
|
|
||||||
const getData = async () => {
|
const getData = async () => {
|
||||||
const { data } = await props["temporaryPersonnelInfo"]({ id: props.id });
|
const { data } = await props["temporaryPersonnelInfo"]({ id: props.id });
|
||||||
setInfo(data);
|
const informSignFile = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM[606], eqForeignKey: data.informSignId });
|
||||||
|
setInfo({
|
||||||
|
...data,
|
||||||
|
informSignFile,
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
@ -206,51 +221,54 @@ const ReviewModalComponent = (props) => {
|
||||||
maskClosable={false}
|
maskClosable={false}
|
||||||
onCancel={props.onCancel}
|
onCancel={props.onCancel}
|
||||||
onOk={form.submit}
|
onOk={form.submit}
|
||||||
confirmLoading={props.temporaryPersonnel.temporaryPersonnelLoading}
|
confirmLoading={props.temporaryPersonnel.temporaryPersonnelLoading || getFileLoading}
|
||||||
>
|
>
|
||||||
<Divider orientation="left">申请信息</Divider>
|
<Spin spinning={props.temporaryPersonnel.temporaryPersonnelLoading || getFileLoading}>
|
||||||
<Descriptions
|
<Divider orientation="left">申请信息</Divider>
|
||||||
column={1}
|
<Descriptions
|
||||||
bordered
|
column={1}
|
||||||
styles={{ label: { width: 200 } }}
|
bordered
|
||||||
items={[
|
styles={{ label: { width: 200 } }}
|
||||||
{ label: "访问人姓名", children: info.todo1 },
|
items={[
|
||||||
{ label: "手机号", children: info.todo2 },
|
{ label: "访问人姓名", children: info.personApplyList[0].employeePersonUserName },
|
||||||
{ label: "身份证号", children: info.todo3 },
|
{ label: "手机号", children: info.personApplyList[0].userPhone },
|
||||||
{ label: "访问开始时间", children: info.todo4 },
|
{ label: "身份证号", children: info.personApplyList[0].userCard },
|
||||||
{ label: "访问结束时间", children: info.todo5 },
|
{ label: "访问开始时间", children: info.visitStartTime },
|
||||||
{ label: "访问口门名称", children: info.todo6 },
|
{ label: "访问结束时间", children: info.visitEndTime },
|
||||||
{ label: "人脸照片", children: (<PreviewImg files={[info.todo7]} />) },
|
{ label: "访问港区", children: JSON.parse(info.gateLevelAuthArea)?.area?.map(item => item.value)?.join("、") },
|
||||||
{ label: "申请人安全告知签字", children: (<PreviewImg files={[info.todo8]} />) },
|
{ label: "访问口门名称", children: info.mkmjName },
|
||||||
]}
|
{ label: "来访事由", children: info.reasonVisit },
|
||||||
/>
|
{ label: "人脸照片", children: (<PreviewImg files={[info.personApplyList[0].userFaceUrl]} />) },
|
||||||
<Divider orientation="left">审批信息</Divider>
|
{ label: "申请人安全告知签字", children: (<PreviewImg files={info.informSignFile} />) },
|
||||||
<FormBuilder
|
]}
|
||||||
form={form}
|
/>
|
||||||
onFinish={onSubmit}
|
<Divider orientation="left">审批信息</Divider>
|
||||||
showActionButtons={false}
|
<FormBuilder
|
||||||
labelCol={{ span: 10 }}
|
form={form}
|
||||||
span={24}
|
onFinish={onSubmit}
|
||||||
values={{
|
showActionButtons={false}
|
||||||
todo1: "1",
|
labelCol={{ span: 10 }}
|
||||||
}}
|
span={24}
|
||||||
loading={props.temporaryPersonnel.temporaryPersonnelLoading}
|
values={{
|
||||||
options={[
|
auditFlag: "2",
|
||||||
{
|
}}
|
||||||
name: "todo1",
|
options={[
|
||||||
label: "是否通过",
|
{
|
||||||
render: FORM_ITEM_RENDER_ENUM.RADIO,
|
name: "auditFlag",
|
||||||
items: [{ bianma: "1", name: "通过" }, { bianma: "2", name: "不通过" }],
|
label: "是否通过",
|
||||||
},
|
render: FORM_ITEM_RENDER_ENUM.RADIO,
|
||||||
{
|
items: [{ bianma: "2", name: "通过" }, { bianma: "3", name: "不通过" }],
|
||||||
name: "todo2",
|
},
|
||||||
label: "不通过原因",
|
{
|
||||||
render: FORM_ITEM_RENDER_ENUM.TEXTAREA,
|
name: "reasonsRefusal",
|
||||||
dependencies: ["todo1"],
|
label: "不通过原因",
|
||||||
hidden: formValues => !(formValues.todo1 === "2"),
|
render: FORM_ITEM_RENDER_ENUM.TEXTAREA,
|
||||||
},
|
dependencies: ["auditFlag"],
|
||||||
]}
|
hidden: formValues => !(formValues.auditFlag === "3"),
|
||||||
/>
|
},
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
</Spin>
|
||||||
</Modal>
|
</Modal>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
@ -259,6 +277,7 @@ const ApprovalDetailsModalComponent = (props) => {
|
||||||
const [list, setList] = useState([]);
|
const [list, setList] = useState([]);
|
||||||
|
|
||||||
const getData = async () => {
|
const getData = async () => {
|
||||||
|
// TODO
|
||||||
const { data } = await props["temporaryPersonnelReviewList"]({ id: props.id });
|
const { data } = await props["temporaryPersonnelReviewList"]({ id: props.id });
|
||||||
setList(data);
|
setList(data);
|
||||||
};
|
};
|
||||||
|
|
|
||||||
|
|
@ -3,17 +3,24 @@ import { Descriptions, Divider, Spin } from "antd";
|
||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import Page from "zy-react-library/components/Page";
|
import Page from "zy-react-library/components/Page";
|
||||||
import PreviewImg from "zy-react-library/components/PreviewImg";
|
import PreviewImg from "zy-react-library/components/PreviewImg";
|
||||||
|
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
|
||||||
|
import useGetFile from "zy-react-library/hooks/useGetFile";
|
||||||
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
|
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
|
||||||
import { NS_TEMPORARY_PERSONNEL } from "~/enumerate/namespace";
|
import { NS_TEMPORARY_PERSONNEL } from "~/enumerate/namespace";
|
||||||
|
|
||||||
function View(props) {
|
function View(props) {
|
||||||
const query = useGetUrlQuery();
|
const query = useGetUrlQuery();
|
||||||
|
const { loading: getFileLoading, getFile } = useGetFile();
|
||||||
|
|
||||||
const { info, setInfo } = useState({});
|
const { info, setInfo } = useState({});
|
||||||
|
|
||||||
const getData = async () => {
|
const getData = async () => {
|
||||||
const { data } = await props["temporaryPersonnelInfo"]({ id: query.id });
|
const { data } = await props["temporaryPersonnelInfo"]({ id: query.id });
|
||||||
setInfo(data);
|
const informSignFile = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM[606], eqForeignKey: data.informSignId });
|
||||||
|
setInfo({
|
||||||
|
...data,
|
||||||
|
informSignFile,
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
@ -22,22 +29,23 @@ function View(props) {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Page headerTitle="查看" contentPadding="0 20px 20px 20px">
|
<Page headerTitle="查看" contentPadding="0 20px 20px 20px">
|
||||||
<Spin spinning={props.temporaryPersonnel.temporaryPersonnelLoading}>
|
<Spin spinning={props.temporaryPersonnel.temporaryPersonnelLoading || getFileLoading}>
|
||||||
<Divider orientation="left">申请信息</Divider>
|
<Divider orientation="left">申请信息</Divider>
|
||||||
<Descriptions
|
<Descriptions
|
||||||
column={2}
|
column={2}
|
||||||
bordered
|
bordered
|
||||||
styles={{ label: { width: 200 } }}
|
styles={{ label: { width: 200 } }}
|
||||||
items={[
|
items={[
|
||||||
{ label: "访问人姓名", children: info.todo1, span: 2 },
|
{ label: "访问人姓名", children: info.personApplyList[0].employeePersonUserName, span: 2 },
|
||||||
{ label: "手机号", children: info.todo2 },
|
{ label: "手机号", children: info.personApplyList[0].userPhone },
|
||||||
{ label: "身份证号", children: info.todo3 },
|
{ label: "身份证号", children: info.personApplyList[0].userCard },
|
||||||
{ label: "访问开始时间", children: info.todo4 },
|
{ label: "访问开始时间", children: info.visitStartTime },
|
||||||
{ label: "访问结束时间", children: info.todo5 },
|
{ label: "访问结束时间", children: info.visitEndTime },
|
||||||
{ label: "访问港区", children: info.todo6 },
|
{ label: "访问港区", children: JSON.parse(info.gateLevelAuthArea)?.area?.map(item => item.value)?.join("、") },
|
||||||
{ label: "访问口门名称", children: info.todo7 },
|
{ label: "访问口门名称", children: info.mkmjName },
|
||||||
{ label: "来访事由", children: info.todo8, span: 2 },
|
{ label: "来访事由", children: info.reasonVisit, span: 2 },
|
||||||
{ label: "人脸照片", children: (<PreviewImg files={[info.todo9]} />), span: 2 },
|
{ label: "人脸照片", children: (<PreviewImg files={[info.personApplyList[0].userFaceUrl]} />), span: 2 },
|
||||||
|
{ label: "申请人安全告知签字", children: (<PreviewImg files={info.informSignFile} />) },
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
<Divider orientation="left">审批信息</Divider>
|
<Divider orientation="left">审批信息</Divider>
|
||||||
|
|
@ -46,8 +54,9 @@ function View(props) {
|
||||||
bordered
|
bordered
|
||||||
styles={{ label: { width: 200 } }}
|
styles={{ label: { width: 200 } }}
|
||||||
items={[
|
items={[
|
||||||
{ label: "审批企业", children: info.todo10 },
|
{ label: "审批企业", children: info.auditCorpName },
|
||||||
{ label: "审批人", children: info.todo11 },
|
{ label: "审批部门", children: info.auditDeptName },
|
||||||
|
{ label: "审批人", children: info.auditUserName },
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
</Spin>
|
</Spin>
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
import ListPage from "../../TemporaryPersonnel/List";
|
||||||
|
|
||||||
|
function List(props) {
|
||||||
|
return (<ListPage isRecords={true} {...props} />);
|
||||||
|
}
|
||||||
|
export default List;
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
import ViewPage from "../../TemporaryPersonnel/View";
|
||||||
|
|
||||||
|
function View(props) {
|
||||||
|
return (<ViewPage {...props} />);
|
||||||
|
}
|
||||||
|
export default View;
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
function TemporaryPersonnelRecords(props) {
|
||||||
|
return props.children;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default TemporaryPersonnelRecords;
|
||||||
|
|
@ -1,20 +1,47 @@
|
||||||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
import { Button, Form, message } from "antd";
|
import { Button, message } from "antd";
|
||||||
|
import { useEffect, useState } from "react";
|
||||||
import FormBuilder from "zy-react-library/components/FormBuilder";
|
import FormBuilder from "zy-react-library/components/FormBuilder";
|
||||||
import Page from "zy-react-library/components/Page";
|
import Page from "zy-react-library/components/Page";
|
||||||
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
import DictionarySelect from "zy-react-library/components/Select/Dictionary";
|
||||||
import PersonnelSelect from "zy-react-library/components/Select/Personnel/Gwj";
|
|
||||||
import DepartmentSelectTree from "zy-react-library/components/SelectTree/Department/Gwj";
|
|
||||||
import Upload from "zy-react-library/components/Upload";
|
import Upload from "zy-react-library/components/Upload";
|
||||||
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
|
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
|
||||||
|
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
|
||||||
|
import useUploadFile from "zy-react-library/hooks/useUploadFile";
|
||||||
import { ID_NUMBER, LICENSE_PLATE_NUMBER, PHONE } from "zy-react-library/regular";
|
import { ID_NUMBER, LICENSE_PLATE_NUMBER, PHONE } from "zy-react-library/regular";
|
||||||
import { NS_TEMPORARY_VEHICLE } from "~/enumerate/namespace";
|
import { NS_APPROVER_USER, NS_TEMPORARY_VEHICLE } from "~/enumerate/namespace";
|
||||||
|
|
||||||
function Add(props) {
|
function Add(props) {
|
||||||
const [form] = Form.useForm();
|
const [form] = FormBuilder.useForm();
|
||||||
|
const { loading: uploadFileLoading, uploadFile } = useUploadFile();
|
||||||
|
|
||||||
|
const [approvalUserListAll, setApprovalUserListAll] = useState([]);
|
||||||
|
|
||||||
|
const getApprovalUserListAll = async () => {
|
||||||
|
const { data } = await props["approvalUserListAll"]();
|
||||||
|
setApprovalUserListAll(data);
|
||||||
|
};
|
||||||
|
|
||||||
|
useEffect(() => {
|
||||||
|
getApprovalUserListAll();
|
||||||
|
}, []);
|
||||||
|
|
||||||
const onSubmit = async (values) => {
|
const onSubmit = async (values) => {
|
||||||
const { success } = await props["temporaryVehicleAdd"](values);
|
const { id: drivingLicenseId } = await uploadFile({
|
||||||
|
single: false,
|
||||||
|
files: values.drivingLicenseFile,
|
||||||
|
params: { type: UPLOAD_FILE_TYPE_ENUM[601] },
|
||||||
|
});
|
||||||
|
const { id: attachmentId } = await uploadFile({
|
||||||
|
single: false,
|
||||||
|
files: values.attachmentFile,
|
||||||
|
params: { type: UPLOAD_FILE_TYPE_ENUM[602] },
|
||||||
|
});
|
||||||
|
const { success } = await props["temporaryVehicleAdd"]({
|
||||||
|
...values,
|
||||||
|
drivingLicenseId,
|
||||||
|
attachmentId,
|
||||||
|
});
|
||||||
if (success) {
|
if (success) {
|
||||||
message.success("新增成功");
|
message.success("新增成功");
|
||||||
props.history.goBack();
|
props.history.goBack();
|
||||||
|
|
@ -26,22 +53,43 @@ function Add(props) {
|
||||||
<FormBuilder
|
<FormBuilder
|
||||||
form={form}
|
form={form}
|
||||||
onFinish={onSubmit}
|
onFinish={onSubmit}
|
||||||
loading={props.temporaryVehicle.temporaryVehicleLoading}
|
loading={props.temporaryVehicle.temporaryVehicleLoading || uploadFileLoading}
|
||||||
options={[
|
options={[
|
||||||
{ label: "申请信息", render: FORM_ITEM_RENDER_ENUM.DIVIDER },
|
{ label: "申请信息", render: FORM_ITEM_RENDER_ENUM.DIVIDER },
|
||||||
{ name: "todo1", label: "访问人姓名" },
|
{ name: "employeeVehicleUserName", label: "访问人姓名" },
|
||||||
{ name: "todo2", label: "手机号", rules: [{ pattern: PHONE, message: "请输入正确的手机号" }] },
|
{ name: "todo2", label: "手机号", rules: [{ pattern: PHONE, message: "请输入正确的手机号" }] },
|
||||||
{ name: "todo3", label: "身份证号", rules: [{ pattern: ID_NUMBER, message: "请输入正确的身份证号" }] },
|
{ name: "todo3", label: "身份证号", rules: [{ pattern: ID_NUMBER, message: "请输入正确的身份证号" }] },
|
||||||
{ name: "todo4", label: "车牌号", rules: [{ pattern: LICENSE_PLATE_NUMBER, message: "请输入正确的车牌号" }] },
|
{ name: "licenceNo", label: "车牌号", rules: [{ pattern: LICENSE_PLATE_NUMBER, message: "请输入正确的车牌号" }] },
|
||||||
{ name: "todo5", label: "车牌类型", render: (<DictionarySelect dictValue="LICENSE_PLATE_TYPE" />) },
|
|
||||||
{ name: "todo6", label: "车辆类型", render: (<DictionarySelect dictValue="VEHICLE_TYPE" />) },
|
|
||||||
{ name: "todo7", label: "访问开始时间", render: FORM_ITEM_RENDER_ENUM.DATE },
|
|
||||||
{ name: "todo8", label: "访问结束时间", render: FORM_ITEM_RENDER_ENUM.DATE },
|
|
||||||
{ name: "todo9", label: "访问港区", render: <DictionarySelect dictValue="HG_AUTH_AREA" /> },
|
|
||||||
{ name: "todo10", label: "访问口门名称" },
|
|
||||||
{ name: "todo11", label: "来访事由", span: 24, render: FORM_ITEM_RENDER_ENUM.TEXTAREA },
|
|
||||||
{
|
{
|
||||||
name: "todo12",
|
name: "licenceType",
|
||||||
|
label: "车牌类型",
|
||||||
|
render: (
|
||||||
|
<DictionarySelect
|
||||||
|
dictValue="LICENSE_PLATE_TYPE"
|
||||||
|
onGetLabel={label => form.setFieldValue("licenceTypeName", label)}
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{ name: "licenceTypeName", label: "车牌类型名称", onlyForLabel: true },
|
||||||
|
{
|
||||||
|
name: "vehicleType",
|
||||||
|
label: "车辆类型",
|
||||||
|
render: (
|
||||||
|
<DictionarySelect
|
||||||
|
dictValue="VEHICLE_TYPE"
|
||||||
|
onGetLabel={label => form.setFieldValue("vehicleTypeName", label)}
|
||||||
|
/>
|
||||||
|
),
|
||||||
|
},
|
||||||
|
{ name: "vehicleTypeName", label: "车辆类型", onlyForLabel: true },
|
||||||
|
{ name: "visitStartTime", label: "访问开始时间", render: FORM_ITEM_RENDER_ENUM.DATE },
|
||||||
|
{ name: "visitEndTime", label: "访问结束时间", render: FORM_ITEM_RENDER_ENUM.DATE },
|
||||||
|
{ name: "gateLevelAuthArea", label: "访问港区", render: <DictionarySelect dictValue="HG_AUTH_AREA" /> },
|
||||||
|
{ name: "mkmjId", label: "访问口门名称", render: FORM_ITEM_RENDER_ENUM.SELECT, items: [] }, // todo
|
||||||
|
{ name: "mkmjName", label: "访问口门名称", onlyForLabel: true },
|
||||||
|
{ name: "reasonVisit", label: "来访事由", span: 24, render: FORM_ITEM_RENDER_ENUM.TEXTAREA },
|
||||||
|
{
|
||||||
|
name: "drivingLicenseFile",
|
||||||
label: "行驶证照片",
|
label: "行驶证照片",
|
||||||
span: 24,
|
span: 24,
|
||||||
render: (
|
render: (
|
||||||
|
|
@ -59,7 +107,7 @@ function Add(props) {
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "todo13",
|
name: "attachmentFile",
|
||||||
label: "车辆图片",
|
label: "车辆图片",
|
||||||
span: 24,
|
span: 24,
|
||||||
render: (
|
render: (
|
||||||
|
|
@ -79,13 +127,30 @@ function Add(props) {
|
||||||
},
|
},
|
||||||
{ label: "审批信息", render: FORM_ITEM_RENDER_ENUM.DIVIDER },
|
{ label: "审批信息", render: FORM_ITEM_RENDER_ENUM.DIVIDER },
|
||||||
{
|
{
|
||||||
name: "todo14",
|
name: "auditUserId",
|
||||||
label: "审批企业",
|
label: "审批人",
|
||||||
render: (<DepartmentSelectTree searchType="inType" params={{ enterpriseType: [1, 2] }} />),
|
render: FORM_ITEM_RENDER_ENUM.SELECT,
|
||||||
|
items: approvalUserListAll,
|
||||||
|
itemsField: { labelKey: item => `${item.userName}(${item.corpName})(${item.deptName})`, valueKey: "userId" },
|
||||||
|
span: 24,
|
||||||
|
componentProps: {
|
||||||
|
onChange: (value) => {
|
||||||
|
const item = approvalUserListAll.find(item => item.userId === value);
|
||||||
|
form.setFieldValue("auditUserName", item.userName);
|
||||||
|
form.setFieldValue("auditCorpId", item.corpId);
|
||||||
|
form.setFieldValue("auditCorpName", item.corpName);
|
||||||
|
form.setFieldValue("auditDeptId", item.deptId);
|
||||||
|
form.setFieldValue("auditDeptName", item.deptName);
|
||||||
|
},
|
||||||
|
},
|
||||||
},
|
},
|
||||||
{ name: "todo15", label: "审批人", render: (<PersonnelSelect params={{ departmentId: "" }} />) },
|
{ name: "auditUserName", label: "审批人名称", onlyForLabel: true },
|
||||||
|
{ name: "auditDeptId", label: "审批企业ID", onlyForLabel: true },
|
||||||
|
{ name: "auditDeptName", label: "审批企业名称", onlyForLabel: true },
|
||||||
|
{ name: "auditCorpId", label: "审批企业ID", onlyForLabel: true },
|
||||||
|
{ name: "auditCorpName", label: "审批企业名称", onlyForLabel: true },
|
||||||
{
|
{
|
||||||
name: "todo16",
|
name: "securityProtocol",
|
||||||
label: " ",
|
label: " ",
|
||||||
span: 24,
|
span: 24,
|
||||||
required: false,
|
required: false,
|
||||||
|
|
@ -108,4 +173,4 @@ function Add(props) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Connect([NS_TEMPORARY_VEHICLE], true)(Add);
|
export default Connect([NS_TEMPORARY_VEHICLE, NS_APPROVER_USER], true)(Add);
|
||||||
|
|
|
||||||
|
|
@ -1,6 +1,6 @@
|
||||||
import { CameraOutlined } from "@ant-design/icons";
|
import { CameraOutlined } from "@ant-design/icons";
|
||||||
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
import { Connect } from "@cqsjjb/jjb-dva-runtime";
|
||||||
import { Button, Descriptions, Divider, Form, message, Modal, QRCode, Space } from "antd";
|
import { Button, Descriptions, Divider, message, Modal, QRCode, Space, Spin } from "antd";
|
||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import FormBuilder from "zy-react-library/components/FormBuilder";
|
import FormBuilder from "zy-react-library/components/FormBuilder";
|
||||||
import AddIcon from "zy-react-library/components/Icon/AddIcon";
|
import AddIcon from "zy-react-library/components/Icon/AddIcon";
|
||||||
|
|
@ -9,14 +9,16 @@ import PreviewImg from "zy-react-library/components/PreviewImg";
|
||||||
import Search from "zy-react-library/components/Search";
|
import Search from "zy-react-library/components/Search";
|
||||||
import Table from "zy-react-library/components/Table";
|
import Table from "zy-react-library/components/Table";
|
||||||
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
|
import { FORM_ITEM_RENDER_ENUM } from "zy-react-library/enum/formItemRender";
|
||||||
|
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
|
||||||
|
import useGetFile from "zy-react-library/hooks/useGetFile";
|
||||||
import useTable from "zy-react-library/hooks/useTable";
|
import useTable from "zy-react-library/hooks/useTable";
|
||||||
import { getLabelName } from "zy-react-library/utils";
|
import { getLabelName } from "zy-react-library/utils";
|
||||||
import { NS_TEMPORARY_VEHICLE } from "~/enumerate/namespace";
|
import { NS_TEMPORARY_VEHICLE, NS_VEHICLE_AUDIT } from "~/enumerate/namespace";
|
||||||
|
|
||||||
const STATUS_ENUM = [
|
const STATUS_ENUM = [
|
||||||
{ bianma: "1", name: "通过" },
|
{ bianma: "1", name: "审核中" },
|
||||||
{ bianma: "2", name: "不通过" },
|
{ bianma: "2", name: "通过" },
|
||||||
{ bianma: "3", name: "审核中" },
|
{ bianma: "3", name: "不通过" },
|
||||||
];
|
];
|
||||||
|
|
||||||
function List(props) {
|
function List(props) {
|
||||||
|
|
@ -25,9 +27,10 @@ function List(props) {
|
||||||
const [approvalDetailsModalVisible, setApprovalDetailsModalVisible] = useState(false);
|
const [approvalDetailsModalVisible, setApprovalDetailsModalVisible] = useState(false);
|
||||||
const [currentId, setCurrentId] = useState("");
|
const [currentId, setCurrentId] = useState("");
|
||||||
|
|
||||||
const [form] = Form.useForm();
|
const [form] = Search.useForm();
|
||||||
const { tableProps, getData } = useTable(props["temporaryVehicleList"], {
|
const { tableProps, getData } = useTable(props["vehicleAuditList"], {
|
||||||
form,
|
form,
|
||||||
|
params: { vehicleBelongTypeArr: "6", processOrRecord: !props.isRecords ? 1 : 2 },
|
||||||
});
|
});
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|
@ -36,52 +39,56 @@ function List(props) {
|
||||||
form={form}
|
form={form}
|
||||||
onFinish={getData}
|
onFinish={getData}
|
||||||
options={[
|
options={[
|
||||||
{ name: "todo1", label: "访问人姓名" },
|
{ name: "employeeVehicleUserName", label: "访问人姓名" },
|
||||||
{ name: "todo2", label: "车牌号" },
|
{ name: "licenceNo", label: "车牌号" },
|
||||||
{ name: "todo3", label: "访问开始时间" },
|
{ name: "visitStartTime", label: "访问开始时间" },
|
||||||
{ name: "todo4", label: "访问结束时间" },
|
{ name: "visitEndTime", label: "访问结束时间" },
|
||||||
{ name: "todo5", label: "审批状态", render: FORM_ITEM_RENDER_ENUM.SELECT, items: STATUS_ENUM },
|
{ name: "auditStatus", label: "审批状态", render: FORM_ITEM_RENDER_ENUM.SELECT, items: STATUS_ENUM },
|
||||||
{ name: "todo6", label: "访问口门名称" },
|
{ name: "todo6", label: "访问口门名称" },
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
<Table
|
<Table
|
||||||
toolBarRender={() => (
|
toolBarRender={() => (
|
||||||
<Space>
|
<Space>
|
||||||
<Button
|
{!props.isRecords && (
|
||||||
type="primary"
|
<Button
|
||||||
icon={(<AddIcon />)}
|
type="primary"
|
||||||
onClick={() => {
|
icon={(<AddIcon />)}
|
||||||
props.history.push("./add");
|
onClick={() => {
|
||||||
}}
|
props.history.push("./add");
|
||||||
>
|
}}
|
||||||
新增
|
>
|
||||||
</Button>
|
新增
|
||||||
<Button
|
</Button>
|
||||||
type="primary"
|
)}
|
||||||
icon={(<CameraOutlined />)}
|
{!props.isRecords && (
|
||||||
onClick={() => {
|
<Button
|
||||||
setQrCodeModalVisible(true);
|
type="primary"
|
||||||
}}
|
icon={(<CameraOutlined />)}
|
||||||
>
|
onClick={() => {
|
||||||
访客二维码
|
setQrCodeModalVisible(true);
|
||||||
</Button>
|
}}
|
||||||
|
>
|
||||||
|
访客二维码
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
</Space>
|
</Space>
|
||||||
)}
|
)}
|
||||||
columns={[
|
columns={[
|
||||||
{ title: "访问人姓名", dataIndex: "todo1" },
|
{ title: "访问人姓名", dataIndex: "employeeVehicleUserName" },
|
||||||
{ title: "手机号", dataIndex: "todo2" },
|
{ title: "手机号", dataIndex: "todo2" },
|
||||||
{ title: "身份证号", dataIndex: "todo3" },
|
{ title: "身份证号", dataIndex: "todo3" },
|
||||||
{ title: "车牌号", dataIndex: "todo4" },
|
{ title: "车牌号", dataIndex: "licenceNo" },
|
||||||
{ title: "车牌类型", dataIndex: "todo5" },
|
{ title: "车牌类型", dataIndex: "licenceTypeName" },
|
||||||
{ title: "车辆类型", dataIndex: "todo6" },
|
{ title: "车辆类型", dataIndex: "vehicleTypeName" },
|
||||||
{ title: "来访事由", dataIndex: "todo7" },
|
{ title: "来访事由", dataIndex: "todo7" },
|
||||||
{ title: "访问起始时间", dataIndex: "todo8" },
|
{ title: "访问起始时间", dataIndex: "visitStartTime" },
|
||||||
{ title: "访问结束时间", dataIndex: "todo9" },
|
{ title: "访问结束时间", dataIndex: "visitEndTime" },
|
||||||
{ title: "访问口门名称", dataIndex: "todo10" },
|
{ title: "访问口门名称", dataIndex: "todo10" },
|
||||||
{
|
{
|
||||||
title: "审批状态",
|
title: "审批状态",
|
||||||
dataIndex: "todo11",
|
dataIndex: "auditStatus",
|
||||||
render: (_, record) => getLabelName({ list: STATUS_ENUM, status: record.todo11 }),
|
render: (_, record) => getLabelName({ list: STATUS_ENUM, status: record.auditStatus }),
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
title: "操作",
|
title: "操作",
|
||||||
|
|
@ -105,15 +112,17 @@ function List(props) {
|
||||||
>
|
>
|
||||||
审批详情
|
审批详情
|
||||||
</Button>
|
</Button>
|
||||||
<Button
|
{(!props.isRecords && record.currentUserCanAudit === 1) && (
|
||||||
type="link"
|
<Button
|
||||||
onClick={() => {
|
type="link"
|
||||||
setReviewModalVisible(true);
|
onClick={() => {
|
||||||
setCurrentId(record.id);
|
setReviewModalVisible(true);
|
||||||
}}
|
setCurrentId(record.id);
|
||||||
>
|
}}
|
||||||
审核
|
>
|
||||||
</Button>
|
审核
|
||||||
|
</Button>
|
||||||
|
)}
|
||||||
</Space>
|
</Space>
|
||||||
),
|
),
|
||||||
},
|
},
|
||||||
|
|
@ -170,7 +179,7 @@ const QrCodeModal = (props) => {
|
||||||
]}
|
]}
|
||||||
>
|
>
|
||||||
<div style={{ textAlign: "center" }}>
|
<div style={{ textAlign: "center" }}>
|
||||||
<QRCode value="-" style={{ margin: "0 auto", marginBottom: 10 }} />
|
<QRCode value="todo" style={{ margin: "0 auto", marginBottom: 10 }} />
|
||||||
<div>温馨提示:此二维码支持临时入港申请预约及预约结果查询</div>
|
<div>温馨提示:此二维码支持临时入港申请预约及预约结果查询</div>
|
||||||
</div>
|
</div>
|
||||||
</Modal>
|
</Modal>
|
||||||
|
|
@ -178,12 +187,25 @@ const QrCodeModal = (props) => {
|
||||||
};
|
};
|
||||||
|
|
||||||
const ReviewModalComponent = (props) => {
|
const ReviewModalComponent = (props) => {
|
||||||
const [form] = Form.useForm();
|
const [form] = FormBuilder.useForm();
|
||||||
|
const { loading: getFileLoading, getFile } = useGetFile();
|
||||||
|
|
||||||
const [info, setInfo] = useState({});
|
const [info, setInfo] = useState({});
|
||||||
|
|
||||||
const getData = async () => {
|
const getData = async () => {
|
||||||
const { data } = await props["temporaryVehicleInfo"]({ id: props.id });
|
const { data } = await props["vehicleApplyInfo"]({ id: props.id });
|
||||||
setInfo(data);
|
const drivingLicenseFile = await getFile({
|
||||||
|
eqType: UPLOAD_FILE_TYPE_ENUM[601],
|
||||||
|
eqForeignKey: data.drivingLicenseId,
|
||||||
|
});
|
||||||
|
const attachmentFile = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM[602], eqForeignKey: data.attachmentId });
|
||||||
|
const informSignFile = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM[606], eqForeignKey: data.informSignId });
|
||||||
|
setInfo({
|
||||||
|
...data,
|
||||||
|
drivingLicenseFile,
|
||||||
|
attachmentFile,
|
||||||
|
informSignFile,
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
@ -191,7 +213,7 @@ const ReviewModalComponent = (props) => {
|
||||||
}, []);
|
}, []);
|
||||||
|
|
||||||
const onSubmit = async (values) => {
|
const onSubmit = async (values) => {
|
||||||
const { success } = await props["temporaryVehicleReview"]({
|
const { success } = await props["vehicleAuditApproval"]({
|
||||||
...values,
|
...values,
|
||||||
id: props.id,
|
id: props.id,
|
||||||
});
|
});
|
||||||
|
|
@ -210,55 +232,58 @@ const ReviewModalComponent = (props) => {
|
||||||
maskClosable={false}
|
maskClosable={false}
|
||||||
onCancel={props.onCancel}
|
onCancel={props.onCancel}
|
||||||
onOk={form.submit}
|
onOk={form.submit}
|
||||||
confirmLoading={props.temporaryVehicle.temporaryVehicleLoading}
|
confirmLoading={props.vehicleAudit.vehicleAuditLoading || getFileLoading}
|
||||||
>
|
>
|
||||||
<Divider orientation="left">申请信息</Divider>
|
<Spin spinning={props.vehicleAudit.vehicleAuditLoading || getFileLoading}>
|
||||||
<Descriptions
|
<Divider orientation="left">申请信息</Divider>
|
||||||
column={1}
|
<Descriptions
|
||||||
bordered
|
column={1}
|
||||||
styles={{ label: { width: 200 } }}
|
bordered
|
||||||
items={[
|
styles={{ label: { width: 200 } }}
|
||||||
{ label: "访问人姓名", children: info.todo1 },
|
items={[
|
||||||
{ label: "手机号", children: info.todo2 },
|
{ label: "访问人姓名", children: info.employeeVehicleUserName },
|
||||||
{ label: "身份证号", children: info.todo3 },
|
{ label: "手机号", children: info.todo2 },
|
||||||
{ label: "车牌号", children: info.todo4 },
|
{ label: "身份证号", children: info.todo3 },
|
||||||
{ label: "车牌类型", children: info.todo5 },
|
{ label: "车牌号", children: info.licenceNo },
|
||||||
{ label: "车辆类型", children: info.todo6 },
|
{ label: "车牌类型", children: info.licenceTypeName },
|
||||||
{ label: "访问开始时间", children: info.todo7 },
|
{ label: "车辆类型", children: info.vehicleTypeName },
|
||||||
{ label: "访问结束时间", children: info.todo8 },
|
{ label: "访问开始时间", children: info.visitStartTime },
|
||||||
{ label: "访问口门名称", children: info.todo9 },
|
{ label: "访问结束时间", children: info.visitEndTime },
|
||||||
{ label: "行驶证照片", children: (<PreviewImg files={[info.todo10]} />) },
|
{ label: "访问港区", children: JSON.parse(info.gateLevelAuthArea)?.area?.map(item => item.value)?.join("、") },
|
||||||
{ label: "车辆照片", children: (<PreviewImg files={[info.todo11]} />) },
|
{ label: "访问口门名称", children: info.mkmjName },
|
||||||
{ label: "申请人安全告知签字", children: (<PreviewImg files={[info.todo12]} />) },
|
{ label: "来访事由", children: info.reasonVisit },
|
||||||
]}
|
{ label: "行驶证照片", children: (<PreviewImg files={info.drivingLicenseFile} />) },
|
||||||
/>
|
{ label: "车辆照片", children: (<PreviewImg files={info.attachmentFile} />) },
|
||||||
<Divider orientation="left">审批信息</Divider>
|
{ label: "申请人安全告知签字", children: (<PreviewImg files={info.informSignFile} />) },
|
||||||
<FormBuilder
|
]}
|
||||||
form={form}
|
/>
|
||||||
onFinish={onSubmit}
|
<Divider orientation="left">审批信息</Divider>
|
||||||
showActionButtons={false}
|
<FormBuilder
|
||||||
labelCol={{ span: 10 }}
|
form={form}
|
||||||
span={24}
|
onFinish={onSubmit}
|
||||||
values={{
|
showActionButtons={false}
|
||||||
todo1: "1",
|
labelCol={{ span: 10 }}
|
||||||
}}
|
span={24}
|
||||||
loading={props.temporaryVehicle.temporaryVehicleLoading}
|
values={{
|
||||||
options={[
|
auditStatus: "2",
|
||||||
{
|
}}
|
||||||
name: "todo1",
|
options={[
|
||||||
label: "是否通过",
|
{
|
||||||
render: FORM_ITEM_RENDER_ENUM.RADIO,
|
name: "auditStatus",
|
||||||
items: [{ bianma: "1", name: "通过" }, { bianma: "2", name: "不通过" }],
|
label: "是否通过",
|
||||||
},
|
render: FORM_ITEM_RENDER_ENUM.RADIO,
|
||||||
{
|
items: [{ bianma: "2", name: "通过" }, { bianma: "3", name: "不通过" }],
|
||||||
name: "todo2",
|
},
|
||||||
label: "不通过原因",
|
{
|
||||||
render: FORM_ITEM_RENDER_ENUM.TEXTAREA,
|
name: "remarks",
|
||||||
dependencies: ["todo1"],
|
label: "不通过原因",
|
||||||
hidden: formValues => !(formValues.todo1 === "2"),
|
render: FORM_ITEM_RENDER_ENUM.TEXTAREA,
|
||||||
},
|
dependencies: ["auditStatus"],
|
||||||
]}
|
hidden: formValues => !(formValues.auditStatus === "3"),
|
||||||
/>
|
},
|
||||||
|
]}
|
||||||
|
/>
|
||||||
|
</Spin>
|
||||||
</Modal>
|
</Modal>
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
@ -267,6 +292,7 @@ const ApprovalDetailsModalComponent = (props) => {
|
||||||
const [list, setList] = useState([]);
|
const [list, setList] = useState([]);
|
||||||
|
|
||||||
const getData = async () => {
|
const getData = async () => {
|
||||||
|
// TODO
|
||||||
const { data } = await props["temporaryVehicleReviewList"]({ id: props.id });
|
const { data } = await props["temporaryVehicleReviewList"]({ id: props.id });
|
||||||
setList(data);
|
setList(data);
|
||||||
};
|
};
|
||||||
|
|
@ -342,7 +368,7 @@ const ApprovalDetailsModalComponent = (props) => {
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
|
|
||||||
const ReviewModal = Connect([NS_TEMPORARY_VEHICLE], true)(ReviewModalComponent);
|
const ReviewModal = Connect([NS_VEHICLE_AUDIT], true)(ReviewModalComponent);
|
||||||
const ApprovalDetailsModal = Connect([NS_TEMPORARY_VEHICLE], true)(ApprovalDetailsModalComponent);
|
const ApprovalDetailsModal = Connect([NS_TEMPORARY_VEHICLE], true)(ApprovalDetailsModalComponent);
|
||||||
|
|
||||||
export default Connect([NS_TEMPORARY_VEHICLE], true)(List);
|
export default Connect([NS_VEHICLE_AUDIT], true)(List);
|
||||||
|
|
|
||||||
|
|
@ -3,17 +3,31 @@ import { Descriptions, Divider, Spin } from "antd";
|
||||||
import { useEffect, useState } from "react";
|
import { useEffect, useState } from "react";
|
||||||
import Page from "zy-react-library/components/Page";
|
import Page from "zy-react-library/components/Page";
|
||||||
import PreviewImg from "zy-react-library/components/PreviewImg";
|
import PreviewImg from "zy-react-library/components/PreviewImg";
|
||||||
|
import { UPLOAD_FILE_TYPE_ENUM } from "zy-react-library/enum/uploadFile/gwj";
|
||||||
|
import useGetFile from "zy-react-library/hooks/useGetFile";
|
||||||
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
|
import useGetUrlQuery from "zy-react-library/hooks/useGetUrlQuery";
|
||||||
import { NS_TEMPORARY_VEHICLE } from "~/enumerate/namespace";
|
import { NS_VEHICLE_AUDIT } from "~/enumerate/namespace";
|
||||||
|
|
||||||
function View(props) {
|
function View(props) {
|
||||||
const query = useGetUrlQuery();
|
const query = useGetUrlQuery();
|
||||||
|
const { loading: getFileLoading, getFile } = useGetFile();
|
||||||
|
|
||||||
const { info, setInfo } = useState({});
|
const { info, setInfo } = useState({});
|
||||||
|
|
||||||
const getData = async () => {
|
const getData = async () => {
|
||||||
const { data } = await props["temporaryVehicleInfo"]({ id: query.id });
|
const { data } = await props["vehicleApplyInfo"]({ id: query.id });
|
||||||
setInfo(data);
|
const drivingLicenseFile = await getFile({
|
||||||
|
eqType: UPLOAD_FILE_TYPE_ENUM[601],
|
||||||
|
eqForeignKey: data.drivingLicenseId,
|
||||||
|
});
|
||||||
|
const attachmentFile = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM[602], eqForeignKey: data.attachmentId });
|
||||||
|
const informSignFile = await getFile({ eqType: UPLOAD_FILE_TYPE_ENUM[606], eqForeignKey: data.informSignId });
|
||||||
|
setInfo({
|
||||||
|
...data,
|
||||||
|
drivingLicenseFile,
|
||||||
|
attachmentFile,
|
||||||
|
informSignFile,
|
||||||
|
});
|
||||||
};
|
};
|
||||||
|
|
||||||
useEffect(() => {
|
useEffect(() => {
|
||||||
|
|
@ -22,26 +36,27 @@ function View(props) {
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Page headerTitle="查看" contentPadding="0 20px 20px 20px">
|
<Page headerTitle="查看" contentPadding="0 20px 20px 20px">
|
||||||
<Spin spinning={props.temporaryVehicle.temporaryVehicleLoading}>
|
<Spin spinning={props.vehicleAudit.vehicleAuditLoading || getFileLoading}>
|
||||||
<Divider orientation="left">申请信息</Divider>
|
<Divider orientation="left">申请信息</Divider>
|
||||||
<Descriptions
|
<Descriptions
|
||||||
column={2}
|
column={2}
|
||||||
bordered
|
bordered
|
||||||
styles={{ label: { width: 200 } }}
|
styles={{ label: { width: 200 } }}
|
||||||
items={[
|
items={[
|
||||||
{ label: "访问人姓名", children: info.todo1 },
|
{ label: "访问人姓名", children: info.employeeVehicleUserName },
|
||||||
{ label: "手机号", children: info.todo2 },
|
{ label: "手机号", children: info.todo2 },
|
||||||
{ label: "身份证号", children: info.todo3 },
|
{ label: "身份证号", children: info.todo3 },
|
||||||
{ label: "车牌号", children: info.todo4 },
|
{ label: "车牌号", children: info.licenceNo },
|
||||||
{ label: "车牌类型", children: info.todo5 },
|
{ label: "车牌类型", children: info.licenceTypeName },
|
||||||
{ label: "车辆类型", children: info.todo6 },
|
{ label: "车辆类型", children: info.vehicleTypeName },
|
||||||
{ label: "访问开始时间", children: info.todo7 },
|
{ label: "访问开始时间", children: info.visitStartTime },
|
||||||
{ label: "访问结束时间", children: info.todo8 },
|
{ label: "访问结束时间", children: info.visitEndTime },
|
||||||
{ label: "访问港区", children: info.todo9 },
|
{ label: "访问港区", children: JSON.parse(info.gateLevelAuthArea)?.area?.map(item => item.value)?.join("、") },
|
||||||
{ label: "访问口门名称", children: info.todo10 },
|
{ label: "访问口门名称", children: info.mkmjName },
|
||||||
{ label: "来访事由", children: info.todo11, span: 2 },
|
{ label: "来访事由", children: info.reasonVisit, span: 2 },
|
||||||
{ label: "行驶证照片", children: (<PreviewImg files={[info.todo12]} />), span: 2 },
|
{ label: "行驶证照片", children: (<PreviewImg files={info.drivingLicenseFile} />), span: 2 },
|
||||||
{ label: "车辆图片", children: (<PreviewImg files={[info.todo13]} />), span: 2 },
|
{ label: "车辆图片", children: (<PreviewImg files={info.attachmentFile} />), span: 2 },
|
||||||
|
{ label: "申请人安全告知签字", children: (<PreviewImg files={info.informSignFile} />), span: 2 },
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
<Divider orientation="left">审批信息</Divider>
|
<Divider orientation="left">审批信息</Divider>
|
||||||
|
|
@ -50,8 +65,9 @@ function View(props) {
|
||||||
bordered
|
bordered
|
||||||
styles={{ label: { width: 200 } }}
|
styles={{ label: { width: 200 } }}
|
||||||
items={[
|
items={[
|
||||||
{ label: "审批企业", children: info.todo14 },
|
{ label: "审批企业", children: info.auditCorpName },
|
||||||
{ label: "审批人", children: info.todo15 },
|
{ label: "审批部门", children: info.auditDeptName },
|
||||||
|
{ label: "审批人", children: info.auditUserName },
|
||||||
]}
|
]}
|
||||||
/>
|
/>
|
||||||
</Spin>
|
</Spin>
|
||||||
|
|
@ -59,4 +75,4 @@ function View(props) {
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
export default Connect([NS_TEMPORARY_VEHICLE], true)(View);
|
export default Connect([NS_VEHICLE_AUDIT], true)(View);
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
import ListPage from "../../TemporaryVehicle/List";
|
||||||
|
|
||||||
|
function List(props) {
|
||||||
|
return (<ListPage isRecords={true} {...props} />);
|
||||||
|
}
|
||||||
|
export default List;
|
||||||
|
|
@ -0,0 +1,6 @@
|
||||||
|
import ViewPage from "../../TemporaryVehicle/View";
|
||||||
|
|
||||||
|
function View(props) {
|
||||||
|
return (<ViewPage isRecords={true} {...props} />);
|
||||||
|
}
|
||||||
|
export default View;
|
||||||
|
|
@ -0,0 +1,5 @@
|
||||||
|
function TemporaryVehicleRecords(props) {
|
||||||
|
return props.children;
|
||||||
|
}
|
||||||
|
|
||||||
|
export default TemporaryVehicleRecords;
|
||||||
Loading…
Reference in New Issue